Commit Graph

166 Commits

Author SHA1 Message Date
lanrtop
0a92a5b695 fix(mcp/parity): 收尾审查修复——Claude 现状以 claude mcp get 为准,接入命令移出界面线程
收尾对抗审查指出:只读扫描 ~/.claude.json 的结论不能代表 Claude 在项目目录实际生效的条目
(共享项目键、worktree、目录迁移下会误删他项目条目或漏写),且同步 CLI 调用会阻塞界面线程。

- 快路径只认「项目根或其祖先目录键下」的一致托管条目;其余一律在项目目录执行
  `claude mcp get lian-jing` 取实际生效条目,按归属决策:本项目托管条目 → 刷新/移除
  (写入失败用原条目回滚);他项目托管条目或手写条目 → 不碰并记录;无 local 条目 → 写入
- 输出无法识别、CLI 出错或目录不存在时一律不写,只记 warn
- 全局迁移需 claude CLI 与 git-bash 均可用才置完成标记;批量重注入的成员复查失败计入错误
- 删组/移出组先删成员关系再清 MCP 配置,避免并发重注入把项目加回;调 CLI 前释放数据库连接
- delete_group / add_group_member / remove_group_member / delete_project / update_settings /
  apply_blueprint_buff 改为 #[tauri::command(async)],在线程池执行
- 新增 parse_claude_mcp_get / lianjing_project_of / key_covers_root 单元测试

实测(enterprise):稳态注入 174ms 不起 CLI;条目缺失 → 写入;过期 helper → 刷新;
手写条目 → 保留;三种情况 claude mcp get 均为 Local 且 Connected;经 shim 零凭据探针认证通过。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 16:55:28 +09:00
lanrtop
5f6ea586f8 fix(mcp/parity): 最终审查修复——Claude 条目写入回归 claude CLI,只读扫描认领
最终审查指出直接编辑 ~/.claude.json 须复刻 Claude 私有机制(git 根 / worktree→主仓库 /
NFC 键推导、.claude.json.lock 锁协议、CLAUDE_CONFIG_DIR 与旧版 .config.json、BOM/符号链接/
fsync/键顺序),随 Claude 升级易失效,违背「标准优先、私有机制只进适配层」。

- 写入一律经 claude CLI(cwd=项目目录,同步、带 20 秒超时),由 Claude 自己负责键、锁与路径
- 只读扫描按 URL 中 /mcp/projects/<id> 认领炼境托管条目(不依赖键推导);已一致则不起 CLI
  (实测稳态注入 0.04 秒),手写条目不碰;项目目录已不存在时只记录残留、不写文件
- 全局注册只读确认已存在就跳过 CLI;配置路径按 Claude 规则解析,容忍 BOM
- 批量重注入在锁内复查组成员关系,已移出组的项目不再注入、不重建 token

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 15:38:36 +09:00
lanrtop
fc8492b88b fix(mcp/parity): 第三轮审查修复——Claude 条目改为直接编辑配置,接入操作加进程锁
- Claude local 条目不再经 claude CLI(cwd=项目目录)+ 后台队列管理,改为直接编辑
  ~/.claude.json 中本项目键下的 mcpServers.lian-jing:同步、毫秒级、原子替换,只动该字段;
  不依赖项目目录存在,消除删除本地文件夹时的竞态、目录移动后旧条目无法清理、队列丢任务/卡死
- 项目键用真实长路径(实测 8.3 短路径键不被 Claude 识别);手写条目不碰
- 注入、移除、根目录迁移在进程锁内串行;移除时最先删 token,后续清理收集错误统一返回
- 根目录迁移:旧根解析不出也迁移;重新注入失败归入 mcp_inject 并补刷 DSH;DSH 补丁写入加锁

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 14:37:37 +09:00
lanrtop
e4214cd839 fix(mcp/parity): 第二轮审查修复——串行同步队列、白名单持久剔除、诊断分类
- Claude local 同步统一投递到单个后台串行队列(注册与移除同队列、按提交顺序),
  消除并发 claude CLI 竞态与「注入后立即移除」留下孤儿条目;移除路径不再阻塞界面
