dev-manager-tauri/.blueprint/modules/onboarding-pack.md
lanrtop 428bb02a90
All checks were successful
Push & PR Check / check (push) Successful in 46s
Push & PR Check / check (pull_request) Successful in 46s
chore(blueprint): T2 验收完成 — git-workflow 分支策略升级
2026-07-04 10:24:18 +09:00

15 KiB
Raw Permalink Blame History

接入包Onboarding Pack

炼境向被管理项目一键分发的标准化接入套件,让任意新旧项目成为「飞轮合格公民」。 统一以自建 Gitea 为 git 数据底座,缝合 git 规范、AI 约定、蓝图语义、炼境登记四层。

双层架构

  • 自建 Gitea:统一 git 数据底座稳定、自主、CI + review 自控)
  • 炼境:底座之上的「项目飞轮控制台」——读 git 数据做跨项目飞轮聚合、分发接入包、维护蓝图语义层

决策2026-06-19全面统一自建 Gitea弃用 GitHub。数据主权 = 飞轮燃料自主可控,契合「管理越多→数据越多→飞轮越强」愿景。详见 memory project_gitea_unified_architecture

蓝图重新定位git 与蓝图分工)

完整定义见 .blueprint/CONVENTIONS.md §「蓝图定位(意图层)」。

核心分工git 记录「做了什么」,蓝图只保留 git 给不了的三类信息(结构关系图 / 意图与验收标准 / 未来规划)。状态/进度/涉及文件从 git 信号推断,蓝图不手动双写。

接入包分档(底座统一,上层按需)

内容 适用
基线(所有项目) Gitea 建仓/迁移 + origin=Gitea + lefthook(强制 conventional) + AGENTS.md + git-workflow.md + 炼境登记 + buff 解析 commit 全部新旧项目
增配(复杂项目) + Gitea Actions CI + DeepSeek review + 瘦蓝图 长周期/多业务线

决策记录

  • 飞轮升格与 Gitea API 对接「分步实施」而非耦合buff 读本地 .gitcommit type/scope与远程平台无关可先做Gitea APICI 状态/PR review随后
  • 「完整分发」是陷阱,正确形态是分级菜单:新项目种全套,旧项目增量接入(复用 mcp_inject 的「命名空间隔离 + 合并不覆盖」语义,不动用户已有配置)
  • 接入动作:现有 apply_blueprint_buff 升格为 apply_onboarding_pack,按档编排注入
  • 语义层进料口隐患:决策/验收/踩坑仍需主动写(与饿死复盘笔记同源),须配「从 PR 标题/commit body/review 评论半自动提取」,不再单纯指望人自觉

复用的现有能力(~60% 地基已具备)

