@aipper/aiws-spec 0.0.33 → 0.0.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/aiws-bootstrap-routing-design.md +5 -50
- package/docs/aiws-governance-positioning.md +1 -1
- package/docs/cli-interface.md +13 -73
- package/docs/collaboration-artifacts.md +2 -2
- package/docs/opencode-autonomous-swarm.md +0 -2
- package/docs/opencode-omo-adapter.md +0 -2
- package/docs/opencode-omo-validation-checklist.md +0 -1
- package/docs/spec-contract.md +10 -36
- package/docs/workflow-router-rules.json +2 -2
- package/docs/workflow-router-rules.md +2 -2
- package/docs/ws-goal-contract.md +16 -25
- package/package.json +1 -1
- package/templates/workspace/.aiws/continuation/CONTINUATION_PROTOCOL.md +101 -0
- package/templates/workspace/.aiws/manifest.json +2 -10
- package/templates/workspace/.opencode/command/ws-finish.md +4 -0
- package/templates/workspace/.opencode/command/ws-goal.md +5 -0
- package/templates/workspace/.opencode/commands/ws-finish.md +4 -0
- package/templates/workspace/.opencode/skills/ws-goal/SKILL.md +41 -0
- package/templates/workspace/AGENTS.md +1 -3
- package/templates/workspace/AI_PROJECT.md +6 -1
- package/templates/workspace/AI_WORKSPACE.md +1 -1
- package/templates/workspace/manifest.json +156 -447
- package/templates/workspace/.agents/skills/p-aiws-change-archive/SKILL.md +0 -24
- package/templates/workspace/.agents/skills/p-aiws-change-finish/SKILL.md +0 -24
- package/templates/workspace/.agents/skills/p-aiws-change-list/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/p-aiws-change-new/SKILL.md +0 -26
- package/templates/workspace/.agents/skills/p-aiws-change-next/SKILL.md +0 -19
- package/templates/workspace/.agents/skills/p-aiws-change-start/SKILL.md +0 -33
- package/templates/workspace/.agents/skills/p-aiws-change-status/SKILL.md +0 -19
- package/templates/workspace/.agents/skills/p-aiws-change-sync/SKILL.md +0 -19
- package/templates/workspace/.agents/skills/p-aiws-change-templates-init/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/p-aiws-change-templates-which/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/p-aiws-change-validate/SKILL.md +0 -23
- package/templates/workspace/.agents/skills/p-aiws-hooks-install/SKILL.md +0 -30
- package/templates/workspace/.agents/skills/p-aiws-hooks-status/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/p-aiws-init/SKILL.md +0 -27
- package/templates/workspace/.agents/skills/p-aiws-rollback/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/p-aiws-update/SKILL.md +0 -26
- package/templates/workspace/.agents/skills/p-aiws-validate/SKILL.md +0 -22
- package/templates/workspace/.agents/skills/p-tasks-plan/SKILL.md +0 -37
- package/templates/workspace/.agents/skills/using-aiws/SKILL.md +0 -112
- package/templates/workspace/.agents/skills/ws-analyze/SKILL.md +0 -26
- package/templates/workspace/.agents/skills/ws-bugfix/SKILL.md +0 -111
- package/templates/workspace/.agents/skills/ws-commit/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-delegate/SKILL.md +0 -75
- package/templates/workspace/.agents/skills/ws-deliver/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-dev/SKILL.md +0 -109
- package/templates/workspace/.agents/skills/ws-dev-lite/SKILL.md +0 -58
- package/templates/workspace/.agents/skills/ws-finish/SKILL.md +0 -22
- package/templates/workspace/.agents/skills/ws-frontend-design/SKILL.md +0 -126
- package/templates/workspace/.agents/skills/ws-goal/SKILL.md +0 -89
- package/templates/workspace/.agents/skills/ws-handoff/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-intake/SKILL.md +0 -106
- package/templates/workspace/.agents/skills/ws-migrate/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-plan/SKILL.md +0 -144
- package/templates/workspace/.agents/skills/ws-plan-verify/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-preflight/SKILL.md +0 -56
- package/templates/workspace/.agents/skills/ws-pull/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-push/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-quality-review/SKILL.md +0 -56
- package/templates/workspace/.agents/skills/ws-req-change/SKILL.md +0 -41
- package/templates/workspace/.agents/skills/ws-req-contract-sync/SKILL.md +0 -17
- package/templates/workspace/.agents/skills/ws-req-contract-validate/SKILL.md +0 -12
- package/templates/workspace/.agents/skills/ws-req-flow-sync/SKILL.md +0 -28
- package/templates/workspace/.agents/skills/ws-req-review/SKILL.md +0 -32
- package/templates/workspace/.agents/skills/ws-research/SKILL.md +0 -56
- package/templates/workspace/.agents/skills/ws-review/SKILL.md +0 -55
- package/templates/workspace/.agents/skills/ws-rule/SKILL.md +0 -23
- package/templates/workspace/.agents/skills/ws-spec-review/SKILL.md +0 -57
- package/templates/workspace/.agents/skills/ws-submodule-setup/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-verify-before-complete/SKILL.md +0 -18
- package/templates/workspace/.claude/commands/p-aiws-change-archive.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-change-finish.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-change-list.md +0 -23
- package/templates/workspace/.claude/commands/p-aiws-change-new.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-change-next.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-change-start.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-change-status.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-change-sync.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-change-templates-init.md +0 -23
- package/templates/workspace/.claude/commands/p-aiws-change-templates-which.md +0 -23
- package/templates/workspace/.claude/commands/p-aiws-change-validate.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-hooks-install.md +0 -23
- package/templates/workspace/.claude/commands/p-aiws-hooks-status.md +0 -23
- package/templates/workspace/.claude/commands/p-aiws-init.md +0 -20
- package/templates/workspace/.claude/commands/p-aiws-rollback.md +0 -13
- package/templates/workspace/.claude/commands/p-aiws-update.md +0 -19
- package/templates/workspace/.claude/commands/p-aiws-validate.md +0 -14
- package/templates/workspace/.claude/commands/using-aiws.md +0 -25
- package/templates/workspace/.claude/commands/ws-analyze.md +0 -27
- package/templates/workspace/.claude/commands/ws-bugfix.md +0 -32
- package/templates/workspace/.claude/commands/ws-commit.md +0 -67
- package/templates/workspace/.claude/commands/ws-deliver.md +0 -55
- package/templates/workspace/.claude/commands/ws-dev-lite.md +0 -31
- package/templates/workspace/.claude/commands/ws-dev.md +0 -33
- package/templates/workspace/.claude/commands/ws-finish.md +0 -72
- package/templates/workspace/.claude/commands/ws-goal.md +0 -34
- package/templates/workspace/.claude/commands/ws-handoff.md +0 -23
- package/templates/workspace/.claude/commands/ws-intake.md +0 -19
- package/templates/workspace/.claude/commands/ws-migrate.md +0 -22
- package/templates/workspace/.claude/commands/ws-plan-verify.md +0 -25
- package/templates/workspace/.claude/commands/ws-plan.md +0 -21
- package/templates/workspace/.claude/commands/ws-preflight.md +0 -27
- package/templates/workspace/.claude/commands/ws-pull.md +0 -84
- package/templates/workspace/.claude/commands/ws-push.md +0 -90
- package/templates/workspace/.claude/commands/ws-quality-review.md +0 -24
- package/templates/workspace/.claude/commands/ws-req-change.md +0 -42
- package/templates/workspace/.claude/commands/ws-req-contract-sync.md +0 -18
- package/templates/workspace/.claude/commands/ws-req-contract-validate.md +0 -13
- package/templates/workspace/.claude/commands/ws-req-flow-sync.md +0 -20
- package/templates/workspace/.claude/commands/ws-req-review.md +0 -33
- package/templates/workspace/.claude/commands/ws-review.md +0 -31
- package/templates/workspace/.claude/commands/ws-rule.md +0 -24
- package/templates/workspace/.claude/commands/ws-spec-review.md +0 -24
- package/templates/workspace/.claude/commands/ws-submodule-setup.md +0 -54
- package/templates/workspace/.claude/commands/ws-verify-before-complete.md +0 -24
- package/templates/workspace/.claude/settings.json.example +0 -26
- package/templates/workspace/.claude/skills/p-aiws-change-archive/SKILL.md +0 -24
- package/templates/workspace/.claude/skills/p-aiws-change-finish/SKILL.md +0 -24
- package/templates/workspace/.claude/skills/p-aiws-change-list/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/p-aiws-change-new/SKILL.md +0 -26
- package/templates/workspace/.claude/skills/p-aiws-change-next/SKILL.md +0 -19
- package/templates/workspace/.claude/skills/p-aiws-change-start/SKILL.md +0 -33
- package/templates/workspace/.claude/skills/p-aiws-change-status/SKILL.md +0 -19
- package/templates/workspace/.claude/skills/p-aiws-change-sync/SKILL.md +0 -19
- package/templates/workspace/.claude/skills/p-aiws-change-templates-init/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/p-aiws-change-templates-which/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/p-aiws-change-validate/SKILL.md +0 -23
- package/templates/workspace/.claude/skills/p-aiws-hooks-install/SKILL.md +0 -30
- package/templates/workspace/.claude/skills/p-aiws-hooks-status/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/p-aiws-init/SKILL.md +0 -27
- package/templates/workspace/.claude/skills/p-aiws-rollback/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/p-aiws-update/SKILL.md +0 -26
- package/templates/workspace/.claude/skills/p-aiws-validate/SKILL.md +0 -22
- package/templates/workspace/.claude/skills/p-tasks-plan/SKILL.md +0 -37
- package/templates/workspace/.claude/skills/using-aiws/SKILL.md +0 -87
- package/templates/workspace/.claude/skills/ws-analyze/SKILL.md +0 -26
- package/templates/workspace/.claude/skills/ws-bugfix/SKILL.md +0 -111
- package/templates/workspace/.claude/skills/ws-commit/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-deliver/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-dev/SKILL.md +0 -79
- package/templates/workspace/.claude/skills/ws-dev-lite/SKILL.md +0 -58
- package/templates/workspace/.claude/skills/ws-finish/SKILL.md +0 -22
- package/templates/workspace/.claude/skills/ws-frontend-design/SKILL.md +0 -126
- package/templates/workspace/.claude/skills/ws-handoff/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-intake/SKILL.md +0 -53
- package/templates/workspace/.claude/skills/ws-migrate/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-plan/SKILL.md +0 -138
- package/templates/workspace/.claude/skills/ws-plan-verify/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-preflight/SKILL.md +0 -55
- package/templates/workspace/.claude/skills/ws-pull/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-push/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-quality-review/SKILL.md +0 -56
- package/templates/workspace/.claude/skills/ws-req-change/SKILL.md +0 -41
- package/templates/workspace/.claude/skills/ws-req-contract-sync/SKILL.md +0 -17
- package/templates/workspace/.claude/skills/ws-req-contract-validate/SKILL.md +0 -12
- package/templates/workspace/.claude/skills/ws-req-flow-sync/SKILL.md +0 -28
- package/templates/workspace/.claude/skills/ws-req-review/SKILL.md +0 -32
- package/templates/workspace/.claude/skills/ws-review/SKILL.md +0 -55
- package/templates/workspace/.claude/skills/ws-rule/SKILL.md +0 -23
- package/templates/workspace/.claude/skills/ws-spec-review/SKILL.md +0 -57
- package/templates/workspace/.claude/skills/ws-submodule-setup/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-verify-before-complete/SKILL.md +0 -18
- package/templates/workspace/.codex/prompts/aiws-init.md +0 -23
- package/templates/workspace/.codex/prompts/aiws-rollback.md +0 -16
- package/templates/workspace/.codex/prompts/aiws-update.md +0 -22
- package/templates/workspace/.codex/prompts/aiws-validate.md +0 -17
- package/templates/workspace/.codex/prompts/ws-analyze.md +0 -32
- package/templates/workspace/.codex/prompts/ws-dev.md +0 -36
- package/templates/workspace/.codex/prompts/ws-migrate.md +0 -27
- package/templates/workspace/.codex/prompts/ws-preflight.md +0 -32
- package/templates/workspace/.codex/prompts/ws-req-change.md +0 -39
- package/templates/workspace/.codex/prompts/ws-req-contract-sync.md +0 -23
- package/templates/workspace/.codex/prompts/ws-req-contract-validate.md +0 -18
- package/templates/workspace/.codex/prompts/ws-req-flow-sync.md +0 -25
- package/templates/workspace/.codex/prompts/ws-req-review.md +0 -38
- package/templates/workspace/.codex/prompts/ws-review.md +0 -32
- package/templates/workspace/.codex/prompts/ws-rule.md +0 -29
|
@@ -2,75 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
## 目标
|
|
4
4
|
|
|
5
|
-
把 `aiws` 从“提供一组可显式调用的 `ws-*` 入口”推进到“默认先接管 workflow,再决定进入哪个入口”的治理系统,并先把
|
|
5
|
+
把 `aiws` 从“提供一组可显式调用的 `ws-*` 入口”推进到“默认先接管 workflow,再决定进入哪个入口”的治理系统,并先把 的目录真值固定下来,避免后续 bootstrap / router / 安装器继续建立在错误路径假设上。
|
|
6
6
|
|
|
7
7
|
## 本次查档结论(2026-03-30)
|
|
8
8
|
|
|
9
|
-
### Claude Code
|
|
10
|
-
|
|
11
|
-
- 官方文档公开说明的项目级 / 全局级入口是:
|
|
12
|
-
- skills:`.claude/skills/<skill-name>/SKILL.md` / `~/.claude/skills/<skill-name>/SKILL.md`
|
|
13
|
-
- 自定义 slash commands(legacy compatible):`.claude/commands/` / `~/.claude/commands/`
|
|
14
|
-
- subagents:`.claude/agents/` / `~/.claude/agents/`
|
|
15
|
-
- 官方文档同时说明:`.claude/commands/*.md` 仍然可用,但若 skill 与 command 同名,skill 优先。
|
|
16
|
-
|
|
17
9
|
### OpenCode
|
|
18
10
|
|
|
19
11
|
- 官方文档公开说明的 native 目录是:
|
|
20
12
|
- skills:`.opencode/skills/` / `~/.config/opencode/skills/`
|
|
21
13
|
- commands:`.opencode/commands/` / `~/.config/opencode/commands/`
|
|
22
|
-
- OpenCode 官方文档同时说明会检测其它 agent 生态目录,包括:
|
|
23
|
-
- `.agents/skills/`
|
|
24
|
-
- `.claude/commands/`
|
|
25
|
-
- `.claude/skills/`
|
|
26
|
-
|
|
27
|
-
### Codex
|
|
28
|
-
|
|
29
|
-
- 本次检索到的 OpenAI 官方公开页面没有明确给出 “Codex skills 全局目录”的公开路径说明。
|
|
30
|
-
- 因此,`Codex` 的目录结论需要明确标记为**推断**:
|
|
31
|
-
- repo-local:`.agents/skills/`
|
|
32
|
-
- global:`~/.agents/skills/`
|
|
33
|
-
- 这个推断依据是:
|
|
34
|
-
- 当前 Codex 运行环境与生态使用习惯都以 `.agents/skills/` 为项目内 skills 目录
|
|
35
|
-
- OpenCode 官方文档也把 `.agents/skills/` 视为兼容可发现目录
|
|
36
|
-
- 在找到 OpenAI 官方公开页面直接写明路径前,不再把 `~/.codex/skills/` 当成长期目录真值。
|
|
37
14
|
|
|
38
15
|
## 固定下来的目录决策
|
|
39
16
|
|
|
40
17
|
### 1. repo 内 workflow skill 的目标投影
|
|
41
18
|
|
|
42
|
-
- `Codex` / agent-compatible:
|
|
43
|
-
- `.agents/skills/<skill-name>/SKILL.md`
|
|
44
|
-
- `Claude Code` native:
|
|
45
|
-
- `.claude/skills/<skill-name>/SKILL.md`
|
|
46
19
|
- `OpenCode` native:
|
|
47
20
|
- `.opencode/skills/<skill-name>/SKILL.md`
|
|
48
21
|
- 设计原则:
|
|
49
22
|
- workflow instruction 的单一真值仍然留在 `packages/spec/`
|
|
50
|
-
-
|
|
51
|
-
- 不能再把 `.agents/skills/` 单独当成覆盖所有工具的唯一目标目录
|
|
52
|
-
|
|
53
|
-
### 2. Codex 全局 skills 安装目标
|
|
54
|
-
|
|
55
|
-
- 设计真值改为:`~/.agents/skills/<skill-name>/SKILL.md`
|
|
56
|
-
- 不再把 `~/.codex/skills/` 作为长期默认目录
|
|
57
|
-
- 当前实现若仍写入 `~/.codex/skills/`,视为第一版实现遗留;后续通过单独实现条目迁移
|
|
23
|
+
- 目标仓库投影到 OpenCode native 目录
|
|
58
24
|
|
|
59
|
-
###
|
|
60
|
-
|
|
61
|
-
- native workflow skill 目录:
|
|
62
|
-
- `.claude/skills/<skill-name>/SKILL.md`
|
|
63
|
-
- 如后续确有必要引入 agent 角色:
|
|
64
|
-
- `.claude/agents/*.md`
|
|
65
|
-
- `.claude/commands/*.md` 继续保留为 legacy compatibility / command-style entrypoint,但不再作为唯一长期真值
|
|
66
|
-
|
|
67
|
-
### 4. OpenCode 入口策略
|
|
25
|
+
### 2. OpenCode 入口策略
|
|
68
26
|
|
|
69
27
|
- native 真值应记录为:
|
|
70
28
|
- skills:`.opencode/skills/`
|
|
71
29
|
- commands:`.opencode/commands/`
|
|
72
30
|
- 由于当前仓库仍有 `.opencode/command/`(单数)遗留,先明确它是**legacy compatibility path**,不再把它当未来默认路径
|
|
73
|
-
|
|
31
|
+
|
|
74
32
|
|
|
75
33
|
## Bootstrap / Router 设计
|
|
76
34
|
|
|
@@ -106,9 +64,7 @@
|
|
|
106
64
|
|
|
107
65
|
### 需要被后续实现修正的点
|
|
108
66
|
|
|
109
|
-
-
|
|
110
|
-
- 若后续增加 Claude 全局 skills 安装,目标应是 `~/.claude/skills/`,不是继续只投递到 `~/.claude/commands/`
|
|
111
|
-
- 若后续增加 OpenCode 全局 skills 安装,目标应是 `~/.config/opencode/skills/`
|
|
67
|
+
- 后续增加 OpenCode 全局 skills 安装,目标应是 `~/.config/opencode/skills/`
|
|
112
68
|
- OpenCode 的 native commands 路径长期应对齐到 `.opencode/commands`,不再把 `.opencode/command` 当默认真值
|
|
113
69
|
- 需要新增 bootstrap / router 入口,而不是继续完全依赖使用者手工显式调用 `$ws-plan` / `$ws-dev` / `$ws-review`
|
|
114
70
|
|
|
@@ -121,7 +77,6 @@
|
|
|
121
77
|
## 条目拆分与当前状态
|
|
122
78
|
|
|
123
79
|
1. 目录对齐实现:
|
|
124
|
-
- Codex 全局 skills 目录迁移
|
|
125
80
|
- OpenCode native commands 目录迁移
|
|
126
81
|
- 当前已由 `TOOLING-002G` 落地
|
|
127
82
|
2. workflow bootstrap / router:
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## 一句话定位
|
|
4
4
|
|
|
5
|
-
`aiws` 不是“把模板分发到
|
|
5
|
+
`aiws` 不是“把模板分发到 OpenCode 的 CLI 薄封装”,而是以 `packages/spec/` 为单一真值,通过 workflow contracts 统一约束、门禁、协同和证据的 AI workspace 工作流治理系统。
|
|
6
6
|
|
|
7
7
|
CLI 分发能力依然重要,但它只是治理内核的一层实现,不是产品的全部定义。
|
|
8
8
|
|
package/docs/cli-interface.md
CHANGED
|
@@ -33,9 +33,7 @@
|
|
|
33
33
|
语义:
|
|
34
34
|
- 在目标仓库根目录写入/补齐模板(默认 `workspace`)。
|
|
35
35
|
- 默认生成 required + optional 文件/目录。
|
|
36
|
-
- 写入/更新 tool-native
|
|
37
|
-
- Codex repo skills:`.agents/skills/`
|
|
38
|
-
- Claude Code native skills + compatibility commands:`.claude/skills/` + `.claude/commands/`
|
|
36
|
+
- 写入/更新 tool-native 文件:
|
|
39
37
|
- OpenCode native skills + native commands + legacy compatibility commands:`.opencode/skills/` + `.opencode/commands/` + `.opencode/command/`
|
|
40
38
|
- 写入/更新 `.gitignore` 的 aiws 托管块(其余内容保留)。
|
|
41
39
|
- 生成并写入 `.aiws/manifest.json`:
|
|
@@ -99,90 +97,32 @@
|
|
|
99
97
|
接口(仅定义):
|
|
100
98
|
- `aiws validate [path] [--stamp]`
|
|
101
99
|
|
|
102
|
-
## `aiws
|
|
103
|
-
|
|
104
|
-
背景:
|
|
105
|
-
- Codex 推荐使用 repo skills(`.agents/skills/`);但对于“未初始化的任意仓库”,用户可能仍希望能直接调用一组通用 skills(如 `$ws-dev`、`$ws-preflight`)来引导回 AIWS 工作流。
|
|
106
|
-
- 因此提供**全局 skills 安装**:把模板内的 repo skills 安装到 Codex 的全局 skills 目录中,使其在任意仓库都可显式调用(是否自动发现/是否需要重启由 Codex 实现决定;aiws 不做保证)。
|
|
100
|
+
## `aiws opencode install-skills`
|
|
107
101
|
|
|
108
102
|
语义:
|
|
109
|
-
- 将模板内的 skills
|
|
110
|
-
- 默认:`~/.agents/skills/`
|
|
111
|
-
- 若设置了 `CODEX_HOME`:`$CODEX_HOME/.agents/skills/`(仅作为 compatibility/test override)
|
|
112
|
-
- 幂等:重复执行应只更新 AIWS 托管块,不破坏用户在文件托管块外追加的说明。
|
|
113
|
-
- 若目标文件已存在但不含 AIWS 托管块:默认失败(退出码 `2`);需用户显式 `--force` 才允许覆盖(覆盖前应备份)。
|
|
114
|
-
- 支持预演:`--dry-run` 仅输出将创建/更新/覆盖的 skills 清单,不写入任何文件。
|
|
103
|
+
- 将模板内的 repo skills 安装到全局 skills 目录中,使其在任意仓库都可显式调用。
|
|
115
104
|
|
|
116
105
|
接口(仅定义):
|
|
117
|
-
- `aiws
|
|
118
|
-
|
|
119
|
-
> `--dir` 可覆盖默认全局 skills 目录(用于 CI/沙箱验证,避免写入真实 home)。
|
|
106
|
+
- `aiws opencode install-skills [--template <template_id>] [--dir <path>] [--force] [--dry-run]`
|
|
120
107
|
|
|
121
|
-
## `aiws
|
|
108
|
+
## `aiws opencode status-skills`
|
|
122
109
|
|
|
123
110
|
语义:
|
|
124
|
-
- 检查
|
|
125
|
-
- `ok
|
|
111
|
+
- 检查 OpenCode 全局 skills 目录中,模板期望的 skills 是否就绪,并输出每个 skill 的状态:
|
|
112
|
+
- `ok`:存在且与模板一致
|
|
126
113
|
- `missing`:不存在
|
|
127
|
-
- `unmanaged`:存在但不含 AIWS 托管块(aiws 不会自动覆盖)
|
|
128
|
-
- `outdated`:存在且含 AIWS 托管块,但块内内容与模板不一致(建议重新 `install-skills`)
|
|
129
114
|
- 默认只做信息输出(不修改任何文件;退出码 `0` 表示命令执行成功,不代表全部为 `ok`)。
|
|
130
115
|
|
|
131
116
|
接口(仅定义):
|
|
132
|
-
- `aiws
|
|
133
|
-
|
|
134
|
-
## `aiws codex uninstall-skills`
|
|
135
|
-
|
|
136
|
-
语义:
|
|
137
|
-
- 从 Codex 全局 skills 目录卸载 AIWS 托管的 skills:
|
|
138
|
-
- 仅处理“含 AIWS 托管块”的文件(避免误删用户自建 skills)
|
|
139
|
-
- 移除前必须备份到:`<skillsDir>/.aiws/backups/codex-skills/<timestamp>/`
|
|
140
|
-
|
|
141
|
-
接口(仅定义):
|
|
142
|
-
- `aiws codex uninstall-skills [--template <template_id>] [--dir <path>]`
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## `aiws codex install-prompts`
|
|
147
|
-
|
|
148
|
-
背景(legacy):
|
|
149
|
-
- prompts 为遗留机制(deprecated);优先使用 repo skills(`.agents/skills/`)或全局 skills(`aiws codex install-skills`)。
|
|
150
|
-
- Codex 的自定义 prompts 主要从全局目录发现(通常为 `~/.codex/prompts/`)。
|
|
151
|
-
- 因此项目内的 `.codex/prompts/*.md` 不能保证会被 Codex 自动加载;需要显式安装到全局目录。
|
|
152
|
-
|
|
153
|
-
语义:
|
|
154
|
-
- 将模板内的 Codex prompt 文件(`templates/<template_id>/.codex/prompts/*.md`)安装到 Codex 的全局 prompts 目录:
|
|
155
|
-
- 默认:`~/.codex/prompts/`
|
|
156
|
-
- 若设置了 `CODEX_HOME`:`$CODEX_HOME/prompts/`
|
|
157
|
-
- 幂等:重复执行应只更新 AIWS 托管块,不破坏用户在文件托管块外追加的说明。
|
|
158
|
-
- 若目标文件已存在但不含 AIWS 托管块:默认失败(退出码 `2`);需用户显式 `--force` 才允许覆盖(覆盖前应备份)。
|
|
159
|
-
- 支持预演:`--dry-run` 仅输出将创建/更新/覆盖的文件清单,不写入任何文件。
|
|
160
|
-
|
|
161
|
-
接口(仅定义):
|
|
162
|
-
- `aiws codex install-prompts [--template <template_id>] [--dir <path>] [--force] [--dry-run]`
|
|
163
|
-
|
|
164
|
-
## `aiws codex status`
|
|
165
|
-
|
|
166
|
-
语义:
|
|
167
|
-
- 检查 Codex 全局 prompts 目录中,模板期望的 prompts 文件是否就绪,并输出每个文件的状态:
|
|
168
|
-
- `ok`:存在且 AIWS 托管块与模板一致
|
|
169
|
-
- `missing`:不存在
|
|
170
|
-
- `unmanaged`:存在但不含 AIWS 托管块(aiws 不会自动覆盖)
|
|
171
|
-
- `outdated`:存在且含 AIWS 托管块,但块内内容与模板不一致(建议重新 `install-prompts`)
|
|
172
|
-
- 默认只做信息输出(不修改文件;退出码 `0` 表示命令执行成功,不代表全部为 `ok`)。
|
|
173
|
-
|
|
174
|
-
接口(仅定义):
|
|
175
|
-
- `aiws codex status [--template <template_id>] [--dir <path>]`
|
|
117
|
+
- `aiws opencode status-skills [--template <template_id>] [--dir <path>]`
|
|
176
118
|
|
|
177
|
-
## `aiws
|
|
119
|
+
## `aiws opencode uninstall-skills`
|
|
178
120
|
|
|
179
121
|
语义:
|
|
180
|
-
- 从
|
|
181
|
-
- 仅处理“含 AIWS 托管块”的文件(避免误删用户自建 prompts)
|
|
182
|
-
- 移除前必须备份到:`<promptsDir>/.aiws/backups/codex-prompts/<timestamp>/`
|
|
122
|
+
- 从 OpenCode 全局 skills 目录卸载 AIWS 托管的 skills。
|
|
183
123
|
|
|
184
124
|
接口(仅定义):
|
|
185
|
-
- `aiws
|
|
125
|
+
- `aiws opencode uninstall-skills [--template <template_id>] [--dir <path>]`
|
|
186
126
|
|
|
187
127
|
## `aiws hooks install`
|
|
188
128
|
|
|
@@ -350,10 +290,10 @@ Dashboard API(本地只读):
|
|
|
350
290
|
- 将生成的证据路径追加回填到:
|
|
351
291
|
- `changes/<change-id>/proposal.md` 的 `Evidence_Path`
|
|
352
292
|
- `Plan_File` 指向的计划文件中的 `Evidence_Path`(若存在)
|
|
353
|
-
- 若存在 `.agentdocs/tmp/review/
|
|
293
|
+
- 若存在 `.agentdocs/tmp/review/review.md` 且 `changes/<id>/review/review.md` 不存在:复制为持久 review 证据。
|
|
354
294
|
- 协同收敛:
|
|
355
295
|
- 若 `analysis/` / `patches/` / `review/` / `evidence/` 目录缺失,会在执行时自动补齐。
|
|
356
|
-
- 若仅存在 `.agentdocs/tmp/review/
|
|
296
|
+
- 若仅存在 `.agentdocs/tmp/review/review.md` 且 `changes/<id>/review/review.md` 不存在,可先作为有效 review 信号参与阶段推断;执行 evidence 时应复制为持久 review 证据。
|
|
357
297
|
- 若存在 `.agentdocs/tmp/review/spec-review.md`、`.agentdocs/tmp/review/quality-review.md`、`.agentdocs/tmp/review/verify-before-complete.md` 且对应持久路径不存在,执行 evidence 时应同步收敛为持久 gate 证据。
|
|
358
298
|
- 收集 `review/` 下全部 `.md` 文件(支持多 reviewer),并生成 `changes/<id>/evidence/collaboration-summary-<timestamp>.json`。
|
|
359
299
|
- 生成 `changes/<id>/evidence/delivery-summary-<timestamp>.md`,概述协同工件数量、绑定信息、质量门结果与下一步建议。
|
|
@@ -27,7 +27,7 @@ changes/<change-id>/
|
|
|
27
27
|
- 外部分析不等于实现完成。主 agent 必须把采用与否的结论写入 `review/` 或最终 handoff。
|
|
28
28
|
- patch 草案不自动应用。主 agent 或人工必须先审查,再决定是否将其转换成真实代码改动。
|
|
29
29
|
- `review/` 允许多人并行,例如:
|
|
30
|
-
- `
|
|
30
|
+
- `review.md`
|
|
31
31
|
- `spec-review.md`
|
|
32
32
|
- `quality-review.md`
|
|
33
33
|
- `reviewer-a.md`
|
|
@@ -37,7 +37,7 @@ changes/<change-id>/
|
|
|
37
37
|
- `changes/<change-id>/review/quality-review.md`
|
|
38
38
|
- `changes/<change-id>/evidence/verify-before-complete.md`
|
|
39
39
|
- `aiws change evidence <change-id>` 应把 review / validate / collaboration summary 收敛到 `evidence/`,并在目标文件缺失时收敛以下 tmp fallback:
|
|
40
|
-
- `.agentdocs/tmp/review/
|
|
40
|
+
- `.agentdocs/tmp/review/review.md`
|
|
41
41
|
- `.agentdocs/tmp/review/spec-review.md`
|
|
42
42
|
- `.agentdocs/tmp/review/quality-review.md`
|
|
43
43
|
- `.agentdocs/tmp/review/verify-before-complete.md`
|
|
@@ -96,7 +96,6 @@ tmux swarm 只允许做**安全白名单**救援:
|
|
|
96
96
|
模板提供以下文件:
|
|
97
97
|
|
|
98
98
|
- `.opencode/oh-my-opencode.json.example`
|
|
99
|
-
- `.claude/settings.json.example`
|
|
100
99
|
- `.opencode/skills/ws-auto/SKILL.md`
|
|
101
100
|
- `.opencode/helpers/tmux-swarm-scan.sh`
|
|
102
101
|
- `.opencode/helpers/tmux-swarm-rescue.sh`
|
|
@@ -109,7 +108,6 @@ tmux swarm 只允许做**安全白名单**救援:
|
|
|
109
108
|
- `.opencode/oh-my-opencode.json.example` 负责声明 agent、`prompt_append`、`backgroundTasks`、`experimental.auto_resume`
|
|
110
109
|
- `.opencode/oh-my-opencode.json.example` 也可声明 `aiws.autonomy.approval_whitelist`
|
|
111
110
|
- `/ws-auto` 与 `aiws opencode auto .` 负责把“需要 update 吗 / watchdog 能否启动”这类 bootstrap 检查前置掉
|
|
112
|
-
- `.claude/settings.json.example` 只作为 hook 兼容层示例,不充当 controller
|
|
113
111
|
- `approval-whitelist-check.sh` 负责把项目级 whitelist policy 转成 `allow` / `deny` / `manual` 判定,并写审计日志
|
|
114
112
|
- `approval-whitelist-run.sh` 负责在 `allow` 场景下执行简单命令,并写执行摘要
|
|
115
113
|
- `approval-whitelist-watchdog.sh` 负责轮询 JSONL 队列,串行调用 runner,并写 watchdog 状态/结果
|
|
@@ -115,8 +115,6 @@ CLI 辅助探测:
|
|
|
115
115
|
- `backgroundTasks`:只用于 analysis / review / doc-search 型并行任务
|
|
116
116
|
- `experimental.auto_resume=true`
|
|
117
117
|
- `aiws.autonomy.approval_whitelist`:只声明只读命令与 evidence 写路径白名单;宿主权限仍是 `manual-only`
|
|
118
|
-
- `.claude/settings.json.example`
|
|
119
|
-
- 作为 oMo 可读取的 hook 兼容层示例
|
|
120
118
|
- `.opencode/helpers/tmux-swarm-scan.sh`
|
|
121
119
|
- 巡检当前 tmux panes,输出状态摘要
|
|
122
120
|
- `.opencode/helpers/tmux-swarm-rescue.sh`
|
|
@@ -87,7 +87,6 @@ aiws opencode status .
|
|
|
87
87
|
1. 在项目内启用:
|
|
88
88
|
```bash
|
|
89
89
|
cp .opencode/oh-my-opencode.json.example .opencode/oh-my-opencode.json
|
|
90
|
-
test -f .claude/settings.json.example
|
|
91
90
|
test -f .opencode/helpers/approval-whitelist-check.sh
|
|
92
91
|
test -f .opencode/helpers/approval-whitelist-run.sh
|
|
93
92
|
test -f .opencode/helpers/approval-whitelist-watchdog.sh
|
package/docs/spec-contract.md
CHANGED
|
@@ -90,7 +90,7 @@ secrets/test-accounts.json
|
|
|
90
90
|
- `spec_version`:`@aipper/aiws-spec` 版本
|
|
91
91
|
- `aiws_version`:`@aipper/aiws` 版本
|
|
92
92
|
- `installed_at` / `updated_at`:ISO 8601 UTC 时间
|
|
93
|
-
- `tools`:`["
|
|
93
|
+
- `tools`:`["opencode"]` 的子集
|
|
94
94
|
- `managed`:托管面清单(文件级或托管块级 hash)
|
|
95
95
|
|
|
96
96
|
hash 规则(用于跨平台稳定性):
|
|
@@ -109,7 +109,7 @@ hash 规则(用于跨平台稳定性):
|
|
|
109
109
|
"aiws_version": "0.0.0",
|
|
110
110
|
"installed_at": "2026-01-25T00:00:00Z",
|
|
111
111
|
"updated_at": "2026-01-25T00:00:00Z",
|
|
112
|
-
"tools": ["
|
|
112
|
+
"tools": ["opencode"],
|
|
113
113
|
"managed": [
|
|
114
114
|
{ "path": ".githooks/pre-commit", "mode": "replace_file", "sha256": "<sha256>" },
|
|
115
115
|
{ "path": ".gitignore", "mode": "managed_blocks", "blocks": { "gitignore": "<sha256>" } }
|
|
@@ -126,45 +126,31 @@ hash 规则(用于跨平台稳定性):
|
|
|
126
126
|
|
|
127
127
|
说明:
|
|
128
128
|
- tool-native 文件是 derived 产物;aiws 按模板 `manifest.json` 的 `update` 策略维护(`managed_blocks` 或 `replace_file`)。
|
|
129
|
-
- 默认覆盖:
|
|
129
|
+
- 默认覆盖:OpenCode。
|
|
130
130
|
|
|
131
131
|
约定路径(示例;最终以模板 manifest 为准):
|
|
132
|
-
- Claude Code native:`.claude/skills/*/SKILL.md`(skills)
|
|
133
|
-
- Claude Code compatibility:`.claude/commands/p-aiws-*.md`(commands;私有原子入口)
|
|
134
132
|
- OpenCode native skills:`.opencode/skills/*/SKILL.md`
|
|
135
133
|
- OpenCode native commands:`.opencode/commands/p-aiws-*.md`
|
|
136
134
|
- OpenCode legacy compatibility:`.opencode/command/p-aiws-*.md`(command;migration window)
|
|
137
|
-
- Codex:`.agents/skills/*/SKILL.md`(skills)
|
|
138
135
|
|
|
139
136
|
补充(workflow 入口,同样由模板提供;最终以模板 manifest 为准):
|
|
140
|
-
- Claude Code native:`.claude/skills/ws-*/SKILL.md`
|
|
141
|
-
- Claude Code compatibility:`.claude/commands/ws-*.md`
|
|
142
137
|
- OpenCode native skills:`.opencode/skills/ws-*/SKILL.md`
|
|
143
138
|
- OpenCode native commands:`.opencode/commands/ws-*.md`
|
|
144
139
|
- OpenCode legacy compatibility:`.opencode/command/ws-*.md`
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
- Codex 的 repo skills 目录为 `.agents/skills/`(可随仓库共享;prompts 已 deprecated)。
|
|
149
|
-
- 如需在任意仓库也能显式使用 AIWS skills:`aiws codex install-skills` 从模板 `.agents/skills/*/SKILL.md` 安装到 `~/.agents/skills/`。
|
|
150
|
-
- `CODEX_HOME` 或 `--dir` 可作为 compatibility/test override;但不要继续把 `~/.codex/skills/` 当成目录真值。
|
|
151
|
-
- 如仍需使用全局 prompts(遗留机制):可用 `aiws codex install-prompts` 从模板 `.codex/prompts/*.md` 安装到 `~/.codex/prompts/` 或 `$CODEX_HOME/prompts`。
|
|
152
|
-
|
|
153
|
-
注意(Claude Code / OpenCode):
|
|
154
|
-
- 当前 workspace 模板已经同时投影:
|
|
155
|
-
- Claude Code native skills:`.claude/skills/`
|
|
156
|
-
- Claude Code command-style compatibility:`.claude/commands/`
|
|
140
|
+
|
|
141
|
+
注意(目录说明):
|
|
142
|
+
- 当前 workspace 模板投影了以下路径:
|
|
157
143
|
- OpenCode native skills / commands:`.opencode/skills/` / `.opencode/commands/`
|
|
158
144
|
- OpenCode legacy compatibility:`.opencode/command/`
|
|
159
|
-
- `.
|
|
145
|
+
- `.opencode/command/` 继续保留为兼容层,但不再作为唯一长期真值。
|
|
160
146
|
|
|
161
147
|
能力边界(必须在文档中不夸大):
|
|
162
148
|
- aiws **不保证** 工具会自动加载/自动注册这些文件(是否自动发现、是否需要重启/重新打开会话,由工具实现决定)。
|
|
163
149
|
- aiws 的最低承诺是:这些文件提供一致的“工作流入口”(例如引导执行 `npx @aipper/aiws init|update|validate|rollback`),从而把用户带回同一套真值文件与门禁。
|
|
164
150
|
|
|
165
151
|
每个文件的托管方式(推荐):
|
|
166
|
-
- 对于 commands 类文件(如 `.
|
|
167
|
-
- 对于 skills 类文件(`.
|
|
152
|
+
- 对于 commands 类文件(如 `.opencode/commands/*.md`、`.opencode/command/*.md`):每个文件包含**一个且仅一个**托管块;若文件顶部存在 YAML frontmatter(例如 `description`),`aiws update` 还会同步该 frontmatter,块外正文其余部分保留给用户追加说明。
|
|
153
|
+
- 对于 skills 类文件(`.opencode/skills/*/SKILL.md`):由于文件顶部 YAML front matter 需要保持一致性,默认采用 `replace_file` 全量托管;如需自定义请新增独立 skill 目录。
|
|
168
154
|
|
|
169
155
|
最小矩阵(建议写清以下字段,便于未来实现与验收):
|
|
170
156
|
- `path_pattern`:文件路径模式
|
|
@@ -174,21 +160,9 @@ hash 规则(用于跨平台稳定性):
|
|
|
174
160
|
- `fallback`:若不生效,用户如何手动触发(直接运行 `npx @aipper/aiws ...`)
|
|
175
161
|
|
|
176
162
|
建议的默认取值(与 `workspace` 模板一致):
|
|
177
|
-
- Claude Code
|
|
178
|
-
- `path_pattern`:`.claude/skills/*/SKILL.md`
|
|
179
|
-
- `purpose`:提供 native workflow skills;兼容命令入口仍保留在 `.claude/commands/*.md`
|
|
180
|
-
- `autodiscovery`:不作为契约要求(由工具决定;aiws 不做保证)
|
|
181
|
-
- `reload_needed`:不作为契约要求
|
|
182
|
-
- `fallback`:在 shell 直接运行 `npx @aipper/aiws init|update|validate|rollback`
|
|
183
163
|
- OpenCode
|
|
184
164
|
- `path_pattern`:`.opencode/skills/*/SKILL.md` + `.opencode/commands/*.md`
|
|
185
165
|
- `purpose`:提供 native workflow skills 与 native commands;legacy `.opencode/command/*.md` 继续作为迁移兼容层
|
|
186
166
|
- `autodiscovery`:不作为契约要求
|
|
187
167
|
- `reload_needed`:不作为契约要求
|
|
188
|
-
- `fallback
|
|
189
|
-
- Codex
|
|
190
|
-
- `path_pattern`:`.agents/skills/*/SKILL.md`
|
|
191
|
-
- `purpose`:提供 skills(显式 `$<skill>` 或隐式套用工作流),引导用户运行 `npx @aipper/aiws ...`
|
|
192
|
-
- `autodiscovery`:不作为契约要求(由工具决定;aiws 不做保证)
|
|
193
|
-
- `reload_needed`:不作为契约要求
|
|
194
|
-
- `fallback`:显式使用 `$ws-preflight` / `$ws-plan` / `$ws-dev` / `$ws-review` / `$ws-commit`(或在 shell 直接运行 `npx @aipper/aiws init|update|validate|rollback`)
|
|
168
|
+
- `fallback`:在 shell 直接运行 `npx @aipper/aiws init|update|validate|rollback`
|
|
@@ -222,7 +222,7 @@
|
|
|
222
222
|
{
|
|
223
223
|
"id": "case_direct_implementation",
|
|
224
224
|
"scenario": "任务是小步明确修复,归因和验证入口都已清楚。",
|
|
225
|
-
"request": "修复
|
|
225
|
+
"request": "修复 install-skills 的默认路径,并补一条可复现回归。",
|
|
226
226
|
"expectedRuleId": "direct_implementation",
|
|
227
227
|
"expectedRoute": "ws-dev",
|
|
228
228
|
"why": "小步明确实现允许直接进入 dev;若用户明确要轻量直修,可进一步显式使用 ws-dev-lite,但治理归属仍收敛到 ws-dev。"
|
|
@@ -278,6 +278,6 @@
|
|
|
278
278
|
"notes": [
|
|
279
279
|
"default-routed workflow 不等于 daemon / pane / runtime orchestration;这一版只固定真值和入口。",
|
|
280
280
|
"`using-aiws` 可以作为默认入口;若未来需要更短命名,可再引入 `ws-router` 作为等价别名。",
|
|
281
|
-
"
|
|
281
|
+
"OpenCode 的 native 目录不同,但 router 语义必须共用同一份 JSON 真值。"
|
|
282
282
|
]
|
|
283
283
|
}
|
|
@@ -65,7 +65,7 @@ router 在做任何 workflow 判断前,必须先读取:
|
|
|
65
65
|
| `case_finish_request` | 用户要求合并、push、cleanup 或 finish 当前 change。 | 把 demo-change finish 掉并 push,顺便 cleanup。 | `finish_request` | `ws-finish` | finish 是独立治理阶段,必须先走 finish gate。 |
|
|
66
66
|
| `case_handoff_request` | 用户要求 handoff、交接说明、archive summary 或接力文档。 | 给这个 change 写 handoff,并补 archive summary。 | `handoff_request` | `ws-handoff` | handoff 依赖已有 finish/archive 上下文,不能当成普通实现。 |
|
|
67
67
|
| `case_plan_first` | 任务是跨文件、多步实现,且需要先建立 change 分支或方案。 | 实现 dashboard 的阶段治理视图并补测试,需要新建 change 和计划。 | `plan_first` | `ws-plan` | 中大型实现应先落盘计划,再进入 dev。 |
|
|
68
|
-
| `case_direct_implementation` | 任务是小步明确修复,归因和验证入口都已清楚。 | 修复
|
|
68
|
+
| `case_direct_implementation` | 任务是小步明确修复,归因和验证入口都已清楚。 | 修复 install-skills 的默认路径,并补一条可复现回归。 | `direct_implementation` | `ws-dev` | 小步明确实现允许直接进入 dev;若用户明确要轻量直修,可进一步显式使用 ws-dev-lite,但治理归属仍收敛到 ws-dev。 |
|
|
69
69
|
| `case_context_gate` | Router 必须先收集项目上下文再判 direct vs plan。 | 修复一个 auth bug。 | `direct_implementation` | `ws-dev` | Router 必须先 git status/读相关文件确认范围后才能判 direct;`precondition` 字段显式要求先收集上下文;不能仅凭任务描述判"小步"。 |
|
|
70
70
|
| `case_escape_hatch` | 用户说'跳过流程直接改' | "别走流程了,直接改" | `escape_hatch` | `ws-dev-lite` | 显式跳过但遵守最小约束 |
|
|
71
71
|
| `case_design_first` | 任务需要先出设计方案再进入实现。 | 设计 dashboard 架构,出方案后再实现。 | `design_first` | `ws-plan` | 高影响改动应先出设计方案,过审后再投入实现。当前通过 ws-plan 统一承载设计。 |
|
|
@@ -92,4 +92,4 @@ router 在做任何 workflow 判断前,必须先读取:
|
|
|
92
92
|
|
|
93
93
|
- default-routed workflow 不等于 daemon / pane / runtime orchestration;这一版只固定真值和入口。
|
|
94
94
|
- `using-aiws` 可以作为默认入口;若未来需要更短命名,可再引入 `ws-router` 作为等价别名。
|
|
95
|
-
-
|
|
95
|
+
- OpenCode 的 native 目录不同,但 router 语义必须共用同一份 JSON 真值。
|
package/docs/ws-goal-contract.md
CHANGED
|
@@ -6,9 +6,9 @@ ws-goal 协议层规范:目标定义、完成审计、预算约束与工具适
|
|
|
6
6
|
|
|
7
7
|
## 1. Background & Motivation
|
|
8
8
|
|
|
9
|
-
###
|
|
9
|
+
### /goal 类指令的五层架构
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
一些工具引入了 `/goal` 类指令。它的实现分五层:
|
|
12
12
|
|
|
13
13
|
| 层 | 实现 | 职责 |
|
|
14
14
|
|---|---|---|
|
|
@@ -32,7 +32,7 @@ aiws 当前没有等价协议。OpenCode + oh-my-opencode 已经提供了 3 层
|
|
|
32
32
|
|
|
33
33
|
### 方案:ws-goal 作为协议层
|
|
34
34
|
|
|
35
|
-
ws-goal 定义为**协议层**(prompt-template + artifact spec
|
|
35
|
+
ws-goal 定义为**协议层**(prompt-template + artifact spec),不是运行时引擎。它负责任务目标的结构化定义、完成审计的证据规范、预算耗尽协议。续跑调度继续借用各平台已有的能力。
|
|
36
36
|
|
|
37
37
|
这样做的好处是:不重复造 runtime,不绑定特定工具,只写一份规范就能投影到所有平台。
|
|
38
38
|
|
|
@@ -60,14 +60,14 @@ active → paused (optional) → complete | budget_limited → archived
|
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
- **active**:目标正在执行中。可能有多个 iteration
|
|
63
|
-
- **paused
|
|
63
|
+
- **paused**(可选):目标被暂停。运行时能力取决于平台。
|
|
64
64
|
- **complete**:完成审计通过,目标已被证明达成
|
|
65
65
|
- **budget_limited**:预算耗尽,目标未完成但无法继续。产生进度报告和 TODO 列表供继续
|
|
66
66
|
- **archived**:最终状态。goal artifact 归档到 evidence 目录
|
|
67
67
|
|
|
68
68
|
### 2.3 Completion Audit Protocol
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
8 步完成审计方法:
|
|
71
71
|
|
|
72
72
|
1. **Derive requirements**:从 objective 推导出具体的、可验证的需求列表。不是重复 objective 原文,而是分解为可逐个检查的原子项
|
|
73
73
|
2. **Preserve scope**:保持原始目标范围。不要将"已经做了什么"重新定义为目标——audit 评判的是原始目标是否达成
|
|
@@ -171,16 +171,13 @@ token_budget 依赖平台的 token 计数器。aiws 不提供独立的 token 监
|
|
|
171
171
|
|
|
172
172
|
| Tool | Continuation Engine | Goal Persistence | Budget Tracking | Audit Method |
|
|
173
173
|
|---|---|---|---|---|
|
|
174
|
-
| **Codex** | `/goal` auto-continuation(Rust runtime,内置 turn 调度) | `thread_goals` DB(Rust 状态表,pursuing/paused/achieved/budget_limited) | 内置 token counter + `budget_limit.md` 软停止 | 模型自检 + continuation.md 8 步审计(prompt 内) |
|
|
175
174
|
| **OpenCode** | Ralph Loop L2(`/ralph-loop` 自引循环) / Ultrawork L3(Ralph Loop + Oracle 审计) | `.opencode/ralph-loop.local.md`(YAML frontmatter,active/iteration 状态) | max_iterations 硬限制(L2),无 token/time budget | L2: `<promise>DONE</promise>` 语义声明;L3: Oracle 独立审计 + `<promise>VERIFIED</promise>` |
|
|
176
|
-
| **
|
|
177
|
-
| **aiws ws-goal protocol** | 不提供。依赖各平台已有 continuation 引擎 | `.aiws/goals/<goal-id>.md`(标准模板工件)+ `changes/<id>/evidence/` 审计证据 | 定义协议但依赖平台 token 计数器。aiws 只做格式规范和软停止信号定义 | 8 步完成审计(协议层规范,平台层执行) |
|
|
175
|
+
| **aiws ws-goal protocol** | 不提供。依赖各平台已有 continuation 引擎 | `.aiws/goals/<goal-id>.md`(标准模板工件)+ `changes/<id>/evidence/` 审计证据 | 定义协议但依赖平台能力 | 8 步完成审计(协议层规范,平台层执行) |
|
|
178
176
|
|
|
179
177
|
### 关键说明
|
|
180
178
|
|
|
181
179
|
- **OpenCode L2 vs L3**:L2 只有自检声明(DONE),可信度较低;L3 引入独立审计者(Oracle),可信度较高但成本也高。ws-goal 协议推荐的审计模式是 L3,但允许 L2 作为轻度使用的降级
|
|
182
|
-
-
|
|
183
|
-
- **Claude Code 的局限性**:Claude Code 没有等效的 Ralph Loop 或 /goal 运行时。ws-goal 在 Claude Code 上的能力受限于平台本身的续跑机制
|
|
180
|
+
- ws-goal 协议可以投影到各平台时绑定其 continuation 能力,只需补充完成审计的规范约束
|
|
184
181
|
|
|
185
182
|
---
|
|
186
183
|
|
|
@@ -191,18 +188,14 @@ token_budget 依赖平台的 token 计数器。aiws 不提供独立的 token 监
|
|
|
191
188
|
ws-goal 协议层不实现任何 continuation/scheduling/pause/resume 机制。这些能力完全依赖于各平台:
|
|
192
189
|
|
|
193
190
|
- OpenCode:依赖 Ralph Loop(文件状态轮询 + prompt 注入)
|
|
194
|
-
- Codex:依赖 /goal 的 Rust runtime(turn 调度 + 数据库)
|
|
195
|
-
- Claude Code:依赖用户手动管理
|
|
196
191
|
|
|
197
|
-
这意味着跨工具的"暂停/恢复"行为会不一致。
|
|
192
|
+
这意味着跨工具的"暂停/恢复"行为会不一致。
|
|
198
193
|
|
|
199
194
|
### 5.2 Budget Tracking 依赖平台能力
|
|
200
195
|
|
|
201
196
|
token_budget 和 time_budget 的监控需要平台提供接口。当前:
|
|
202
197
|
|
|
203
|
-
- Codex:内置 token counter,支持软停止
|
|
204
198
|
- OpenCode(oh-my-opencode):无 token 计数,只有 max_iterations
|
|
205
|
-
- Claude Code:无任何 budget tracking
|
|
206
199
|
|
|
207
200
|
aiws 只定义"预算耗尽时应该做什么"的协议,不提供跨平台的统一计费层。在缺少平台支持的维度上,goal 应标记为 unsupported 而不是假装能工作。
|
|
208
201
|
|
|
@@ -210,23 +203,21 @@ aiws 只定义"预算耗尽时应该做什么"的协议,不提供跨平台的
|
|
|
210
203
|
|
|
211
204
|
不同工具使用不同的持久化机制:
|
|
212
205
|
|
|
213
|
-
- Codex:服务端 `thread_goals` 数据库(跨客户端同步)
|
|
214
206
|
- OpenCode(Ralph Loop):文件 `.opencode/ralph-loop.local.md`(会话级)
|
|
215
|
-
- Claude Code:无内置持久化
|
|
216
207
|
|
|
217
|
-
|
|
208
|
+
没有共享数据库。如果一个目标在一个工具开始,无法在另一个工具中恢复。goal objective markdown 文件 `.aiws/goals/<goal-id>.md` 可以作为人类可读的参考,但状态同步不保证。
|
|
218
209
|
|
|
219
210
|
### 5.4 State Machine 的工具依赖
|
|
220
211
|
|
|
221
212
|
完整状态机 `active → paused → complete | budget_limited → archived` 中各状态的支持情况:
|
|
222
213
|
|
|
223
|
-
| 状态转换 |
|
|
224
|
-
|
|
225
|
-
| active → paused |
|
|
226
|
-
| paused → active |
|
|
227
|
-
| active → complete |
|
|
228
|
-
| active → budget_limited |
|
|
229
|
-
| complete → archived |
|
|
214
|
+
| 状态转换 | OpenCode (Ralph Loop) |
|
|
215
|
+
|---|---|---|
|
|
216
|
+
| active → paused | 不支持(只能 cancel) |
|
|
217
|
+
| paused → active | 不支持 |
|
|
218
|
+
| active → complete | 支持(DONE 声明 + oracle 验证) |
|
|
219
|
+
| active → budget_limited | 不支持 |
|
|
220
|
+
| complete → archived | 手动 |
|
|
230
221
|
|
|
231
222
|
aiws 协议层定义了完整的语义状态,但各平台只能实现其中一部分。goal 创建时应注意平台的能力边界。
|
|
232
223
|
|
package/package.json
CHANGED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# ws-* Pipeline Continuation Protocol
|
|
2
|
+
|
|
3
|
+
## 问题
|
|
4
|
+
|
|
5
|
+
每个 ws-* skill 完成当前 phase 后输出 `Next:` 文本建议,然后停下。用户需要手动输入下一 phase 的 slash 命令。本协议定义了一套标准化机制,让所有 ws-* skill 在完成后自动推进到下一 phase。
|
|
6
|
+
|
|
7
|
+
## 核心机制
|
|
8
|
+
|
|
9
|
+
### 1. Pipeline 状态文件
|
|
10
|
+
|
|
11
|
+
`.aiws/continuation/pipeline.json` — 共享状态文件,记录当前流水线所有 phase 的状态。
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
{
|
|
15
|
+
"pipeline_id": "<pipeline-id>",
|
|
16
|
+
"goal_id": "<goal-id>",
|
|
17
|
+
"change_id": "<change-id>",
|
|
18
|
+
"created_at": "<UTC timestamp>",
|
|
19
|
+
"updated_at": "<UTC timestamp>",
|
|
20
|
+
"phases": [
|
|
21
|
+
{"name": "preflight", "status": "completed", "evidence": ""},
|
|
22
|
+
{"name": "ws-goal", "status": "completed", "evidence": ".aiws/goals/<goal-id>.md"},
|
|
23
|
+
{"name": "ws-plan", "status": "in_progress", "evidence": ""},
|
|
24
|
+
{"name": "ws-plan-verify","status": "pending", "evidence": ""},
|
|
25
|
+
{"name": "ws-dev", "status": "pending", "evidence": ""},
|
|
26
|
+
{"name": "ws-review", "status": "pending", "evidence": ""},
|
|
27
|
+
{"name": "ws-commit", "status": "pending", "evidence": ""},
|
|
28
|
+
{"name": "ws-finish", "status": "pending", "evidence": ""}
|
|
29
|
+
],
|
|
30
|
+
"current_phase_index": 2,
|
|
31
|
+
"blockers": []
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
状态值: `pending` | `in_progress` | `completed` | `blocked`
|
|
36
|
+
|
|
37
|
+
### 2. Phase Completion Protocol(所有 ws-* skill 共享)
|
|
38
|
+
|
|
39
|
+
每个 ws-* skill 完成后执行(替代原有 `Next:` 输出 + 结束):
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
1. 更新 pipeline.json:
|
|
43
|
+
- 当前 phase → status: "completed", evidence: <路径>
|
|
44
|
+
- 下一 phase → status: "in_progress"
|
|
45
|
+
- current_phase_index → 下一 phase 索引号
|
|
46
|
+
- updated_at → 当前时间
|
|
47
|
+
|
|
48
|
+
2. 更新 todo:
|
|
49
|
+
- 当前 phase 的 todo → completed
|
|
50
|
+
- 下一 phase 的 todo → in_progress(若还不存在则创建)
|
|
51
|
+
|
|
52
|
+
3. 若还有下一 phase:
|
|
53
|
+
- 输出 "→ Auto-continuing to <next_phase>"
|
|
54
|
+
- 立即开始执行下一 phase 的逻辑(不输出"是否继续"等待文本)
|
|
55
|
+
|
|
56
|
+
4. 若已是最后一个 phase:
|
|
57
|
+
- 输出 pipeline 完成摘要
|
|
58
|
+
- 标记 goal 为 complete
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 3. Continuation Detection(所有 ws-* skill 共享)
|
|
62
|
+
|
|
63
|
+
当 skill 被调用时(包括 slash command 直接调用 和 Boulder/Ralph Loop continuation):
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
检查 .aiws/continuation/pipeline.json:
|
|
67
|
+
- 若存在且有 in_progress phase:
|
|
68
|
+
a) 如果 in_progress phase 名称 == 当前 skill 名称 → 正常执行当前 skill
|
|
69
|
+
b) 如果 in_progress phase 名称 ≠ 当前 skill 名称 → 跳到该 phase 的执行逻辑
|
|
70
|
+
c) 如果所有 phase completed → 输出 pipeline 完成摘要,不再执行新工作
|
|
71
|
+
- 若不存在 → 正常执行当前 skill(独立模式)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 4. Skill Entry 改造
|
|
75
|
+
|
|
76
|
+
每个 ws-* SKILL.md 顶部增加 Pipeline Continuation Detection 段。
|
|
77
|
+
|
|
78
|
+
### 5. Skill Ending 改造
|
|
79
|
+
|
|
80
|
+
每个 ws-* SKILL.md 的 `输出要求` / `Next:` 段替换为 Phase Completion Protocol。
|
|
81
|
+
|
|
82
|
+
### 6. ws-goal 作为 Pipeline 启动器
|
|
83
|
+
|
|
84
|
+
ws-goal 在复杂度评估后:
|
|
85
|
+
- 创建 pipeline.json(预填所有 phase)
|
|
86
|
+
- 创建所有 phase 对应的 todo
|
|
87
|
+
- 直接执行第一个 phase 的逻辑(不停下)
|
|
88
|
+
|
|
89
|
+
## 默认 Pipeline 链路
|
|
90
|
+
|
|
91
|
+
preflight → ws-goal → ws-plan → ws-plan-verify → ws-dev → ws-review → ws-commit → ws-finish
|
|
92
|
+
|
|
93
|
+
根据复杂度评估选择包含哪些 phase:
|
|
94
|
+
- 简单路径: ws-goal → dev → commit → finish
|
|
95
|
+
- 标准路径: ws-goal → plan → plan-verify → dev → review → commit → finish
|
|
96
|
+
- 复杂路径: 标准路径 + intake + deliver + handoff
|
|
97
|
+
|
|
98
|
+
## 文件位置
|
|
99
|
+
|
|
100
|
+
- 状态文件: `.aiws/continuation/pipeline.json`
|
|
101
|
+
- 协议文档: `.aiws/continuation/CONTINUATION_PROTOCOL.md`
|