- DSH 白名单只收有项目 token 的项目,退组/移除后剔除持久;控制面项目写 null 停止哨兵,
  不再越过它匹配到已登记的上级目录;Rust 与 JS 两端键规范化对齐(重复分隔符、盘符根、UNC)
- 客户端侧同步日志改为 mcp_client_sync 分类,不覆盖诊断中每个项目的注入结果
- 批量重注入只在末尾刷新一次 DSH;启动刷新移到后台线程
- 项目根目录/平台变更时迁移客户端配置(清旧根 Claude 条目,已接入项目在新根重新注入)
- SSE 消息路由仅在会话属于该项目时才移除;注入模块的进程调用统一 silent_cmd

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:39:23 +09:00
lanrtop
0c40e1a5c9 fix(mcp/parity): 对抗审查 9 项修复——控制面保留全局、DSH 改登记白名单
- 控制面项目(context.json mcp_scope=global,炼境自身已声明)不写 Claude local 条目、
  不入 DSH 白名单,避免遮蔽全局注册与跨项目工具(审查 high)
- DSH 托管块内嵌炼境登记的「项目根目录→project_id」白名单,不再以任意目录里的
  context.json 作为取 token 依据;LOCALAPPDATA/SystemRoot 须为绝对路径
- remove_project_mcp 同步清理 Claude local 条目并剔除 DSH 白名单;SSE 消息路由复核登记
- Claude local 只替换炼境托管条目,手写不覆盖,替换失败回滚;改走 silent_cmd 并移至后台线程
- 手写 DSH 条目改用 serde_yaml 检测(引号/注释/流式写法),无法解析时保守拒绝
- shim 中 exe 路径的 % 转义为 %%;注入日志 context 统一为 JSON,诊断查询防御非 JSON 行

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:48:41 +09:00
lanrtop
ebf43d71c0 feat(mcp/parity): 三端经稳定 helper 入口连项目专用地址
- P3:炼境启动写 %LOCALAPPDATA%\lian-jing\bin\lianjing-mcp-header.cmd 指向当前 exe;
  Codex 项目配置改为引用该入口,不再写本机 exe 绝对路径;verify_onboarding 对旧写法报可升级
- P1:inject_mcp 以 local scope 为 Claude 注册项目专用地址 + headersHelper(不进仓库);
  DSH 机器级补丁写托管块,!!js 按启动目录选项目地址并经 cmd 调用同一入口,项目外回退全局
- 服务端:scoped route 拒绝未登记的 project_id(404,数据库不可用同样拒绝)

Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 10:40:08 +09:00
lanrtop
f4e75dc91f feat(onboarding): lian-jing skill 双投影到 Claude,接入包升至 1.6.0
All checks were successful
Push & PR Check / check (push) Successful in 1m4s
- 同一模板同时写 .agents/skills(Codex、DSH)与 .claude/skills(Claude Code)
- verify_onboarding 新增「Claude 炼境技能已分发」检查
- skill 降级步骤改为三端通用,提示无开发变量工具即连的是全局地址
- capability-packs supported_clients 增加 dsh

Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 09:11:32 +09:00
lanrtop
663a723b3b feat(dev-variables): 修改时显式查看原值,并提示 agent 先查炼境测试账户
All checks were successful
Push & PR Check / check (push) Successful in 1m5s
Push & PR Check / check (pull_request) Successful in 1m9s
- V12:新增人用 Tauri command reveal_project_dev_variable(不进 MCP),
  点「修改」预填原账号与密码,密码默认遮罩可切换显示
- V13:lian-jing skill 新增第 8 步——需要测试账号先 list/read,
  没有则登记并请用户在 UI 填写;禁止对话索要明文;base-onboarding 升至 1.5.0
