@aipper/aiws-spec 0.0.41 → 0.0.43
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/README.md +1 -1
- package/docs/aiws-bootstrap-routing-design.md +11 -6
- package/docs/cli-interface.md +26 -0
- package/docs/run-behavior-guidelines.md +32 -0
- package/docs/workflow-delegation-context-injection.md +51 -0
- package/docs/workflow-delegation-contracts.json +46 -15
- package/docs/workflow-delegation-contracts.md +4 -8
- package/docs/workflow-delegation-contracts.schema.json +44 -12
- package/docs/workflow-router-rules.json +20 -3
- package/docs/ws-goal-contract.md +287 -31
- package/package.json +1 -1
- package/templates/workspace/.opencode/skills/using-aiws/SKILL.md +30 -65
- package/templates/workspace/.opencode/skills/ws-bugfix/SKILL.md +39 -63
- package/templates/workspace/.opencode/skills/ws-delegate/SKILL.md +40 -75
- package/templates/workspace/.opencode/skills/ws-dev/SKILL.md +36 -68
- package/templates/workspace/.opencode/skills/ws-dev-lite/SKILL.md +2 -0
- package/templates/workspace/.opencode/skills/ws-frontend-design/SKILL.md +74 -103
- package/templates/workspace/.opencode/skills/ws-intake/SKILL.md +45 -118
- package/templates/workspace/.opencode/skills/ws-plan/SKILL.md +4 -2
- package/templates/workspace/.opencode/skills/ws-quality-review/SKILL.md +12 -6
- package/templates/workspace/.opencode/skills/ws-review/SKILL.md +23 -17
- package/templates/workspace/.opencode/skills/ws-spec-review/SKILL.md +12 -6
|
@@ -7,60 +7,45 @@ description: 使用时机:从禅道/外部系统拉取 bug 进行修复时。
|
|
|
7
7
|
|
|
8
8
|
目标:
|
|
9
9
|
- 用禅道 MCP 拉取 bug 详情与附件(尤其图片)
|
|
10
|
-
-
|
|
11
|
-
-
|
|
10
|
+
- 证据落盘到 `.aiws/changes/<change-id>/bug/`(避免只停留在对话)
|
|
11
|
+
- 汇总/更新到 `issues/fix_bus_issues.csv`
|
|
12
12
|
- 与 `ws-dev` / `aiws change` 流程绑定,确保可追溯、可验证
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
- 不自动 commit / push
|
|
16
|
-
- 不写入任何 secrets(token、cookie、内网地址)
|
|
17
|
-
- 不在无法复现时直接改代码(先产出阻塞信息)
|
|
14
|
+
非目标(强制):不自动 commit/push;不写入 secrets(token、cookie、内网地址);不在无法复现时直接改代码(先产出阻塞信息)。
|
|
18
15
|
|
|
19
16
|
前置:
|
|
20
|
-
1)
|
|
21
|
-
2) 准备 `change-id
|
|
17
|
+
1) 运行 `$ws-preflight`。
|
|
18
|
+
2) 准备 `change-id`(建议 `bug-<bug-id>` 或 `bugfix-<bug-id>-<slug>`)。
|
|
22
19
|
3) 建立 change 上下文(推荐先于任何落盘):
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
aiws change start <change-id> --hooks --no-switch
|
|
42
|
-
fi
|
|
43
|
-
```
|
|
44
|
-
- 若上一步创建了 worktree:后续 bug 证据、CSV 更新、`$ws-dev` 修复都必须在该 worktree 中继续;不要回原工作区重复创建 change
|
|
45
|
-
- 若该 change 涉及 submodule:
|
|
46
|
-
- 优先复用 `$ws-dev` 的 `submodules.targets` 生成/确认流程
|
|
47
|
-
- detached HEAD 时默认建议取 `.gitmodules` 声明的分支
|
|
48
|
-
- 已附着在某个本地分支时默认建议取当前分支
|
|
49
|
-
- 以上都只是建议值,最终必须显式写入 `.aiws/changes/<change-id>/submodules.targets`
|
|
20
|
+
- 工作区必须先干净;不要先写 bug 文件或 CSV,避免后续切 worktree 时工件留在原工作区
|
|
21
|
+
- 工作树策略:
|
|
22
|
+
```bash
|
|
23
|
+
if [[ -n "$(git status --porcelain)" ]]; then
|
|
24
|
+
echo "error: dirty before ws-bugfix"; exit 2
|
|
25
|
+
fi
|
|
26
|
+
if git rev-parse --verify HEAD >/dev/null 2>&1; then
|
|
27
|
+
if [[ -f .gitmodules ]] && git config --file .gitmodules --get-regexp '^submodule\..*\.path$' >/dev/null 2>&1; then
|
|
28
|
+
aiws change start <change-id> --hooks --worktree --submodules
|
|
29
|
+
else
|
|
30
|
+
aiws change start <change-id> --hooks --worktree
|
|
31
|
+
fi
|
|
32
|
+
else
|
|
33
|
+
aiws change start <change-id> --hooks --no-switch
|
|
34
|
+
fi
|
|
35
|
+
```
|
|
36
|
+
- 若创建了 worktree:后续所有操作必须在该 worktree 中继续
|
|
37
|
+
- 涉及 submodule:确认 `submodules.targets` 已写入(复用 `$ws-dev` 流程)
|
|
50
38
|
|
|
51
|
-
|
|
39
|
+
建议流程:
|
|
52
40
|
|
|
53
41
|
## 1) 通过禅道 MCP 拉取 bug
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
- 重现步骤、期望结果、实际结果
|
|
57
|
-
- 附件列表(含图片 URL/文件名)
|
|
58
|
-
- 若当前环境没有 zentao MCP 工具:立即停止并提示用户先配置,不要猜数据。
|
|
42
|
+
- 使用当前会话中的 zentao MCP 获取:`bug_id`、标题、优先级/严重级、模块、状态、指派人、重现步骤、期望结果、实际结果、附件列表
|
|
43
|
+
- 若没有 zentao MCP:立即停止并提示用户先配置,不要猜数据
|
|
59
44
|
|
|
60
45
|
## 2) 证据落盘(强制)
|
|
61
|
-
|
|
62
|
-
- `zentao-bug-<bug-id>.json
|
|
63
|
-
- `zentao-bug-<bug-id>.md
|
|
46
|
+
在 `.aiws/changes/<change-id>/bug/` 下落盘:
|
|
47
|
+
- `zentao-bug-<bug-id>.json`:原始字段快照
|
|
48
|
+
- `zentao-bug-<bug-id>.md`:人类可读摘要(复现/期望/实际/风险)
|
|
64
49
|
- `images/<bug-id>/...`:下载的图片附件(保留原扩展名)
|
|
65
50
|
|
|
66
51
|
建议目录:
|
|
@@ -72,36 +57,25 @@ fi
|
|
|
72
57
|
```
|
|
73
58
|
|
|
74
59
|
## 3) 汇总到 issues/fix_bus_issues.csv(upsert)
|
|
75
|
-
|
|
76
|
-
|
|
60
|
+
|
|
61
|
+
目标文件:`issues/fix_bus_issues.csv`。不存在则创建表头:
|
|
77
62
|
```csv
|
|
78
63
|
Bug_ID,Title,Severity,Module,Status,Assigned_To,Change_ID,Image_Count,Image_Paths,Evidence_Path,Verify_Command,Fix_Status,Updated_At,Notes
|
|
79
64
|
```
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
- 不存在:新增一行
|
|
83
|
-
|
|
84
|
-
字段约束:
|
|
85
|
-
- `Change_ID`:必须等于当前 `change-id`
|
|
86
|
-
- `Evidence_Path`:指向 `.aiws/changes/<change-id>/bug/zentao-bug-<bug-id>.md`
|
|
87
|
-
- `Image_Paths`:多个路径用 `;` 分隔
|
|
88
|
-
- `Fix_Status`:`TODO|DOING|DONE|BLOCKED`
|
|
65
|
+
以 `Bug_ID` 为主键 upsert:已存在则更新状态/证据/图片路径;不存在则新增。
|
|
66
|
+
字段约束:`Change_ID` = 当前 change-id;`Evidence_Path` 指向 `.md`;`Image_Paths` 用 `;` 分隔;`Fix_Status` 为 `TODO|DOING|DONE|BLOCKED`。
|
|
89
67
|
|
|
90
68
|
## 4) 修复执行与回填
|
|
91
|
-
- 进入 `$ws-dev`
|
|
92
|
-
- 完成后回填 `
|
|
93
|
-
- `Fix_Status`
|
|
94
|
-
- `Verify_Command`
|
|
95
|
-
- `Updated_At`
|
|
96
|
-
- `Notes`(必要时写阻塞原因)
|
|
69
|
+
- 进入 `$ws-dev` 做最小改动修复(若 `ws-bugfix` 创建了 worktree,必须在该 worktree 中继续)
|
|
70
|
+
- 完成后回填 CSV:`Fix_Status`、`Verify_Command`、`Updated_At`、`Notes`
|
|
97
71
|
|
|
98
72
|
## 5) 验证与交付
|
|
73
|
+
|
|
99
74
|
```bash
|
|
100
75
|
aiws change validate <change-id> --strict
|
|
101
76
|
aiws validate . --stamp
|
|
102
77
|
```
|
|
103
|
-
-
|
|
104
|
-
- 需要收尾合并时走 `$ws-finish`(或在 superproject + submodule 场景走 `$ws-deliver`)。
|
|
78
|
+
- 提交走 `$ws-commit`;收尾合并走 `$ws-finish`(superproject + submodule 场景走 `$ws-deliver`)
|
|
105
79
|
|
|
106
80
|
输出要求:
|
|
107
81
|
- `Change_ID:` `<change-id>`
|
|
@@ -109,3 +83,5 @@ aiws validate . --stamp
|
|
|
109
83
|
- `CSV:` `issues/fix_bus_issues.csv` 中对应 `Bug_ID` 行的关键字段
|
|
110
84
|
- `Evidence:` `.aiws/changes/<change-id>/bug/zentao-bug-<bug-id>.md` + 图片目录
|
|
111
85
|
- `Verify:` 实际运行命令与结果(未运行不声称已运行)
|
|
86
|
+
|
|
87
|
+
> 运行时行为约束:`packages/spec/docs/run-behavior-guidelines.md`
|
|
@@ -5,114 +5,85 @@ description: 使用时机:需要拆分子任务、委托给子 agent 时。触
|
|
|
5
5
|
|
|
6
6
|
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
目标:优先借用 oMo agent 做任务拆分;若不可用,回退普通 OpenCode delegation / 单 agent。
|
|
9
9
|
|
|
10
10
|
## 核心约束
|
|
11
11
|
|
|
12
|
-
- **Subagent-First**:主 session
|
|
13
|
-
- **Handoff
|
|
12
|
+
- **Subagent-First**:主 session 只做编排收敛,不直接写代码。所有产出由 subagent 完成并可追溯。
|
|
13
|
+
- **Handoff 证据**:worker 必须产出 `.aiws/changes/<id>/handoff-evidence.md`(完成项、未完成项、残余风险)。文件缺失=委托未完成。
|
|
14
14
|
|
|
15
15
|
## 必需输入
|
|
16
16
|
|
|
17
|
-
-
|
|
18
|
-
- delegation contract:`packages/spec/docs/workflow-delegation-contracts.md`
|
|
19
|
-
- 上下文策展规范:`packages/spec/docs/workflow-delegation-context-injection.md`
|
|
20
|
-
- OpenCode + oMo 适配说明:`packages/spec/docs/opencode-omo-adapter.md`
|
|
21
|
-
- 连续执行循环:`packages/spec/docs/opencode-subagent-first.md`
|
|
17
|
+
- 真值文件 + delegation contract 等上下文(`workflow-delegation-contracts.md`、`opencode-omo-adapter.md`、`opencode-subagent-first.md`)
|
|
22
18
|
- 当前任务已绑定 `Req_ID` / change / Verify
|
|
23
19
|
|
|
24
20
|
## 必需输出
|
|
25
21
|
|
|
26
22
|
- `Delegation Plan:` role / preferred agent / readScope / writeScope / artifactTargets / fallback
|
|
27
|
-
- `Context Curation:`
|
|
28
|
-
- `Execution Mode:` `omo-native` / `opencode-native` / `single-agent`
|
|
29
|
-
- `Evidence:` 产物路径
|
|
30
|
-
- `Next:` 回到 `ws-dev` / `ws-review` / `ws-commit` / `ws-finish`
|
|
23
|
+
- `Context Curation:` 策展详情 / `Execution Mode:` / `Evidence:` / `Next:`
|
|
31
24
|
|
|
32
25
|
## 执行要求
|
|
33
26
|
|
|
34
|
-
- 主 session
|
|
35
|
-
- handoff
|
|
27
|
+
- 主 session 不直接改代码;所有产物由 subagent 产出且可追溯
|
|
28
|
+
- handoff 含 delegate round number、产出文件路径、已知未关闭项
|
|
36
29
|
|
|
37
30
|
## 阻断条件
|
|
38
31
|
|
|
39
|
-
|
|
40
|
-
- 没有写清委托边界
|
|
41
|
-
- 上下文策展未执行(未生成 JSONL 或未在 prompt 中引用)
|
|
42
|
-
- 无法判断当前是否可用 oMo,又不能接受回退
|
|
43
|
-
- handoff 文件 `.aiws/changes/<id>/handoff-evidence.md` 缺失或为空(委托返回后必须检查)
|
|
32
|
+
任务未绑定 / 委托边界不清 / 上下文策展未执行 / 无法判断 oMo 可用性 / handoff 文件缺失
|
|
44
33
|
|
|
45
34
|
## 角色映射
|
|
46
35
|
|
|
47
36
|
| aiws 角色 | oMo Agent |
|
|
48
37
|
|-----------|-----------|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
|
|
|
38
|
+
| planner | planner-sisyphus |
|
|
39
|
+
| explorer | @explore / @librarian |
|
|
40
|
+
| reviewer | @oracle |
|
|
41
|
+
| integrator | 当前主 agent |
|
|
53
42
|
|
|
54
|
-
|
|
43
|
+
推荐标准角色:
|
|
55
44
|
|
|
56
|
-
| 角色 | 职责 |
|
|
57
|
-
|
|
58
|
-
|
|
|
59
|
-
|
|
|
60
|
-
|
|
|
45
|
+
| 角色 | 职责 | 读取 | 写入 |
|
|
46
|
+
|------|------|------|------|
|
|
47
|
+
| implementer | 代码+测试实现 | 真值+change上下文 | 代码+测试+evidence/ |
|
|
48
|
+
| reviewer | 独立审查 | 真值+diff+evidence | review/*.md |
|
|
49
|
+
| researcher | 分析探索 | 真值+外部文档 | analysis/*.md |
|
|
61
50
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
## 连续执行循环(Worker → Reviewer → Fix)
|
|
65
|
-
|
|
66
|
-
默认闭环(详见 `packages/spec/docs/opencode-subagent-first.md`):
|
|
51
|
+
## 连续执行循环
|
|
67
52
|
|
|
68
53
|
1. 主 session 策展上下文 JSONL → dispatch `aiws-worker`
|
|
69
|
-
2.
|
|
70
|
-
3. DONE → dispatch `aiws-reviewer
|
|
71
|
-
4.
|
|
72
|
-
5.
|
|
73
|
-
6.
|
|
74
|
-
7. BLOCKED → 输出 blocker 详情,不继续
|
|
54
|
+
2. 检查返回状态(DONE / DONE_WITH_CONCERNS / NEEDS_CONTEXT / BLOCKED)
|
|
55
|
+
3. DONE → dispatch `aiws-reviewer`;pass→收敛 evidence;fail→worker 修复(≤3 次)
|
|
56
|
+
4. DONE_WITH_CONCERNS → 先 `ws-quality-review`
|
|
57
|
+
5. NEEDS_CONTEXT → 补上下文重试(≤2 次);仍失败→回退单 agent
|
|
58
|
+
6. BLOCKED → 输出 blocker 详情,不继续
|
|
75
59
|
|
|
76
60
|
## 上下文策展
|
|
77
61
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
2. 展开 glob 为实际路径(替换 `<id>`)
|
|
83
|
-
3. 委托者调整:添加/删除/调整 priority/sections
|
|
84
|
-
4. 预算检查:high+medium ≤ 5 文件,总行数 ≤ 4000
|
|
62
|
+
1. 读取合同基线的 `contextFiles`
|
|
63
|
+
2. 展开 glob(替换 `<id>`)
|
|
64
|
+
3. 委托者调整(添加/删除/调整 priority/sections)
|
|
65
|
+
4. 预算检查:high+medium ≤5 文件,总行数 ≤4000
|
|
85
66
|
5. 写入 `.aiws/changes/<id>/analysis/<role>-context.jsonl`
|
|
86
67
|
|
|
87
|
-
|
|
68
|
+
插件 `aiws-inject-context` 自动注入 JSONL——在 `task()` 中指定 `role: <role>` 即可。
|
|
88
69
|
|
|
89
70
|
## 子 agent 返回协议
|
|
90
71
|
|
|
91
72
|
```
|
|
92
73
|
**Status:** DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
|
|
93
|
-
**Completed:**
|
|
94
|
-
**Files Changed:**
|
|
95
|
-
**Verification:**
|
|
96
|
-
**Artifacts:** analysis|patches|review|evidence
|
|
97
|
-
**Concerns:**
|
|
74
|
+
**Completed:** <实现内容>
|
|
75
|
+
**Files Changed:** <路径>
|
|
76
|
+
**Verification:** <命令+结果>
|
|
77
|
+
**Artifacts:** <analysis|patches|review|evidence 路径>
|
|
78
|
+
**Concerns:** <疑虑或未完成项>
|
|
98
79
|
```
|
|
99
80
|
|
|
100
|
-
### 状态处理
|
|
101
|
-
|
|
102
|
-
- **DONE**: 进入 ws-review;若已过 review 则准备 ws-finish
|
|
103
|
-
- **DONE_WITH_CONCERNS**: 先 ws-quality-review,根据风险决定是否阻断
|
|
104
|
-
- **NEEDS_CONTEXT**: 补上下文重试(最多 2 次);仍失败则回退单 agent
|
|
105
|
-
- **BLOCKED**: 停止委托;解 blocker 后重试;永不到达则升级给用户
|
|
106
|
-
|
|
107
81
|
## Delegation Plan 格式
|
|
108
82
|
|
|
109
83
|
```
|
|
110
84
|
**Delegation Plan:**
|
|
111
|
-
- role: worker
|
|
112
|
-
-
|
|
113
|
-
- task: <描述>
|
|
114
|
-
- readScope: <文件/目录>
|
|
115
|
-
- writeScope: <文件/目录>
|
|
85
|
+
- role: worker | preferred agent: aiws-worker
|
|
86
|
+
- readScope: <...> | writeScope: <...>
|
|
116
87
|
- artifactTargets: .aiws/changes/<id>/patches/, .aiws/changes/<id>/evidence/
|
|
117
88
|
- fallback: single-agent
|
|
118
89
|
Context Curation: .aiws/changes/<id>/analysis/worker-context.jsonl
|
|
@@ -120,19 +91,13 @@ Context Curation: .aiws/changes/<id>/analysis/worker-context.jsonl
|
|
|
120
91
|
|
|
121
92
|
## 委托者检查清单
|
|
122
93
|
|
|
123
|
-
|
|
124
|
-
- [ ] 子 agent prompt 包含上下文引用
|
|
125
|
-
- [ ] JSONL 已写入 `.aiws/changes/<id>/analysis/<role>-context.jsonl`
|
|
126
|
-
- [ ] 预算检查通过
|
|
127
|
-
- [ ] readScope / writeScope / artifactTargets 已声明
|
|
94
|
+
派遣前:`[ ] prompt 含上下文引用` `[ ] JSONL 已写入` `[ ] 预算检查通过` `[ ] readScope/writeScope/artifactTargets 已声明`
|
|
128
95
|
|
|
129
|
-
|
|
130
|
-
- [ ] 解析 Status 行
|
|
131
|
-
- [ ] 非 DONE → 按状态处理规则行动
|
|
132
|
-
- [ ] 非 DONE → 记录决策到 `delegation-decisions.md`
|
|
133
|
-
- [ ] handoff 文件 `.aiws/changes/<id>/handoff-evidence.md` 已存在且非空
|
|
96
|
+
返回后:`[ ] 解析 Status` `[ ] 非 DONE→按规则处理` `[ ] 非 DONE→记录决策到 delegation-decisions.md` `[ ] handoff 文件存在且非空`
|
|
134
97
|
|
|
135
98
|
安全:
|
|
136
99
|
- 不让 `ws-delegate` 变成第二套 orchestrator
|
|
137
100
|
- 不让 delegated agent 越权写未授权文件
|
|
138
101
|
- 不跳过 submodule drift check(若 `.gitmodules` 存在)
|
|
102
|
+
|
|
103
|
+
> 运行时行为约束:`packages/spec/docs/run-behavior-guidelines.md`
|
|
@@ -19,105 +19,71 @@ description: 使用时机:需要修改代码、配置、测试时。触发词
|
|
|
19
19
|
## 必需输出
|
|
20
20
|
|
|
21
21
|
- `变更文件(Changed):` 实际改动清单
|
|
22
|
-
- `验证(Verify):`
|
|
23
|
-
- `证据(Evidence):` `plan/...`、`.aiws/changes/<change-id
|
|
22
|
+
- `验证(Verify):` 实际运行的命令与结果
|
|
23
|
+
- `证据(Evidence):` `plan/...`、`.aiws/changes/<change-id>/...` 等证据路径
|
|
24
24
|
- `Next:` 若准备提交,建议 `$ws-review` 或 `$ws-commit`
|
|
25
25
|
|
|
26
26
|
## 前置条件(硬阻断 — 必须最先检查)
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
1. **Design Gate**:若 `proposal.md` 不存在 → 立即停止,输出 `BLOCKED: 缺少 proposal。请先执行 $ws-plan`
|
|
29
|
+
2. **Task Gate**:若 `tasks.md` 不存在 → 立即停止,输出 `BLOCKED: 缺少 tasks。请先执行 $ws-plan`
|
|
30
|
+
3. **Granularity Gate**:对每个 task 估算原子操作数(read/edit/write/run)。若任一 task 需 >3 原子操作 → 立即停止,返回 `$ws-plan` 拆细后再进入。
|
|
29
31
|
|
|
30
|
-
|
|
31
|
-
- 立即停止,不要写代码
|
|
32
|
-
- 输出:`BLOCKED: 缺少 proposal。请先执行 $ws-plan 创建变更计划与任务分解。`
|
|
33
|
-
2. **Task Gate**:若 `.aiws/changes/<change-id>/tasks.md` 不存在:
|
|
34
|
-
- 立即停止,不要写代码
|
|
35
|
-
- 输出:`BLOCKED: 缺少 tasks。请先执行 $ws-plan 创建任务分解。`
|
|
36
|
-
|
|
37
|
-
> 例外:`ws-dev-lite` 是轻量入口,可豁免 Design Gate,但仅限单文件/typo/config/bugfix 场景。
|
|
32
|
+
> 例外:`ws-dev-lite` 可豁免 Design Gate,仅限单文件/typo/config/bugfix 场景。
|
|
38
33
|
|
|
39
34
|
## TDD 约束(强制)
|
|
40
35
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
禁止:
|
|
48
|
-
- 先写实现代码再补测试
|
|
49
|
-
- 跳过测试步骤直接提交
|
|
50
|
-
|
|
51
|
-
自我检查顺序(每次修改后):`lint → typecheck → test`。若项目无对应脚本则跳过该项。
|
|
36
|
+
对于编写新代码或修改业务逻辑的任务,必须遵守 RED-GREEN-REFACTOR:
|
|
37
|
+
1. **RED**:先写测试,运行并确认测试失败
|
|
38
|
+
2. **GREEN**:最小实现使测试通过
|
|
39
|
+
3. **REFACTOR**:重构,保持测试通过
|
|
40
|
+
禁止:先写实现再补测试 / 跳过测试直接提交。
|
|
41
|
+
修改后自检:`lint → typecheck → test`(项目无对应脚本则跳过)。
|
|
52
42
|
|
|
53
43
|
## 完成判定
|
|
54
44
|
|
|
55
|
-
|
|
45
|
+
改动已落盘、验证已执行或已说明未执行原因、证据路径可回放,可进入 review/commit。
|
|
56
46
|
|
|
57
47
|
## 建议流程
|
|
58
48
|
|
|
59
49
|
### 1. Preflight
|
|
60
50
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
- 已有计划:先 `$ws-plan-verify`,通过后进入实现。
|
|
66
|
-
- `$ws-plan` 已创建 worktree:直接在该 worktree 中继续。
|
|
51
|
+
定位项目根,读取真值文件,输出约束摘要。
|
|
52
|
+
- 中大型任务:先用 `$ws-plan` 生成 `plan/` 工件,并默认执行 3.1 自我修正循环
|
|
53
|
+
- 已有计划:先 `$ws-plan-verify`,通过后进入实现
|
|
54
|
+
- `$ws-plan` 已创建 worktree:直接在其中继续
|
|
67
55
|
|
|
68
56
|
### 1.5 Spec Refresh(进入实现前必做)
|
|
69
57
|
|
|
70
|
-
|
|
71
|
-
- `AI_PROJECT.md` 安全边界(哪些目录不能动、哪些约束必须遵守)
|
|
72
|
-
- `REQUIREMENTS.md` 中与本次 `Req_ID` 相关的条目(摘要 2-3 段即可)
|
|
73
|
-
|
|
74
|
-
目的:避免落地时遗忘约束或需求边界。仅需 2-3 段摘要,不需要全文复读。
|
|
58
|
+
重读 `AI_PROJECT.md` 安全边界和 `REQUIREMENTS.md` 相关条目,输出 2-3 段摘要。避免遗忘约束或需求边界。
|
|
75
59
|
|
|
76
60
|
### 2. 建立变更归因
|
|
77
61
|
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
62
|
+
- `git status --porcelain` 仅有计划/工件文件 → 继续
|
|
63
|
+
- 创建新 change:`aiws change start <change-id> --hooks --no-switch`
|
|
64
|
+
- 切换分支:先确认无未提交改动,再 `git switch change/<change-id>`
|
|
65
|
+
- 有 submodule:准备好 `submodules.targets`(`--submodules` 标志自动处理)
|
|
82
66
|
|
|
83
67
|
### 3. 实现策略:默认 dispatch aiws-worker(Subagent-First)
|
|
84
68
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
- 根据 review 结果决定 fix 或收敛 evidence
|
|
91
|
-
- **Inline escape hatch**:如果用户明确说"你直接改"或"do it inline",主 session 可直接写代码,但必须落盘 evidence 记录理由
|
|
92
|
-
|
|
93
|
-
**验证先行推荐**:对于非 trivial 改动,建议先确认验证入口再开始实现:
|
|
94
|
-
1. 先确认 `AI_WORKSPACE.md` 中对应的验证命令
|
|
95
|
-
2. 若验证命令不明确:先补验证入口,再开始实现
|
|
96
|
-
3. 可选模式(不强求 TDD):先写最小验证 → 实现 → 补完整验证
|
|
69
|
+
详见 `packages/spec/docs/opencode-subagent-first.md`。
|
|
70
|
+
- 主 session **默认不直接写代码**;通过 `$ws-delegate` 派发 `aiws-worker`(`task()` 中加 `role: worker`)
|
|
71
|
+
- worker 返回后派发 `aiws-reviewer` 独立审查,根据结果 fix 或收敛 evidence
|
|
72
|
+
- **Inline escape hatch**:用户说"直接改"或"do it inline"时可直接写代码,但必须落盘记录理由
|
|
73
|
+
- 验证先行:先确认 `AI_WORKSPACE.md` 中验证命令;不明确则先补验证入口再实现
|
|
97
74
|
|
|
98
75
|
### 3.1 自我修正循环(evaluate-optimize)——必经步骤
|
|
99
76
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
1. **实现** → subagent 产出代码
|
|
103
|
-
2. **自审** → 主 session 检查:lint/type-check 是否通过?是否符合现有代码模式?是否有明显 bug?
|
|
104
|
-
3. **修正** → 如果发现问题,要求 subagent 修正后重新提交
|
|
105
|
-
4. **2 轮上限** → 如果 2 轮后仍有问题,升级到 `$ws-review` 做正式审查
|
|
106
|
-
|
|
107
|
-
**适用场景**:所有非 trivial 改动(单文件修复、配置调整、小步实现、中大型任务均适用)。不适合跨模块架构变更——此类变更直接走 $ws-review。
|
|
108
|
-
|
|
109
|
-
**注意**:这不是替代 `$ws-review` 的门禁;自审通过后仍需走正式 review gate。
|
|
77
|
+
dispatch 前最多 **2 轮** 自审+修正:subagent 产出 → 主 session 检查(lint/typecheck/代码模式)→ 有问题则要求修正 → 2 轮后仍有问题升级到 `$ws-review`。
|
|
78
|
+
适用:所有非 trivial 改动。注意:不替代 `$ws-review` 正式 gate。
|
|
110
79
|
|
|
111
80
|
### 4. 其他规则
|
|
112
81
|
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
- 验证:运行 `AI_WORKSPACE.md`
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
```bash
|
|
119
|
-
aiws validate .
|
|
120
|
-
```
|
|
82
|
+
- 需求调整:`$ws-req-review` → 确认后 `$ws-req-change`
|
|
83
|
+
- 最小改动:每处改动归因到 `REQUIREMENTS.md` 或 `issues/problem-issues.csv`
|
|
84
|
+
- 验证:运行 `AI_WORKSPACE.md` 命令;未运行不声称已运行
|
|
85
|
+
- 多步任务用 `update_plan` 跟踪
|
|
86
|
+
- 提交前门禁:`aiws validate .`
|
|
121
87
|
- 交付收尾:`$ws-finish`
|
|
122
88
|
|
|
123
89
|
## 输出要求
|
|
@@ -125,3 +91,5 @@ description: 使用时机:需要修改代码、配置、测试时。触发词
|
|
|
125
91
|
- `变更文件(Changed):` 文件清单
|
|
126
92
|
- `验证(Verify):` 实际运行的命令 + 期望结果
|
|
127
93
|
- `证据(Evidence):` 证据路径
|
|
94
|
+
|
|
95
|
+
> 运行时行为约束:`packages/spec/docs/run-behavior-guidelines.md`
|
|
@@ -72,3 +72,5 @@ Workflow State Suffix(会话门禁约定):
|
|
|
72
72
|
- `gate` 后缀保留给 `ws-dev` / `ws-plan-verify` 的完整计划门禁;不要在本 skill 中使用 `gate` 后缀。
|
|
73
73
|
- 若需要与 `ws-dev` 共享状态:先通过 `$ws-dev` 建立 `gate` 后缀记录,再回到 lite 修复。
|
|
74
74
|
- 详细参见 `ws-dev` 的 Workflow State Suffix 约定。
|
|
75
|
+
|
|
76
|
+
> 运行时行为约束:`packages/spec/docs/run-behavior-guidelines.md`
|