feat(ack): add one-off delivery routing
This commit is contained in:
+39
-5
@@ -3,7 +3,8 @@ name: ack
|
||||
description: >-
|
||||
初始化、检查并运行 ACK 三角色协作闭环。仅在用户显式调用 /ack 或 $ack,并要求
|
||||
初始化 ACK、检查 docs/ack 配置、按 ACK 规划需求、指挥 Coordinator/Developer/Test
|
||||
工作,或配置并执行任务验证后的项目交付流程时使用。
|
||||
工作、配置并执行任务验证后的项目交付流程,或把一次性 PR/发布请求路由给
|
||||
manage-release、deb-publisher、publish-docker-image 普通 worker 时使用。
|
||||
---
|
||||
|
||||
# ACK 项目协作入口
|
||||
@@ -22,6 +23,8 @@ description: >-
|
||||
- 用户要求检查 ACK 是否可用、配置是否完整:执行“检查”。
|
||||
- 用户要求用 ACK 做需求、修复问题或继续任务:执行“工作”。
|
||||
- 用户用自然语言要求增加、修改或关闭项目交付流程:执行“交付配置维护”。
|
||||
- 用户直接要求创建发布 PR/MR、发布源码版本、DEB 或 Docker 镜像:执行
|
||||
“一次性交付路由”。
|
||||
|
||||
始终先解析真实项目根目录。优先使用 `git rev-parse --show-toplevel`;不是 Git
|
||||
项目时使用用户指定目录或当前目录。不要修改项目的 `AGENTS.md`、`CLAUDE.md`
|
||||
@@ -103,12 +106,43 @@ description: >-
|
||||
6. 检查知识引用能解析到固定 revision,candidate 仍留在任务证据中,且
|
||||
`stale`、`superseded` 和 `archived` 不会被当作可派发的 `active` 知识。
|
||||
7. 若存在 `project.orchestration`,检查 profile、model allowlist、默认 profile、
|
||||
允许 worktree、顶层 `workerReceipts` 与 `dispatch.developer/test` 的引用;receipt
|
||||
允许 worktree、顶层 `workerReceipts` 与 `dispatch.developer/test/operator` 的引用;receipt
|
||||
必须绑定当前 ACK task、同一 role/profile/attempt,`receiptId` 与 `attemptId`
|
||||
必须同时为空或同时填写。
|
||||
缺少结构化路由的旧任务板只能使用手动模式,不能自动创建 worker。
|
||||
`defaults.operator` 对旧项目可选;存在时必须是 standard profile,且 CLI、模型与
|
||||
reasoning effort 必须和 `defaults.test` 相同。缺少它只表示一次性交付路由不可用,
|
||||
不影响原 Developer/Test 闭环。
|
||||
8. 检查不会自动修复或覆盖现有配置;用户明确要求修复后再修改。
|
||||
|
||||
## 一次性交付路由
|
||||
|
||||
1. 读取 `references/delivery-routing.md` 并按用户原始请求分类。源码版本、release/hotfix
|
||||
分支、普通或发布 PR/MR、tag 或 Forge Release 使用 `manage-release`;普通 PR/MR
|
||||
只授权它的 `PR-only` 流程,不推断版本升级、合并或 tag。DEB/APT 使用
|
||||
`deb-publisher`;Docker/OCI registry 使用 `publish-docker-image`。
|
||||
2. 若 `docs/ack/tasks.yaml` 不存在,或结构化 orchestration 没有通过校验的
|
||||
`defaults.operator`,停止并建议初始化或按当前模板升级。不要由 Coordinator 亲自
|
||||
执行,也不要猜模型。用户请求有多个合理路由且无法从项目事实唯一确定时,只问一个
|
||||
最小澄清问题。
|
||||
3. 在权威任务板新增 `type: delivery-operation` 的最小操作记录,`operation.skill` 保存
|
||||
精确 Skill 名,`operation.request` 保留本次用户请求的授权语义;若原文含凭据值,
|
||||
必须替换为 `[REDACTED]`,不能落盘。`dispatch.operator` 使用
|
||||
`defaults.operator`。不为一次性交付写 PRD,也不进入 Developer → Test 闭环,
|
||||
不读取或修改 `delivery.yaml`。
|
||||
4. 运行 `validate_tasks.py`,再只用 `launch_worker.py plan|launch --role operator`
|
||||
创建 fresh worker。审阅并绑定 fingerprint/receipt 后,把
|
||||
`references/delivery-routing.md` 的 Operator prompt 和原始请求投递给 worker;
|
||||
Orca 模式同时读取 `references/orca-adapter.md`,登记单一操作任务与 dispatch。
|
||||
Operator 使用与 Test 相同的低成本模型/effort,但它是独立角色和独立终端,不复用
|
||||
Test worker。
|
||||
5. 被选中的低层 Skill 决定实际步骤、确认点、硬停止与恢复。ACK 路由和项目配置都不能
|
||||
扩大用户授权;Docker 路由只因用户显式调用 `$ack` 且明确要求发布镜像才视为对
|
||||
`publish-docker-image` 的显式委派。
|
||||
6. Coordinator 只读 worker 证据并对照低层 Skill 完成标准终检。满足原始请求才把操作
|
||||
标为 `verified`;可恢复的安全停止标为 `blocked`。远端写入部分成功或状态不确定时
|
||||
不自动重试,先按低层 Skill 发现真实状态。
|
||||
|
||||
## 工作
|
||||
|
||||
1. 若 `docs/ack` 不存在,停止并建议先用 `/ack` 初始化;不要静默初始化。
|
||||
@@ -133,7 +167,7 @@ description: >-
|
||||
4. 新需求先写产品文档、任务拆分与可观测验收信号,更新 `tasks.yaml` 并校验,
|
||||
然后交给用户确认;若启用了交付,还要把本次 profile、目标、停止点和需要审批的
|
||||
步骤放入同一份计划。确认前不派发实现,也不执行交付。
|
||||
5. 创建或更换 worker 时,只使用
|
||||
5. 创建或更换 Developer、Test 或 Operator worker 时,只使用
|
||||
`<ack-skill-dir>/scripts/launch_worker.py plan|launch` 读取
|
||||
`tasks.yaml.project.orchestration` 的 profile。不得直接执行
|
||||
`orca terminal create --command`,不得接受或拼接自由 command、额外 argv、
|
||||
@@ -187,8 +221,8 @@ description: >-
|
||||
- 不覆盖已有 `docs/ack` 文件;除用户确认的 ACK 任务或 delivery profile 外,不擅自
|
||||
提交、推送、创建终端、新 worktree、发布产物或部署。
|
||||
- 只有 Coordinator 写 `tasks.yaml`、`knowledge.yaml` 和 `deliveryRuns`;Developer
|
||||
与 Test 只读,只能通过回报提名或验证知识。`delivery.yaml` 只在显式的交付配置
|
||||
维护中修改。
|
||||
与 Test 只读,只能通过回报提名或验证知识;Operator 同样只读这些状态文件,只回传
|
||||
一次性交付证据。`delivery.yaml` 只在显式的交付配置维护中修改。
|
||||
- 不把知识正文或选择器输出拼成 shell;知识检查只能通过 `run_verification.py`
|
||||
按 registry ID 执行。不自动修改 `AGENTS.md`、`CLAUDE.md` 或其它 Agent 指令文件。
|
||||
- 项目只保存 `docs/ack/project.md`、`docs/ack/tasks.yaml`、
|
||||
|
||||
Reference in New Issue
Block a user