- 契约同步 project-context.yaml;materialize 提案顺延为 V14–V16

Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 14:22:54 +09:00
lanrtop
9211883a9b test(dev-variables/mcp): 以隔离宿主完成 V7 真实 Codex 跨会话试点
All checks were successful
Push & PR Check / check (push) Successful in 1m7s
Push & PR Check / check (pull_request) Successful in 1m5s
新增 ignored 宿主 isolated_dev_variables_client_pilot:内存 DB + 随机合成账户 +
临时 scoped MCP,认证走真实 helper。真实 Codex CLI 三会话完成登记→代填→跨会话
读取→撤销后读取失败,宿主断言目录无 .env/token/密码且凭据清理。

Rules-Applied: R03,R05,R10,R13
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 12:42:44 +09:00
lanrtop
d926591ace feat(dev-variables/ui): 一张卡填写测试账号和密码
项目面板一次提交两个字段到同一 Tauri 本体,列表与 React Query 仅保留非秘密状态。

Rules-Applied: R01,R08

Feature-Confirmed: true
2026-09-28 01:45:49 +09:00
lanrtop
1daef98af3 feat(dev-variables/mcp): 提供项目级测试账户登记与认证读取
scoped MCP 只登记非秘密元数据;读取共用 bearer 门槛,并以真实本机 HTTP 合成链路覆盖授权、复用和撤销。

Rules-Applied: R07,R10

Feature-Confirmed: true
2026-09-28 01:45:23 +09:00
lanrtop
d559b7917b feat(dev-variables/storage): 原子托管非生产测试账户
新增兼容旧表的账户类型与语义登记,账号密码共用受保护引用;覆盖迁移、失败恢复和重开复用。

Rules-Applied: R05,R06,R07

Feature-Confirmed: true
2026-09-28 01:44:56 +09:00
lanrtop
2b65c18193 feat(resource/dev-variables): add protected project variable core and scoped MCP
Keep values in Windows Credential Manager, require a project bearer for single-value reads, and preserve existing non-secret MCP behavior.

Feature-Confirmed: true

Rules-Applied: R01,R03,R05,R06,R07,R10,R12,R13
2026-09-26 16:46:55 +09:00
lanrtop
7ae547e1f6 test(resource/broker): 添加隔离客户端试点宿主
All checks were successful
Push & PR Check / check (push) Successful in 4m12s
提供仅测试可用的 scoped MCP 临时宿主和合成凭证/Gitea fixture;保留 R11 进行中状态,等待真实客户端会话终验。

Rules-Applied: R02
2026-09-26 09:30:59 +09:00
lanrtop
5f23cf85b1 test(resource/broker): 补齐 scoped MCP 合成 PR 端到端回归
All checks were successful
Push & PR Check / check (pull_request) Successful in 1m7s
Rules-Applied: R03,R13
2026-09-24 08:22:38 +09:00
lanrtop
47ff656083 fix(resource/credentials): 保留删除失败引用并纠正迁移前状态
删除受保护凭证失败时回滚数据库删除,并恢复已删引用。旧凭证明确标为 pending_migration,避免误报 configured。
2026-09-23 21:16:11 +09:00
lanrtop
3a560f149e feat(resource/broker): 实现受保护凭证代办与项目 readiness
Gitea、webhook 与 API Key 以受保护引用替代常态明文输出;旧值先备份并校验后可恢复迁移,MCP 仅提供项目只读状态。

Rules-Applied: R01,R05,R06,R07,R10

Feature-Confirmed: true
2026-09-23 18:45:30 +09:00
lanrtop
dbc1b068ab fix(delivery): avoid false deployed timestamp
All checks were successful
Push & PR Check / check (push) Successful in 59s
Push & PR Check / check (pull_request) Successful in 1m0s
Rules-Applied: R07,R13
2026-09-23 12:09:38 +09:00
lanrtop
8bc33aaab9 fix(delivery): distinguish skipped production deploy
All checks were successful
Push & PR Check / check (push) Successful in 1m18s
Push & PR Check / check (pull_request) Successful in 58s
2026-09-23 11:08:10 +09:00
lanrtop
2b577f6902 fix(delivery): reject private DNS probe targets
Filter resolved connection addresses and bypass environment proxies so project-declared probes cannot reach local services through public hostnames.
2026-09-23 10:44:05 +09:00
lanrtop
02b9f1ec36 feat(delivery): observe production revision with dual evidence
Read project-owned production profile, verify Gitea deploy context and public version probe, and surface explicit degraded states.

