feat(flywheel): 阶段三执行质量预测层(trailer 死链修复 + 风险画像) #2

Merged
lanrtop merged 14 commits from feat/flywheel-intelligence into master 2026-07-04 14:45:28 +08:00
Owner

飞轮智能成长 · 阶段三:执行质量预测层(P3-A~E)

变更概要

  • P3-A 修复 Rules-Applied trailer 死链(P0):git log 只用 %s 取 subject,trailer 永远读不到;改用 %(trailers:key=Rules-Applied,valueonly) 原生提取 + UPSERT 仅回填 NULL
  • P3-B commit_files 采集:--name-only 单次进程同取指标与文件,新表 (sha,path) 联合主键
  • P3-C predict_task_risk MCP 工具:scope/文件级历史返工率,样本 <5 或脏历史标 low-confidence
  • P3-D 梦核 prompt 注入「跨项目高风险 scope」数据段;顺修 pool()→try_pool() 不可测旧债
  • P3-E FlywheelPanel「返工热区」块 + get_high_risk_scopes 命令 + commands.ts 同步

自验报告

  • cargo test 92 全绿(新增 12:真 git 仓库 e2e trailer 回归、UPSERT 四态、输出解析、风险聚合 7 项、prompt 数据段)
  • pnpm typecheck exit 0
  • 待重启终验:存量 trailer 回填(跑一次「全量导入」)与 predict_task_risk MCP 实调

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

## 飞轮智能成长 · 阶段三:执行质量预测层(P3-A~E) ### 变更概要 - **P3-A** 修复 Rules-Applied trailer 死链(P0):git log 只用 %s 取 subject,trailer 永远读不到;改用 %(trailers:key=Rules-Applied,valueonly) 原生提取 + UPSERT 仅回填 NULL - **P3-B** commit_files 采集:--name-only 单次进程同取指标与文件,新表 (sha,path) 联合主键 - **P3-C** predict_task_risk MCP 工具:scope/文件级历史返工率,样本 <5 或脏历史标 low-confidence - **P3-D** 梦核 prompt 注入「跨项目高风险 scope」数据段;顺修 pool()→try_pool() 不可测旧债 - **P3-E** FlywheelPanel「返工热区」块 + get_high_risk_scopes 命令 + commands.ts 同步 ### 自验报告 - cargo test 92 全绿(新增 12:真 git 仓库 e2e trailer 回归、UPSERT 四态、输出解析、风险聚合 7 项、prompt 数据段) - pnpm typecheck exit 0 - 待重启终验:存量 trailer 回填(跑一次「全量导入」)与 predict_task_risk MCP 实调 Rules-Applied: R01,R05,R06,R07,R13
lanrtop added 10 commits 2026-07-04 13:24:52 +08:00
- inject_project_mcp 末尾新增 try_register_globally 调用,通过
  find_claude_bin 自动定位 claude CLI 并执行 claude mcp add -s user,
  让新接入项目的产品组 MCP 立即对 Claude Code 可用
- write_liangjing_context 增加 group_id 参数,子项目读取后可直接
  构造 lian-jing-{group_id} ToolSearch 查询,无需额外推断
- try_register_globally 为 best-effort:CLI 未找到或调用失败时
  仅写日志,不影响 settings.json 注入结果
T2 git-workflow 模板升 v1.3.0:
- 分支策略从强制 dev→main 改为复杂度感知
  (简单改动直推 main/master,功能性改动开 feat/<name> 分支+PR)
- PR 创建 MCP 示例 head 从 "dev" 改为 "feat/<name>"

B3 agent 按钮载体声明闭环:
- CONVENTIONS.md manifest.yaml 规范新增 agent_button_carrier 字段
  (tauri/http/cli/playwright,新建蓝图时必填)
- splitter SKILL.md 三级优先载体继承:manifest字段 > architect声明 > 就近推断
- 炼境自身 manifest.yaml 补 agent_button_carrier: tauri
- AGENTS.md.tmpl 项目概况 TODO 提示新增载体字段填写指引

Rules-Applied: R04,R13
R1 管道自建成以来是死链:buff 与 ingest 两处 git log 都用 %s 只取
subject,trailer 在 body 里永远读不到(炼境自身 11 条带 trailer 的
commit,DB rules_applied 全空);单测喂全文所以全绿。

- GIT_LOG_FMT 加 %(trailers:key=Rules-Applied,valueonly,separator=%x2C),
  git 原生 trailer 解析,保持单行一条记录
