dev-manager-tauri/docs/tasks/2026-10-03-coordination.md
lanrtop ef09ef247b
All checks were successful
Push & PR Check / check (push) Successful in 1m30s
docs(tasks): 统筹文档切换到「MVP 收口」阶段——P8 达成,扩展冻结登记 §3,意图目录线交接与本轮清理记入 §4/§5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 12:45:45 +09:00

175 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 统筹推进文档:P8 一键接入与并行事项(2026-10-03 起)
> 本文件是执行会话的**单一入口**:领卡前先读完 §1–§3。卡片的范围与验收以蓝图卡片为准
> (`.blueprint/modules/agent-client-parity.md` 等),本文件不复制 acceptance,只管「谁做、按什么顺序、怎么交接」。
> 统筹会话负责维护本文件(§4、§5 随派单与合并更新)。
## 0. 方针与本阶段终点
- **方针**(AGENTS.md「项目定位」「管家准入与退出」):炼境是 agent 开发子项目的管家;每个子项目都能在
Claude Code、Codex、DSH 三端开发,重复配置尽量消除;不过度建设,能力按实测收益保留或撤销。
- **本阶段终点(2026-10-04 起):炼境 MVP 收口**——agent 拿到子项目能开工、能自验、能交付,摩擦能闭环回传,四条都可用。
必做(用户 2026-10-04 定):
1. project-dev-variables 人终验;
2. 核实 blueprint-buff 剩余 14% 是否核心:是就做完,否则冻结;
3. 本轮临时项目与 worktree 清理(agent 侧已做,见 §5 待手动删除);
4. 修常驻文档漂移:project-brief 目录速查补 `onboard/`、Agent 按钮清单收敛到一处、agents-meta-rules 对齐托管块 1.10.0、
dev-variables 简报头部过期、agent-button-system 里 `.agent/task.md` 的矛盾。
其余一律冻结为扩展(§3「扩展(冻结)」),MVP 期间不派单。
- **上一阶段终点 ✅**:P8「一键接入」——2026-10-04 用户终验通过(证据见 agent-client-parity P8 / P8g 卡)。
设计:`docs/tasks/2026-10-03-p8-onboarding-oneclick-design.md`。
## 1. 角色与协议
> 执行方式(2026-10-03 调整):任务卡片需要用户手动点开,统筹会话无法代点;改为统筹会话用后台工作流(Workflow)自动执行每张卡——子 agent 各自独立上下文、在固定 worktree 里干活,只把结论交回统筹会话。工作流与新会话一样计入账号用量。统筹会话设有每 30 分钟一次的会话内巡检(CronCreate,7 天自动失效)。
### 授权规则(用户 2026-10-03 立,持续有效直到 P8 acceptance 全部达成)
1. 每 30 分钟检查一次工作流与 PR 进度(统筹会话的会话内巡检)。
2. 独立审查通过(结论为可合并,或发现已全部处置)且 CI 为 passed 的 PR,由统筹会话按完整 head SHA 自行合并,合并后在运行中的炼境上做卡片要求的实测,然后派下一张卡。
3. §3 队列内的 Feature 卡视为用户已确认(提交带 `Feature-Confirmed: true`),不再逐张出确认卡。
4. 同一张卡自验或修复累计失败 3 次:卡片标 🔴、写明原因,跳过该卡继续队列(不再停下来等人)。
5. 只有三类事项找用户:写运行中的 DB、删除操作、human_verify。
6. 终点:P8「一键接入」卡的 acceptance 全部达成(agent_verify 由统筹会话实测;human_verify 汇总给用户终验)。
| 角色 | 是谁 | 做什么 |
|---|---|---|
| 统筹会话 | `local_ab7498e2-8aff-4e59-b45b-134636d12d9c`(「dev-manager-tauri 开发环境验证」) | 维护本文件、派卡、复核、合并 PR、处理上报;每 30 分钟检查一次执行会话 |
| 执行会话 | 每张卡一个新会话 | 按卡片实现与自验,做一次独立审查,开 PR,然后上报;不合并 PR |
- **上报**:用 SendMessage(`to` 填统筹会话的 session id)发三条——已完成 / 待验证 / 约束继承(AGENTS.md「多 AI CLI 协作」格式),附 PR 编号与**完整 head SHA**。
- **求助**:同一问题自修失败 2 次(AGENTS.md「自验失败降级约定」)就停下,上报失败原因、已尝试路径、需要决策的问题;不要绕过权限或安全分类器的拦截。
- **合并**:只由统筹会话核对 CI 与审查结论后合并(`merge_pull_request` 需要完整 head SHA)。
- **卡片状态**:开工把卡改 🔵、验收后改 ✅(两阶段提交),在自己的分支里改;需要在合并后实测的验收项,由统筹会话合并、实测后补标 ✅。
## 2. 执行环境铁律(都是踩过的坑)
- **主仓库工作区不碰**:`E:\code-project\dev-manager-tauri` 是用户日常运行 `pnpm tauri dev` 的地方。每张卡在自己的 git worktree 里做(如 `E:/code-project/dev-manager-tauri-wt-<卡号>`),M 级开 `feat/<模块>-<卡号>` 分支走 PR;S 级的纯文档可直推 master。
- **enterprise-system 主工作区不碰**:`E:\code-project\enterprise-system` 有其他会话的在制品,禁止 stash / reset / checkout / `add -A`;要改 enterprise 就从 origin/main 开临时 worktree,用 PR 交付。
- **cargo 热缓存**:`cd <worktree>/src-tauri && export CARGO_TARGET_DIR=E:/code-project/dev-manager-tauri-parity/src-tauri/target && cargo test`;长命令放后台运行。
- **rustfmt 只格式化改动的文件**:`rustfmt --edition 2021 --config skip_children=true <文件…>`。不加 `skip_children` 格式化 `lib.rs` 会改写全部子模块。
- **用户 deny 规则**:`rm`、`kill`、`pkill`、`git reset --hard`、npm/npx 等禁用,**也不能写进脚本文件再执行**(统筹会话踩过)。需要删除的临时目录列给用户;探针桩服务设成到时自动退出。
- **Git Bash**:`git show rev:path` 要加 `MSYS_NO_PATHCONV=1`;含反斜杠的文件用 Write 工具写;含中文的 HTTP 请求用 node `fetch`,不用 curl。
- **MCP**:一律 `http://127.0.0.1:27190`(不用 localhost)。会话里 lian-jing 没连上时,可用 node `fetch` 直接 POST `http://127.0.0.1:27190/mcp`(全局路由,`tools/call`),结果在 `result.structuredContent` 或 `result.content[0].text`。
- **变异验证**:先 `git add` 暂存,再改源码做变异、跑测试,最后 `git checkout -- <文件>` 从暂存区还原。没暂存就 checkout 会丢掉改动(统筹会话踩过)。
- **真实客户端**:`claude -p`、`codex exec`、DSH headless 可能跑 3 分钟以上,只在会话主线程或后台 bash 里跑,不交给 Workflow 子 agent(超过 180 秒会被判卡死)。嵌套 claude 前先 `unset CLAUDECODE CLAUDE_CODE_ENTRYPOINT CLAUDE_CODE_SSE_PORT`,stdin 重定向自 `/dev/null`。
- **工作流看门狗**:Workflow 子 agent 超过 180 秒没有进展即判卡死重试——一次性生成大文件(如整个 React 组件)、或前台跑长命令都会触发(P8e 修复阶段、P8g 实现阶段各卡死 6 次)。写文件分小块(单次 Write/Edit 约 150 行内),长命令一律后台轮询;UI 等需要大段生成的卡改用后台 Agent 执行。
- **凭据**:不读、不打印任何 token、凭据、`.env` 值;不对真实 Windows Credential Manager 做并发压力实验。
- **运行中的炼境 DB 写入**:自动模式下会被安全分类器拦截,这是对的。需要写 DB 的数据修复准备好脚本、备份和空跑结果,交用户执行。
- **提交**:Conventional Commits;`feat:` 带 `Feature-Confirmed: true`;末尾带 `Co-Authored-By` 署名行。PR 描述按自验报告纪律写,含「没验什么」一节。M 级卡开 PR 前用一个只读子代理做独立审查,审查处置写进卡片。
## 3. 派单队列
串行原因:P8 各卡集中改 `mcp_inject.rs`、`mcp_tools.rs`、`commands/onboarding.rs`,并行必然冲突。不碰这些文件的事项可以并行(标注「可并行」)。
| 序 | 事项 | 复杂度 | 起点 | 要点 |
|---|---|---|---|---|
| ~~1~~ | ~~P8c 收尾~~ ✅ | M | 分支 `feat/agent-client-parity-p8c` @ `ef2c7fd`(代码已完成,cargo test 307 passed) | 剩:独立审查与修复,卡片标 🔵 并记实现/验证,开 PR。PR #34 合并后先合并 master 再开 PR |
| ~~2~~ | ~~P4a L1 零模型三端检查~~ ✅ | M | master(P4-0✅、P8b✅) | Claude 用不存在的模型名取 init(P4-0 H-P8-4,零额度);Codex 用 `codex mcp get --json`(H-P8-1,未信任目录看不到项目配置);DSH 解析白名单与插件哈希;认证链经稳定 shim 重放 |
| ~~3~~ | ~~P8d onboard_project 编排本体~~ ✅ | M | P8c、P4a 合并后 | 复用 `onboard::plan::write_project_files` 与 `onboard::clients::registry()`;apply 前先重算计划并核对 digest |
| 4 | P8e 投影收口与契约同步 | S | P8d 后 | |
| 5 | P8f register_project 控制面投影 | S | 已提前并行(只依赖 P8-0) | [MCP] 链路实测待 P8e 合并后做 |
| ~~6~~ | ~~P8g UI 一键接入~~ ✅ | M | P8e 后 | human_verify 交用户 |
| ~~并行~~ | ~~删除项目登记时一并解绑 Gitea 仓库~~ ✅ G8 | S/M | master | 来自重复登记排查会话的推荐任务卡(轮询会继续往已删除的项目 ID 写数据),主要改 projects.rs / gitea.rs,可并行 |
| MVP-1 | project-dev-variables 人终验 | — | master | human_verify 交用户;模块进度已 100%、待终验关账 |
| MVP-2 | blueprint-buff 剩余 14%:先核实是否核心 | S | master | 核心则做完,非核心则冻结并在模块里写明理由 |
| MVP-3 | 本轮临时项目与 worktree 清理 | — | — | 2026-10-04 agent 侧已完成(取消登记 2 个、删 worktree 5 个),剩 §5 的手动删除 |
| MVP-4 | 常驻文档漂移修复(§0 必做 4 的五处) | S | master | 纯文档可直推;碰 agents-meta-rules 时同步检查接入包模板版本 |
| 扩展(冻结) | 部署控制面(project-capability-control-plane)、P4b–P4e、P5、P6、治理缺口 ②③(governance-feedback-loop)、DSH 接管(dsh-takeover-readiness)、Codex 模型切换(codex-model-switch)、多维视图(manage-multi-view)、架构演进(architecture-evolution)、intent-catalog Phase 4+(IC6–IC13:门控脚本、接线、书签交接、enterprise 试点) | | | 2026-10-04 用户定:MVP 收口期间不派单,MVP 达成后再排 |
| 扩展(冻结) | 概念占位登记显式化(UI 不选目录的占位登记) | S | — | 用户 2026-10-04 定:MVP 保持现状;出现具体干扰(诊断、统计、接入入口把占位当普通项目)再出 S 级确认卡 |
| 后续小修 | P8f 审查转入:L4 路径归一函数统一到 crate::path_key(含 Codex 信任路径、WSL 发行版与 UNC 换算)、I1 update_project 有效根变化才查重并排除自身、I2 project_root_with_conn 拼接 UNC 形式 wsl_path 的已有缺陷 | S | master | 碰 mcp_inject.rs,P8 主线后再做 |
| 后续小修 | backfill_notes_archive 静默跳过非 UTF-8 旧笔记(dev-manager-tauri 有 4 条);PR #34 审查遗留 L3(保留他项目 Codex 块不留痕)、L4(沉默统计并列偏向非规范 ID,补测试)、I1(注释说明两处语义差异)、I2(沉默列表带 id) | S | master | 不碰 P8 热点文件的可并行 |
| 后续小修 | P8g 审查 ④:L1 格子由本体带 pending_user(目前 onboardView.ts 写死 codex_project_untrusted 着色);面板状态机(过期响应、refused 回预览)补组件测试;终验记下的文案:新建文件「查看差异」只有一行概要改行内显示,git_hooks 与 Claude/DSH 行「已写入」标签重复或不准 | S | master | 碰 probe_l1.rs / onboardView.ts |
| 说明 | 上面三行「后续小修」在 MVP 期间同样冻结,除非某条被证实阻碍 MVP 四条可用性 | | | |
| 待用户 | beast-mode 同路径重复登记(beast-mode / 940dfbb4,无 Gitea 绑定) | — | — | 需写运行中 DB 与删除登记,按 U3 同法准备脚本后交用户执行 |
## 4. 派单与 PR 流水(统筹维护)
| 时间 | 事项 | 执行者 | 分支 / PR | 状态 |
|---|---|---|---|---|
| 10-03 | P8-0、P8a、P4-0、B2 | 统筹会话 | 直推 master | ✅ |
| 10-03 | P8b | 统筹会话 | PR #33(ddd729c) | ✅ |
| 10-03 | enterprise 接入包 1.9.0 | 统筹会话 | enterprise PR #183 | ✅ 已合并;enterprise 主工作区待其所有者同步 |
| 10-03 | P8c 收尾 | 工作流 wf_c121815d-6ea(实现→审查→修复→开 PR) | PR #36(7ef9241)→ 04db098 | ✅ 审查 9 条:7 修、2 转 P8d(已并入 P8d acceptance ⑨);合并后全量 cargo test 325 passed |
| 10-03 | 删除登记时解绑 Gitea(G8) | 工作流 wf_c121815d-6ea | PR #35(fccb767) | ✅ 审查可合并、5 条已处置;真机删除实测为可选人工验证(涉及删除与写 DB) |
| 10-03 | P4a L1 零模型三端检查 | 工作流 wf_b7092645-570(修复阶段被分类器拦截,统筹接手收尾) | PR #38(a79bcb7)→ cf2b5f0 | ✅ [MCP] 实测:enterprise 3.3 秒三端 18 格 ready;dev-manager-tauri 控制面 Claude/DSH not_applicable、Codex ready |
| 10-03 | P8d onboard_project 编排本体 | 工作流 wf_004ffc20-7cb | PR #39(2f2a9f1)→ d018d44 | ✅ 审查 10 条已处置;master 402 passed;⑩ 统筹决定:Codex 未信任计 next_action 不计入 done(P8e 实现) |
| 10-03 | P8e 投影收口与契约同步 | 工作流 wf_551dc525-270(修复阶段卡死 6 次,审查已可合并,统筹以 97578b2 开 PR) | PR #40 → d7f4816 | ✅ 端到端:新登记项目 done、重复执行全 converged;enterprise 因主工作区落后不 apply(偏差已报备) |
| 10-03 | P8g UI 一键接入 | 工作流 wf_531cfcda-b1a 实现阶段 6 次 180 秒无进展被判卡死(未产出代码,属执行方式问题、不计自验失败)→ 改派后台 Agent(无看门狗,分块写文件)也流卡死 → 10-04 新统筹会话主线程直做(续用半成品 onboardView.ts,分块写入) | PR #41(c28caf7)→ 3228b49 | ✅ 审查 merge、5 条:4 修 1 转后续小修(L1 格子带 pending_user);master typecheck 通过、vitest 29 passed、全量 cargo test 414 passed;human_verify 待用户 |
| 10-03 | P8f register_project 控制面投影(含登记拒绝同路径,承接 PR #34 审查 L1/L2) | 工作流 wf_2462357e-604(与 P4a 并行,开 PR 前合并 master) | `feat/agent-client-parity-p8f` | PR #37(04470bd)→ 55dc637 已合并;审查 10 条:7 修、1 部分修、M2 恢复 UI 概念占位原行为(产品问题待用户澄清)、2 转后续;卡片 🔵,[MCP] 链路实测待 P8e 合并 |
| 10-03 | 重复登记修复 U1/U2 | 会话 `local_d2e1c156…`(「排查炼境 dev-manager-tauri 疑似重复登记」) | PR #34 → fc280db | ✅ 独立审查可合并、已合并,炼境已重编译;审查遗留 L1/L2 归 P8f(登记拒绝同路径),L3/L4/I1/I2 列入后续小修 |
| 10-03 | 重复登记数据合并 U3 | 同上(用户执行 DB 写入) | master 91017b6;主仓库 .codex/config.toml 升级为稳定 helper 格式 06f20db | ✅ 无 2c5b54ef 残留、同路径 1 条登记、Gitea 绑定 1 行;备份 dev-manager.backup-20261003-before-dedupe.db |
| 10-04 | 意图目录线 IC1–IC4(并行线交接登记) | 另一会话 | PR #42–#45 → master 0ffaad0 | ✅ 设计 docs/tasks/2026-10-04-intent-catalog-design.md、指南 docs/ai-context/intent-catalog-guide.md、目录 .blueprint/catalog.md 1.0(INT-01–03,书签暂指本文件 §0);Codex 跨客户端纸面编译通过;模块进度 31%。IC5(首次真实 /goal)可用「MVP 收口」做;Phase 4+(IC6–IC13)冻结为扩展;目录改动按指南走(小版本须用户确认,提交带 Feature-Confirmed) |
| 10-04 | 阶段切换与清理 | 统筹会话 | master 直推 | P8 达成;§0 终点改为「MVP 收口」,扩展冻结登记进 §3;临时登记 2 条与 worktree 5 个已清理,手动删除项见 §5 |
## 5. 待用户处理(统筹会话汇总,按时机)
- ~~重复登记数据合并~~:已由用户执行完毕并验收(见 §4)。
- ~~P8 human_verify~~:2026-10-04 用户终验通过(证据见 P8g 卡 human_verify),**本阶段终点 P8 达成**。
- **本轮清理(2026-10-04 用户确认删除,agent 侧已完成)**:unregister_project 删除 lj-p8-e2e-20261003(ac73a4bb…)与 lj-p8g-ui-test(5818aa5a…)两条登记(本地文件未动);git worktree remove:tmp-p7skill-review、tmp-delivery-status-review、tmp-p10-verify-mut(含审查探针测试,--force 丢弃)、dev-manager-tauri-wt-p8、dev-manager-tauri-wt-intent(已注销,空目录删不掉,可能被 Codex 侧边栏占用);dev-manager-tauri-wt-p8g 在本次文档提交后移除。
- **待你手动删除**(deny 规则禁止 agent 删除):
- 目录:`E:\code-project\lj-p8-e2e-20261003`、`E:\code-project\lj-p8g-ui-test`、`E:\code-project\lj-p8g-ui-cancel`(误建、未登记)、`E:\code-project\dev-manager-tauri-wt-intent`(空目录)、`E:\code-project\dev-manager-tauri-wt-p8g`(若移除后残留);
- 文件:`E:\verify_before.json`;
- `%TEMP%` 下:重复登记会话的 `merge_dup.py` 等,统筹会话的 `lj-p4-0`、`lj-p7-probe`、`lj-p9-spike` 等探针目录,`tmp.h9jWUlwgmv\`(意图目录探索章检查夹具);
- 可选:Codex 信任表(`~/.codex/config.toml`)里 `e:\code-project\lj-p8g-ui-test` 的信任条目。
- ~~需求澄清:概念占位登记~~:用户 2026-10-04 定 MVP 保持现状、列入扩展(§3)。
- **Codex 信任**:Codex 只在目录受信任后加载项目 `.codex/config.toml`(P4-0 H-P8-1)。一键接入会把它列进 next_actions,炼境不改 Codex 的信任表。
## 6. 当前已知事实(易变,以工具自省为准)
- `verify_onboarding(enterprise)` 的 `clients` 三端均 converged。
- `list_all_projects`:除 enterprise 外,其余登记项目大多缺项目 token(历史接入早于 token 机制),这些正是一键接入要接的对象。
- 使者回传:0 条待处置。
## 7. 交接(2026-10-04,统筹会话上下文将满,换新会话继续)
> **已执行完毕(2026-10-04)**:本节的 P8g 与收尾全部完成,见 §4;下一阶段按 §0「MVP 收口」推进。本节保留作交接记录。
新会话即新的统筹会话:先读本文件 §1–§6,再按下面接手。旧统筹会话的 30 分钟巡检已停止。
**当前状态**
- ✅:P4a(PR #38)、P8c(#36)、P8d(#39)、P8e(#40)、P8f(#37),以及 G8(#35)、PR #34。
- 证据都写在 `.blueprint/modules/agent-client-parity.md` 各卡的 mcp_verify / merge_verify,以及 P8 卡的 e2e_verify:
- 新登记临时项目 `ac73a4bb-a601-4e21-bc0f-7eda71fae4aa`(目录 E:\code-project\lj-p8-e2e-20261003)走完 register → plan → onboard_project,得 done;
- 再执行一次 9 步全部收敛,文件 mtime 不变。
- master 最近一次全量回归:P8d 合并后 cargo test 402 passed。P8e(d7f4816)的分支自测为 413 passed,但合并后在 master 上还没跑全量,收尾时要跑。
**唯一未完成:P8g UI 一键接入(🔵)**
- worktree:E:/code-project/dev-manager-tauri-wt-p8g,分支 feat/agent-client-parity-p8g,基于 51a39d0,未提交、未推送。
- 已有的半成品改动:
- src-tauri/src/onboard/plan.rs(+38,执行 agent 称 Rust 侧 414 passed);
- src/lib/commands.ts(+2);
- P8g 卡已标 🔵;
- 新文件 src/components/dashboard/onboardView.ts 只写了一部分。
- 委派失败两次(工作流 180 秒看门狗卡死 6 次;后台 Agent 600 秒流卡死),都卡在一次性生成大文件。**在新会话主线程里直接做**:
- 先审一遍上面的半成品,保留就续写、不保留就从头写;
- 单次 Write/Edit 不超过约 150 行,长命令放后台轮询。
- 范围以 P8g 卡的 acceptance 为准:onboardView.ts 加 vitest 视图纯函数测试、OnboardPanel.tsx、各入口接线。
**收尾到 /goal 终点**
1. P8g:
- pnpm typecheck 与 pnpm test 通过;
- 做一次只读独立审查并处置;
- 开 PR,CI passed 后按完整 head SHA 合并;
- 主仓库 git merge --ff-only origin/master(不碰用户的 3 个未提交文件:notes-archive.jsonl、usage.json、Cargo.toml——前两个会被运行中的炼境自动写入,Cargo.toml 只差行尾)。
2. 在 master 上跑 pnpm typecheck 与全量 cargo test(CARGO_TARGET_DIR 用 parity 热缓存),结果写进 P8g 卡。
3. P8g 卡标 ✅(agent_verify 已过;human_verify 交给用户),更新 manifest 进度与本文件 §4。
4. 向用户汇报证据,并列出:
- human_verify:
- Codex 里信任 E:\code-project\lj-p8-e2e-20261003 后重跑 probe_client_parity,C–F 应变为 ready;
- Claude Code、Codex、DSH 桌面 GUI 各新开会话,调用 read_project_test_account(name=LJ_PROBE_NONEXISTENT),应返回「开发需求未登记」;
- P8g 界面终验;
- 删除确认:端到端临时项目(unregister_project 后手删目录);
- 各执行 agent 留下的临时文件。
**后续(P8 终点之后)**
- §3 的「后续小修」:
- P8e 审查的 3 条低优先级与 5 条信息项(修复半成品还在 E:/code-project/dev-manager-tauri-wt-p8e,未提交);
- 结构化工具应同时在 content 里返回序列化 JSON(MCP 规范建议,否则只读 content 的客户端看不到计划细节);
- backfill 跳过非 UTF-8 旧笔记;
- P8f 审查转入项。
- 其他:
- 接入包模板改为引导 plan_onboarding → onboard_project(需升版本);
- beast-mode 重复登记(需用户执行 DB 写入);
- 占位登记的需求澄清。