Feature-Confirmed: true
2026-09-23 10:37:07 +09:00
lanrtop
7c62a1c148 test(agent/access): 固化自启动幂等边界
All checks were successful
Push & PR Check / check (push) Successful in 57s
Push & PR Check / check (pull_request) Successful in 56s
Rules-Applied: R01,R06,R07,R08,R10,R12,R13
2026-09-23 03:38:12 +09:00
lanrtop
327f3d78ab feat(agent/access): 强化项目级运行态接入
MCP 改为 loopback 并绑定项目 scope,补齐越界拒绝、风险元数据和结构化状态。

新增分层 readiness、配置迁移与设置页投影;正式安装版可选择登录自启动,debug 与非安装路径明确拒绝。

Feature-Confirmed: true

Rules-Applied: R01,R06,R07,R08,R10,R12,R13
2026-09-23 03:21:38 +09:00
lanrtop
806205b8b0 feat(cicd): add safe agent workflow projection
All checks were successful
Push & PR Check / check (push) Successful in 1m0s
Push & PR Check / check (pull_request) Successful in 58s
Add preview-and-apply workflow commands with digest confirmation, project boundary checks, and MCP/Tauri projections. Sync onboarding capability packs and Codex skill guidance.

Feature-Confirmed: true

Rules-Applied: R01,R02,R06,R07,R12,R13
2026-09-22 23:27:34 +09:00
lanrtop
9bf2d579ea feat(cicd): align templates with project toolchain
All checks were successful
Push & PR Check / check (push) Successful in 57s
Push & PR Check / check (pull_request) Successful in 56s
Reuse the canonical Node/pnpm contract when generating workflows, preserve per-tool legacy fallbacks, and reject conflicting declarations with evidence.

Feature-Confirmed: true

Rules-Applied: R02,R12
2026-09-22 22:38:06 +09:00
lanrtop
28e65b3d1c feat(gitea): 增加 Agent PR 安全合并门禁
合并前重新校验 PR、head SHA、CI 与 review,并用 Gitea head_commit_id 在服务端绑定用户确认的提交。同步 MCP schema、接入模板与 Codex skill 契约。

Feature-Confirmed: true

Rules-Applied: R06,R07,R10,R12
2026-09-22 21:07:55 +09:00
lanrtop
0141b8b09a feat(delivery/gitea): 归一化 Gitea 部署状态信号
All checks were successful
Push & PR Check / check (push) Successful in 1m4s
Push & PR Check / check (pull_request) Successful in 59s
保留目标 SHA、context、时间与跳转证据,按精确 context 提取部署结果,并修正 Gitea 1.22 skipped job 被编码为 success 的误判。同步落账 production 只读双证据方案与 P3-A 完成状态。

Rules-Applied: R07,R10,R13

Feature-Confirmed: true
2026-09-22 19:54:43 +09:00
lanrtop
8376bcbfd2 fix(toolchain): 修复 Windows wrapper 版本探测
优先选择 .exe/.cmd/.bat 路径并直接执行版本命令,补充含空格路径测试;运行态 MCP 已确认 Enterprise 的 Node 与 pnpm 版本可正确识别。

Rules-Applied: R07,R08,R10,R13
2026-09-22 01:23:34 +09:00
lanrtop
ead35ad12a feat(toolchain): 增加项目级运行时能力包
以 .nvmrc 与 packageManager 作为 Node/pnpm 版本事实,新增 Windows-only 的状态诊断、受控 mise 准备、MCP/Tauri/UI 双投影及 onboarding 自检。

Feature-Confirmed: true