能力 现状
.claude/settings.json 注入 mcp_inject(命名空间隔离 + 合并不覆盖 + JSON 校验)
生成接入 prompt / 扫描项目 generate_blueprint_prompt(已读 AGENTS.md + monorepo 感知)
git 轮询 → 状态同步 🟡 buff(仅匹配文件路径,需补 conventional 解析,见 flywheel-intelligence L0
CONVENTIONS 规则同步 sync_blueprint_rules
项目模板 templates
CI workflow 生成 🟡 cicd.rs(仅 GitHub需改造 Gitea Actions见 gitea-integration

风险

  • 旧项目存量 git 数据脏(无 scope、非 conventional→ 数据质量是光谱,需「采用规范后切起算」或标不可信
  • 跨项目聚合可比性:不同项目 scope 粒度/复杂度标准不同fix 率直接相加会误导梦核
  • 模板自身维护成本AGENTS.md/lefthook/git-workflow.md 模板要随最佳实践演进

设计architect 2026-06-19

基线档范围:模板分发 + 炼境登记 + L0 commit 解析,全部本地、不依赖 Gitea APIGitea 建仓/Actions/webhook 属 gitea-integration 档2

关键决策:

  • 新建 apply_onboarding_pack(不扩展 buffbuff=挂 git 观测onboarding_pack=完整接入,分层清晰
  • 模板"存在则跳过 + 报告"markdown/yaml 不强行整文件合并,绝不覆盖用户已有(复用 mcp_inject 的路径解析 + 不存在才写)
  • L0 commit 解析挂在现有 buff watcherlast_commit..HEAD 取 message → parse_conventional → 写新表 commit_metrics;与文件路径匹配两条路径并行互不干扰
  • rework_count 来源从枯竭的 parse_notes_metrics 换成查 commit_metricsfix 且非 CI 自修);avg_rounds_M 基线暂为 null需 PR 边界留档2
  • scope 原样聚合module 映射后置

新增:commands/onboarding.rscommands/commit_metrics.rsresources/onboarding/*.tmplcommit_metrics 表 修改:buff.rs(check_project 加解析)、blueprint.rs(append_usage_snapshot)、db.rslib.rs、前端入口

任务卡

已过 /architect + /splitter。A→B、C1→C2 两条链可并行D 依赖 C1+BC1飞轮地基建议优先开工

A 模板分发引擎

  • status: done
  • complexity: M
  • files: src-tauri/src/commands/onboarding.rs, src-tauri/resources/onboarding/{AGENTS.md,lefthook.yml,git-workflow.md}.tmpl
  • acceptance: include_str! 内嵌 3 个标准模板(蓝本取自 enterprise-system分发时文件不存在→写入、已存在→跳过并在报告标注绝不覆盖复用 mcp_inject 的路径解析(含 WSL返回每个模板的 written/skipped/failed

B apply_onboarding_pack 编排 + 前端入口

  • status: done
  • complexity: M
  • depends: onboarding-pack卡A
  • files: src-tauri/src/commands/onboarding.rs, src-tauri/src/lib.rs, src/lib/commands.ts, src/components/dashboard/ProjectCard.tsx
  • acceptance: apply_onboarding_pack(project_path, project_id) 组合「模板分发 + apply_blueprint_buff」返回 OnboardingReport看板卡片有"接入包"入口展示分发报告written/skipped/failed

C1 commit_metrics 表 + Conventional 解析器

  • status: done
  • complexity: M
  • files: src-tauri/src/commands/commit_metrics.rs, src-tauri/src/db.rs
  • acceptance: 新增 commit_metrics 表sha PK / project_id / commit_type / scope / is_rework / is_ci_auto / committed_at / parsed_atparse_conventional(message) 解析 type/scopetype=fix→is_rework[DeepSeek-V3]/[R1] 等标记→is_ci_auto非 conventional→commit_type=null 单列;提供聚合查询 rework_count(project_id);解析逻辑纯函数可单测(覆盖 feat/fix/带scope/无scope/CI自修/非规范 六种输入)

C2 挂接 buff watcher + 飞轮快照

  • status: done
  • complexity: M
  • depends: onboarding-pack卡 C1
  • files: src-tauri/src/commands/buff.rs, src-tauri/src/commands/blueprint.rs
  • acceptance: check_project 用 last_commit..HEAD 取 commit messagegit log复用现有 WSL 路径处理)→ 调 C1 解析写 commit_metrics首次接入last_commit 空)限解析最近 N 条append_usage_snapshot 的 rework_count 改查 commit_metricsis_rework=1 AND is_ci_auto=0取代 parse_notes_metrics

D 数据可信度提示

  • status: done
  • complexity: S
  • depends: onboarding-pack卡 C1、卡 B
  • files: src-tauri/src/commands/onboarding.rs, src-tauri/src/commands/commit_metrics.rs
  • acceptance: OnboardingReport 与飞轮展示标注该项目 commit 规范化比例conventional / 总数);比例低时提示"种 lefthook 后数据才准"避免脏数据被误读为可信CI 过滤 / 非规范单列已在 C1 落实)

T1. 接入包模板版本化ONBOARDED_MANAGED 块机制)【体系分发前置】

  • status: done
  • done_note: 2026-07-03 dispatch_versioned 三态落地written/updated/appended + 同版本 skipped块外用户内容保护有测试兜底AGENTS/git-workflow 模板入 ONBOARDING_MANAGED v1.1.0 块lefthook 保持存在即跳过。实测(用户走 UIR13enterprise-system 与 noteapp 重跑接入包均 appended×2 + lefthook skipped磁盘验证两项目 ONBOARDING v1.1.0 + BLUEPRINT v1.10.0 双块到位。发现并修复前端分发报告只认旧三态appended 误显 ✗c4a6600R12 反例实证。已知一次性迁移成本enterprise-system 块外存在项目定制版「核心开发约束」与块内通用版共存,去重留给该项目自己的会话
  • complexity: M
  • files: src-tauri/src/commands/onboarding.rs, src-tauri/resources/onboarding/git-workflow.md.tmpl, src-tauri/resources/onboarding/AGENTS.md.tmpl
  • acceptance: git-workflow 与 AGENTS.md 模板的炼境管理内容包进 ONBOARDING_MANAGED 标记块(带 version分发逻辑三态文件不存在→写全新存在且有标记→原位更新块复用 blueprint.rs 的 upsert_managed_block 模式可提取公共函数存在无标记→末尾追加块块外用户内容永不触碰lefthook.yml 保持"存在即跳过"(用户深度定制不适用块机制);单元测试覆盖三态 + 用户区保护;对 enterprise-system 重跑接入包实测存量升级

背景模板演进无法触达存量项目是版本化闭环的最大缺口trailer 章节曾手工补)。

V1. 接入生效验收lefthook 激活 + verify_onboarding 按钮

  • status: done
  • done_note: 2026-07-04 完成。apply_onboarding_pack 分发后自动 lefthook install本地 node_modules/.bin 优先、PATH 兜底、CREATE_NO_WINDOW 静默),报告新增 hook 三态verify_onboarding MCP 工具六项检查链AGENTS/git-workflow 管理块版本自省对比、pre-commit 真挂 lefthook、origin host 命中已登记 Gitea 实例、.gitea/workflows 存在、近 30 天 commit_metrics 流入);判定逻辑纯函数化 5 条单测 + in-memory DB 全链集成测试(空项目六项全 fail → 铺齐后六项全 pass前端 commands.ts 类型同步(顺修 TemplateResult 缺 updated/appended 旧债)+ BlueprintModal 显示 hook 激活行。MCP 实调待炼境升级重启后终验(当前运行实例是旧 build
  • complexity: M
  • depends: onboarding-pack卡 B、卡 T1
  • files: src-tauri/src/commands/onboarding.rs, src-tauri/src/mcp_tools.rs, src/lib/commands.ts
  • acceptance: [Tauri command] apply_onboarding_pack(project_id) 分发 lefthook.yml 后检测并激活 hook——找到 lefthook 可执行node_modules/.bin/ 或 PATH→ 执行 lefthook installOnboardingReport 新增 hook_activated 三态activated / missing_binary / failedmissing_binary 时附安装提示;[MCP tool] verify_onboarding(project_id) → 返回检查链 JSON模板管理块版本到位 / .git/hooks/pre-commit 含 lefthook / origin 指向 Gitea / CI workflow 文件存在 / commit_metrics 近 30 天有该项目数据),每项 pass|fail + detail无 error 字段;[cargo test] 检查链判定逻辑纯函数化,覆盖 hook 已挂/未挂、origin 匹配/不匹配R06/R07
  • notes: 背景2026-07-04 侦察确认)——接入包写 lefthook.yml 后从不激活,文件在 hook 死 → conventional 不强制 → 飞轮数据脏;炼境自身未踩纯因手动装过。本卡补两件事:① 分发即激活;② "消费者角色"机器化验证(分发成功 ≠ 功能生效,对应 agent-button-system.md 消费者驱动验证)。产出直接供 B4 健康诊断遵守度消费。同日发现的姊妹雷cicd.rs PR CI 模板 pnpm lint --if-present 必挂语法已修dc501f7回归断言驻军

T2. git-workflow 模板:分支策略升级为复杂度感知

  • complexity: M
  • status: done
  • done_note: 2026-07-04 ONBOARDING_MANAGED 块升至 v1.3.0,分支策略改为复杂度感知(简单直推/功能 feat/* + PRPR MCP 示例 head 从 "dev" 改为 "feat/"。模板升版后重跑接入包即可原位升级存量项目UI 终验由用户走正常分发流程完成
  • files: src-tauri/resources/onboarding/git-workflow.md.tmpl
  • acceptance: [Tauri command] 对已接入项目重跑接入包 → git-workflow.md ONBOARDING_MANAGED 块升至 v1.3.0,内容含「简单改动直推 main/master功能性改动开 feat/ 分支 + PR」策略PR 创建 MCP 示例 head 字段从 "dev" 改为 "feat/"docs/templates/agents-meta-rules.md 不含分支策略无需同步
  • notes: 当前模板强制 dev→main 双分支,假设了任意项目都维护常设 dev 分支,实为过度约束。复杂度感知策略(小改直推 main/master功能性改动开 feat/* + PR与炼境自身策略一致、与飞轮目标对齐PR body 是意图层数据),且对单人小项目更友好——不必维护无意义的常设 dev 分支。「简单/功能性」由 agent 根据改动文件数/性质自判,无需外部蓝图标签

🔵 agent 按钮体系分发B1/B2 已完成B3/B4 待做)

  • status: in_progress
  • progress: 2026-07-03 B1 done——CONVENTIONS 1.10.0 加 R12边界单点实现+ R13M/L 验收路径须真实走通含载体就近选择表B2 done——AGENTS.md.tmpl v1.1.0 管理块含「agent 按钮与验证路径」章节(双投影/边界单点/载体表/完成的定义/侦察→驻军)。剩 B3提示词升级M单独一轮、B4健康诊断遵守度后置
  • 版本化闭环要求2026-07-03 用户澄清,体系分发的灵魂): 分发不是"发了就不管"——每类资产带版本分发 → 子项目按该版本实践产生经验(成功/失败)→ 经验自吸反哺炼境trailer/failure_cases/复盘/返工率)→ 按版本分组对比效果 → 修订出新版 → 再分发。CONVENTIONS 是模范生version+队列对比+梦核+同步1.8→1.9 已跑通一整圈B 系列每类资产按此标准建闭环。前置依赖提升「接入包模板演进分发MANAGED 块化」concept 卡——模板无版本机制是当前最大缺口,没有它体系 v2 到不了存量项目
  • notes: 2026-07-03 概念探讨收束后的分发需求(体系详见 memory concept_dual_projection 与 mcp-server 模块 concept 卡)。用户全 agent 开发形态下,"给开发者立规范"="给 agent 注入规范",可完全机器化。四条现成管道分发四类资产:① B1(S) CONVENTIONS 1.10.0 加 R12 边界单点实现 + R13 验收须真实走通验证路径 + 载体选择原则;② B2(S) 接入包 AGENTS.md 模板加 agent 按钮章节(三要素/载体谱系/侦察驻军);③ B3(M) init/sync 提示词升级——建蓝图时声明项目按钮载体、acceptance 生成为可执行验证路径格式;④ B4(S,后置) 健康诊断加体系遵守度检查。移植体验=零新增动作,接入流程不变。

复盘笔记

【复盘】V1 接入生效验收2026-07-04 任务类型: 后端命令 + MCP工具 + 前端类型同步 复杂度: M 实际轮数: 1轮预估 1 轮) 是否返工: 否 有效策略: 立卡前先侦察实锤grep 确认 lefthook install 全仓库零调用、cicd.rs 模板同款 lint 语法雷acceptance 直接写成可执行验证路径使实现无歧义;检查链判定与 IO/DB 分离(纯函数 + conn 注入in-memory DB 全链集成测试把"空项目全 fail → 铺齐全 pass"变成回归资产模板期望版本从内嵌模板自省extract_managed_block而非硬编码模板升版验收逻辑零维护 顺手修的旧债: 前端 TemplateResult 类型缺 updated/appended 两态T1 时只修了组件层样式映射类型层漏了AGENTS.md/agent-button-system.md 写死"21 个工具"计数(防腐铁律违例,改为指向 tools_list_result 自省) 遗留: MCP 工具实调需炼境升级重启后终验(运行实例是旧 buildWSL UNC 路径下 lefthook install 的 current_dir 行为未实测,失败会如实进 failed 态不会误报 auto_applied_rules: R01, R06, R07, R13 rule_effectiveness: R01=有效commands.ts 同步时暴露类型层旧债), R06=有效conn 注入使全链集成测试可行), R07=有效6 条新测试), R13=有效(集成测试即真实走通的验收路径)