@fitlab-ai/agent-infra 0.7.7 → 0.8.1
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 +2 -0
- package/README.zh-CN.md +2 -0
- package/bin/cli.ts +42 -15
- package/dist/bin/cli.js +46 -16
- package/dist/lib/decide.js +110 -0
- package/dist/lib/run/host.js +39 -0
- package/dist/lib/run/index.js +193 -0
- package/dist/lib/run/prompt.js +2 -0
- package/dist/lib/run/skills.js +29 -0
- package/dist/lib/run/tui.js +35 -0
- package/dist/lib/sandbox/capture.js +158 -0
- package/dist/lib/sandbox/commands/create.js +58 -9
- package/dist/lib/sandbox/commands/enter.js +7 -3
- package/dist/lib/sandbox/credentials.js +42 -3
- package/dist/lib/sandbox/runtimes/base.dockerfile +13 -0
- package/dist/lib/server/adapters/_contract.js +9 -0
- package/dist/lib/server/adapters/feishu/index.js +40 -0
- package/dist/lib/server/adapters/feishu/transport.js +95 -0
- package/dist/lib/server/auth.js +19 -0
- package/dist/lib/server/config.js +183 -0
- package/dist/lib/server/daemon.js +96 -0
- package/dist/lib/server/index.js +47 -0
- package/dist/lib/server/logger.js +34 -0
- package/dist/lib/server/plugin-loader.js +73 -0
- package/dist/lib/server/process-control.js +200 -0
- package/dist/lib/server/protocol.js +69 -0
- package/dist/lib/server/redact.js +12 -0
- package/dist/lib/server/runner.js +75 -0
- package/dist/lib/server/streamer.js +44 -0
- package/dist/lib/task/commands/decisions.js +258 -0
- package/dist/lib/task/commands/log.js +38 -41
- package/dist/lib/task/commands/status.js +144 -45
- package/dist/lib/task/index.js +9 -0
- package/dist/lib/task/ledger.js +66 -0
- package/dist/lib/task/sections.js +30 -1
- package/lib/decide.ts +124 -0
- package/lib/run/host.ts +47 -0
- package/lib/run/index.ts +237 -0
- package/lib/run/prompt.ts +1 -0
- package/lib/run/skills.ts +34 -0
- package/lib/run/tui.ts +40 -0
- package/lib/sandbox/capture.ts +215 -0
- package/lib/sandbox/commands/create.ts +64 -12
- package/lib/sandbox/commands/enter.ts +8 -2
- package/lib/sandbox/credentials.ts +57 -3
- package/lib/sandbox/runtimes/base.dockerfile +13 -0
- package/lib/server/adapters/_contract.ts +42 -0
- package/lib/server/adapters/feishu/index.ts +47 -0
- package/lib/server/adapters/feishu/transport.ts +128 -0
- package/lib/server/auth.ts +28 -0
- package/lib/server/config.ts +228 -0
- package/lib/server/daemon.ts +110 -0
- package/lib/server/index.ts +50 -0
- package/lib/server/logger.ts +48 -0
- package/lib/server/plugin-loader.ts +84 -0
- package/lib/server/process-control.ts +225 -0
- package/lib/server/protocol.ts +79 -0
- package/lib/server/redact.ts +12 -0
- package/lib/server/runner.ts +95 -0
- package/lib/server/server.schema.json +127 -0
- package/lib/server/streamer.ts +57 -0
- package/lib/task/commands/decisions.ts +272 -0
- package/lib/task/commands/log.ts +38 -39
- package/lib/task/commands/status.ts +200 -58
- package/lib/task/index.ts +9 -0
- package/lib/task/ledger.ts +73 -0
- package/lib/task/sections.ts +30 -1
- package/package.json +8 -3
- package/templates/.agents/QUICKSTART.zh-CN.md +2 -2
- package/templates/.agents/rules/issue-fields.github.en.md +1 -1
- package/templates/.agents/rules/issue-fields.github.zh-CN.md +1 -1
- package/templates/.agents/rules/next-step-output.en.md +5 -1
- package/templates/.agents/rules/next-step-output.zh-CN.md +5 -1
- package/templates/.agents/rules/no-mid-flow-questions.en.md +7 -2
- package/templates/.agents/rules/no-mid-flow-questions.zh-CN.md +7 -2
- package/templates/.agents/rules/pr-sync.github.en.md +3 -3
- package/templates/.agents/rules/pr-sync.github.zh-CN.md +3 -3
- package/templates/.agents/rules/review-handshake.en.md +5 -1
- package/templates/.agents/rules/review-handshake.zh-CN.md +5 -1
- package/templates/.agents/rules/task-management.en.md +2 -2
- package/templates/.agents/rules/task-management.zh-CN.md +2 -2
- package/templates/.agents/scripts/lib/post-review-commit.js +15 -18
- package/templates/.agents/scripts/validate-artifact.js +8 -0
- package/templates/.agents/skills/analyze-task/SKILL.en.md +15 -3
- package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +15 -3
- package/templates/.agents/skills/analyze-task/config/verify.en.json +2 -1
- package/templates/.agents/skills/analyze-task/config/verify.zh-CN.json +2 -1
- package/templates/.agents/skills/code-task/SKILL.en.md +2 -2
- package/templates/.agents/skills/code-task/SKILL.zh-CN.md +3 -3
- package/templates/.agents/skills/code-task/reference/dual-mode.en.md +1 -1
- package/templates/.agents/skills/code-task/reference/dual-mode.zh-CN.md +1 -1
- package/templates/.agents/skills/code-task/reference/fix-mode.en.md +3 -3
- package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +4 -4
- package/templates/.agents/skills/complete-task/SKILL.en.md +1 -0
- package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +1 -0
- package/templates/.agents/skills/complete-task/config/verify.en.json +2 -1
- package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +2 -1
- package/templates/.agents/skills/create-pr/reference/comment-publish.en.md +1 -1
- package/templates/.agents/skills/create-pr/reference/comment-publish.zh-CN.md +1 -1
- package/templates/.agents/skills/create-task/SKILL.en.md +1 -3
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +1 -3
- package/templates/.agents/skills/import-codescan/SKILL.en.md +0 -3
- package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +0 -3
- package/templates/.agents/skills/import-dependabot/SKILL.en.md +0 -1
- package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +0 -1
- package/templates/.agents/skills/import-issue/SKILL.en.md +1 -2
- package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +1 -2
- package/templates/.agents/skills/plan-task/SKILL.en.md +1 -2
- package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +1 -2
- package/templates/.agents/skills/review-analysis/SKILL.en.md +2 -2
- package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/review-analysis/config/verify.en.json +1 -1
- package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +1 -1
- package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +11 -11
- package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +11 -11
- package/templates/.agents/skills/review-analysis/reference/report-template.en.md +4 -4
- package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +4 -4
- package/templates/.agents/skills/review-analysis/reference/review-criteria.en.md +5 -5
- package/templates/.agents/skills/review-analysis/reference/review-criteria.zh-CN.md +5 -5
- package/templates/.agents/skills/review-code/SKILL.en.md +4 -4
- package/templates/.agents/skills/review-code/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/review-code/config/verify.en.json +1 -1
- package/templates/.agents/skills/review-code/config/verify.zh-CN.json +1 -1
- package/templates/.agents/skills/review-code/reference/output-templates.en.md +16 -16
- package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +12 -12
- package/templates/.agents/skills/review-code/reference/report-template.en.md +4 -4
- package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +4 -4
- package/templates/.agents/skills/review-code/reference/review-criteria.en.md +5 -5
- package/templates/.agents/skills/review-code/reference/review-criteria.zh-CN.md +5 -5
- package/templates/.agents/skills/review-plan/SKILL.en.md +2 -2
- package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/review-plan/config/verify.en.json +1 -1
- package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +1 -1
- package/templates/.agents/skills/review-plan/reference/output-templates.en.md +11 -11
- package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +11 -11
- package/templates/.agents/skills/review-plan/reference/report-template.en.md +4 -4
- package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +4 -4
- package/templates/.agents/skills/review-plan/reference/review-criteria.en.md +5 -5
- package/templates/.agents/skills/review-plan/reference/review-criteria.zh-CN.md +5 -5
- package/templates/.agents/templates/task.en.md +3 -3
- package/templates/.agents/templates/task.zh-CN.md +3 -3
- package/templates/.github/workflows/metadata-sync.yml +0 -18
|
@@ -30,7 +30,7 @@ Follow the `code-review` step in `.agents/workflows/feature-development.yaml`.
|
|
|
30
30
|
3. **Actionable**: suggest a concrete fix
|
|
31
31
|
4. **Severity-based**: clearly distinguish blockers, major issues, and minor issues
|
|
32
32
|
|
|
33
|
-
##
|
|
33
|
+
## Manual Validation Classification
|
|
34
34
|
|
|
35
35
|
Some findings cannot be closed by an AI agent in the current execution environment, for example:
|
|
36
36
|
|
|
@@ -41,11 +41,11 @@ Some findings cannot be closed by an AI agent in the current execution environme
|
|
|
41
41
|
|
|
42
42
|
**Decision tree**: "Can the AI agent close this item independently without changing the environment?"
|
|
43
43
|
- Yes -> blocker / major / minor, based on risk
|
|
44
|
-
- No -> **
|
|
44
|
+
- No -> **manual-validation** (a manual-validation meta-category, not part of severity ordering)
|
|
45
45
|
|
|
46
|
-
Where
|
|
47
|
-
- Record them in an independent review report section named "
|
|
48
|
-
-
|
|
46
|
+
Where manual-validation items go:
|
|
47
|
+
- Record them in an independent review report section named "Manual Validation Items"
|
|
48
|
+
- Record the done-note source field as `Manual-validation: 1`; `ai task log` normalizes it into review rows
|
|
49
49
|
- Do **not** include them in the code-task fix loop; maintainers carry them in the PR description under manual verification
|
|
50
50
|
|
|
51
51
|
Also inspect `git diff`, the latest code artifact, latest technical-plan review artifact, and `task.md` Activity Log so the report reflects the full change context.
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
3. **可执行**:给出明确可落地的修复建议
|
|
31
31
|
4. **按严重程度分类**:明确区分 blocker、major 和 minor
|
|
32
32
|
|
|
33
|
-
##
|
|
33
|
+
## 人工校验项分类
|
|
34
34
|
|
|
35
35
|
某些发现项是 AI agent 在本执行环境**无法闭环**的,例如:
|
|
36
36
|
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
|
|
42
42
|
**分类决策树**:「AI agent 能否在不改环境的前提下独立闭环这一项?」
|
|
43
43
|
- 是 -> blocker / major / minor 之一(按风险定档)
|
|
44
|
-
- 否 -> **
|
|
44
|
+
- 否 -> **manual-validation**(人工校验元类目,不参与严重程度排序)
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
- 写入 review
|
|
48
|
-
-
|
|
46
|
+
manual-validation 项的去向:
|
|
47
|
+
- 写入 review 报告独立段落「人工校验项」
|
|
48
|
+
- 在 done note 中写入源字段 `Manual-validation: 1`;`ai task log` 归一化展示到 review 行
|
|
49
49
|
- **不**进入 code-task 修复循环;维护者在 PR description 中以「待人工验证」清单形式承接
|
|
50
50
|
|
|
51
51
|
同时检查 `git diff`、最新实现产物、最新技术方案审查产物和 `task.md` Activity Log,确保报告反映完整的变更上下文。
|
|
@@ -77,9 +77,9 @@ date "+%Y-%m-%d %H:%M:%S%:z"
|
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
Set `current_step` to `technical-design-review`, refresh task metadata, and append:
|
|
80
|
-
`- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Review Plan (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}
|
|
80
|
+
`- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Review Plan (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}, Manual-validation: {n} → {review-artifact}`
|
|
81
81
|
|
|
82
|
-
`
|
|
82
|
+
`manual-validation` is the data source for the `Manual-validation` count folded into review rows in `ai task log`; do not add a parallel manual-verification field.
|
|
83
83
|
|
|
84
84
|
If task.md has a valid `issue_number`, read `.agents/rules/issue-sync.md`, sync the task comment, and publish the `{review-artifact}` comment.
|
|
85
85
|
|
|
@@ -88,9 +88,9 @@ date "+%Y-%m-%d %H:%M:%S%:z"
|
|
|
88
88
|
- `updated_at`:{当前时间}
|
|
89
89
|
- `agent_infra_version`:按 `.agents/rules/version-stamp.md` 取值
|
|
90
90
|
- 追加:
|
|
91
|
-
`- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Review Plan (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}
|
|
91
|
+
`- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Review Plan (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}, Manual-validation: {n} → {review-artifact}`
|
|
92
92
|
|
|
93
|
-
`
|
|
93
|
+
`manual-validation` 是 `ai task log` 中 review 行「人工校验点」(EN `Manual-validation`)计数的数据源;不要新增并行人工验证字段。
|
|
94
94
|
|
|
95
95
|
如果 task.md 中存在有效的 `issue_number`,执行前先读取 `.agents/rules/issue-sync.md`,完成 upstream 仓库检测和权限检测,然后同步 task 评论并发布 `{review-artifact}` 评论。
|
|
96
96
|
|
|
@@ -4,8 +4,8 @@ Read this file before presenting the final review result to the user.
|
|
|
4
4
|
|
|
5
5
|
## Select exactly one output scenario
|
|
6
6
|
|
|
7
|
-
Evaluate in this order (**
|
|
8
|
-
1. If `Blocker = 0`, `Major = 0`, and `Minor = 0`, use Scenario A, regardless of
|
|
7
|
+
Evaluate in this order (**manual-validation count does not participate in selection**):
|
|
8
|
+
1. If `Blocker = 0`, `Major = 0`, and `Minor = 0`, use Scenario A, regardless of manual-validation count
|
|
9
9
|
2. If `Blocker = 0` and (`Major > 0` or `Minor > 0`), use Scenario B
|
|
10
10
|
3. If `Blocker > 0` and the issues can be handled by one focused revision, use Scenario C
|
|
11
11
|
4. If the technical plan needs major redesign, broad rewriting, or a restart, use Scenario D
|
|
@@ -14,7 +14,7 @@ Rules:
|
|
|
14
14
|
- Do not skip scenario selection
|
|
15
15
|
- Do not mix text from multiple scenarios
|
|
16
16
|
- If `Blocker > 0`, never use an approved template
|
|
17
|
-
- Never count
|
|
17
|
+
- Never count manual-validation items as blocker / major / minor or use them to trigger Scenario B/C/D
|
|
18
18
|
- The selected scenario must include all TUI command formats
|
|
19
19
|
- The count line always shows 4 numbers: the first three (Blockers / Major / Minor) must be 0 to proceed; the fourth, `Human-decision` (`{h}`), is the number of rows in task.md `## 审查分歧账本` with `stage=plan` and `status=needs-human-decision` — a "pending human ruling" item that need not be zero and does not participate in scenario selection. When `{h} > 0`, before the selected scenario's "Next steps" commands you must expand each pending ruling per the "Pending human-decision pre-block" in `.agents/rules/next-step-output.md` and prompt to resolve them first
|
|
20
20
|
|
|
@@ -30,8 +30,8 @@ Next step - write code:
|
|
|
30
30
|
- Gemini CLI: /agent-infra:code-task {task-ref}
|
|
31
31
|
- Codex CLI: $code-task {task-ref}
|
|
32
32
|
|
|
33
|
-
[When
|
|
34
|
-
Reminder:
|
|
33
|
+
[When manual-validation > 0, append:]
|
|
34
|
+
Reminder: manual-validation items belong in the PR description manual verification checklist and should not trigger /plan-task.
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
### Scenario B: Approved with findings
|
|
@@ -51,8 +51,8 @@ Or proceed directly to coding:
|
|
|
51
51
|
- Gemini CLI: /agent-infra:code-task {task-ref}
|
|
52
52
|
- Codex CLI: $code-task {task-ref}
|
|
53
53
|
|
|
54
|
-
[When
|
|
55
|
-
Reminder:
|
|
54
|
+
[When manual-validation > 0, append:]
|
|
55
|
+
Reminder: manual-validation items belong in the PR description manual verification checklist and should not trigger /plan-task.
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
### Scenario C: Changes requested
|
|
@@ -67,8 +67,8 @@ Next step - revise technical plan:
|
|
|
67
67
|
- Gemini CLI: /agent-infra:plan-task {task-ref}
|
|
68
68
|
- Codex CLI: $plan-task {task-ref}
|
|
69
69
|
|
|
70
|
-
[When
|
|
71
|
-
Reminder:
|
|
70
|
+
[When manual-validation > 0, append:]
|
|
71
|
+
Reminder: manual-validation items belong in the PR description manual verification checklist and should not trigger /plan-task.
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
### Scenario D: Rejected
|
|
@@ -83,6 +83,6 @@ Next step - redesign:
|
|
|
83
83
|
- Gemini CLI: /agent-infra:plan-task {task-ref}
|
|
84
84
|
- Codex CLI: $plan-task {task-ref}
|
|
85
85
|
|
|
86
|
-
[When
|
|
87
|
-
Reminder:
|
|
86
|
+
[When manual-validation > 0, append:]
|
|
87
|
+
Reminder: manual-validation items belong in the PR description manual verification checklist and should not trigger /plan-task.
|
|
88
88
|
```
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
## 选择唯一输出场景
|
|
6
6
|
|
|
7
|
-
按以下顺序判断(**注意:
|
|
8
|
-
1. 如果 `Blocker = 0` 且 `Major = 0` 且 `Minor = 0`,使用场景 A(不管
|
|
7
|
+
按以下顺序判断(**注意:manual-validation 数量不参与判断**):
|
|
8
|
+
1. 如果 `Blocker = 0` 且 `Major = 0` 且 `Minor = 0`,使用场景 A(不管 manual-validation 是否 > 0)
|
|
9
9
|
2. 如果 `Blocker = 0` 且(`Major > 0` 或 `Minor > 0`),使用场景 B
|
|
10
10
|
3. 如果 `Blocker > 0`,且问题可以通过一次聚焦修复解决,使用场景 C
|
|
11
11
|
4. 如果技术方案需要重大重构、大范围重写或整体重来,使用场景 D
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
- 不要跳过场景判断步骤
|
|
15
15
|
- 不要混用不同场景的文案
|
|
16
16
|
- 只要 `Blocker > 0`,就绝对不能输出通过模板
|
|
17
|
-
-
|
|
17
|
+
- manual-validation 项绝对不能被计入 blocker / major / minor 计数,也不能用作触发场景 B/C/D 的依据
|
|
18
18
|
- 所选场景中必须包含所有 TUI 命令格式
|
|
19
19
|
- 计数行固定显示 4 个数字:前三项(阻塞 / 主要 / 次要)必须为 0 才进下一步;第四项 `人工裁决`(`{h}`)= task.md `## 审查分歧账本` 中 `stage=plan` 且 `status=needs-human-decision` 的行数,是「待人裁」项、不要求归零,也不参与场景判断。当 `{h} > 0` 时,必须在选定场景的「下一步」命令之前,按 `.agents/rules/next-step-output.md`「人工裁决待办前置块」逐项展开裁决项并提示先完成裁决
|
|
20
20
|
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
- Gemini CLI:/agent-infra:code-task {task-ref}
|
|
31
31
|
- Codex CLI:$code-task {task-ref}
|
|
32
32
|
|
|
33
|
-
[当
|
|
34
|
-
提醒:
|
|
33
|
+
[当 manual-validation > 0 时,在最后附加一行:]
|
|
34
|
+
提醒:manual-validation 项需在 PR description 的「待人工验证」清单中承接,不应触发 /plan-task。
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
### 场景 B:通过但有问题
|
|
@@ -51,8 +51,8 @@
|
|
|
51
51
|
- Gemini CLI:/agent-infra:code-task {task-ref}
|
|
52
52
|
- Codex CLI:$code-task {task-ref}
|
|
53
53
|
|
|
54
|
-
[当
|
|
55
|
-
提醒:
|
|
54
|
+
[当 manual-validation > 0 时,在最后附加一行:]
|
|
55
|
+
提醒:manual-validation 项需在 PR description 的「待人工验证」清单中承接,不应触发 /plan-task。
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
### 场景 C:需要修改
|
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
- Gemini CLI:/agent-infra:plan-task {task-ref}
|
|
68
68
|
- Codex CLI:$plan-task {task-ref}
|
|
69
69
|
|
|
70
|
-
[当
|
|
71
|
-
提醒:
|
|
70
|
+
[当 manual-validation > 0 时,在最后附加一行:]
|
|
71
|
+
提醒:manual-validation 项需在 PR description 的「待人工验证」清单中承接,不应触发 /plan-task。
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
### 场景 D:拒绝
|
|
@@ -83,6 +83,6 @@
|
|
|
83
83
|
- Gemini CLI:/agent-infra:plan-task {task-ref}
|
|
84
84
|
- Codex CLI:$plan-task {task-ref}
|
|
85
85
|
|
|
86
|
-
[当
|
|
87
|
-
提醒:
|
|
86
|
+
[当 manual-validation > 0 时,在最后附加一行:]
|
|
87
|
+
提醒:manual-validation 项需在 PR description 的「待人工验证」清单中承接,不应触发 /plan-task。
|
|
88
88
|
```
|
|
@@ -22,7 +22,7 @@ Use this template when writing `review-plan.md` or `review-plan-r{N}.md`.
|
|
|
22
22
|
- **Review Time**: {timestamp}
|
|
23
23
|
- **Scope**: {file-count and major modules}
|
|
24
24
|
- **Overall Verdict**: {Approved / Changes Requested / Rejected}
|
|
25
|
-
- **Findings (AI-actionable)**: 0 blockers, 0 majors, 0 minors / **
|
|
25
|
+
- **Findings (AI-actionable)**: 0 blockers, 0 majors, 0 minors / **Manual validation**: 0
|
|
26
26
|
|
|
27
27
|
## Findings
|
|
28
28
|
|
|
@@ -46,17 +46,17 @@ Use this template when writing `review-plan.md` or `review-plan-r{N}.md`.
|
|
|
46
46
|
**File**: `{file-path}:{line-number}`
|
|
47
47
|
**Suggestion**: {improvement suggestion}
|
|
48
48
|
|
|
49
|
-
##
|
|
49
|
+
## Manual Validation Items
|
|
50
50
|
|
|
51
51
|
> Items the AI agent cannot close in the current execution environment; they do not participate in the next plan round. Maintainers carry them in the PR description as a "manual verification required" checklist.
|
|
52
52
|
|
|
53
|
-
#### 1. {
|
|
53
|
+
#### 1. {manual validation item title}
|
|
54
54
|
**File**: `{file-path}:{line-number}` (if applicable)
|
|
55
55
|
**Description**: {details}
|
|
56
56
|
**Required Environment**: {e.g. Docker sandbox / macOS host / privileged root / third-party account}
|
|
57
57
|
**Manual Verification Steps**: {steps for the human verifier}
|
|
58
58
|
|
|
59
|
-
> If this round has no
|
|
59
|
+
> If this round has no Manual validation items, keep the section heading and write "None".
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
## Review Disagreement Ledger Writeback
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
- **审查时间**:{timestamp}
|
|
23
23
|
- **审查范围**:{file-count and major modules}
|
|
24
24
|
- **总体结论**:{通过 / 需要修改 / 拒绝}
|
|
25
|
-
- **发现(AI 可处理)**:0 阻塞项,0 主要,0 次要 /
|
|
25
|
+
- **发现(AI 可处理)**:0 阻塞项,0 主要,0 次要 / **人工校验**:0
|
|
26
26
|
|
|
27
27
|
## 问题清单
|
|
28
28
|
|
|
@@ -46,17 +46,17 @@
|
|
|
46
46
|
**文件**:`{file-path}:{line-number}`
|
|
47
47
|
**建议**:{improvement suggestion}
|
|
48
48
|
|
|
49
|
-
##
|
|
49
|
+
## 人工校验项
|
|
50
50
|
|
|
51
51
|
> AI agent 在本执行环境无法闭环的项;不参与下一轮 refine。维护者在 PR description 中以「待人工验证」清单承接。
|
|
52
52
|
|
|
53
|
-
#### 1. {
|
|
53
|
+
#### 1. {人工校验项标题}
|
|
54
54
|
**文件**:`{file-path}:{line-number}`(如适用)
|
|
55
55
|
**说明**:{details}
|
|
56
56
|
**所需环境**:{e.g. Docker 沙箱 / macOS host / 特权 root / 第三方账号}
|
|
57
57
|
**待人工执行的验证步骤**:{steps for the human verifier}
|
|
58
58
|
|
|
59
|
-
>
|
|
59
|
+
> 如本轮无人工校验项,保留段落标题并写「(无)」。
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
## 审查分歧账本回写
|
|
@@ -29,7 +29,7 @@ Follow the `design-review` step in `.agents/workflows/feature-development.yaml`.
|
|
|
29
29
|
3. **Actionable**: suggest a concrete fix
|
|
30
30
|
4. **Severity-based**: clearly distinguish blockers, major issues, and minor issues
|
|
31
31
|
|
|
32
|
-
##
|
|
32
|
+
## Manual Validation Classification
|
|
33
33
|
|
|
34
34
|
Some findings cannot be closed by an AI agent in the current execution environment, for example:
|
|
35
35
|
|
|
@@ -40,11 +40,11 @@ Some findings cannot be closed by an AI agent in the current execution environme
|
|
|
40
40
|
|
|
41
41
|
**Decision tree**: "Can the AI agent close this item independently without changing the environment?"
|
|
42
42
|
- Yes -> blocker / major / minor, based on risk
|
|
43
|
-
- No -> **
|
|
43
|
+
- No -> **manual-validation** (a manual-validation meta-category, not part of severity ordering)
|
|
44
44
|
|
|
45
|
-
Where
|
|
46
|
-
- Record them in an independent review report section named "
|
|
47
|
-
-
|
|
45
|
+
Where manual-validation items go:
|
|
46
|
+
- Record them in an independent review report section named "Manual Validation Items"
|
|
47
|
+
- Record the done-note source field as `Manual-validation: 1`; `ai task log` normalizes it into review rows
|
|
48
48
|
- Do **not** include them in the code-task fix loop; maintainers carry them in the PR description under manual verification
|
|
49
49
|
|
|
50
50
|
Also inspect the latest technical plan artifact, latest requirement-analysis review artifact, and `task.md` Activity Log so the report reflects the full design context.
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
3. **可执行**:给出明确可落地的修复建议
|
|
30
30
|
4. **按严重程度分类**:明确区分 blocker、major 和 minor
|
|
31
31
|
|
|
32
|
-
##
|
|
32
|
+
## 人工校验项分类
|
|
33
33
|
|
|
34
34
|
某些发现项是 AI agent 在本执行环境**无法闭环**的,例如:
|
|
35
35
|
|
|
@@ -40,11 +40,11 @@
|
|
|
40
40
|
|
|
41
41
|
**分类决策树**:「AI agent 能否在不改环境的前提下独立闭环这一项?」
|
|
42
42
|
- 是 -> blocker / major / minor 之一(按风险定档)
|
|
43
|
-
- 否 -> **
|
|
43
|
+
- 否 -> **manual-validation**(人工校验元类目,不参与严重程度排序)
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
- 写入 review
|
|
47
|
-
-
|
|
45
|
+
manual-validation 项的去向:
|
|
46
|
+
- 写入 review 报告独立段落「人工校验项」
|
|
47
|
+
- 在 done note 中写入源字段 `Manual-validation: 1`;`ai task log` 归一化展示到 review 行
|
|
48
48
|
- **不**进入 code-task 修复循环;维护者在 PR description 中以「待人工验证」清单形式承接
|
|
49
49
|
|
|
50
50
|
同时检查最新技术方案产物、最新需求分析审查产物和 `task.md` Activity Log,确保报告反映完整的设计上下文。
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: task-XXX
|
|
3
|
-
type: feature # feature | bugfix | refactor | docs |
|
|
3
|
+
type: feature # feature | bugfix | refactor | docs | chore
|
|
4
4
|
branch: # <project>-<type>-<slug>
|
|
5
|
-
workflow: feature-development # feature-development | bug-fix |
|
|
6
|
-
status:
|
|
5
|
+
workflow: feature-development # feature-development | bug-fix | refactoring
|
|
6
|
+
status: active # active | blocked | completed
|
|
7
7
|
created_at: YYYY-MM-DDTHH:mm:ss±HH:MM
|
|
8
8
|
updated_at: YYYY-MM-DDTHH:mm:ss±HH:MM
|
|
9
9
|
agent_infra_version: v0.0.0 # Current agent-infra version; refreshed by workflow commands
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: task-XXX
|
|
3
|
-
type: feature # feature | bugfix | refactor | docs |
|
|
3
|
+
type: feature # feature | bugfix | refactor | docs | chore
|
|
4
4
|
branch: # <project>-<type>-<slug>
|
|
5
|
-
workflow: feature-development # feature-development | bug-fix |
|
|
6
|
-
status:
|
|
5
|
+
workflow: feature-development # feature-development | bug-fix | refactoring
|
|
6
|
+
status: active # active | blocked | completed
|
|
7
7
|
created_at: YYYY-MM-DDTHH:mm:ss±HH:MM
|
|
8
8
|
updated_at: YYYY-MM-DDTHH:mm:ss±HH:MM
|
|
9
9
|
agent_infra_version: v0.0.0 # 当前 agent-infra 版本;由工作流命令刷新
|
|
@@ -45,14 +45,8 @@ jobs:
|
|
|
45
45
|
| sed 's/^[[:space:]]*//; s/[[:space:]]*$//' \
|
|
46
46
|
| tr '[:upper:]' '[:lower:]')
|
|
47
47
|
|
|
48
|
-
milestone=$(printf '%s\n' "$frontmatter" \
|
|
49
|
-
| sed -n 's/^milestone:[[:space:]]*//p' \
|
|
50
|
-
| head -n 1 \
|
|
51
|
-
| sed 's/^[[:space:]]*//; s/[[:space:]]*$//')
|
|
52
|
-
|
|
53
48
|
printf 'is_task_comment=true\n' >> "$GITHUB_OUTPUT"
|
|
54
49
|
printf 'type=%s\n' "$type" >> "$GITHUB_OUTPUT"
|
|
55
|
-
printf 'milestone=%s\n' "$milestone" >> "$GITHUB_OUTPUT"
|
|
56
50
|
|
|
57
51
|
- name: Checkout shared scripts
|
|
58
52
|
if: steps.metadata.outputs.is_task_comment == 'true' && steps.metadata.outputs.type != ''
|
|
@@ -86,18 +80,6 @@ jobs:
|
|
|
86
80
|
--target "$TYPE_LABEL"
|
|
87
81
|
fi
|
|
88
82
|
|
|
89
|
-
- name: Sync milestone
|
|
90
|
-
if: steps.metadata.outputs.is_task_comment == 'true' && steps.metadata.outputs.milestone != ''
|
|
91
|
-
env:
|
|
92
|
-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
93
|
-
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
|
94
|
-
MILESTONE: ${{ steps.metadata.outputs.milestone }}
|
|
95
|
-
run: |
|
|
96
|
-
gh issue edit "$ISSUE_NUMBER" \
|
|
97
|
-
--repo "$GITHUB_REPOSITORY" \
|
|
98
|
-
--milestone "$MILESTONE" \
|
|
99
|
-
2>/dev/null || true
|
|
100
|
-
|
|
101
83
|
- name: Sync issue type
|
|
102
84
|
if: steps.metadata.outputs.is_task_comment == 'true' && steps.metadata.outputs.type != ''
|
|
103
85
|
env:
|