docs(skills): 明确 @build/@test/@task 为文档别名并新增 precheck/postmerge 命令
AGENTS.md「构建与验证」新增总口径:@build / @test / @task 都是本仓库的 文档别名、不是 shell 命令(2026-10-30 实测:bash 敲 @task / @build 即 command not found,dsh task 被解析成 profile 名报错);`=` 后的命令行 才是可执行形态,DSH 会话显式调用为 /keil-build、/serial-boot-test、 /task-worktree。 - AGENTS.md / docs/README.md / 并行任务工作树方案.md:@task 三处定义位 由「短命令」统一改为「文档别名」,并写入两种实测失败形态 - keil-build / serial-boot-test SKILL.md:定义位点破别名性质;@test 在 skill 内原先没有定义句,补口径 blockquote - task-worktree SKILL.md 与 reference/:whenToUse、标题、症状表、插件桥 去 @task 前缀改指 list / 本 skill;frontmatter 能力清单同步 - task_worktree.py 新增 precheck(树内只读自查:BOM 漂移 / CR / U+FFFD、 docs 逐档门禁、--msgfile 消息 BOM/CRLF/行长/禁词检查,自动补 ci-artifacts/)与 postmerge(主树体积凭证自动诊断:新鲜跳过、红先短链 再只读复检裁定是否升全链;check_doc_links --all;列文件不代提交) - done 快路径打印与门禁拦截提示均指向 postmerge 实测:precheck 对坏消息文件抓到 CRLF、行长 95>80、禁词×3(rc=1); postmerge 端到端「凭证同码新鲜→跳链→doc --all 绿(2967 章节引用 / 214 文档)→列 dirty 文件」rc=0;check_skill_size.py 与 py_compile 通过; frontmatter 改动后 DSH 已用新值真加载过一轮。无 .c/.h 改动,不涉及体积。
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
本仓现在有**两套**隔离空间。别混用,也别互相回收:
|
||||
|
||||
| | `@task`(本 skill) | DSH worktree 插件(`dsh-task-worktree`) |
|
||||
| | 本 skill(文档别名 `@task`,DSH 显式调用 `/task-worktree`) | DSH worktree 插件(`dsh-task-worktree`) |
|
||||
|---|---|---|
|
||||
| 树在哪 | 仓库**外** `../_wt/<ID>-<slug>/` | 仓库**内** `.dsh-worktrees/worktree/<name>/` |
|
||||
| 谁建 | `new <ID> <slug>`(人来敲命令) | 会话选「Worktree模式」/ 模型调 `worktree_create`(零命令) |
|
||||
@@ -47,7 +47,7 @@
|
||||
`task_worktree.py: plugin_lock_owner()`)→ `lock status` 不再一律落成 `build-cli`。
|
||||
- 上台架仍须手工占锁、用同一个名:`lock acquire bench --task pw:<name> --note <说明>` →
|
||||
`lock release bench --task pw:<name> --bench-pass`。插件树没有台账 → 按 B 节只 warn、锁照常放。
|
||||
- **命名建议**:插件 `<name>` 沿用 `@task` 的 `<ID>-<slug>` 形态(如 `N21-dhara-isfree`),两套视图同名好对账;
|
||||
- **命名建议**:插件 `<name>` 沿用本 skill 的 `<ID>-<slug>` 形态(如 `N21-dhara-isfree`),两套视图同名好对账;
|
||||
但分支前缀必然不同(`worktree/` vs `task/`),别把两者说成同一个分支。
|
||||
- **收尾不在这**:`done` / `abort` 拿插件树名下手只会 exit 2(这是保护,别绕过去手工 `git worktree remove`;
|
||||
要拆先 `plugin unadopt` 摘联接,再由**用户** `/worktree remove`)。`/worktree bring-back` 要求主工作树干净,
|
||||
|
||||
@@ -130,3 +130,5 @@
|
||||
`done` 的门禁自己持锁并给子进程设 `DTU_LOCK_HELD=build` 告知跳过(新旧脚本都兼容)。
|
||||
**`bench` 锁仍须 Agent 手工持**(会话作用域:跨烧录→`@test`→探针,见 `keil-build` SKILL.md)。
|
||||
- **⚠ `done --dry-run` 只保护预演段、不保护清场段**(2026-10-29 实测):`done <ID> --dry-run --skip-build --skip-gates` 在「分支已合入主干」这条路上**照样执行清场**——摘 `.venv` / `simulator/SDL2` 联接、删分支、清台账,然后打「完成(分支此前已合入)」。想真·零改动就只跑不带 `--skip-gates` 的 `--dry-run` 并停在预演输出;用完一律 `git worktree list` 复验(判完成以 `git log` 为准,不是以有没有再敲一次 `done` 为准)。另:`--dry-run` 的前置检查同样要抢 `build` 锁——被别的任务占着时它会直接报「独占资源 build 仍被 X 占用,先 release」,此时加 `--skip-build` 或先 release,**别为了预演去抢别人的锁**。
|
||||
- **⚠ 文件工具「先读后改」按解析后的绝对路径记账,切树后要重新读**(2026-10-30 实测,屏板链路任务树):开新树后先用**相对路径**读过一批文件(读历史记到当时解析到的主树文件上),再进任务树直接 `edit` → 6 条并行编辑全被 `file has not been read — read the file, then retry` 拒。判据:**树内改动一律用树内绝对路径,先 read 再改**——读历史不跨路径复用,工具不做「同名相对路径」宽容。
|
||||
- **⚠ 中文门禁输出回显乱码 ≠ 路径坏**(2026-10-30 实测):对含中文文件名的文档跑 `check_doc_links.py`,终端回显整段乱码,但 **rc 与判定计数全部正确**。只认 `[SUMMARY]` 行与退出码,别误诊成「文档丢失」;脚本化批量调用走 python subprocess + 显式 `encoding`,别经命令行中转中文名。
|
||||
|
||||
Reference in New Issue
Block a user