lanrtop
e57da3aebb
fix(mcp-single-server): 删除登记只清本项目托管条目,沉默项目统计每条 commit 只归属一个 workspace,注入状态带项目名(U1、U2)
...
Push & PR Check / check (push) Successful in 1m34s
Push & PR Check / check (pull_request) Successful in 1m1s
同路径重复登记(dev-manager-tauri 与 2c5b54ef 并存)暴露的三处问题:
- remove_project_files_mcp 按路径解析目录后无条件删 Codex 管理块与 settings 条目,
删 UUID 那条会连带切断规范 ID 的 Codex 接入;改为只删 URL 属于本 project_id
或不是炼境项目路由(旧格式)的条目
- silent_projects 的「ID 或路径」任一匹配让一行吃到多条登记的并集(真机 147 / 86),
改为每条 commit 先按直接 ID、再按 buff 路径归属唯一 workspace
- get_diagnostics 注入状态只打 ID,enterprise-system 的 UUID 被误读成炼境重复登记;
改为「名称 (`id`)」,已删除的登记标注未登记
Rules-Applied: R06,R07
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 09:22:25 +09:00
lanrtop
59f2c9d5fb
fix(onboard/parity): P8b 审查修复——未装记 not_installed、手写保留留痕、成功日志后移、只读判定误判(P8b 审查)
...
Push & PR Check / check (push) Successful in 1m0s
Push & PR Check / check (pull_request) Successful in 1m3s
独立审查 agent 只读审查 d1b9b05(未发现死锁、重入或崩溃),十条发现处置:
- Claude apply:无全局配置且找不到 CLI 记 not_installed,与 DSH、static 同口径
- 手写条目保留(manual_kept)时补日志:DSH 照原文案,Codex 带 project_id
- 「MCP 配置注入成功」移到三端收敛之后,Codex 失败时改记 warn「注入失败」,
诊断不再把失败显示成成功
- 控制面 Claude 静态判定:遮蔽全局注册的残留 local 条目报 missing
- 嵌套项目:根目录是 git 根时只认等于根目录的键,否则取最具体的键
- 适应度测试改为递归;registry() 注明适配器暂寄 mcp_inject 的传递依赖
- 状态名对齐设计:skipped 改为 not_applicable{control_plane|wsl} 与 deferred
- 只读判定:读失败与 YAML 解析失败报 unavailable,Codex 块与手写同名表并存、
标记错序报 needs_human,DSH 块外手写报 manual_kept;client_static_status 改用
与注入同源的 project_root
- 修正「目录不存在」假阳性用例,补 hard_failure、inject 回执、apply 映射、
clients 不影响 pass 的测试;cargo test 300 passed,两处变异验证失败如期
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:52:25 +09:00
lanrtop
d1b9b0564e
feat(onboard/parity): 客户端适配器注册表与三端结构化注入结果,onboard 模块投影无关适应度测试(P8b、A1a)
...
Push & PR Check / check (push) Successful in 1m2s
Push & PR Check / check (pull_request) Successful in 59s
一键接入(P8)编排前置:Claude local 与 DSH 托管块的成败原来只写日志,inject_mcp
笼统回「已配置 Codex 与 Claude」,失败会被报成成功(R4)。
- 新增 src-tauri/src/onboard/:ClientId、ClientOutcome(converged/applied/refreshed/
removed/manual_kept/other_project/not_installed/skipped/missing/unavailable/
needs_human/failed)、ClientAdapter(detect/static_status/apply)与 registry();
适应度测试 onboard_module_is_projection_free 机器校验本体不依赖投影层
- 三端适配器实现在 mcp_inject,注册表反向接入;注入经 registry() 逐端 apply,
新增 inject_project_mcp_report,inject_project_mcp 签名与「Codex 失败即整体失败」
语义不变
- sync_claude_local / ensure_dsh_patch 抽出依赖注入版,每条分支返回结构化结果,
日志类别与文案不变;upsert_codex_mcp_config 返回 converged/applied/manual_kept
- verify_onboarding(MCP)附加 clients 只读三端状态,不计入 checks、不影响 pass;
inject_mcp 回执逐端列出实际结果
- 行为变化(有意):Codex 手写同名 server 改记 manual_kept 不再阻断 Claude/DSH;
WSL 项目 Claude local 记 skipped 不再起 CLI
- 新增 9 条测试(假 CLI 覆盖 Claude 全部分支、临时 DSH 目录四态);cargo test
295 passed;契约同步 project-context.yaml,AGENTS.md 架构速查补 onboard/
Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:25:04 +09:00
lanrtop
8230910358
fix(mcp-inject): 「已接入」统一为有项目 token 单一判定,批量重注入补上独立接入项目(P8a)
...
Push & PR Check / check (push) Successful in 1m2s
「已接入」原有三套判定:reinject_all_mcp 按产品组成员、DSH 白名单与根目录迁移按
项目 token、list_all_projects 按 .claude/liangjing.json 是否存在。结果是独立接入
(不在任何组)的项目在端口变更后不会被重注入,list_all_projects 对只剩兼容文件的
项目误报「已注入」。
- 新增 mcp_inject::is_project_injected(store, project_id),DSH 白名单、
on_project_root_changed、list_all_projects 统一调用
- reinject_all_mcp 目标改为「组成员 ∪ 有 token 的登记项目」(reinject_targets),
锁内复查改为 is_reinject_target,token 先被删的项目不再注入(语义不变)
- list_all_projects 拆出 render_all_projects(conn, store),去掉循环内二次取池
- 新增两条测试,变异确认会失败;契约同步 project-context.yaml;蓝图 P8a 标 ✅
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 07:44:04 +09:00
lanrtop
df5832f41b
fix(delivery/mcp): 补 get_delivery_status 经 scoped dispatch 转发 pr_number/branch 的回归测试(P3-F 审查)
...
Push & PR Check / check (push) Successful in 59s
Push & PR Check / check (pull_request) Successful in 1m2s
使者回传 #203 的症状是「传 pr_number 也不起作用」,但原有 MCP 层测试只覆盖非法参数报错,
dispatch 若丢弃已解析的查询目标、改传默认值,全部测试仍通过。新增 scoped dispatch 正向测试,
断言 pr_number/branch/null 分别得到 pull_request/branch/local_branch 目标;已用变异
(dispatch 改传 DeliveryQuery::default())确认该测试会失败。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 06:34:06 +09:00
lanrtop
1e3989d0d7
feat(delivery/mcp): get_delivery_status 支持按 pr_number/branch 查询,结论绑定 Gitea head SHA(使者回传 #203)
...
Push & PR Check / check (push) Successful in 1m0s
Push & PR Check / check (pull_request) Successful in 1m2s
Enterprise 2026-10-03 实测:为避开主工作区里其他会话的在制品,在独立 worktree
分支上开 PR 交付时,get_delivery_status 只读主工作区当前分支,返回「当前分支没有
开放 PR」、CI 停在主工作区 HEAD,传 pr_number 也被忽略,只能用 git ls-remote 与
get_ci_status(commit_sha) 兜底。
- MCP schema 新增可选 pr_number(优先)与 branch;都不给时保持原行为
- pr_number:GET /pulls/{n} 取 head 分支与 head SHA,CI 与 review 均绑定该 PR;
PR 不存在(404)返回 not_found,与 Gitea 不可达(unavailable)区分;
同时传 branch 且与 PR head 分支不一致时以 pr_number 为准并在 detail 提示
- branch:匹配该分支的开放 PR 并以其 head SHA 查 CI;无开放 PR 时取 Gitea 上
该分支 head SHA;远端分支不存在时 CI 为 unknown
- 顶层新增 target(mode/pr_number/branch/head_sha/source/detail),
pull_request.data 增 head_sha;git 字段仍反映主工作区,既有字段兼容
- 取值校验在能力本体 DeliveryQuery 单点实现,MCP 只解析 JSON 类型;显式给出的
非法值直接报错,不静默回退主工作区
- Gitea 读取拆为本地/PR/分支三种目标,凭证存储注入以便合成 Gitea 测试;
merge_pull_request 门禁代码未改
- lian-jing skill 第 6 条改为 get_delivery_status(project_id, pr_number),
base-onboarding 1.8.0→1.9.0(BASE_ONBOARDING_PACK_VERSION、模板
capability-packs.json、TEMPLATE_FINGERPRINTS);Codex 插件 skill 同步
- 契约说明同步 docs/ai-context/project-context.yaml;蓝图 P3-F 标 ✅
Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 06:22:09 +09:00
lanrtop
13aa3a1a8c
feat(onboarding/parity): 接入包改写托管块前检测块外未提交改动,给出混合文件预警(P10)
...
Push & PR Check / check (push) Successful in 1m2s
Push & PR Check / check (pull_request) Successful in 59s
2026-10-01 enterprise 的 git-workflow.md 在有项目未提交改写时被升级了托管块,
同一文件混有炼境与项目两种来源的改动,按「禁止字符串手术」无法拆分提交,只能交人定案。
管家应在制造混合文件时明确告知,而不是事后由人发现。
- TemplateResult 新增可选 warning(序列化时缺省省略,前端类型同步)
- apply_onboarding_pack 在模板分发与 buff 蓝图规则同步前后夹一层检测:写入前对
AGENTS.md、docs/ai-context/git-workflow.md、CLAUDE.md 跑 git status,有改动再取
HEAD:./<文件>(不在 HEAD 中按空内容算),两边去掉 ONBOARDING_MANAGED 与
BLUEPRINT_MANAGED 块后比较(忽略行尾与空行);写入后只对本次确被改写的文件预警,
文案含文件名与「块外有未提交改动,升级后将成为混合文件」
- 只提示不阻断,块外内容照旧不动;git 不可用、非仓库或命令失败一律静默;
git status 带 --no-optional-locks,不抢 index.lock
- CLAUDE.md 只由蓝图规则同步改写,不在模板结果里,预警时补一条结果
- BLUEPRINT_MANAGED 标记提为 blueprint.rs 的 pub(crate) 常量,检测与 upsert 共用
- MCP 单项目输出在该文件行下加预警行,批量输出追加混合文件清单;工具描述同步;
炼境 UI 接入包结果行下显示预警
- 契约文档 project-context.yaml 同步;蓝图 P10 标 ✅ 并记录验证与已知限制
验证:cargo test --locked lib 270 passed / 5 ignored;新增 3 个测试(纯函数、临时 git
仓库三种情形、非 git 目录),变异自检(探测强制返回 true 时两个场景测试均失败);
pnpm typecheck 与 pnpm test 通过。
Rules-Applied: R01,R06,R12
Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:58:28 +09:00
lanrtop
3095df3d2a
feat(mcp/envoy): 使者回传闭环——回执 + 三端回传入口
...
回传只进不出:list_envoy_returns 无处置状态、LIMIT 50 把更早的回传静默挤掉;
入口只有 Claude /envoy,08-23 后 enterprise 主力转 DSH/Codex 即零回传。
- envoy.rs 业务本体(连接注入)+ envoy_dispositions 回执表(migrate 补表)
- report_envoy_return(项目级,Claude/Codex/DSH 在项目地址均可用):字段枚举校验、
内容压单行限长、兜底拒绝明显凭据;同项目 1 天内同内容未处置幂等返回原编号
(IMMEDIATE 事务防并发重复);复用 append_project_note 的档案双写
- resolve_envoy_return(控制面):landed/carded 必填落点、reason 必填、允许更正
- list_envoy_returns 默认只列未处置(带编号),附已处置计数,超出展示上限明说;
LEFT JOIN 不再丢掉登记已删项目的回传;include_resolved 可审计回执
- lian-jing skill 新增「遇到摩擦时回传炼境」;/envoy 改为指向该入口的薄指引
(保留扫描与分类硬门槛,炼境分发物出错免门槛,身份改读 .lian-jing/context.json);
AGENTS 托管块加一行指路(1.9.0→1.10.0),能力包 base-onboarding 1.6.0→1.7.0
- 删除炼境仓库内 Codex 迁移遗留的 source-command-envoy 技能(读旧身份文件、走旧写入路径)
- 契约与架构文档同步:project-context.yaml、project-brief.md、AGENTS.md、agents-meta-rules.md
Rules-Applied: R05,R06,R12
Feature-Confirmed: true
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 01:15:40 +09:00
lanrtop
019d81c60e
fix(onboarding): 审查修复——JSON 按语义比较,CI workflow 与生成文件同内容不重写
...
Push & PR Check / check (pull_request) Successful in 1m3s
对抗审查(9 个 agent,2 条成立):
- settings.json / context.json 改为按 JSON 语义比较:Claude Code 改写后键序与末尾换行不同,
按文本比较仍会让每次注入整文件重排
- plan_cicd_workflow 忽略行尾判 noop:原按字节比较,autocrlf 检出的同内容 workflow 会被判 update,
并请用户确认一次无变化的写入;apply 与 generate_workflow 只在内容变化时落盘
- 同类遗漏统一改用 write_if_content_changed:agent_infra 生成文件(未变时报 skipped)、notes-archive 回填
- lib.rs 抽出 same_text_ignoring_eol,与 write_if_content_changed 共用同一比较规则
验证:cargo test 245 passed / 5 ignored(新增 JSON 语义与 CI CRLF 回归断言)。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:51:33 +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
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
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
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
8bc33aaab9
fix(delivery): distinguish skipped production deploy
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
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
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
...
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
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
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
122864f340
feat(onboarding): add capability pack status
...
Feature-Confirmed: true
2026-09-21 18:33:12 +09:00
e1e7ffb3b4
Merge branch 'master' into feat/project-capability-control-plane
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
lanrtop
383b5b35d7
feat(delivery): add project delivery status
...
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
ed83f2874a
feat(onboarding): add Codex MCP project integration
...
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 条)
...
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
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
473cf7e92b
fix(onboarding/dispatch): 空路径登记防护——拒绝分发而非写进进程 cwd
...
批量实调实锤:两条空路径登记(银龙集团应用/agent编排界面)使
Path::new("") 变相对路径,接入包整套写进了 dev 进程的 src-tauri/。
apply_onboarding_pack 入口拦截空/不存在路径(单点防护),批量 SQL
同步过滤空串,回归测试驻军。
Rules-Applied: R06,R07
2026-07-15 19:53:47 +09:00
lanrtop
1672b071e4
feat(onboarding/upgrade-channel): 全托管文件升级通道 + 批量重分发(U1)
...
Push & PR Check / check (push) Successful in 51s
Push & PR Check / check (pull_request) Successful in 51s
三档升级语义落地:envoy.md/blueprint-gate.cjs 切全托管
(内容不一致即覆盖,CRLF 归一化防抖动),文件头加托管声明;
verify_onboarding 第 7 项「lefthook 检查段齐全」从内嵌模板自省
键集合,零硬编码;MCP apply_onboarding_pack 缺省 project_id
时批量分发全部已登记项目,替代 batch_apply.py 手摇脚本。
Rules-Applied: R06,R07
Feature-Confirmed: true
2026-07-15 14:20:22 +09:00
lanrtop
2fe576b75a
feat(mcp/diagnostics): get_diagnostics 新增使者回传覆盖率「沉默项目」信号(B4)
...
Push & PR Check / check (push) Successful in 49s
近 30 天有 commit 采集但零使者回传的已登记项目浮出水面,
提示去该项目跑 /envoy——回流触发不自动化(辩证决策 2026-07-15),
用可观测性让遗忘可见,人留在过滤环里。
Rules-Applied: R06,R07
2026-07-15 14:10:28 +09:00
lanrtop
aaf3343133
feat(flywheel/rules-validation): Rules-Applied 规则 ID ingest 层真实性校验(U3)
...
Push & PR Check / check (push) Successful in 1m17s
校验单点放统计消费端(R12 边界单点):extract_rule_ids 从项目
CONVENTIONS.md 提取合法 ID 集合,filter_valid_rules 在入库前剔除
幻觉/typo ID(无 CONVENTIONS.md 时 fail-open 不校验)。接入全部
4 条写入链路(buff 增量/webhook/gitea 轮询/全量导入);
sanitize_rules_applied 提供回溯清洗,重跑全量导入即可清历史污染。
Rules-Applied: R01,R06,R07
2026-07-15 14:05:13 +09:00
lanrtop
92da0fda0d
fix(mcp): list_envoy_returns SQL 修复——pw.name 改为 JOIN project_profiles pp 取 pp.name
2026-07-09 16:09:38 +09:00
lanrtop
df7d52a084
feat(mcp): T6 删除旧 /mcp/group 路由与兼容层——提前并入本次发版
...
Push & PR Check / check (push) Successful in 1m6s
Push & PR Check / check (pull_request) Successful in 49s
原计划后置一个版本,经评估提前:迁移在新版启动时自动重写全部
客户端配置(settings.json/liangjing.json/全局注册),旧路由的实际
消费者只剩升级前的存量会话,而服务重启后它们本就断开重连。
单人环境下双路由过渡的保留价值趋近于零,一次收口减少一轮发版。
- tools_call 签名去 Option 组上下文,process_rpc 单参数化
- list_group_projects 的 group_id 改为 required 参数
- grep 'mcp/group' src-tauri/src/ 零命中,cargo test 93 全绿
2026-07-06 19:34:51 +09:00
lanrtop
a41161f7d1
feat(mcp): 单一全局 lian-jing 服务器——组级挂载收敛(T1-T3+T5)
...
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 缺失/过期/移组同步一整类问题从根上消失。
2026-07-06 19:30:01 +09:00
lanrtop
38d5cec53e
feat(mcp): 新增 setup_gitea_repo agent 按钮——一键建仓库配 remote
...
调用默认 Gitea 实例为项目创建远程仓库,同时配置本地 git remote origin。
幂等设计:仓库已存在(409)直接绑定,remote 已有则 set-url 更新。
背景:此前 agent 无法自助完成"项目在 Gitea 建仓库"流程,需要手动
拼凑 curl + git 命令,本工具将整个流程收归炼境 MCP 调用层。
2026-07-04 18:27:01 +09:00
lanrtop
f03e4178fc
feat(mcp): unregister_project agent 按钮——登记卫生工具对补全
...
Push & PR Check / check (push) Successful in 54s
Push & PR Check / check (pull_request) Successful in 56s
scan_unregistered_projects 发现漏网,unregister_project 清理死账。
薄包装调 delete_project 本体(UI 删除按钮同源),delete_local
硬编码 false——MCP 侧永不暴露删本地文件能力(安全边界)。
工具描述内置约束:删除不可逆,调用前须向用户列清单确认。
Rules-Applied: R12,R13
2026-07-04 14:49:05 +09:00
lanrtop
a77cb4ec96
feat(flywheel): ingest_git_history agent 按钮——全量导入双投影
...
Push & PR Check / check (push) Successful in 53s
Push & PR Check / check (pull_request) Successful in 58s
消费者验证暴露的死角:「全量导入」只有 UI 投影,agent 够不到,
存量 trailer 回填只能靠人点按钮。按双投影原则补 MCP 投影:
- 不传 project_id 遍历所有 win_path 项目跑 ingest_full_git_history,
传则单项目;返回逐项目 imported/skipped 汇总,单项目失败不中断
- 能力本体(ingest_full_git_history)不动,UI 与 MCP 调同一函数
- tools_list_result 断言驻军,92 测试全绿
Rules-Applied: R12,R13
2026-07-04 14:36:28 +09:00
lanrtop
330ddc24dd
feat(flywheel): predict_task_risk 风险画像 MCP 工具——预测层落地
...
- 新增 commands/risk.rs:scope 级(前缀匹配子 scope)+ 文件级
(commit_files JOIN commit_metrics)历史返工率聚合
- classify_risk 分级:返工率 ≥0.35 high、≥0.15 medium、其余 low;
有效返工率取 scope 与文件(样本 ≥3)的较高者
- 可信度防线:样本 <5 或 conventional 率 <0.5(脏历史)→
confidence=low 并附原因 notes,不让脏数据装可信
- CI 自修 commit(is_ci_auto)不计返工,与 L0 口径一致
- MCP 注册 predict_task_risk:agent 开工前按任务卡 scope/files
查询风险,工具清单测试断言驻军
- 7 个单测(in-memory DB + conn 注入),90 全绿
Rules-Applied: R01,R06,R07,R13
2026-07-04 14:12:35 +09:00
lanrtop
ccbc26acf3
feat(mcp): 新增 scan_unregistered_projects 工具,扫描文件系统找出未登记炼境的本地项目
2026-07-04 12:19:12 +09:00
lanrtop
ccf87ae09a
feat(onboarding): V1 接入生效验收——lefthook 分发即激活 + verify_onboarding 六项检查链
...
Push Check / check (push) Successful in 45s
分发成功 ≠ 功能生效:接入包此前只写 lefthook.yml 从不激活,
文件在 hook 死 → conventional 不强制 → 飞轮数据脏。
- apply_onboarding_pack 分发后自动 lefthook install(本地 .bin 优先/
PATH 兜底/静默),OnboardingReport 新增 hook 三态
- 新 MCP 工具 verify_onboarding:管理块版本/hook 真挂/origin 命中
Gitea 实例/CI workflow 存在/近 30 天飞轮数据 六项检查链 JSON
- 判定纯函数化 5 条单测 + in-memory DB 全链集成测试
- commands.ts 补 TemplateResult 缺失的 updated/appended 态(T1 旧债)
- AGENTS.md 去掉写死的工具计数(防腐:以 tools_list_result 自省为准)
Rules-Applied: R01,R06,R07,R13
2026-07-04 08:27:39 +09:00
lanrtop
3b9de9a23c
refactor(mcp)+fix(ci)+fix(test): 三项优化
...
Push Check / check (push) Failing after 1m7s
- CI: pr-check 改为 push master 触发 + tsc --noEmit(原 branches: [main] 永不触发)
- mcp_server.rs 拆分:mcp_tools.rs(工具schema+dispatch+实现)+ mcp_webhook.rs(webhook+测试)
mcp_server.rs 从 1385 行瘦身至 145 行(纯协议路由层)
- mcp_tools 新增工具 schema 完整性测试(73 passed,较之前 +2 条)
- onboarding 测试版本号跟进 v1.1.0 → v1.2.0(模板版本升级后断言未同步)
2026-07-03 21:38:20 +09:00