Rules-Applied: R01,R04,R06,R07,R08,R10,R12
2026-09-22 01:08:31 +09:00
lanrtop
057c2b3a10 fix(onboarding): recognize custom lefthook checks
All checks were successful
Push & PR Check / check (pull_request) Successful in 1m1s
2026-09-21 22:42:03 +09:00
lanrtop
c9f19e2916 fix(onboarding): enforce canonical skill context
All checks were successful
Push & PR Check / check (pull_request) Successful in 58s
2026-09-21 22:02:58 +09:00
lanrtop
f04b80f201 fix(onboarding): preserve identity mismatch signal
All checks were successful
Push & PR Check / check (push) Successful in 1m34s
Push & PR Check / check (pull_request) Successful in 1m13s
2026-09-21 19:28:27 +09:00
lanrtop
f5b66aba4a feat(onboarding): version capability packs
Feature-Confirmed: true
2026-09-21 19:23:54 +09:00
lanrtop
122864f340 feat(onboarding): add capability pack status
Feature-Confirmed: true
2026-09-21 18:33:12 +09:00
lanrtop
167fcf9880 feat(agent-context): add canonical project context
Feature-Confirmed: true
2026-09-21 18:16:32 +09:00
e1e7ffb3b4 Merge branch 'master' into feat/project-capability-control-plane
All checks were successful
Push & PR Check / check (push) Successful in 1m0s
Push & PR Check / check (pull_request) Successful in 1m1s
2026-09-21 16:48:26 +08:00
b8f12425ab Merge branch 'master' into feat/codex-onboarding
All checks were successful
Push & PR Check / check (push) Successful in 59s
Push & PR Check / check (pull_request) Successful in 1m38s
2026-09-21 16:45:05 +08:00
lanrtop
383b5b35d7 feat(delivery): add project delivery status
All checks were successful
Push & PR Check / check (push) Successful in 1m0s
Push & PR Check / check (pull_request) Successful in 58s
Feature-Confirmed: true
2026-09-21 15:16:40 +09:00
lanrtop
6e5d3d89bc chore(rust): format backend sources 2026-09-21 12:52:37 +09:00
lanrtop
ed83f2874a feat(onboarding): add Codex MCP project integration
All checks were successful
Push & PR Check / check (pull_request) Successful in 57s
Push & PR Check / check (push) Successful in 1m3s
Feature-Confirmed: true
2026-09-21 12:35:10 +09:00
lanrtop
01c9433a08 fix(mcp): backfill 按落盘路径归并——同路径重复登记互相覆盖丢笔记(真机实锤丢 20 条)
All checks were successful
Push & PR Check / check (push) Successful in 1m4s
回填改为先解析路径再归并写入(按 note id 排序),同路径多登记合并为一个文件;
新增回归:两登记同路径 → 4 条全归档不覆盖。cargo test notes_ 全绿。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-11 22:30:57 +09:00
lanrtop
6d02b12e9f feat(mcp): notes 档案分片双写 + backfill_notes_archive 自愈工具
project_notes 是全系统唯一不在 git 的原创资产(可拆除性唯一硬违规)。
append_project_note 现双写到项目 .blueprint/notes-archive.jsonl(JSONL 可重放
重建 DB=重生配方);双写失败不回滚仅记日志,backfill_notes_archive 全量重建自愈。
归宿按项目分片(辩证翻转集中式设计,理由见蓝图卡留痕)。
死登记路径复用 validate_registered_path 防护;project_root 重构出 DI 版。
cargo test 110 全绿(新增 3:双写匹配/回填幂等+死登记跳过/并发不交错)。

Feature-Confirmed: true
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-11 22:22:59 +09:00
lanrtop
0d4c2adc54 feat(onboarding): 同源同边界补收束语与需求对称两时间尺度(v1.7.0 内补遗)
「人在意的点 agent 读得懂」补机制脚注使其自洽,不做空头承诺:
- 当下会话:同源路径即时对称(结构直接保证,无需额外机制)
- 跨会话:否决理由落账→复盘笔记→梦核蒸馏,反复在意的维度迁移进可断言规则
- 人裁决区是飞轮推进的前线,不是墙上的洞
- 1.7.0 尚未分发,内容补遗不再升号

