All checks were successful
Push & PR Check / check (push) Successful in 1m4s
T1 服务器层:新增全局 /mcp + /mcp/messages 路由,process_rpc 组上下文 Option 化;旧 /mcp/group/:gid 路由保留过渡,T6 移除。驻军测试 2 条。 T2 工具层:resolve_project_root 按 project_id 直查 project_workspaces, 删除 3 处组归属校验(实测无隔离价值);list_group_projects 改显式传参。 T3 注入层:settings.json 收敛为单 "lian-jing" key(URL /mcp),注入时 清理旧 lian-jing:group-* key;liangjing.json 主动删除 group_id; 启动时一次性迁移(重注入全量 + 清理旧全局注册两种命名格式,标记位防重)。 T5 同步:git-workflow 文档/模板、retro-catchup 技能 Python 兜底、 设置页 URL 展示、mcp-config-inject 模块取代注记。 收益:MCP 客户端配置成本 O(N组)→O(1),授权一次永久生效; group_id 缺失/过期/移组同步一整类问题从根上消失。
45 lines
2.2 KiB
Markdown
45 lines
2.2 KiB
Markdown
# MCP 配置注入
|
||
|
||
产品组成员变更时,炼境自动向对应项目的 `.claude/settings.json` 注入或移除 MCP 服务器配置,实现热插拔。
|
||
|
||
> ⚠️ 2026-07-06 起组级 key 方案被 [mcp-single-server](./mcp-single-server.md) 取代:
|
||
> 注入 key 收敛为单一 `"lian-jing"`(URL `/mcp`),寻址不再依赖 group_id。
|
||
> 本文任务卡中的 `lian-jing:group-{group_id}` 描述保留为历史记录。
|
||
|
||
## 决策记录
|
||
|
||
- 使用 `lian-jing:group-{group_id}` 命名空间前缀标记炼境写入的 key,与用户自有配置严格隔离(已被 mcp-single-server 取代)
|
||
- 炼境只操作自己命名空间下的 key,其余配置永远不动
|
||
- 加入/退出操作由炼境 UI 驱动,炼境必然在线,无需异步清理机制
|
||
- 注入前做 JSON 有效性校验,文件损坏时不覆盖,在 UI 提示用户
|
||
|
||
## 任务卡
|
||
|
||
### ✅ 加入产品组时注入配置
|
||
- status: done
|
||
- complexity: M
|
||
- files: src-tauri/src/mcp_inject.rs, src-tauri/src/commands/groups.rs
|
||
- depends: mcp-server
|
||
- acceptance:
|
||
- 项目加入产品组后,其 win_path 或 wsl_path 对应的 `.claude/settings.json` 被写入以下条目
|
||
- key 格式:`lian-jing:group-{group_id}`
|
||
- value:`{ "type": "http", "url": "http://localhost:{port}/mcp/group/{group_id}" }`
|
||
- 文件不存在时自动创建;文件已存在时合并写入,不影响其他 key
|
||
- 文件 JSON 损坏时 eprintln 记录,不影响成员关系 DB 写入
|
||
|
||
### ✅ 退出产品组时清除配置
|
||
- status: done
|
||
- complexity: S
|
||
- files: src-tauri/src/mcp_inject.rs, src-tauri/src/commands/groups.rs
|
||
- depends: mcp-config-inject(注入)
|
||
- acceptance:
|
||
- 项目退出产品组后,`lian-jing:group-{group_id}` 这一 key 被精确删除
|
||
- 其他 key(包括其他产品组的 key、用户自有配置)完全不受影响
|
||
- 在 DB 删除前先执行清除(remove_project_mcp 需要 project_workspaces 查路径)
|
||
|
||
### ✅ 端口变更时重新注入所有配置
|
||
- status: done
|
||
- complexity: S
|
||
- files: src-tauri/src/mcp_inject.rs, src-tauri/src/commands/settings.rs
|
||
- acceptance: update_settings 检测到 mcp_port key 变更后自动调用 reinject_all_mcp,遍历所有 project_group_map 记录重新写入 settings.json
|