- read_git_log 升为增量/全量统一取数入口(GitLogRange),buff 的
  get_new_commits 委托之,消灭两处重复 format 定义
- record_commit_entry + upsert_metrics:ON CONFLICT 仅回填
  rules_applied IS NULL 的存量行,绝不覆盖已有值,回填幂等
- ingest_full_git_history 改走 record_commit_entry,消灭第三处重复 INSERT
- get_new_commits 的 WSL 分支随 2026-07-04 裁决顺手清理
- 测试:真 git 仓库 e2e trailer 提取回归 + UPSERT 四态语义,82 全绿

Rules-Applied: R06,R07,R13
- 新表 commit_files(sha,path 联合主键 + path 索引),migration 入 migrate()
- read_git_log 加 --name-only:单次 git 调用同时取 conventional 指标、
  Rules-Applied trailer 与触碰文件,零额外进程开销
- parse_git_log_output 纯函数解析 header/文件行混排输出(含 \x1f 的行
  是 header,其后非空行归属该 commit)
- record_commit_entry 落库文件清单(INSERT OR IGNORE 幂等),buff 增量
  与 ingest 全量两条链路自动覆盖,无需各自改动

Rules-Applied: R05,R06,R07
- 新增 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
- risk.rs 新增 high_risk_scopes:样本 ≥5 且有非 CI 返工的 scope
  按返工率降序 top 10,项目名 LEFT JOIN project_profiles(缺失回退 id)
- generate_muhe_prompt 新增「跨项目高风险 scope」表格段,附分析指引
  (反复返工 scope = 结构性脆弱点 → 固化环节输出预防性规范)
- rule_hits 段 pool() 改 try_pool():原实现测试环境必 panic,
  generate_muhe_prompt 因此不可测;改后两段在无 DB 时走占位文案
- prompt 构建测试断言两个数据段存在 + 聚合排序/最小样本过滤测试,92 全绿

Rules-Applied: R06,R07
feat(flywheel): 返工热区 UI + get_high_risk_scopes 命令,阶段三收官
All checks were successful
Push & PR Check / check (push) Successful in 50s
Push & PR Check / check (pull_request) Successful in 50s
a5cb30734d
- risk.rs 新增 Tauri command get_high_risk_scopes(薄包装)+ lib.rs 注册
- commands.ts 封装 HighRiskScope 类型与调用(R01)
- FlywheelPanel 新增「返工热区」块:跨项目返工率降序,
  分级配色与 classify_risk 阈值一致(≥35% 红 / ≥15% 琥珀)
- 蓝图:P3-A~E 五卡全部 done,附 L 级复盘笔记,模块 progress 98

Rules-Applied: R01,R13
lanrtop added 1 commit 2026-07-04 13:36:33 +08:00
feat(flywheel): ingest_git_history agent 按钮——全量导入双投影
All checks were successful
Push & PR Check / check (push) Successful in 53s
Push & PR Check / check (pull_request) Successful in 58s
a77cb4ec96
消费者验证暴露的死角:「全量导入」只有 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
lanrtop added 1 commit 2026-07-04 13:41:35 +08:00
docs(blueprint): 阶段三消费者终验通过,flywheel-intelligence 模块收官
All checks were successful
Push & PR Check / check (push) Successful in 53s
Push & PR Check / check (pull_request) Successful in 48s
94d8be6eb6
Rules-Applied: R13
lanrtop added 1 commit 2026-07-04 13:49:10 +08:00
feat(mcp): unregister_project agent 按钮——登记卫生工具对补全
All checks were successful
Push & PR Check / check (push) Successful in 54s
Push & PR Check / check (pull_request) Successful in 56s
f03e4178fc
scan_unregistered_projects 发现漏网,unregister_project 清理死账。
薄包装调 delete_project 本体(UI 删除按钮同源),delete_local
硬编码 false——MCP 侧永不暴露删本地文件能力(安全边界)。
工具描述内置约束:删除不可逆,调用前须向用户列清单确认。

Rules-Applied: R12,R13
lanrtop added 1 commit 2026-07-04 14:04:33 +08:00
docs(blueprint): unregister_project 登记卫生工具对补卡(事后登记)
All checks were successful
Push & PR Check / check (push) Successful in 49s
Push & PR Check / check (pull_request) Successful in 50s
a914c8c219
Rules-Applied: R13
lanrtop merged commit 6284124546 into master 2026-07-04 14:45:28 +08:00
lanrtop deleted branch feat/flywheel-intelligence 2026-07-04 14:45:28 +08:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: lanrtop/dev-manager-tauri#2
No description provided.