Feature-Confirmed: true
2026-08-23 16:41:14 +09:00
lanrtop
9f468a13a1 feat(onboarding): AGENTS 模板注入「同源同边界 + 操作复刻」设计原则(v1.7.0)
多角度辩证收敛后的 v3.1 外科手术版(真实增量三个半,不重复已有六条):
- 节首总纲:任何功能 = 一个本体 + 两个投影,同源同边界;先定本体后盖投影(原型探索豁免)
- 边界单点实现追加同源推论:人的操作序列 agent 皆可复刻,人报障即复现路径(操作+状态)
- 三分定位启发式(本体→投影→环境),从"定律"降级——crypto.randomUUID 环境层实锤
- human_verify 否决理由值得记录(飞轮原料;采集机制挂 governance-feedback-loop,不空头承诺)
- 炼境自身 AGENTS.md 块内同步 + agents-meta-rules.md 设计草案同步

Feature-Confirmed: true
Rules-Applied: R13
2026-08-23 16:31:30 +09:00
lanrtop
0a8a9e60bc feat(mcp): 飞轮派生数据工具输出 staleness 标注
世界模型自洽:模型可以过期,不能不知道自己过期。
- 新增 sync_state 表(domain 单行 upsert)+ touch/read 依赖注入函数
- 三个写入点:轮询成功(polled>0)、webhook PR 落库、webhook push 落库
- get_pr_events / get_commit_metrics 输出首行标注最近同步时间与距今分钟数
- get_ci_status 为实时 Gitea API 调用,不在范围
- 实锤依据:get_pr_events 延迟致 /ship 误判无 open PR(enterprise-system 2026-07-28 回传)

Feature-Confirmed: true
Rules-Applied: R05, R06, R07
2026-08-23 15:46:03 +09:00
lanrtop
16473e7260 fix(envoy): 补炼境定位讨论触发标准和 MCP 降级说明
- Step 2 加炼境定位/缺口/演进方向讨论不得漏判警示(enterprise-system 实锤)
- Step 4 加 MCP 不可用时的降级路径(整理文本输出让用户手动转发)
2026-08-23 14:34:17 +09:00
lanrtop
ca67e188c0 fix(ci-status): get_ci_status 结论区分三态——pending 不再误输出 ❌
add has_failure flag,使结论由两态(pass/fail)扩展为三态:
✅ 全部通过 / ⏳ 检查进行中 / ❌ 存在失败检查。
修复前 pending 和 failure 均输出 ❌,/ship 轮询无法区分排队与真实失败。

Feature-Confirmed: true
2026-07-31 07:25:48 +09:00
lanrtop
c12e8df0ae feat(templates): 知识库模板 AGENTS.md 增补 Commit 层级信号协定
All checks were successful
Push & PR Check / check (push) Successful in 53s
docs(dialogue|concept|core|case) scope 约定:外部观测者(炼境飞轮)凭
commit 流即可读出知识库晋升频率与环的健康度,无需理解库内部结构。

Feature-Confirmed: true
2026-07-18 10:48:55 +09:00
lanrtop
3d9336d908 feat(templates): 三端体系内置模板 + 技术栈分类标签渲染
上一会话遗留的完整功能补提交:
- 新增 4 个三端体系内置模板:React Web / React + Capacitor /
  React + Tauri (Antd) / React Tri-Platform(同一架构按需起步)
- tech_stack 升级为分类 JSON 格式(客户端/语言/框架),
  新增 techStackUtils.renderTechStack 兼容旧逗号格式,
  ManagePage / NewProjectModal 接线,TemplateEditor 占位符同步

Feature-Confirmed: true
2026-07-18 10:48:27 +09:00
lanrtop
55ee5a483c feat(templates): 新增内置模板「知识库(择升环)」
三层晋升结构的知识沉淀文档库初始化:dialogues 对话原料 → concepts 概念卡
→ CORE.md 稳定核心(上限 300 行强制过滤),cases/ 为检验层。
晋升/降级规则与写作纪律内置于模板 AGENTS.md,agent 进库即按择升环工作流运转;
init_commands 为 git init,建库即版本化。

Feature-Confirmed: true
2026-07-18 10:25:01 +09:00