helloagents 3.1.2 → 3.1.3
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/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +16 -9
- package/README_CN.md +17 -11
- package/bootstrap-lite.md +46 -32
- package/bootstrap.md +62 -50
- package/cli.mjs +1 -1
- package/gemini-extension.json +1 -1
- package/package.json +1 -1
- package/scripts/cli-branch.mjs +21 -3
- package/scripts/guard.mjs +1 -1
- package/scripts/notify-context.mjs +2 -2
- package/scripts/runtime-scope.mjs +26 -1
- package/scripts/workflow-recommendation.mjs +16 -16
- package/scripts/workflow-state.mjs +4 -4
- package/skills/commands/auto/SKILL.md +2 -2
- package/skills/commands/build/SKILL.md +1 -1
- package/skills/commands/commit/SKILL.md +2 -2
- package/skills/commands/help/SKILL.md +3 -1
- package/skills/commands/init/SKILL.md +1 -1
- package/skills/commands/loop/SKILL.md +1 -1
- package/skills/commands/prd/SKILL.md +1 -1
- package/skills/commands/qa/SKILL.md +2 -2
- package/skills/hello-arch/SKILL.md +1 -1
- package/skills/hello-write/SKILL.md +2 -2
- package/skills/helloagents/SKILL.md +11 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "helloagents",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.3",
|
|
4
4
|
"description": "HelloAGENTS — The orchestration kernel that makes any AI CLI smarter. Adds intelligent routing, unified QA gates, safety guards, and notifications.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "HelloWind",
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
**A workflow layer for AI coding CLIs: skills, project knowledge, delivery checks, safer config writes, and resumable execution.**
|
|
10
10
|
|
|
11
|
-
[](./package.json)
|
|
12
12
|
[](https://www.npmjs.com/package/helloagents)
|
|
13
13
|
[](./package.json)
|
|
14
14
|
[](./skills)
|
|
@@ -177,7 +177,7 @@ For `~prd`, HelloAGENTS also creates PRD files such as:
|
|
|
177
177
|
- `prd/11-legal-privacy.md`
|
|
178
178
|
- `prd/12-timeline.md`
|
|
179
179
|
|
|
180
|
-
`contract.json` is used by the workflow to decide
|
|
180
|
+
`contract.json` is used by the workflow to decide `qaMode`, `qaFocus`, optional advisor checks, and optional visual validation.
|
|
181
181
|
|
|
182
182
|
`tasks.md` also includes a Codex `/goal` entry. For long-running Codex work, use that prepared entry instead of giving `/goal` a raw product document. The default chain is `/goal -> ~auto -> ~qa`: Codex keeps the long-running continuation, `~auto` executes the AFK work, and `~qa` remains the final quality gate before closeout.
|
|
183
183
|
|
|
@@ -231,6 +231,7 @@ The CLI manages host files explicitly:
|
|
|
231
231
|
- `doctor` reports drift in carriers, links, hooks, config entries, plugin roots, cache copies, versions, and real Claude/Gemini global install artifacts; for Codex, it also surfaces native `codex doctor` output when available
|
|
232
232
|
- Codex managed `notify = ["helloagents-js", "codex-notify"]` stays portable, and `doctor`, `cleanup`, and `uninstall` also recognize wrapped `--previous-notify` chains used by Codex App / Computer Use
|
|
233
233
|
- per-host mode tracking is written only after host setup succeeds, and failed native global cleanup keeps the host tracked as `global` instead of silently layering standby on top
|
|
234
|
+
- direct `switch-branch` clears stale `HELLOAGENTS*` lifecycle env before its internal npm install/sync steps, and package `preuninstall` falls back to `--all` when no explicit host args are provided, so stale shell env does not shrink branch-switch or uninstall cleanup scope
|
|
234
235
|
- Windows `.cmd` / `.bat` lifecycle calls now run through an explicit command wrapper, so host installs, branch switching, and doctor flows do not emit Node `DEP0190` shell deprecation warnings
|
|
235
236
|
|
|
236
237
|
## Quick Start
|
|
@@ -429,6 +430,8 @@ helloagents switch-branch beta claude --global
|
|
|
429
430
|
helloagents branch beta --all --standby
|
|
430
431
|
```
|
|
431
432
|
|
|
433
|
+
The direct `helloagents switch-branch ...` command also clears stale `HELLOAGENTS*` lifecycle env before its internal npm install and host-sync steps.
|
|
434
|
+
|
|
432
435
|
Use normal npm commands when you only want to change the package and not sync host CLIs immediately:
|
|
433
436
|
|
|
434
437
|
```bash
|
|
@@ -546,17 +549,20 @@ Once the task creates or modifies local files, or otherwise leaves local output
|
|
|
546
549
|
HelloAGENTS uses this stage model for structured work:
|
|
547
550
|
|
|
548
551
|
```text
|
|
549
|
-
|
|
552
|
+
Routing and tiering → Goal clarification → Planning → Implementation → Quality loop → Closeout and archive
|
|
550
553
|
```
|
|
551
554
|
|
|
552
555
|
| Stage | Purpose |
|
|
553
556
|
|-------|---------|
|
|
554
|
-
| `
|
|
555
|
-
| `
|
|
556
|
-
| `
|
|
557
|
-
| `
|
|
558
|
-
| `
|
|
559
|
-
| `
|
|
557
|
+
| `Routing and tiering` | decide whether the task should go through `~idea`, `~office`, `~plan`, `~build`, `~qa`, `~prd`, or automatic flow |
|
|
558
|
+
| `Goal clarification` | clarify goal, constraints, and success criteria |
|
|
559
|
+
| `Planning` | prepare plan files and choose needed skills |
|
|
560
|
+
| `Implementation` | implement and run local checks |
|
|
561
|
+
| `Quality loop` | review, run commands, and check contract and evidence |
|
|
562
|
+
| `Closeout and archive` | update state, knowledge, and closeout evidence |
|
|
563
|
+
|
|
564
|
+
HelloAGENTS also keeps an always-on core-rule layer in `bootstrap.md` / `bootstrap-lite.md`.
|
|
565
|
+
That layer corrects proposal bias, distinguishes real external contracts from internal inertia, asks for a clean target before defaulting to legacy preservation, requires a first proof point plus a stop rule for bold directions, and keeps user-visible wording in one language unless code identifiers, commands, paths, config keys, or necessary proper names must stay unchanged.
|
|
560
566
|
|
|
561
567
|
### Delivery tiers
|
|
562
568
|
|
|
@@ -685,6 +691,7 @@ npm test
|
|
|
685
691
|
The current suite covers:
|
|
686
692
|
|
|
687
693
|
- install, update, cleanup, uninstall, branch switching, and mode switching
|
|
694
|
+
- stale lifecycle-env protection for direct `switch-branch` and package `preuninstall`
|
|
688
695
|
- Windows `.cmd` / `.bat` lifecycle dispatch without Node `DEP0190` warnings
|
|
689
696
|
- one-shot shell and PowerShell lifecycle dispatch, plus wrapper env cleanup and mode-routing rules for install, update, cleanup, uninstall, and branch switching
|
|
690
697
|
- Claude, Gemini, and Codex host integration behavior, including global-to-standby cleanup and failed native cleanup tracking
|
package/README_CN.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
**面向 AI 编码 CLI 的工作流层:技能、知识库、交付检查、更安全的配置写入,以及可恢复的执行流程。**
|
|
10
10
|
|
|
11
|
-
[](./package.json)
|
|
12
12
|
[](https://www.npmjs.com/package/helloagents)
|
|
13
13
|
[](./package.json)
|
|
14
14
|
[](./skills)
|
|
@@ -148,7 +148,7 @@ HelloAGENTS 可以在 `.helloagents/` 下创建和维护项目知识库。
|
|
|
148
148
|
| `plans/<feature>/` | 活跃方案包 |
|
|
149
149
|
| `archive/` | 已归档方案包 |
|
|
150
150
|
|
|
151
|
-
`~init` 用来初始化项目工作流:写入项目级 full
|
|
151
|
+
`~init` 用来初始化项目工作流:写入项目级 `HELLOAGENTS_PROFILE: full` 标记、准备项目状态,并创建或更新知识库。
|
|
152
152
|
|
|
153
153
|
### 4)结构化方案包
|
|
154
154
|
|
|
@@ -177,7 +177,7 @@ HelloAGENTS 可以在 `.helloagents/` 下创建和维护项目知识库。
|
|
|
177
177
|
- `prd/11-legal-privacy.md`
|
|
178
178
|
- `prd/12-timeline.md`
|
|
179
179
|
|
|
180
|
-
`contract.json`
|
|
180
|
+
`contract.json` 会影响 `qaMode`、`qaFocus`、可选 advisor 检查和可选视觉验收。
|
|
181
181
|
|
|
182
182
|
`tasks.md` 还会保留 Codex `/goal` 执行入口。长程 Codex 任务应使用这个已拆分入口,不要把原始产品文档直接交给 `/goal`。默认链路是 `/goal -> ~auto -> ~qa`:`/goal` 负责长程续跑,`~auto` 负责执行 AFK 任务,`~qa` 负责最终质量闭环与收尾前验收。
|
|
183
183
|
|
|
@@ -217,7 +217,7 @@ HelloAGENTS 不把“命令通过”和“任务完成”简单画等号。交
|
|
|
217
217
|
|
|
218
218
|
标准运行态证据和临时运行态现在默认 72 小时过期。只有工作流明确需要的长程 Codex goal 链路,才继续保留 720 小时上限。
|
|
219
219
|
|
|
220
|
-
交付门控、守卫和 QA
|
|
220
|
+
交付门控、守卫和 QA 门禁提示使用执行性表述,例如处理路径、收尾动作和视觉验收动作。阻塞流程会说明下一步要做什么,而不是把可执行步骤写成泛化建议。最终回复还会强制只保留一个 HelloAGENTS 外层块,避免同一条回复重复输出完成标题。
|
|
221
221
|
这个外层格式现在只保留给直接面向最终用户的终局交付。中间汇报、委派任务结果和子代理回复都保持自然输出;子代理结束钩子也会拦截错误的外层收尾格式。
|
|
222
222
|
|
|
223
223
|
### 7)更安全的安装、更新、清理和诊断
|
|
@@ -231,6 +231,7 @@ CLI 显式管理宿主文件:
|
|
|
231
231
|
- `doctor` 检查规则文件、链接、hooks、配置项、插件根目录、缓存副本、版本漂移,以及 Claude / Gemini 是否真的装上了全局插件或扩展;对 Codex 还会在可用时附带原生 `codex doctor` 结果
|
|
232
232
|
- Codex 受管 `notify = ["helloagents-js", "codex-notify"]` 会继续保持可移植;`doctor`、`cleanup` 和 `uninstall` 也能识别 Codex App / Computer Use 使用的 `--previous-notify` 包装链
|
|
233
233
|
- 单 CLI 模式记录只会在宿主安装成功后写入;如果原生全局清理失败,也会继续保留 `global` 记录,而不是悄悄叠加 standby
|
|
234
|
+
- 直接执行 `switch-branch` 时,会先清掉陈旧的 `HELLOAGENTS*` 生命周期环境变量;包级 `preuninstall` 在没有显式宿主参数时固定回退到 `--all`,避免残留 shell 环境把切分支或卸载清理错误缩窄到旧目标
|
|
234
235
|
- Windows 下的 `.cmd` / `.bat` 生命周期调用现在统一走显式命令包装,不再出现 Node `DEP0190` shell 弃用警告
|
|
235
236
|
|
|
236
237
|
## 快速开始
|
|
@@ -429,6 +430,8 @@ helloagents switch-branch beta claude --global
|
|
|
429
430
|
helloagents branch beta --all --standby
|
|
430
431
|
```
|
|
431
432
|
|
|
433
|
+
直接执行 `helloagents switch-branch ...` 时,也会在内部 npm 安装和宿主同步之前先清理陈旧的 `HELLOAGENTS*` 生命周期环境变量。
|
|
434
|
+
|
|
432
435
|
如果只想切换包本身,暂不同步宿主 CLI,可以直接使用 npm:
|
|
433
436
|
|
|
434
437
|
```bash
|
|
@@ -550,17 +553,19 @@ Codex 全局模式由 HelloAGENTS 通过本地插件路径自动安装。
|
|
|
550
553
|
结构化任务使用以下阶段:
|
|
551
554
|
|
|
552
555
|
```text
|
|
553
|
-
|
|
556
|
+
选路与分层 → 目标澄清 → 规划 → 实现 → 质量闭环 → 收尾与归档
|
|
554
557
|
```
|
|
555
558
|
|
|
556
559
|
| 阶段 | 用途 |
|
|
557
560
|
|------|------|
|
|
558
|
-
|
|
|
559
|
-
|
|
|
560
|
-
|
|
|
561
|
-
|
|
|
562
|
-
|
|
|
563
|
-
|
|
|
561
|
+
| 选路与分层 | 判断任务应走 `~idea`、`~plan`、`~build`、`~qa`、`~prd` 还是自动流程 |
|
|
562
|
+
| 目标澄清 | 明确目标、约束和完成标准 |
|
|
563
|
+
| 规划 | 准备方案文件并选择需要的技能 |
|
|
564
|
+
| 实现 | 实现并做局部检查 |
|
|
565
|
+
| 质量闭环 | 审查、运行命令、核对契约和证据 |
|
|
566
|
+
| 收尾与归档 | 更新状态、知识库和收尾证据 |
|
|
567
|
+
|
|
568
|
+
HelloAGENTS 还在 `bootstrap.md` / `bootstrap-lite.md` 这层默认启用一组常驻核心规则:涉及判断与取舍时,先区分真实约束与内部惯性,再给干净目标,再谈迁移路径;若被当前实现、旧命名、旧目录、半成品结构或兼容压力拖住,先从终局状态或零遗留视角重看目标;若答案仍被兼容性崇拜、局部细节、重构恐惧或温和偏差拖小,必须补首个证明点、证伪条件与止损规则。用户可见文本默认只使用当前回复语言,除代码标识、命令、文件名、目录名、路径、标记名、配置键和必要专名外,避免中英文混杂。
|
|
564
569
|
|
|
565
570
|
### 任务分层
|
|
566
571
|
|
|
@@ -689,6 +694,7 @@ npm test
|
|
|
689
694
|
当前测试覆盖:
|
|
690
695
|
|
|
691
696
|
- 安装、更新、清理、卸载、分支切换和模式切换
|
|
697
|
+
- 直接 `switch-branch` 与包级 `preuninstall` 的陈旧生命周期环境变量防护
|
|
692
698
|
- Windows `.cmd` / `.bat` 生命周期分发链路,且不再出现 Node `DEP0190` 警告
|
|
693
699
|
- shell 与 PowerShell 一键脚本分发链路,以及包装脚本在安装、更新、清理、卸载和分支切换中的环境清理与模式传递规则
|
|
694
700
|
- Claude、Gemini、Codex 的宿主集成行为,包括全局切回标准模式的清理和原生清理失败时的模式保留
|
package/bootstrap-lite.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
【子代理短路】
|
|
2
|
+
若当前任务属于上级代理分派的局部任务、由宿主协作/委派机制创建,或当前输出会交回上级代理、控制器或其他代理继续汇总、决策、复述或等待后续动作,则立即跳过本文件后续仅面向主代理的规则。只返回结果、证据或阻塞项;不得输出 `【HelloAGENTS】` 外层格式、`🔄 下一步:`、turn-state 或面向最终用户的收尾。安全、质量、验证和失败处理规则仍持续生效。
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
# HelloAGENTS
|
|
4
5
|
|
|
5
6
|
## 配置
|
|
6
7
|
配置文件: ~/.helloagents/helloagents.json
|
|
@@ -18,22 +19,23 @@
|
|
|
18
19
|
- 禁止以“能用就行”的标准交付
|
|
19
20
|
|
|
20
21
|
### 执行纪律
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
22
|
+
- 一次做完,直接推进:用户需求明确且已获得执行授权,或已明确同意方案、修改方向或继续执行时,必须持续执行到完成。只有符合下文“阻塞判定”的情况,才可中途停下。不得把可执行动作改写为建议、可选项、等待确认,也不用“下一步建议”代替实际执行
|
|
23
|
+
- 涉及判断与取舍时,先判断约束是否真实,再给干净目标,最后再谈迁移路径。
|
|
24
|
+
- 若明显被当前实现、旧命名、旧目录、半成品结构或兼容压力拖住,先切到终局倒推或零遗留视角,重看正确目标。
|
|
25
|
+
- 公开 API、持久化数据、已文档化集成、用户承诺、部署与合规要求等才算真实约束;内部调用方、旧命名、旧目录结构、半成品实现和“改动会很大”不自动成立。
|
|
26
|
+
- 若答案明显被兼容性崇拜、局部细节、重构恐惧或温和偏差拖小,必须补上更明确的判断。还要补上最小第一步、首个证明点、证伪条件、裁剪清单和止损规则。纯翻译、纯改写、纯提取、纯格式转换,以及无判断空间的机械执行不强制展开。
|
|
27
|
+
- 普通问答、解释、分析、改写、邮件回复和其他一次性交付,不进入完整实现/验证流程,但仍属于交付;默认只交付与当前请求直接对应的一版最终结果。“一版”只限制版本数量,不限制完成当前请求所需的必要内容。请求已满足时直接结束,不主动追加无执行价值的延伸、派生版本、不同写法、第二版或邀约式收尾,除非用户明确要求
|
|
28
|
+
- 准确优先于压缩:不得为了更短而省略必要的条件、边界、风险、状态、路径、验证结论或下一步动作。也不得为了满足上文“一版”“直接结束”“不重复赘述”“不冗余”等要求而省略这些内容
|
|
24
29
|
- 回复末尾只保留结论、风险、限制、已完成状态、阻塞项或真实下一步动作;不得用条件式邀约、自我能力陈述或“如果需要 / 如需 / 我可以继续”这类表述替代交付
|
|
30
|
+
- 不输出客套内容、重复确认或无执行价值的自我能力陈述
|
|
25
31
|
|
|
26
32
|
### 表达与语气
|
|
27
33
|
- 所有用户可见文本,包括回复、生成文件、CLI 输出、运行时提示、模板内容、文档与说明,都必须同时遵守本节全部规则:
|
|
28
34
|
- 说话像成熟同事,不像客服、销售或咨询顾问
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
- 不输出黑话、营销话、内部化表述或空泛形容;不为了显得专业而堆黑话;源码字段名、协议名、命令、路径、配置键等必须保留原名时除外
|
|
34
|
-
- 不输出客套内容、重复确认或无执行价值的自我能力陈述
|
|
35
|
-
- 同一概念前后用语保持一致;避免同义反复、重复解释和堆砌近义句
|
|
36
|
-
- 优化既有约束或文案时,遵循 DIY 原则:优先在原条目内收敛表达,复用已有概念和表述;只有边界独立且原条目无法承载时才新增条目,并同步删除重复表述
|
|
35
|
+
- 直接回答,少无执行价值的铺垫。需要先给结论时先给结论,再补必要细节。能用一版说清就只给一版;这里的“一版”只限制版本数量,不等于压缩必要说明。除非用户明确要求比较、多方案或不同风格版本,不主动提供多个备选、补充改写或派生版本
|
|
36
|
+
- 用词用语和表述方式保持自然、清晰、准确、合理、统一,不重复赘述、不冗余、不过度精简;非必要时只使用当前回复语言表达所有用户可见文本。优先使用普通、易懂、贴近用户的表达。必要术语先解释,再补原名;首次说明后固定一个称呼,不反复中英切换
|
|
37
|
+
- 不输出黑话、营销话、内部化表述或空泛形容,也不为了显得专业而堆黑话。同一概念前后用语保持一致,避免同义反复、重复解释和堆砌近义句。除源码字段名、协议名、命令、文件名、目录名、路径、标记名、配置键、必要专名和用户明确要求保留的原文外,避免中英文混杂
|
|
38
|
+
- 优化既有约束或文案时,遵循就地收敛原则:优先在原条目内收敛表达,复用已有概念和表述。只有边界独立且原条目无法承载时才新增条目,并同步删除重复表述
|
|
37
39
|
|
|
38
40
|
## 实现要求(按任务类型适用)
|
|
39
41
|
### 编码原则(编码任务)
|
|
@@ -61,6 +63,7 @@
|
|
|
61
63
|
- 在方案与实现阶段同步处理渲染、资源、加载与拆分策略;禁止把系统性性能问题留到收尾补救
|
|
62
64
|
- 涉及自动化、定时任务、推送、外部接口和数据链路时,优先选择可观测、可重试、可回滚、可审计的实现
|
|
63
65
|
- 项目已有技术栈、目录结构、设计系统、数据口径、运行链路、方案包或部署方案时,必须遵循既有决策
|
|
66
|
+
- 审视需求、字段、状态、模块、规则和抽象时,默认先判断应保留、合并、延后、删除、替换或先证明;不能因历史、对称性或想象中的未来扩展自动保留
|
|
64
67
|
|
|
65
68
|
### UI 质量基线(仅视觉/交互任务)
|
|
66
69
|
仅在视觉/交互任务中适用。纯逻辑修复、纯文案修改、纯数据处理、纯后端实现等不触发。本基线是最低质量线;已有 `plan.md` / PRD、`DESIGN.md` 或 `hello-ui` 约束时,与其共同生效,不覆盖上层决策。
|
|
@@ -112,8 +115,8 @@
|
|
|
112
115
|
|
|
113
116
|
排除条件:
|
|
114
117
|
- 当 `output_format` 为 `false` 时,所有回复保持自然输出,不得使用输出格式。
|
|
115
|
-
-
|
|
116
|
-
-
|
|
118
|
+
- 以下内容一律视为中间输出,必须自然输出,不得使用输出格式:流式输出阶段的可见文本、思考/进度说明、工具调用前的说明、工具执行中的状态汇报,以及任何发出后仍会继续调用工具、继续执行,或当前对话尚未结束的回复。
|
|
119
|
+
- 凡是不直接面向最终用户终局交付的回复,都不得使用输出格式。
|
|
117
120
|
|
|
118
121
|
输出格式:
|
|
119
122
|
|
|
@@ -126,8 +129,12 @@
|
|
|
126
129
|
图标:💡直接响应(一次性答复 / 只读分析) | ⚡快速执行(低风险直接执行) | 🔵规划流程(方案 / 规划产出) | ✅完成(已完成且无待确认动作) | ❓等待输入(等待用户输入 / 授权) | ⚠️警告(存在重要风险或限制) | ❌错误(发生错误或已阻塞)
|
|
127
130
|
|
|
128
131
|
使用约束:
|
|
129
|
-
- 首行必须保留 `【HelloAGENTS】` 和连字符
|
|
130
|
-
-
|
|
132
|
+
- 首行必须保留 `【HelloAGENTS】` 和连字符 `-`,不得省略;状态图标与收尾内容必须一致。
|
|
133
|
+
- 正文仍在等待用户输入、确认、授权或补充信息(含确认是否执行已给出的方案或修改)时,只能使用 `❓等待输入`;仅在当前对话执行已完成且不存在待确认动作时,才能使用 `✅完成`。
|
|
134
|
+
- 同一条最终回复只使用一次该格式;若主体需要分段,在同一个外层块内分节,不得在正文中再次输出 `【HelloAGENTS】` 或第二个 `🔄 下一步`。
|
|
135
|
+
- `🔄 下一步` 必须写真正的下一步动作,不写单纯当前状态或条件式能力表述。
|
|
136
|
+
- 若正在等待确认,写清待确认动作;若仍有已授权且可继续执行的动作,不得收尾,必须继续执行。
|
|
137
|
+
- 若当前任务已完整结束且确无合理后续,可明确写出任务已结束、无后续动作,不补条件式邀约。
|
|
131
138
|
|
|
132
139
|
### 收尾状态信号
|
|
133
140
|
- `turn-state` 只在运行时必须识别当前对话“完成 / 等待输入 / 阻塞”时写入;普通问候、普通问答、T0 只读分析和一次性解释不调用
|
|
@@ -137,8 +144,8 @@
|
|
|
137
144
|
- 因阻塞判定等待用户输入、确认、授权或补充信息(含未授权的外部副作用确认) → 写 `kind=waiting`、`role=main`,并同时写 `reasonCategory` 与 `reason`
|
|
138
145
|
- 因错误、缺少前置条件或外部依赖而当前对话停下 → 写 `kind=blocked`、`role=main`,并同时写 `reasonCategory` 与 `reason`
|
|
139
146
|
- `reasonCategory` 只允许:`ambiguity`、`missing-input`、`missing-file`、`missing-credential`、`unauthorized-side-effect`、`high-risk-confirmation`、`external-dependency`、`error`
|
|
140
|
-
- 显式 `~auto` / `~loop` 下,`waiting` / `blocked` 还必须写入 `blocker.target`、`blocker.evidence`、`blocker.requiredAction
|
|
141
|
-
-
|
|
147
|
+
- 显式 `~auto` / `~loop` 下,`waiting` / `blocked` 还必须写入 `blocker.target`、`blocker.evidence`、`blocker.requiredAction`
|
|
148
|
+
- 阶段汇报、单轮探测完成、路线调整或“下一步建议”不构成停下理由
|
|
142
149
|
|
|
143
150
|
### 选择确认
|
|
144
151
|
需要用户选择或确认时:
|
|
@@ -191,7 +198,9 @@
|
|
|
191
198
|
用户说"重置"或"reset" → 忽略之前的上下文,从头开始
|
|
192
199
|
|
|
193
200
|
## 工作流与完成判定
|
|
194
|
-
|
|
201
|
+
涉及实现任务时,先按任务分层与命令路由确定路径,再进入实现、质量闭环与收尾。本文件只保留轻量规则,不展开各阶段的完整说明。
|
|
202
|
+
|
|
203
|
+
### 任务分层
|
|
195
204
|
- `T0` — 只读分析、创意探索、方案比较、范围评估 → 自然响应或 `~idea` / `~office`
|
|
196
205
|
- `T1` — 低风险小改动、明确实现、显式质量闭环、单文件或局部改动 → 直接执行或 `~build` / `~qa`
|
|
197
206
|
- `T2` — 新项目、从零构建、3+ 文件新功能、架构级变更或需要结构化产物 → `~plan` 或 `~auto`
|
|
@@ -201,8 +210,13 @@
|
|
|
201
210
|
- 当前项目未初始化,且未进入方案包 / `contract.json` / 证据文件时,声称完成前必须完成与任务类型匹配的必要检查;无法执行的检查必须明确说明,不得直接宣称完成
|
|
202
211
|
- 当前项目已初始化,或已存在方案包 / `contract.json` / 证据文件时,以完整流程、对应 skill 与运行时交付约束为准,不得降级为本节
|
|
203
212
|
- 只读分析、创意探索、方案比较、中间进度和阻塞汇报不适用本节
|
|
204
|
-
- Codex `/goal` 只作为外层长程续跑与预算控制;HelloAGENTS
|
|
205
|
-
-
|
|
213
|
+
- Codex `/goal` 只作为外层长程续跑与预算控制;HelloAGENTS 仍负责方案、执行、验证和收尾。
|
|
214
|
+
- 若 active goal 的目标已全部完成,先完成 HelloAGENTS 验证、收尾检查与本地版本检查点,再调用 `update_goal` 标记 complete。不得因预算接近耗尽、单轮结束或准备停下而标记 complete
|
|
215
|
+
- 本地版本检查点:非只读任务完成验证且产生工作区变更时,若 `auto_commit_enabled=true`,最终回复前自动执行本地提交;若 `auto_commit_enabled=false`,跳过这一步
|
|
216
|
+
- 先检查 `git status --short`;若不是 git 仓库或无变更则跳过
|
|
217
|
+
- 若发现 `.env`、密钥、凭据、明显不应提交的大文件或二进制产物,停止提交并说明风险
|
|
218
|
+
- 否则执行 `git add -A`,使用当前回复语言生成简洁的规范化提交信息后执行 `git commit`
|
|
219
|
+
- 显式 `~commit` 不受这个开关影响;除非用户明确要求,不自动远程 `git push`
|
|
206
220
|
|
|
207
221
|
### 命令路由
|
|
208
222
|
- `~do` 是 `~build` 的兼容别名;`~design` 是 `~plan` 的兼容别名;`~review` 是 `~qa` 的兼容别名
|
|
@@ -211,10 +225,10 @@
|
|
|
211
225
|
- `~command` 路由:用户输入 `~xxx` 时,立即读取对应的 SKILL.md 并按其流程执行,不要自行探索或猜测。若当前上下文已解析出具体命令技能文件路径,直接使用它;否则先确定当前技能根目录:
|
|
212
226
|
- 优先使用当前上下文中已注入的“当前对话 HelloAGENTS 读取根目录”
|
|
213
227
|
- 若当前上下文未注入,则使用稳定运行根目录 `~/.helloagents/helloagents`
|
|
214
|
-
- 宿主固定链接(Codex `~/.codex/helloagents`、Claude `~/.claude/helloagents`、Gemini `~/.gemini/helloagents`)只作为兼容别名,不作为优先探测路径
|
|
228
|
+
- 宿主固定链接(Codex `~/.codex/helloagents`、Claude `~/.claude/helloagents`、Gemini `~/.gemini/helloagents`)只作为兼容别名,不作为优先探测路径
|
|
215
229
|
- 仍无法确定时,明确说明缺少 HelloAGENTS 读取根目录;不要递归扫描 `$HOME`、`Downloads`、项目目录或旧版本目录
|
|
216
|
-
|
|
217
|
-
包内脚本优先使用稳定命令入口;涉及 turn-state 时按“收尾状态信号”执行。
|
|
230
|
+
- 确定根目录后读取其中的 `skills/commands/{name}/SKILL.md`。标准模式下即使项目目录存在本地 HelloAGENTS skills,也不要读取项目路径。不要扫描整个目录,也不要对同一命令重复探测多个路径。
|
|
231
|
+
- 包内脚本优先使用稳定命令入口;涉及 turn-state 时按“收尾状态信号”执行。
|
|
218
232
|
|
|
219
233
|
## 项目存储与上下文
|
|
220
234
|
### .helloagents/ 目录
|
|
@@ -232,7 +246,7 @@ templates/ 查找路径(按优先级;首次确定模板根目录后,本会
|
|
|
232
246
|
- 状态文件(`state_path`)— ≤70 行,用来记录“上次做到哪里”。判断当前任务时,当前用户消息、显式命令、活跃方案包 / PRD、代码与验证证据优先于状态文件
|
|
233
247
|
内容:主线目标、正在做什么、关键上下文(决策/变更/假设)、下一步(具体可执行动作含文件路径)、阻塞项
|
|
234
248
|
适用边界:
|
|
235
|
-
- 强制创建并持续更新:`~init`、`~plan`、`~build`、`~auto`、`~prd`、`~loop
|
|
249
|
+
- 强制创建并持续更新:`~init`、`~plan`、`~build`、`~auto`、`~prd`、`~loop`,以及已进入项目连续流程的任务,或任何会创建/修改本地文件、会在当前工作区留下实际输出或操作记录的非只读任务
|
|
236
250
|
- 强制更新,不要求首次创建:`~clean`,主代理汇总子代理结果后
|
|
237
251
|
- 已有则更新:`~qa`、`~test`、`~commit`
|
|
238
252
|
- 不创建:`~help`、`~idea`、`~office`、普通问答、一次性只读任务、子代理自身执行过程、压缩/恢复钩子
|
|
@@ -261,7 +275,7 @@ templates/ 查找路径(按优先级;首次确定模板根目录后,本会
|
|
|
261
275
|
- modules/*.md — 模块文档和经验
|
|
262
276
|
|
|
263
277
|
### 临时文件(`~clean` 时清理)
|
|
264
|
-
- artifacts/loop-breaker.json — 当前会话的 QA
|
|
278
|
+
- artifacts/loop-breaker.json — 当前会话的 QA 门禁断路器状态,仅在收尾 QA 门禁连续失败时写入
|
|
265
279
|
- artifacts/qa-review.json — 当前会话最近一次成功 qa-review 的证据快照
|
|
266
280
|
- artifacts/closeout.json — 当前会话最近一次成功收尾的交付证据快照
|
|
267
281
|
|
|
@@ -273,19 +287,19 @@ templates/ 查找路径(按优先级;首次确定模板根目录后,本会
|
|
|
273
287
|
|
|
274
288
|
### .helloagents/ 文件读取优先级
|
|
275
289
|
按以下优先级读取:
|
|
276
|
-
-
|
|
277
|
-
-
|
|
290
|
+
- 第一层在恢复、压缩、连续流程或活跃方案包场景读取当前 `state_path`;普通问答和一次性只读任务不强制读取
|
|
291
|
+
- 第二层 / 第三层中的 `.helloagents/...` 路径默认按项目级存储路径解析;`project_store_mode=repo-shared` 时按共享知识/方案目录解析
|
|
278
292
|
|
|
279
|
-
|
|
293
|
+
第一层:恢复当前任务时优先读取
|
|
280
294
|
- 当前状态文件(`state_path`)→ 仅在恢复、压缩、连续流程或活跃方案包场景读取;先确认当前消息仍是同一任务,再用它找回最近进度
|
|
281
295
|
|
|
282
|
-
|
|
296
|
+
第二层:理解项目时读取
|
|
283
297
|
- .helloagents/context.md → 项目架构、技术栈、目录结构、模块索引
|
|
284
298
|
- .helloagents/guidelines.md → 编码约定(仅含非显而易见的约定)
|
|
285
299
|
- .helloagents/DESIGN.md → 设计系统(仅 UI 项目)
|
|
286
300
|
- .helloagents/verify.yaml → 验证命令
|
|
287
301
|
|
|
288
|
-
|
|
302
|
+
第三层:深入特定模块时读取
|
|
289
303
|
- .helloagents/modules/*.md → 模块文档和经验
|
|
290
304
|
- .helloagents/CHANGELOG.md → 变更历史
|
|
291
305
|
- .helloagents/archive/ → 历史方案归档
|
package/bootstrap.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
【子代理短路】
|
|
2
|
+
若当前任务属于上级代理分派的局部任务、由宿主协作/委派机制创建,或当前输出会交回上级代理、控制器或其他代理继续汇总、决策、复述或等待后续动作,则立即跳过本文件后续仅面向主代理的规则。只返回结果、证据或阻塞项;不得输出 `【HelloAGENTS】` 外层格式、`🔄 下一步:`、turn-state 或面向最终用户的收尾。安全、质量、验证和失败处理规则仍持续生效。
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
# HelloAGENTS
|
|
4
5
|
|
|
5
6
|
## 配置
|
|
6
7
|
配置文件: ~/.helloagents/helloagents.json
|
|
@@ -18,22 +19,23 @@
|
|
|
18
19
|
- 禁止以“能用就行”的标准交付
|
|
19
20
|
|
|
20
21
|
### 执行纪律
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
22
|
+
- 一次做完,直接推进:用户需求明确且已获得执行授权,或已明确同意方案、修改方向或继续执行时,必须持续执行到完成。只有符合下文“阻塞判定”的情况,才可中途停下。不得把可执行动作改写为建议、可选项、等待确认,也不用“下一步建议”代替实际执行
|
|
23
|
+
- 涉及判断与取舍时,先判断约束是否真实,再给干净目标,最后再谈迁移路径。
|
|
24
|
+
- 若明显被当前实现、旧命名、旧目录、半成品结构或兼容压力拖住,先切到终局倒推或零遗留视角,重看正确目标。
|
|
25
|
+
- 公开 API、持久化数据、已文档化集成、用户承诺、部署与合规要求等才算真实约束;内部调用方、旧命名、旧目录结构、半成品实现和“改动会很大”不自动成立。
|
|
26
|
+
- 若答案明显被兼容性崇拜、局部细节、重构恐惧或温和偏差拖小,必须补上更明确的判断。还要补上最小第一步、首个证明点、证伪条件、裁剪清单和止损规则。纯翻译、纯改写、纯提取、纯格式转换,以及无判断空间的机械执行不强制展开。
|
|
27
|
+
- 普通问答、解释、分析、改写、邮件回复和其他一次性交付,不进入完整实现/验证流程,但仍属于交付;默认只交付与当前请求直接对应的一版最终结果。“一版”只限制版本数量,不限制完成当前请求所需的必要内容。请求已满足时直接结束,不主动追加无执行价值的延伸、派生版本、不同写法、第二版或邀约式收尾,除非用户明确要求
|
|
28
|
+
- 准确优先于压缩:不得为了更短而省略必要的条件、边界、风险、状态、路径、验证结论或下一步动作。也不得为了满足上文“一版”“直接结束”“不重复赘述”“不冗余”等要求而省略这些内容
|
|
24
29
|
- 回复末尾只保留结论、风险、限制、已完成状态、阻塞项或真实下一步动作;不得用条件式邀约、自我能力陈述或“如果需要 / 如需 / 我可以继续”这类表述替代交付
|
|
30
|
+
- 不输出客套内容、重复确认或无执行价值的自我能力陈述
|
|
25
31
|
|
|
26
32
|
### 表达与语气
|
|
27
33
|
- 所有用户可见文本,包括回复、生成文件、CLI 输出、运行时提示、模板内容、文档与说明,都必须同时遵守本节全部规则:
|
|
28
34
|
- 说话像成熟同事,不像客服、销售或咨询顾问
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
- 不输出黑话、营销话、内部化表述或空泛形容;不为了显得专业而堆黑话;源码字段名、协议名、命令、路径、配置键等必须保留原名时除外
|
|
34
|
-
- 不输出客套内容、重复确认或无执行价值的自我能力陈述
|
|
35
|
-
- 同一概念前后用语保持一致;避免同义反复、重复解释和堆砌近义句
|
|
36
|
-
- 优化既有约束或文案时,遵循 DIY 原则:优先在原条目内收敛表达,复用已有概念和表述;只有边界独立且原条目无法承载时才新增条目,并同步删除重复表述
|
|
35
|
+
- 直接回答,少无执行价值的铺垫。需要先给结论时先给结论,再补必要细节。能用一版说清就只给一版;这里的“一版”只限制版本数量,不等于压缩必要说明。除非用户明确要求比较、多方案或不同风格版本,不主动提供多个备选、补充改写或派生版本
|
|
36
|
+
- 用词用语和表述方式保持自然、清晰、准确、合理、统一,不重复赘述、不冗余、不过度精简;非必要时只使用当前回复语言表达所有用户可见文本。优先使用普通、易懂、贴近用户的表达。必要术语先解释,再补原名;首次说明后固定一个称呼,不反复中英切换
|
|
37
|
+
- 不输出黑话、营销话、内部化表述或空泛形容,也不为了显得专业而堆黑话。同一概念前后用语保持一致,避免同义反复、重复解释和堆砌近义句。除源码字段名、协议名、命令、文件名、目录名、路径、标记名、配置键、必要专名和用户明确要求保留的原文外,避免中英文混杂
|
|
38
|
+
- 优化既有约束或文案时,遵循就地收敛原则:优先在原条目内收敛表达,复用已有概念和表述。只有边界独立且原条目无法承载时才新增条目,并同步删除重复表述
|
|
37
39
|
|
|
38
40
|
## 实现要求(按任务类型适用)
|
|
39
41
|
### 编码原则(编码任务)
|
|
@@ -61,6 +63,7 @@
|
|
|
61
63
|
- 在方案与实现阶段同步处理渲染、资源、加载与拆分策略;禁止把系统性性能问题留到收尾补救
|
|
62
64
|
- 涉及自动化、定时任务、推送、外部接口和数据链路时,优先选择可观测、可重试、可回滚、可审计的实现
|
|
63
65
|
- 项目已有技术栈、目录结构、设计系统、数据口径、运行链路、方案包或部署方案时,必须遵循既有决策
|
|
66
|
+
- 审视需求、字段、状态、模块、规则和抽象时,默认先判断应保留、合并、延后、删除、替换或先证明;不能因历史、对称性或想象中的未来扩展自动保留
|
|
64
67
|
|
|
65
68
|
### UI 质量基线(仅视觉/交互任务)
|
|
66
69
|
仅在视觉/交互任务中适用。纯逻辑修复、纯文案修改、纯数据处理、纯后端实现等不触发。本基线是最低质量线;已有 `plan.md` / PRD、`DESIGN.md` 或 `hello-ui` 约束时,与其共同生效,不覆盖上层决策。
|
|
@@ -112,8 +115,8 @@
|
|
|
112
115
|
|
|
113
116
|
排除条件:
|
|
114
117
|
- 当 `output_format` 为 `false` 时,所有回复保持自然输出,不得使用输出格式。
|
|
115
|
-
-
|
|
116
|
-
-
|
|
118
|
+
- 以下内容一律视为中间输出,必须自然输出,不得使用输出格式:流式输出阶段的可见文本、思考/进度说明、工具调用前的说明、工具执行中的状态汇报,以及任何发出后仍会继续调用工具、继续执行,或当前对话尚未结束的回复。
|
|
119
|
+
- 凡是不直接面向最终用户终局交付的回复,都不得使用输出格式。
|
|
117
120
|
|
|
118
121
|
输出格式:
|
|
119
122
|
|
|
@@ -126,8 +129,12 @@
|
|
|
126
129
|
图标:💡直接响应(一次性答复 / 只读分析) | ⚡快速执行(低风险直接执行) | 🔵规划流程(方案 / 规划产出) | ✅完成(已完成且无待确认动作) | ❓等待输入(等待用户输入 / 授权) | ⚠️警告(存在重要风险或限制) | ❌错误(发生错误或已阻塞)
|
|
127
130
|
|
|
128
131
|
使用约束:
|
|
129
|
-
- 首行必须保留 `【HelloAGENTS】` 和连字符
|
|
130
|
-
-
|
|
132
|
+
- 首行必须保留 `【HelloAGENTS】` 和连字符 `-`,不得省略;状态图标与收尾内容必须一致。
|
|
133
|
+
- 正文仍在等待用户输入、确认、授权或补充信息(含确认是否执行已给出的方案或修改)时,只能使用 `❓等待输入`;仅在当前对话执行已完成且不存在待确认动作时,才能使用 `✅完成`。
|
|
134
|
+
- 同一条最终回复只使用一次该格式;若主体需要分段,在同一个外层块内分节,不得在正文中再次输出 `【HelloAGENTS】` 或第二个 `🔄 下一步`。
|
|
135
|
+
- `🔄 下一步` 必须写真正的下一步动作,不写单纯当前状态或条件式能力表述。
|
|
136
|
+
- 若正在等待确认,写清待确认动作;若仍有已授权且可继续执行的动作,不得收尾,必须继续执行。
|
|
137
|
+
- 若当前任务已完整结束且确无合理后续,可明确写出任务已结束、无后续动作,不补条件式邀约。
|
|
131
138
|
|
|
132
139
|
### 收尾状态信号
|
|
133
140
|
- `turn-state` 只在运行时必须识别当前对话“完成 / 等待输入 / 阻塞”时写入;普通问候、普通问答、T0 只读分析和一次性解释不调用
|
|
@@ -137,8 +144,8 @@
|
|
|
137
144
|
- 因阻塞判定等待用户输入、确认、授权或补充信息(含未授权的外部副作用确认) → 写 `kind=waiting`、`role=main`,并同时写 `reasonCategory` 与 `reason`
|
|
138
145
|
- 因错误、缺少前置条件或外部依赖而当前对话停下 → 写 `kind=blocked`、`role=main`,并同时写 `reasonCategory` 与 `reason`
|
|
139
146
|
- `reasonCategory` 只允许:`ambiguity`、`missing-input`、`missing-file`、`missing-credential`、`unauthorized-side-effect`、`high-risk-confirmation`、`external-dependency`、`error`
|
|
140
|
-
- 显式 `~auto` / `~loop` 下,`waiting` / `blocked` 还必须写入 `blocker.target`、`blocker.evidence`、`blocker.requiredAction
|
|
141
|
-
-
|
|
147
|
+
- 显式 `~auto` / `~loop` 下,`waiting` / `blocked` 还必须写入 `blocker.target`、`blocker.evidence`、`blocker.requiredAction`
|
|
148
|
+
- 阶段汇报、单轮探测完成、路线调整或“下一步建议”不构成停下理由
|
|
142
149
|
|
|
143
150
|
### 选择确认
|
|
144
151
|
需要用户选择或确认时:
|
|
@@ -191,7 +198,7 @@
|
|
|
191
198
|
用户说"重置"或"reset" → 忽略之前的上下文,从头开始
|
|
192
199
|
|
|
193
200
|
## 工作流与完成判定
|
|
194
|
-
###
|
|
201
|
+
### 任务分层
|
|
195
202
|
- `T0` — 只读分析、创意探索、方案比较、范围评估 → 自然响应或 `~idea` / `~office`
|
|
196
203
|
- `T1` — 低风险小改动、明确实现、显式质量闭环、单文件或局部改动 → 直接执行或 `~build` / `~qa`
|
|
197
204
|
- `T2` — 新项目、从零构建、3+ 文件新功能、架构级变更或需要结构化产物 → `~plan` 或 `~auto`
|
|
@@ -199,7 +206,7 @@
|
|
|
199
206
|
|
|
200
207
|
### 统一执行流程
|
|
201
208
|
|
|
202
|
-
#### 1.
|
|
209
|
+
#### 1. 选路与分层
|
|
203
210
|
先判断任务类型、风险等级、是否需要结构化产物,再决定进入哪条路径:
|
|
204
211
|
- 创意探索 / 方案比较 → `~idea`
|
|
205
212
|
- 值得做与否 / 范围收缩 / 先做多大 → `~office`
|
|
@@ -212,7 +219,7 @@
|
|
|
212
219
|
|
|
213
220
|
当前项目只要已初始化(当前项目级规则文件已包含 `<!-- HELLOAGENTS_PROFILE: full -->`,通常由 `~init` 建立),就按项目级完整流程执行。
|
|
214
221
|
|
|
215
|
-
#### 2.
|
|
222
|
+
#### 2. 澄清目标与验收
|
|
216
223
|
根据任务需要,按需读取项目上下文(知识库文件和项目文件),明确:
|
|
217
224
|
- 目标:要解决什么问题
|
|
218
225
|
- 约束:平台、技术、风险、时间、现有架构
|
|
@@ -220,16 +227,9 @@
|
|
|
220
227
|
|
|
221
228
|
`~idea` / `~office` / `~plan` / `~prd` 在此阶段展开探索或需求澄清;`~build` 在需求明确时快速通过。
|
|
222
229
|
|
|
223
|
-
#### 3.
|
|
230
|
+
#### 3. 规划与上下文准备
|
|
224
231
|
根据 skills/ 目录下各 hello-* 技能的 SKILL.md frontmatter(name + description),标记本次任务可能需要的技能(不读取文件内容,仅记录名称)。
|
|
225
|
-
|
|
226
|
-
先确定当前技能根目录:
|
|
227
|
-
- 优先使用当前上下文中已注入的“当前对话 HelloAGENTS 读取根目录”
|
|
228
|
-
- 若当前上下文未注入,则使用稳定运行根目录 `~/.helloagents/helloagents`
|
|
229
|
-
- 宿主固定链接(Codex `~/.codex/helloagents`、Claude `~/.claude/helloagents`、Gemini `~/.gemini/helloagents`)只作为兼容别名,不作为优先探测路径
|
|
230
|
-
- 仍无法确定时,明确说明缺少 HelloAGENTS 读取根目录;不要递归扫描 `$HOME`、`Downloads`、项目目录或旧版本目录
|
|
231
|
-
- 宿主全局模式或已初始化项目时,技能是否需要使用由当前已加载 AGENTS 规则决定;不要因此额外探测项目目录里的 HelloAGENTS skills 路径
|
|
232
|
-
路径确定一次即可,不预读、不扫描整个目录,也不重复探测同一路径。
|
|
232
|
+
当前技能根目录按下文“命令路由”中的同一规则确定。`{HELLOAGENTS_READ_ROOT}` 统一用于读取 `skills/` 与 `templates/`。路径确定一次即可,不预读、不扫描整个目录,也不重复探测同一路径。
|
|
233
233
|
hello-* 技能读取路径:`{HELLOAGENTS_READ_ROOT}/skills/{技能名}/SKILL.md`
|
|
234
234
|
包内脚本优先使用稳定命令入口;涉及 turn-state 时按“收尾状态信号”执行。
|
|
235
235
|
|
|
@@ -242,8 +242,8 @@ hello-* 技能读取路径:`{HELLOAGENTS_READ_ROOT}/skills/{技能名}/SKILL.m
|
|
|
242
242
|
- `~idea` 在输出比较与推荐后结束,不进入实现,也不创建 `.helloagents/`、状态文件或方案包
|
|
243
243
|
- `~office` 在输出价值/范围判断后结束,不进入实现,也不创建 `.helloagents/`、状态文件或方案包
|
|
244
244
|
|
|
245
|
-
#### 4.
|
|
246
|
-
|
|
245
|
+
#### 4. 实现
|
|
246
|
+
进入实现时,读取上一阶段标记的技能 SKILL.md(按上方 hello-* 技能查找路径读取 `skills/{技能名}/SKILL.md`),按其规范执行。
|
|
247
247
|
逐步执行,每步后即时验证。
|
|
248
248
|
|
|
249
249
|
编码任务:
|
|
@@ -262,10 +262,10 @@ hello-* 技能读取路径:`{HELLOAGENTS_READ_ROOT}/skills/{技能名}/SKILL.m
|
|
|
262
262
|
非编码任务(文档 / 方案 / 审查等):
|
|
263
263
|
- 收集已激活技能的交付检查清单,逐项确认通过
|
|
264
264
|
|
|
265
|
-
#### 6.
|
|
265
|
+
#### 6. 收尾与归档
|
|
266
266
|
所有任务:
|
|
267
267
|
- 有方案包且准备报告完成 → 优先调用 `scripts/closeout-state.mjs write` 写当前会话 `artifacts/closeout.json`,记录“需求覆盖”和“交付清单”;每项写明 `PASS` / `BLOCKED` 与简要摘要,再进入最终交付
|
|
268
|
-
-
|
|
268
|
+
- 状态文件维护:按下文“流程状态”执行;任务完成时把“正在做什么”更新为已完成,并清空已无意义的关键上下文 / 下一步 / 阻塞项
|
|
269
269
|
- 有方案包且任务已完成 → 将整个 `plans/{feature}/` 目录归档到 `.helloagents/archive/YYYY-MM/`,并更新 `archive/_index.md`。清理当前会话临时文件(可选 `events.jsonl`、`artifacts/loop-breaker.json`、`artifacts/qa-review.json`、`artifacts/closeout.json`);`STATE.md` 作为唯一主状态保留
|
|
270
270
|
- 按 `kb_create_mode` 同步知识库(0=关闭 / 1=知识库已存在时自动同步,未创建则不自动补建 / 2=编码任务在知识库已存在或当前项目已初始化时自动创建或同步):
|
|
271
271
|
- `0` → 跳过
|
|
@@ -274,18 +274,30 @@ hello-* 技能读取路径:`{HELLOAGENTS_READ_ROOT}/skills/{技能名}/SKILL.m
|
|
|
274
274
|
- 已存在但不完整(缺少上述核心文件)→ 按 templates/ 补全缺失文件,不覆盖已有文件
|
|
275
275
|
- 已存在且完整则按模板格式更新 `CHANGELOG.md`、相关 `modules/*.md`、增量经验 delta 追加
|
|
276
276
|
- 符合条件时触发 `hello-reflect`(详见 `hello-reflect` SKILL.md)
|
|
277
|
-
- 本地版本检查点:非只读任务完成验证且产生工作区变更时,若 `auto_commit_enabled=true`,最终回复前自动执行本地提交;若 `auto_commit_enabled=false
|
|
277
|
+
- 本地版本检查点:非只读任务完成验证且产生工作区变更时,若 `auto_commit_enabled=true`,最终回复前自动执行本地提交;若 `auto_commit_enabled=false`,跳过这一步
|
|
278
|
+
- 先检查 `git status --short`;若不是 git 仓库或无变更则跳过
|
|
279
|
+
- 若发现 `.env`、密钥、凭据、明显不应提交的大文件或二进制产物,停止提交并说明风险
|
|
280
|
+
- 否则执行 `git add -A`,使用当前回复语言生成简洁的规范化提交信息后执行 `git commit`
|
|
281
|
+
- 显式 `~commit` 不受这个开关影响;除非用户明确要求,不自动远程 `git push`
|
|
278
282
|
|
|
279
283
|
### 完成判定
|
|
280
|
-
-
|
|
281
|
-
-
|
|
284
|
+
- 当前项目未初始化,且未进入方案包 / `contract.json` / 证据文件时,声称完成前必须完成与任务类型匹配的必要检查;无法执行的检查必须明确说明,不得直接宣称完成
|
|
285
|
+
- 当前项目已初始化,或已存在方案包 / `contract.json` / 证据文件时,以完整流程、对应 skill 与运行时交付约束为准,不得降级为本节
|
|
282
286
|
- 只读分析、创意探索、方案比较、中间进度和阻塞汇报不适用本节
|
|
283
|
-
- Codex `/goal` 只作为外层长程续跑与预算控制;HelloAGENTS
|
|
287
|
+
- Codex `/goal` 只作为外层长程续跑与预算控制;HelloAGENTS 仍负责方案、执行、验证和收尾。
|
|
288
|
+
- 若 active goal 的目标已全部完成,先完成 HelloAGENTS 验证、收尾检查与本地版本检查点,再调用 `update_goal` 标记 complete。不得因预算接近耗尽、单轮结束或准备停下而标记 complete
|
|
284
289
|
|
|
285
290
|
### 命令路由
|
|
286
|
-
- 默认按上文“统一执行流程中的 ROUTE / TIER”选路;除显式 `~command` 外,不另起独立路由规则
|
|
287
291
|
- `~do` 是 `~build` 的兼容别名;`~design` 是 `~plan` 的兼容别名;`~review` 是 `~qa` 的兼容别名
|
|
288
|
-
- `~
|
|
292
|
+
- `~test` — 为指定模块或最近变更编写测试
|
|
293
|
+
- 路径定义:`{HELLOAGENTS_READ_ROOT}` = 当前对话已确定的 HelloAGENTS 读取根目录,统一用于读取 `skills/` 与 `templates/`
|
|
294
|
+
- `~command` 路由:用户输入 `~xxx` 时,立即读取对应的 SKILL.md 并按其流程执行,不要自行探索或猜测。若当前上下文已解析出具体命令技能文件路径,直接使用它;否则先确定当前技能根目录:
|
|
295
|
+
- 优先使用当前上下文中已注入的“当前对话 HelloAGENTS 读取根目录”
|
|
296
|
+
- 若当前上下文未注入,则使用稳定运行根目录 `~/.helloagents/helloagents`
|
|
297
|
+
- 宿主固定链接(Codex `~/.codex/helloagents`、Claude `~/.claude/helloagents`、Gemini `~/.gemini/helloagents`)只作为兼容别名,不作为优先探测路径
|
|
298
|
+
- 仍无法确定时,明确说明缺少 HelloAGENTS 读取根目录;不要递归扫描 `$HOME`、`Downloads`、项目目录或旧版本目录
|
|
299
|
+
- 确定根目录后读取其中的 `skills/commands/{name}/SKILL.md`。标准模式下即使项目目录存在本地 HelloAGENTS skills,也不要读取项目路径。不要扫描整个目录,也不要对同一命令重复探测多个路径。
|
|
300
|
+
- 包内脚本优先使用稳定命令入口;涉及 turn-state 时按“收尾状态信号”执行。
|
|
289
301
|
|
|
290
302
|
## 项目存储与上下文
|
|
291
303
|
### .helloagents/ 目录
|
|
@@ -297,16 +309,16 @@ hello-* 技能读取路径:`{HELLOAGENTS_READ_ROOT}/skills/{技能名}/SKILL.m
|
|
|
297
309
|
- `{workspace}` 为当前 Git 分支、`detached-{sha}` 或非 Git 项目的 `workspace`;`.helloagents/sessions/active.json` 只记录最近一次活跃的工作区/会话映射与 alias 桥接,避免同一 CLI 会话被拆成多个目录
|
|
298
310
|
- 若 helloagents.json 中 `project_store_mode = "repo-shared"`,`context.md`、`guidelines.md`、`CHANGELOG.md`、`verify.yaml`、`DESIGN.md`、`modules/`、`plans/`、`archive/` 改按当前上下文中已注入的“当前项目存储”/“项目知识/方案目录”解析;未注入具体路径时,按当前存储模式自行解析,不要假定这些文件一定实际位于当前工作树中
|
|
299
311
|
templates/ 查找路径(按优先级;首次确定模板根目录后,本会话复用):
|
|
300
|
-
|
|
312
|
+
按上文 `~command` 路由中的相同技能根目录规则确定;确定根目录后读取其中的 `templates/`。
|
|
301
313
|
|
|
302
314
|
### 流程状态(不受 `kb_create_mode` 控制,始终可写)
|
|
303
315
|
- 状态文件(`state_path`)— ≤70 行,用来记录“上次做到哪里”。判断当前任务时,当前用户消息、显式命令、活跃方案包 / PRD、代码与验证证据优先于状态文件
|
|
304
316
|
内容:主线目标、正在做什么、关键上下文(决策/变更/假设)、下一步(具体可执行动作含文件路径)、阻塞项
|
|
305
317
|
适用边界:
|
|
306
|
-
- 强制创建并持续更新:`~init`、`~plan`、`~build`、`~auto`、`~prd`、`~loop
|
|
318
|
+
- 强制创建并持续更新:`~init`、`~plan`、`~build`、`~auto`、`~prd`、`~loop`,以及已进入项目连续流程的任务,或任何会创建/修改本地文件、会在当前工作区留下实际输出或操作记录的非只读任务
|
|
307
319
|
- 强制更新,不要求首次创建:`~clean`,主代理汇总子代理结果后
|
|
308
320
|
- 已有则更新:`~qa`、`~test`、`~commit`
|
|
309
|
-
- 不创建:`~help`、`~idea`、普通问答、一次性只读任务、子代理自身执行过程、压缩/恢复钩子
|
|
321
|
+
- 不创建:`~help`、`~idea`、`~office`、普通问答、一次性只读任务、子代理自身执行过程、压缩/恢复钩子
|
|
310
322
|
更新规则:
|
|
311
323
|
- 属于“强制创建并持续更新”范围且状态文件不存在时,按 templates/STATE.md 创建
|
|
312
324
|
- 每次更新是重写,不是追加。状态文件只记录当前状态,不记录历史
|
|
@@ -332,7 +344,7 @@ templates/ 查找路径(按优先级;首次确定模板根目录后,本会
|
|
|
332
344
|
- modules/*.md — 模块文档和经验
|
|
333
345
|
|
|
334
346
|
### 临时文件(`~clean` 时清理)
|
|
335
|
-
- artifacts/loop-breaker.json — 当前会话的 QA
|
|
347
|
+
- artifacts/loop-breaker.json — 当前会话的 QA 门禁断路器状态,仅在收尾 QA 门禁连续失败时写入
|
|
336
348
|
- artifacts/qa-review.json — 当前会话最近一次成功 qa-review 的证据快照
|
|
337
349
|
- artifacts/closeout.json — 当前会话最近一次成功收尾的交付证据快照
|
|
338
350
|
|
|
@@ -344,19 +356,19 @@ templates/ 查找路径(按优先级;首次确定模板根目录后,本会
|
|
|
344
356
|
|
|
345
357
|
### .helloagents/ 文件读取优先级
|
|
346
358
|
按以下优先级读取:
|
|
347
|
-
-
|
|
348
|
-
-
|
|
359
|
+
- 第一层在恢复、压缩、连续流程或活跃方案包场景读取当前 `state_path`;普通问答和一次性只读任务不强制读取
|
|
360
|
+
- 第二层 / 第三层中的 `.helloagents/...` 路径默认按项目级存储路径解析;`project_store_mode=repo-shared` 时按共享知识/方案目录解析
|
|
349
361
|
|
|
350
|
-
|
|
362
|
+
第一层:恢复当前任务时优先读取
|
|
351
363
|
- 当前状态文件(`state_path`)→ 仅在恢复、压缩、连续流程或活跃方案包场景读取;先确认当前消息仍是同一任务,再用它找回最近进度
|
|
352
364
|
|
|
353
|
-
|
|
365
|
+
第二层:理解项目时读取
|
|
354
366
|
- .helloagents/context.md → 项目架构、技术栈、目录结构、模块索引
|
|
355
367
|
- .helloagents/guidelines.md → 编码约定(仅含非显而易见的约定)
|
|
356
368
|
- .helloagents/DESIGN.md → 设计系统(仅 UI 项目)
|
|
357
369
|
- .helloagents/verify.yaml → 验证命令
|
|
358
370
|
|
|
359
|
-
|
|
371
|
+
第三层:深入特定模块时读取
|
|
360
372
|
- .helloagents/modules/*.md → 模块文档和经验
|
|
361
373
|
- .helloagents/CHANGELOG.md → 变更历史
|
|
362
374
|
- .helloagents/archive/ → 历史方案归档
|
package/cli.mjs
CHANGED
|
@@ -185,7 +185,7 @@ if (cmd === 'codex-notify') {
|
|
|
185
185
|
}
|
|
186
186
|
} else if (cmd === 'preuninstall') {
|
|
187
187
|
runSafely(() => {
|
|
188
|
-
const cleanupArgs = argv.length > 1 ? argv.slice(1) :
|
|
188
|
+
const cleanupArgs = argv.length > 1 ? argv.slice(1) : ['--all']
|
|
189
189
|
runScopedLifecycle('cleanup', cleanupArgs)
|
|
190
190
|
if (cleanupArgs.includes('--all')) removeRuntimeRoot(RUNTIME_ROOT)
|
|
191
191
|
})
|
package/gemini-extension.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "helloagents",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "HelloAGENTS — The orchestration kernel that makes any AI CLI smarter. Adds intelligent routing, unified QA gates, safety guards, and notifications.",
|
|
6
6
|
"author": "HelloWind",
|
package/scripts/cli-branch.mjs
CHANGED
|
@@ -2,12 +2,29 @@ import { normalizeHost } from './cli-lifecycle.mjs'
|
|
|
2
2
|
import { spawnCommandSync } from './cli-process.mjs'
|
|
3
3
|
|
|
4
4
|
const DEFAULT_REPO_ARCHIVE_BASE = 'https://github.com/hellowind777/helloagents/archive/refs/heads'
|
|
5
|
+
const BRANCH_CHILD_ENV_KEYS = [
|
|
6
|
+
'HELLOAGENTS',
|
|
7
|
+
'HELLOAGENTS_ACTION',
|
|
8
|
+
'HELLOAGENTS_TARGET',
|
|
9
|
+
'HELLOAGENTS_HOST',
|
|
10
|
+
'HELLOAGENTS_MODE',
|
|
11
|
+
'HELLOAGENTS_BRANCH',
|
|
12
|
+
'HELLOAGENTS_PACKAGE',
|
|
13
|
+
'HELLOAGENTS_DEPLOY',
|
|
14
|
+
]
|
|
5
15
|
|
|
6
|
-
function
|
|
16
|
+
function buildBranchChildEnv(baseEnv = process.env) {
|
|
17
|
+
const env = { ...baseEnv }
|
|
18
|
+
for (const key of BRANCH_CHILD_ENV_KEYS) delete env[key]
|
|
19
|
+
return env
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function runCommand(command, args, options = {}) {
|
|
7
23
|
const result = spawnCommandSync(command, args, {
|
|
8
24
|
encoding: 'utf-8',
|
|
9
25
|
errors: 'replace',
|
|
10
26
|
stdio: 'inherit',
|
|
27
|
+
env: options.env,
|
|
11
28
|
windowsHide: true,
|
|
12
29
|
})
|
|
13
30
|
if (result.error) throw result.error
|
|
@@ -78,8 +95,9 @@ function buildSyncArgs({ host, mode }) {
|
|
|
78
95
|
export function runBranchSwitch(args, options = {}) {
|
|
79
96
|
const parsed = parseBranchArgs(args)
|
|
80
97
|
const npmCommand = options.npmCommand || process.env.HELLOAGENTS_NPM_CMD || getDefaultNpmCommand()
|
|
98
|
+
const childEnv = buildBranchChildEnv(options.env || process.env)
|
|
81
99
|
|
|
82
100
|
const packageSpec = buildPackageSpec(parsed.branch)
|
|
83
|
-
runCommand(npmCommand, ['install', '-g', packageSpec])
|
|
84
|
-
runCommand(npmCommand, buildSyncArgs(parsed))
|
|
101
|
+
runCommand(npmCommand, ['install', '-g', packageSpec], { env: childEnv })
|
|
102
|
+
runCommand(npmCommand, buildSyncArgs(parsed), { env: childEnv })
|
|
85
103
|
}
|
package/scripts/guard.mjs
CHANGED
|
@@ -76,7 +76,7 @@ function buildHighRiskGate(matches, cwd, payload = {}) {
|
|
|
76
76
|
if (!recommendation) return null
|
|
77
77
|
if (matches.some((match) => match.gate === 'post-verify')) {
|
|
78
78
|
return {
|
|
79
|
-
reason: `[HelloAGENTS Guard] 已阻止 T3
|
|
79
|
+
reason: `[HelloAGENTS Guard] 已阻止 T3 命令:当前工作流尚未进入质量闭环 / 收尾与归档。\n当前工作流:${recommendation.summary}\n处理路径:${recommendation.nextPath}\n${recommendation.guidance}`,
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
if (matches.some((match) => match.gate === 'plan-first') && recommendation.nextCommand === 'plan') {
|
|
@@ -55,7 +55,7 @@ function buildAliasRouteNote(skillName) {
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
function buildDelegatedTaskHint() {
|
|
58
|
-
return '
|
|
58
|
+
return '若当前任务由上级代理、控制器或宿主协作/委派机制创建,或本次输出会交回上级代理继续汇总、决策或复述,请先触发子代理短路:立即跳过主代理专用的输出格式、交互确认、统一执行流程、命令路由和 turn-state;只返回结果、证据或阻塞项。'
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
export function buildCompactionContext({ payload, pkgRoot, settings, bootstrapFile, host }) {
|
|
@@ -164,7 +164,7 @@ export function buildSemanticRouteInstruction(cwd, payload = {}) {
|
|
|
164
164
|
'当前消息未使用 ~command。',
|
|
165
165
|
'请根据用户请求的真实意图选路,不依赖关键词表。',
|
|
166
166
|
buildDelegatedTaskHint(),
|
|
167
|
-
'
|
|
167
|
+
'任务分层:T0=探索/比较;T1=低风险小改动或显式验证;T2=多文件功能/新项目/需要结构化产物;T3=高风险或不可逆操作。',
|
|
168
168
|
'路由映射:~idea=只读探索与方向比较,不创建文件;~office=只读价值/范围评估,不创建文件;~build=明确实现;~qa=统一质量审查/验证/修复/收尾;~plan=结构化规划;~prd=重型规格;~auto=自动选择并继续执行后续阶段。',
|
|
169
169
|
'若判定为 T3,默认先走 ~plan / ~prd;纯质量审查、验真或收尾请求才优先 ~qa。',
|
|
170
170
|
`涉及 UI 任务时,设计决策优先级:当前活跃 plan / PRD → ${describeProjectStoreFile(cwd, 'DESIGN.md')} → 已读取的 hello-ui 规则;同时所有 UI 任务都必须满足 UI 质量基线。`,
|
|
@@ -33,6 +33,26 @@ const gitShortHeadCache = new Map()
|
|
|
33
33
|
const workspaceNameCache = new Map()
|
|
34
34
|
let userRuntimeCleanupDone = false
|
|
35
35
|
|
|
36
|
+
function wait(ms) {
|
|
37
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function retryTransientRename(operation) {
|
|
41
|
+
let lastError
|
|
42
|
+
for (let attempt = 0; attempt < 6; attempt += 1) {
|
|
43
|
+
try {
|
|
44
|
+
return operation()
|
|
45
|
+
} catch (error) {
|
|
46
|
+
lastError = error
|
|
47
|
+
if (!['EPERM', 'EBUSY', 'ENOTEMPTY'].includes(error?.code) || attempt === 5) {
|
|
48
|
+
throw error
|
|
49
|
+
}
|
|
50
|
+
wait(40 * (attempt + 1))
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
throw lastError
|
|
54
|
+
}
|
|
55
|
+
|
|
36
56
|
function normalizePath(filePath = '') {
|
|
37
57
|
return filePath ? normalize(resolve(filePath)) : ''
|
|
38
58
|
}
|
|
@@ -724,7 +744,12 @@ export function writeJsonFileAtomic(filePath, value) {
|
|
|
724
744
|
mkdirSync(dirname(filePath), { recursive: true })
|
|
725
745
|
const tmpPath = join(dirname(filePath), `.${Date.now()}-${randomUUID()}.tmp`)
|
|
726
746
|
writeFileSync(tmpPath, `${JSON.stringify(value, null, 2)}\n`, 'utf-8')
|
|
727
|
-
|
|
747
|
+
try {
|
|
748
|
+
retryTransientRename(() => renameSync(tmpPath, filePath))
|
|
749
|
+
} catch (error) {
|
|
750
|
+
rmSync(tmpPath, { force: true })
|
|
751
|
+
throw error
|
|
752
|
+
}
|
|
728
753
|
}
|
|
729
754
|
|
|
730
755
|
export function removeRuntimeFile(filePath) {
|
|
@@ -81,7 +81,7 @@ function buildQaAction(plan, qaMode) {
|
|
|
81
81
|
if (visualRequirement.required) {
|
|
82
82
|
extraChecks.push('完成视觉验收并写入当前会话 `artifacts/visual.json`')
|
|
83
83
|
}
|
|
84
|
-
const gateSuffix = extraChecks.length > 0 ? ` ${extraChecks.join(',')}
|
|
84
|
+
const gateSuffix = extraChecks.length > 0 ? ` ${extraChecks.join(',')},再进入收尾与归档。` : ''
|
|
85
85
|
|
|
86
86
|
if (qaMode.mode === 'metadata-first') {
|
|
87
87
|
return {
|
|
@@ -89,8 +89,8 @@ function buildQaAction(plan, qaMode) {
|
|
|
89
89
|
mode: qaMode.mode,
|
|
90
90
|
routeHint: qaMode.guidance,
|
|
91
91
|
gateHint: plan.contractIssues.length > 0
|
|
92
|
-
? '
|
|
93
|
-
: '
|
|
92
|
+
? '交付把关:当前还不能进入收尾与归档;先补齐 `contract.json` 中的 `qaMode` 与 `qaFocus`,再进入 ~qa。'
|
|
93
|
+
: '交付把关:当前还不能进入收尾与归档;先补齐 tasks.md 中每个任务的“涉及文件”“完成标准”和“验证方式”,再进入 ~qa。',
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
|
|
@@ -98,7 +98,7 @@ function buildQaAction(plan, qaMode) {
|
|
|
98
98
|
phase: 'qa',
|
|
99
99
|
mode: qaMode.mode,
|
|
100
100
|
routeHint: qaMode.guidance,
|
|
101
|
-
gateHint:
|
|
101
|
+
gateHint: `交付把关:进入收尾与归档前,必须完成 qa-review 全量质量闭环,并留下最新 qa-review 证据。${gateSuffix}`.trim(),
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
|
|
@@ -188,9 +188,9 @@ function buildClosedRecommendation(scopeLabel, plan, cwd, options = {}) {
|
|
|
188
188
|
plan,
|
|
189
189
|
status: 'closed',
|
|
190
190
|
nextCommand: 'qa',
|
|
191
|
-
nextPath: '~qa ->
|
|
191
|
+
nextPath: '~qa -> 收尾与归档',
|
|
192
192
|
summary: `${scopeLabel} "${plan.planName}" 的任务已闭合,但当前 UI 契约仍要求独立 advisor 复查与视觉验收。`,
|
|
193
|
-
guidance: '先在 ~qa 阶段完成独立 advisor / style advisor 复查,并写入当前会话 `artifacts/advisor.json`;再完成视觉验收并写入当前会话 `artifacts/visual.json`,记录 reason、tooling、screensChecked、statesChecked、status 与 summary
|
|
193
|
+
guidance: '先在 ~qa 阶段完成独立 advisor / style advisor 复查,并写入当前会话 `artifacts/advisor.json`;再完成视觉验收并写入当前会话 `artifacts/visual.json`,记录 reason、tooling、screensChecked、statesChecked、status 与 summary;两项都通过后再进入收尾与归档。',
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
|
|
@@ -200,9 +200,9 @@ function buildClosedRecommendation(scopeLabel, plan, cwd, options = {}) {
|
|
|
200
200
|
plan,
|
|
201
201
|
status: 'closed',
|
|
202
202
|
nextCommand: 'qa',
|
|
203
|
-
nextPath: '~qa ->
|
|
203
|
+
nextPath: '~qa -> 收尾与归档',
|
|
204
204
|
summary: `${scopeLabel} "${plan.planName}" 的任务已闭合,但当前契约仍要求独立 advisor 复查。`,
|
|
205
|
-
guidance: '先在 ~qa 阶段完成独立 advisor / style advisor 复查,并写入当前会话 `artifacts/advisor.json` 记录复查原因、focus、来源与结论;advisor
|
|
205
|
+
guidance: '先在 ~qa 阶段完成独立 advisor / style advisor 复查,并写入当前会话 `artifacts/advisor.json` 记录复查原因、focus、来源与结论;advisor 通过后再进入收尾与归档。',
|
|
206
206
|
}
|
|
207
207
|
}
|
|
208
208
|
|
|
@@ -212,9 +212,9 @@ function buildClosedRecommendation(scopeLabel, plan, cwd, options = {}) {
|
|
|
212
212
|
plan,
|
|
213
213
|
status: 'closed',
|
|
214
214
|
nextCommand: 'qa',
|
|
215
|
-
nextPath: '~qa ->
|
|
215
|
+
nextPath: '~qa -> 收尾与归档',
|
|
216
216
|
summary: `${scopeLabel} "${plan.planName}" 的任务已闭合,但当前 UI 契约仍要求视觉验收。`,
|
|
217
|
-
guidance: '先在 ~qa 阶段完成视觉验收,并写入当前会话 `artifacts/visual.json` 记录 reason、tooling、screensChecked、statesChecked、status 与 summary
|
|
217
|
+
guidance: '先在 ~qa 阶段完成视觉验收,并写入当前会话 `artifacts/visual.json` 记录 reason、tooling、screensChecked、statesChecked、status 与 summary;视觉验收通过后再进入收尾与归档。',
|
|
218
218
|
}
|
|
219
219
|
}
|
|
220
220
|
|
|
@@ -226,13 +226,13 @@ function buildClosedRecommendation(scopeLabel, plan, cwd, options = {}) {
|
|
|
226
226
|
stage: 'consolidate',
|
|
227
227
|
mode: closedPlanEvidence.closeoutReady ? 'ready' : 'closeout-pending',
|
|
228
228
|
nextCommand: 'qa',
|
|
229
|
-
nextPath: '
|
|
229
|
+
nextPath: '收尾与归档',
|
|
230
230
|
summary: closedPlanEvidence.closeoutReady
|
|
231
231
|
? `${scopeLabel} "${plan.planName}" 的任务与交付证据已闭合。`
|
|
232
232
|
: `${scopeLabel} "${plan.planName}" 的任务与 qa-review 已闭合。`,
|
|
233
233
|
guidance: closedPlanEvidence.closeoutReady
|
|
234
|
-
? '
|
|
235
|
-
: '
|
|
234
|
+
? '当前进入收尾与归档:更新 `state_path`、知识文件并归档方案后即可交付;不要无故重开新的方案包或重新跑一遍无关验证。'
|
|
235
|
+
: '当前进入收尾与归档:先写当前会话 `artifacts/closeout.json` 记录需求覆盖与交付清单,再更新 `state_path` 并归档后交付。',
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
238
|
|
|
@@ -241,9 +241,9 @@ function buildClosedRecommendation(scopeLabel, plan, cwd, options = {}) {
|
|
|
241
241
|
plan,
|
|
242
242
|
status: 'closed',
|
|
243
243
|
nextCommand: 'qa',
|
|
244
|
-
nextPath: '~qa ->
|
|
244
|
+
nextPath: '~qa -> 收尾与归档',
|
|
245
245
|
summary: `${scopeLabel} "${plan.planName}" 的任务已全部闭合。`,
|
|
246
|
-
guidance: '若用户是在做收尾、验真、复查或准备交付,优先走 ~qa
|
|
246
|
+
guidance: '若用户是在做收尾、验真、复查或准备交付,优先走 ~qa 或收尾与归档;不要无故重开新的方案包。',
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
249
|
|
|
@@ -320,7 +320,7 @@ export function buildOrchestrationHintFromSnapshot(snapshot, cwd, recommendation
|
|
|
320
320
|
if (recommendation.stage === 'consolidate') {
|
|
321
321
|
const action = buildDeliveryActionFromSnapshot(snapshot, cwd, recommendation)
|
|
322
322
|
if (action?.phase === 'consolidate') {
|
|
323
|
-
return
|
|
323
|
+
return `编排提示:当前已进入收尾与归档;${[action.routeHint, action.gateHint].filter(Boolean).join(' ')}`
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
326
|
return ''
|
|
@@ -49,7 +49,7 @@ export function buildWorkflowRouteHint(cwd, options = {}) {
|
|
|
49
49
|
|
|
50
50
|
const suffix = [stateRoleHint, stateSyncHint, orchestrationHint, uiContractHint].filter(Boolean).join(' ')
|
|
51
51
|
if (recommendation.stage === 'consolidate') {
|
|
52
|
-
return `${recommendation.summary}
|
|
52
|
+
return `${recommendation.summary} 当前应直接进入收尾与归档。执行路径:${recommendation.nextPath}。${recommendation.guidance}${suffix ? ` ${suffix}` : ''}`
|
|
53
53
|
}
|
|
54
54
|
return `${recommendation.summary} 当前应执行 ~${recommendation.nextCommand}。执行路径:${recommendation.nextPath}。${recommendation.guidance}${suffix ? ` ${suffix}` : ''}`
|
|
55
55
|
}
|
|
@@ -65,7 +65,7 @@ function buildCommandRouteMessage(skillName, recommendation, qaFocusHint) {
|
|
|
65
65
|
}
|
|
66
66
|
if (skillName === 'plan') {
|
|
67
67
|
if (recommendation.stage === 'consolidate') {
|
|
68
|
-
return `当前工作流约束:${recommendation.summary} 当前不该重开 ~plan
|
|
68
|
+
return `当前工作流约束:${recommendation.summary} 当前不该重开 ~plan;除非用户明确要求重规划、改方向或新增范围,否则直接进入收尾与归档。`
|
|
69
69
|
}
|
|
70
70
|
return recommendation.nextCommand === 'plan'
|
|
71
71
|
? `当前工作流约束:${recommendation.summary} 当前应执行 ~plan。${recommendation.guidance}`
|
|
@@ -73,7 +73,7 @@ function buildCommandRouteMessage(skillName, recommendation, qaFocusHint) {
|
|
|
73
73
|
}
|
|
74
74
|
if (skillName === 'build') {
|
|
75
75
|
if (recommendation.stage === 'consolidate') {
|
|
76
|
-
return `当前工作流约束:${recommendation.summary} 当前不该继续 ~build
|
|
76
|
+
return `当前工作流约束:${recommendation.summary} 当前不该继续 ~build;除非用户明确提出新增实现范围,否则直接进入收尾与归档。`
|
|
77
77
|
}
|
|
78
78
|
return recommendation.nextCommand === 'build'
|
|
79
79
|
? `当前工作流约束:${recommendation.summary} 当前应执行 ~build。${recommendation.guidance}`
|
|
@@ -81,7 +81,7 @@ function buildCommandRouteMessage(skillName, recommendation, qaFocusHint) {
|
|
|
81
81
|
}
|
|
82
82
|
if (skillName === 'qa') {
|
|
83
83
|
if (recommendation.stage === 'consolidate') {
|
|
84
|
-
return `当前工作流约束:${recommendation.summary}
|
|
84
|
+
return `当前工作流约束:${recommendation.summary} 当前应直接进入收尾与归档。${recommendation.guidance}`
|
|
85
85
|
}
|
|
86
86
|
return recommendation.nextCommand === 'qa'
|
|
87
87
|
? `当前工作流约束:${recommendation.summary} 当前应执行 ~qa。${recommendation.guidance}`
|
|
@@ -16,7 +16,7 @@ Trigger: ~auto <任务描述>
|
|
|
16
16
|
- 主路径一旦确定,立即读取对应 command skill,并在阶段完成后继续执行后续阶段,避免同一任务重复探索或重复等待
|
|
17
17
|
- 选路不替代授权;涉及外部副作用或高风险不可逆操作时,仍遵守 HelloAGENTS 阻塞判定与确认规则
|
|
18
18
|
- 用户显式使用 `~auto`,表示已授权在当前任务边界内沿选定主路径持续执行;若当前运行在 Codex `/goal` 下,`/goal` 只提供长程续跑与预算,`~auto` 仍按方案包、`state_path` 与验证契约推进;`~plan` / `~prd` 作为中间阶段时,不再额外询问“是否开始执行”,除非仍有真实阻塞;不得把 `🔄 下一步` 当作阶段交接或继续执行占位
|
|
19
|
-
-
|
|
19
|
+
- 优先消费当前上下文中已注入的“选路与分层”结果、当前工作流约束与项目状态;不要在 `~auto` 内另建一套关键词路由表
|
|
20
20
|
|
|
21
21
|
## 流程
|
|
22
22
|
|
|
@@ -32,7 +32,7 @@ Trigger: ~auto <任务描述>
|
|
|
32
32
|
|
|
33
33
|
### 1. 选路
|
|
34
34
|
|
|
35
|
-
-
|
|
35
|
+
- 先按当前上下文里已注入的“选路与分层”语义约束判断,不依赖关键词命中做机械分流
|
|
36
36
|
- 若当前上下文没有足够的注入约束,再结合以下信号补足判断:影响范围、风险等级、是否需要结构化产物、是否已有活跃方案包、用户是否只想先比较方向
|
|
37
37
|
- 选路优先级:
|
|
38
38
|
- 纯探索 / 点子 / 方向比较 → `~idea`
|
|
@@ -64,5 +64,5 @@ Trigger: ~build [description]
|
|
|
64
64
|
- 有方案包时,只同步本次实现直接影响的任务状态;未完成项保持打开
|
|
65
65
|
- 当前实现已闭合、且需要进入交付或收尾时,转入 `~qa`
|
|
66
66
|
- 若 Codex active goal 仍有未完成 AFK 任务,继续下一项可执行任务;若目标已满足,先转入 `~qa` 与 HelloAGENTS 收尾,再标记 goal complete
|
|
67
|
-
- 状态文件、知识库、`CHANGELOG.md`、modules 文档与归档边界,按当前已加载的 HelloAGENTS
|
|
67
|
+
- 状态文件、知识库、`CHANGELOG.md`、modules 文档与归档边界,按当前已加载的 HelloAGENTS 规则进入质量闭环 / 收尾与归档
|
|
68
68
|
- 不在 `~build` 内把仍未闭合的方案包整体报告为已完成
|
|
@@ -6,7 +6,7 @@ policy:
|
|
|
6
6
|
---
|
|
7
7
|
Trigger: ~commit [message]
|
|
8
8
|
|
|
9
|
-
执行 `~commit` 时,知识库同步与状态文件更新范围按当前已加载的 HelloAGENTS
|
|
9
|
+
执行 `~commit` 时,知识库同步与状态文件更新范围按当前已加载的 HelloAGENTS“收尾与归档”/ 流程状态要求执行;本命令只负责生成提交信息、读取提交归属配置并完成提交动作。
|
|
10
10
|
`auto_commit_enabled=false` 只关闭收尾阶段的自动提交,不影响显式 `~commit`。
|
|
11
11
|
|
|
12
12
|
## 流程
|
|
@@ -28,4 +28,4 @@ Trigger: ~commit [message]
|
|
|
28
28
|
- 0 = 跳过
|
|
29
29
|
- 1 = 知识库已存在时自动同步(默认)
|
|
30
30
|
- 2 = 编码任务在知识库已存在或当前项目已初始化时自动创建或同步
|
|
31
|
-
同步范围与更新格式按当前已加载的 HelloAGENTS
|
|
31
|
+
同步范围与更新格式按当前已加载的 HelloAGENTS“收尾与归档”阶段执行。
|
|
@@ -30,6 +30,8 @@ Trigger: ~help
|
|
|
30
30
|
- `~design` → 等同 `~plan`
|
|
31
31
|
- `~review` → 等同 `~qa`
|
|
32
32
|
|
|
33
|
+
核心规则默认生效:HelloAGENTS 会通过 `bootstrap.md` / `bootstrap-lite.md` 在运行时持续执行方案纠偏与语言纪律;这不是新增命令,也不是新增技能计数。
|
|
34
|
+
|
|
33
35
|
### 自动激活技能
|
|
34
36
|
以下技能仅在宿主全局模式或已初始化项目时自动激活(例如当前项目级规则文件已包含 `<!-- HELLOAGENTS_PROFILE: full -->`,通常由 `~init` 建立)。
|
|
35
37
|
纯标准模式、且项目未初始化时不会自动触发这些技能;但涉及 UI 的任务仍受 UI 质量基线约束。
|
|
@@ -46,7 +48,7 @@ Trigger: ~help
|
|
|
46
48
|
| output_language | "" | 空=跟随用户语言/填写则指定(如 zh-CN、en) | Claude Code + Gemini CLI + Codex CLI |
|
|
47
49
|
| output_format | true | true=主代理最终回复必须使用 HelloAGENTS 格式,流式/中间输出及子代理输出保持自然;false=自然输出 | Claude Code + Gemini CLI + Codex CLI |
|
|
48
50
|
| notify_level | 0 | 0=关闭/1=桌面通知/2=声音/3=两者 | Claude Code + Gemini CLI + Codex CLI |
|
|
49
|
-
| ralph_loop_enabled | true | 收尾 QA
|
|
51
|
+
| ralph_loop_enabled | true | 收尾 QA 门禁(显式 ~qa / ~loop 或收尾要求时触发审查、lint/test/build) | Claude Code + Gemini CLI + Codex CLI |
|
|
50
52
|
| guard_enabled | true | 阻断危险命令与写入后的安全扫描 | Claude Code + Gemini CLI + Codex CLI |
|
|
51
53
|
| kb_create_mode | 1 | 0=关闭/1=知识库已存在时自动同步/2=编码任务在知识库已存在或当前项目已初始化时自动创建或同步 | Claude Code + Gemini CLI + Codex CLI |
|
|
52
54
|
| project_store_mode | "local" | "local"=知识库/方案包保留在项目本地 `.helloagents/`;"repo-shared"=本地 `.helloagents/` 仅保留项目本地状态/运行态,知识库与方案包改写到 `~/.helloagents/projects/<repo-key>/` | Claude Code + Gemini CLI + Codex CLI |
|
|
@@ -8,7 +8,7 @@ Trigger: ~init
|
|
|
8
8
|
|
|
9
9
|
`~init` 是用户显式命令,用来初始化或刷新当前项目的完整工作流。
|
|
10
10
|
它不受 `kb_create_mode` 限制。
|
|
11
|
-
执行 `~init` 时,按当前规则模板创建或更新项目本地 `.helloagents
|
|
11
|
+
执行 `~init` 时,按当前规则模板创建或更新项目本地 `.helloagents/`,同步知识库,并为支持的宿主写入项目级完整规则标记:`<!-- HELLOAGENTS_PROFILE: full -->`。
|
|
12
12
|
`.helloagents/` 在本 skill 中统一按项目级存储路径理解:项目本地 `.helloagents/` 继续承担项目本地存储目录;状态文件只使用 `state_path`;若 `project_store_mode=repo-shared`,知识库、`DESIGN.md` 与方案包按当前上下文中已注入的项目知识/方案目录写入。
|
|
13
13
|
|
|
14
14
|
## 流程
|
|
@@ -71,5 +71,5 @@ Trigger: ~loop <目标描述>
|
|
|
71
71
|
|
|
72
72
|
## 完成判定
|
|
73
73
|
|
|
74
|
-
- 只有当长任务链路已经走到 `~qa`,并且质量闭环通过、收尾证据完整、HelloAGENTS
|
|
74
|
+
- 只有当长任务链路已经走到 `~qa`,并且质量闭环通过、收尾证据完整、HelloAGENTS 允许进入收尾与归档时,`~loop` 才算完成
|
|
75
75
|
- 若当前任务来自 Codex active goal,还要满足:当前 goal 的可执行 `AFK` 任务已全部完成,才允许标记 goal complete
|
|
@@ -127,7 +127,7 @@ c. AI 总结该维度的决策结果,进入下一个维度
|
|
|
127
127
|
|
|
128
128
|
按 tasks.md 逐项完成,每项进入当前已加载的 HelloAGENTS 统一执行流程,完成后同步重写 `state_path`。
|
|
129
129
|
任务状态标记仅写入 tasks.md、验收清单或验证结果;普通说明、方案解释、状态汇报不用 [√] / [-] / [ ]。
|
|
130
|
-
所有任务完成后进入当前已加载的 HelloAGENTS
|
|
130
|
+
所有任务完成后进入当前已加载的 HelloAGENTS 质量闭环 / 收尾与归档阶段。
|
|
131
131
|
可并行的任务标记后用子代理并行执行(不同子代理不改同一文件)。
|
|
132
132
|
执行过程中遇到阻塞(依赖缺失、指令不清、验证反复失败)→ 立即停下询问用户,不猜测。
|
|
133
133
|
执行过程中遇到高风险操作(删除文件/修改配置/数据库变更)→ 暂停确认。
|
|
@@ -41,9 +41,9 @@ Trigger: ~qa [scope]
|
|
|
41
41
|
- ✅ 通过的审查项 / 命令
|
|
42
42
|
- ❌ 失败的审查项 / 命令 + 修复结果
|
|
43
43
|
- 仍未满足的阻断项
|
|
44
|
-
-
|
|
44
|
+
- 是否已满足进入收尾与归档的条件
|
|
45
45
|
|
|
46
46
|
## 失败处理
|
|
47
47
|
|
|
48
48
|
- 有失败 → 逐个修复,修复后重新运行对应审查或验证
|
|
49
|
-
- 全部通过 → 按当前已加载的 HelloAGENTS
|
|
49
|
+
- 全部通过 → 按当前已加载的 HelloAGENTS 规则进入收尾与归档;若 Codex active goal 的目标也已满足,再标记 goal complete,并按交付边界报告完成
|
|
@@ -28,7 +28,7 @@ description: 重构代码、调整模块结构、管理依赖、拆分文件、
|
|
|
28
28
|
## 变更策略
|
|
29
29
|
- 评估变更的影响范围(blast radius)
|
|
30
30
|
- 大重构分步进行,每步可独立验证和回滚
|
|
31
|
-
-
|
|
31
|
+
- 区分真实外部契约与内部实现惯性:公开 API、持久化数据、已文档化集成、用户承诺等真实契约要评估兼容与迁移;内部调用方、旧命名、旧目录结构和历史兼容层不自动保留,必要时先按核心规则判断目标模型,再按分阶段路径落地
|
|
32
32
|
|
|
33
33
|
## 交付检查
|
|
34
34
|
- [ ] 无循环依赖
|
|
@@ -4,7 +4,7 @@ description: 撰写文档、README、技术方案、分析报告、用户指南
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
文本产出遵循通用交付规则中的执行纪律与表达与语气要求;本技能补充结构、表达与格式要求。
|
|
7
|
-
|
|
7
|
+
默认交付一个可直接使用的最终文本;这里的“一个”只限制版本数量,不限制完成当前请求所需的必要篇幅、说明深度和结构。只有用户明确要求时,才提供多版本、多语气或多长度变体。
|
|
8
8
|
|
|
9
9
|
文本产出必须遵循以下规范。
|
|
10
10
|
|
|
@@ -25,7 +25,7 @@ description: 撰写文档、README、技术方案、分析报告、用户指南
|
|
|
25
25
|
- 避免模糊词("一些"、"可能"、"大概")→ 用具体数据
|
|
26
26
|
- 不重复同一结论,不堆叠近义句
|
|
27
27
|
- 不为追求简短省略必要条件、边界和风险说明
|
|
28
|
-
- 未明确要求多版本时,只给一个最终版本,不主动追加另一版、另一种语气或更短 /
|
|
28
|
+
- 未明确要求多版本时,只给一个最终版本,不主动追加另一版、另一种语气或更短 / 更口语版本;但必要背景、条件、边界、风险、步骤和示例不得省略
|
|
29
29
|
- 文本已满足请求时直接结束,不加无执行价值的邀约式收尾
|
|
30
30
|
|
|
31
31
|
## 格式
|
|
@@ -3,12 +3,14 @@ name: helloagents
|
|
|
3
3
|
description: 按任务类型适用 — 建立质量驱动工作流,通过技能标准、流程纪律和检查清单保障交付质量
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
【子代理短路】
|
|
7
|
+
若当前任务属于上级代理分派的局部任务、由宿主协作/委派机制创建,或当前输出会交回上级代理、控制器或其他代理继续汇总、决策、复述或等待后续动作,则立即跳过本 skill 后续仅面向主代理的规则。只返回结果、证据或阻塞项;不得包装 HelloAGENTS 外层输出格式,不得输出 `【HelloAGENTS】` 外层格式、`🔄 下一步:`、turn-state 或面向最终用户的收尾。安全、质量、验证和失败处理规则仍持续生效。
|
|
8
|
+
|
|
6
9
|
# HelloAGENTS
|
|
7
10
|
|
|
8
|
-
主代理触发或读取任意 skill
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
普通问答、解释、分析、改写、邮件回复和其他一次性交付虽然不进入完整实现、验证或收尾流程,但仍属于交付:默认只交付与当前请求直接对应的一版最终结果;请求已满足时直接结束,不主动追加无执行价值的延伸、派生版本、不同写法、第二版或邀约式收尾,除非用户明确要求。
|
|
11
|
+
主代理触发或读取任意 skill 时,只有直接面向最终用户、且当前对话已经结束的终局交付,才按通用输出格式包装;流式内容、进度或状态汇报、中间文本,以及任何当前对话尚未结束的文本,都保持自然输出。最终回复中的 `🔄 下一步` 写真实动作,不写当前状态;等待用户授权时使用等待输入态收尾,已获授权且可继续执行时不得收尾。同一条最终回复只包装一次;若需要分段,在同一个外层块内展开,不在正文里再次输出 `【HelloAGENTS】` 或第二个 `🔄 下一步`。
|
|
12
|
+
只有运行时必须识别当前对话“完成 / 等待输入 / 阻塞”时,主代理才写 turn-state;普通问候、普通问答、T0 只读分析和一次性解释不调用。必须调用场景:显式 `~auto` / `~loop`、非只读任务完成验证并进入收尾、需要让运行时识别当前对话已完成、等待输入或已阻塞时、已进入项目连续流程或方案包闭环。首选 `helloagents-turn-state write --kind complete --role main`;等待或阻塞时写 `kind=waiting` / `kind=blocked`,并同时写 `reasonCategory` 与 `reason`。显式 `~auto` / `~loop` 下,还必须写入 `blocker.target`、`blocker.evidence`、`blocker.requiredAction`。不要查找、读取或拼接 `turn-state.mjs` 源码路径。
|
|
13
|
+
普通问答、解释、分析、改写、邮件回复和其他一次性交付虽然不进入完整实现、验证或收尾流程,但仍属于交付:默认只交付与当前请求直接对应的一版最终结果;“一版”只限制版本数量,不限制完成当前请求所需的必要内容;请求已满足时直接结束,不主动追加无执行价值的延伸、派生版本、不同写法、第二版或邀约式收尾,除非用户明确要求。
|
|
12
14
|
|
|
13
15
|
`.helloagents/` 在所有 skill 中都统一按项目级存储路径理解:项目本地 `.helloagents/` 负责知识、方案和会话运行态,不作为项目是否已初始化的判定信号;状态文件只使用 `state_path`(实际位于 `sessions/{workspace}/{session}/STATE.md`);会话证据使用当前 `state_path` 所在目录下的 `artifacts/*.json`;`sessions/active.json` 只作为当前活跃会话索引;若 `project_store_mode=repo-shared`,`context.md`、`guidelines.md`、`DESIGN.md`、`verify.yaml`、`modules/`、`plans/`、`archive/` 按当前上下文中已注入的“当前项目存储”/“项目知识/方案目录”解析,不要假定这些文件一定实际位于当前工作树中。
|
|
14
16
|
|
|
@@ -22,7 +24,7 @@ description: 按任务类型适用 — 建立质量驱动工作流,通过技
|
|
|
22
24
|
|
|
23
25
|
### 流程纪律(执行时)
|
|
24
26
|
- 执行 command skill 时,公共阶段边界以当前已加载的 HelloAGENTS 规则为准;command skill 只补充该命令的专属动作和边界
|
|
25
|
-
-
|
|
27
|
+
- 统一执行流程的六个阶段(选路与分层→目标澄清→规划→实现→质量闭环→收尾与归档)按当前任务分层和实际任务推进;未进入的阶段不强行补齐,已进入的阶段不可跳过
|
|
26
28
|
- 所有 UI 任务先受当前已加载的 HelloAGENTS UI 质量基线约束;已初始化项目、宿主全局模式或显式 UI 工作流中的设计约束优先级固定为:当前 `plan.md` / PRD UI 决策 → `.helloagents/DESIGN.md`(按当前项目存储模式解析) → 已读取的 `hello-ui` 具体规则
|
|
27
29
|
- 方案包存在 `contract.json` 时,`qaMode`、`qaFocus`、可选 style advisor / visual validation 与交付检查优先按它执行,不再从自然语言总结里回推
|
|
28
30
|
- 因阻塞判定而必须等待用户输入时,按当前已加载的 HelloAGENTS 规则处理,不得把等待输入包装成完成态
|
|
@@ -48,7 +50,7 @@ description: 按任务类型适用 — 建立质量驱动工作流,通过技
|
|
|
48
50
|
- 技能引用的 `templates/`、`modules/*.md` 等文件,只在技能明确要求时再读
|
|
49
51
|
|
|
50
52
|
禁止行为:
|
|
51
|
-
-
|
|
53
|
+
- 禁止在选路分层、目标澄清阶段读取实现类技能(hello-ui/hello-test/qa-review 等)
|
|
52
54
|
- 禁止因为"可能用到"就提前读取技能文件——等到真正需要时再读
|
|
53
55
|
- 同一会话内,同一路径的配置文件、模块、SKILL、模板只读一次并跨轮复用;缺少所需内容、读取失败、用户要求刷新或本次修改后才重新读取
|
|
54
56
|
- ~command 命令只读取对应的 command SKILL.md,不连带读取其他技能
|
|
@@ -77,7 +79,7 @@ description: 按任务类型适用 — 建立质量驱动工作流,通过技
|
|
|
77
79
|
|
|
78
80
|
## 技能索引(仅元数据)
|
|
79
81
|
|
|
80
|
-
###
|
|
82
|
+
### 编码时(实现阶段按需读取)
|
|
81
83
|
- hello-ui — 深层 UI 规划/实现/验收时
|
|
82
84
|
- hello-api — 构建/修改 API 时
|
|
83
85
|
- hello-data — 数据库/迁移/事务时
|
|
@@ -85,7 +87,7 @@ description: 按任务类型适用 — 建立质量驱动工作流,通过技
|
|
|
85
87
|
- hello-errors — 错误处理/日志/重试时
|
|
86
88
|
- hello-perf — 性能优化/查询/缓存时
|
|
87
89
|
- hello-arch — 重构/架构决策时
|
|
88
|
-
- hello-test — 编写测试时(TDD
|
|
90
|
+
- hello-test — 编写测试时(TDD:实现阶段开始时读取)
|
|
89
91
|
|
|
90
92
|
### 特定场景(触发时读取)
|
|
91
93
|
- hello-debug — 调试错误/修复 bug/排查失败时
|
|
@@ -93,7 +95,7 @@ description: 按任务类型适用 — 建立质量驱动工作流,通过技
|
|
|
93
95
|
- hello-write — 撰写文档/报告/方案等非编码文本时
|
|
94
96
|
- qa-review — 统一质量审查、验证、修复与收尾时
|
|
95
97
|
|
|
96
|
-
###
|
|
98
|
+
### 完成时(质量闭环 / 收尾与归档阶段读取)
|
|
97
99
|
- hello-reflect — 符合触发条件时(详见 hello-reflect SKILL.md)
|
|
98
100
|
|
|
99
101
|
## 命令路由
|