helloagents 3.0.30 → 3.0.32

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.
Files changed (42) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/README.md +7 -19
  4. package/README_CN.md +8 -20
  5. package/bootstrap-lite.md +18 -18
  6. package/bootstrap.md +18 -18
  7. package/gemini-extension.json +1 -1
  8. package/install.ps1 +3 -3
  9. package/install.sh +3 -3
  10. package/package.json +1 -1
  11. package/scripts/advisor-state.mjs +1 -1
  12. package/scripts/cli-config.mjs +8 -0
  13. package/scripts/cli-doctor.mjs +2 -76
  14. package/scripts/cli-host-detect.mjs +0 -29
  15. package/scripts/cli-hosts.mjs +0 -8
  16. package/scripts/cli-lifecycle-hosts.mjs +1 -22
  17. package/scripts/cli-lifecycle.mjs +17 -3
  18. package/scripts/cli-messages.mjs +12 -24
  19. package/scripts/guard.mjs +1 -1
  20. package/scripts/notify-context.mjs +7 -2
  21. package/scripts/notify-events.mjs +0 -5
  22. package/scripts/notify-route.mjs +1 -1
  23. package/scripts/notify-source.mjs +0 -1
  24. package/scripts/plan-contract.mjs +1 -1
  25. package/scripts/ralph-loop.mjs +35 -0
  26. package/scripts/runtime-scope.mjs +1 -1
  27. package/scripts/turn-stop-gate.mjs +5 -5
  28. package/skills/commands/auto/SKILL.md +2 -2
  29. package/skills/commands/build/SKILL.md +3 -3
  30. package/skills/commands/global/SKILL.md +1 -1
  31. package/skills/commands/help/SKILL.md +11 -11
  32. package/skills/commands/loop/SKILL.md +1 -1
  33. package/skills/commands/plan/SKILL.md +1 -1
  34. package/skills/commands/prd/SKILL.md +1 -1
  35. package/skills/commands/test/SKILL.md +1 -1
  36. package/skills/commands/verify/SKILL.md +5 -5
  37. package/skills/hello-review/SKILL.md +1 -1
  38. package/skills/hello-subagent/SKILL.md +2 -2
  39. package/skills/hello-ui/SKILL.md +1 -1
  40. package/skills/hello-verify/SKILL.md +7 -7
  41. package/skills/helloagents/SKILL.md +7 -7
  42. package/scripts/cli-deepseek.mjs +0 -131
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "helloagents",
3
- "version": "3.0.30",
3
+ "version": "3.0.32",
4
4
  "description": "HelloAGENTS — The orchestration kernel that makes any AI CLI smarter. Adds intelligent routing, quality verification (Ralph Loop), safety guards, and notifications.",
5
5
  "author": {
6
6
  "name": "HelloWind",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "helloagents",
3
- "version": "3.0.30",
3
+ "version": "3.0.32",
4
4
  "description": "HelloAGENTS — Quality-driven orchestration kernel for AI CLIs with intelligent routing, quality verification (Ralph Loop), 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
- [![Version](https://img.shields.io/badge/version-3.0.30-orange.svg)](./package.json)
11
+ [![Version](https://img.shields.io/badge/version-3.0.32-orange.svg)](./package.json)
12
12
  [![npm](https://img.shields.io/npm/v/helloagents.svg)](https://www.npmjs.com/package/helloagents)
13
13
  [![Node](https://img.shields.io/badge/node-%3E%3D18-339933.svg)](./package.json)
14
14
  [![Skills](https://img.shields.io/badge/skills-14-6366f1.svg)](./skills)
@@ -47,7 +47,7 @@
47
47
 
48
48
  AI coding CLIs can move fast, but they can also stop at advice, skip checks, lose project context, or report completion before the work is really done.
49
49
 
50
- HelloAGENTS adds a workflow layer on top of Claude Code, Gemini CLI, Codex CLI, and DeepSeek TUI. It helps the agent choose the right path, use task-specific quality skills, keep a project knowledge base, and verify work before delivery.
50
+ HelloAGENTS adds a workflow layer on top of Claude Code, Gemini CLI, and Codex CLI. It helps the agent choose the right path, use task-specific quality skills, keep a project knowledge base, and verify work before delivery.
51
51
 
52
52
  <table>
53
53
  <tr>
@@ -211,6 +211,7 @@ Runtime evidence files include:
211
211
  - `.helloagents/sessions/<workspace>/<session>/artifacts/loop-results.tsv`
212
212
 
213
213
  Delivery gate, guard, and loop messages use action-oriented wording such as processing path, closeout action, and visual validation action, so blocked flows show what to do next without turning executable steps into optional suggestions. Final closeout also enforces a single HelloAGENTS wrapper, so one reply does not emit duplicate closeout headers.
214
+ That wrapper is now reserved for direct final-user delivery only. Intermediate reports, delegated task results, and sub-agent replies stay natural, and sub-agent stop hooks reject wrapped closeout replies.
214
215
 
215
216
  ### 7) Safer install, update, cleanup, and diagnostics
216
217
 
@@ -306,14 +307,13 @@ Supported targets:
306
307
  - `claude`
307
308
  - `gemini`
308
309
  - `codex`
309
- - `deepseek`
310
310
  - `--all`
311
311
 
312
312
  If you omit `--standby` or `--global`, HelloAGENTS first reuses the tracked/detected mode for that CLI, then falls back to `standby`.
313
313
 
314
314
  ### npm and one-shot script entries
315
315
 
316
- Use these when you do not want to depend on the `helloagents` binary being available during package updates. In `HELLOAGENTS=target[:mode]`, target can be `all`, `claude`, `gemini`, `codex`, or `deepseek`; mode can be `standby` or `global`. For install, an omitted mode is treated as `standby`. For update, cleanup, uninstall, and branch switching, an omitted mode is forwarded unchanged so HelloAGENTS can reuse the tracked or detected mode for that CLI first.
316
+ Use these when you do not want to depend on the `helloagents` binary being available during package updates. In `HELLOAGENTS=target[:mode]`, target can be `all`, `claude`, `gemini`, or `codex`; mode can be `standby` or `global`. For install, an omitted mode is treated as `standby`. For update, cleanup, uninstall, and branch switching, an omitted mode is forwarded unchanged so HelloAGENTS can reuse the tracked or detected mode for that CLI first.
317
317
 
318
318
  Host configs use the stable `helloagents-js` entrypoint and runtime root `~/.helloagents/helloagents`, so Node global package paths can change without breaking managed hooks or Codex `notify`. Codex hooks use standalone `~/.codex/hooks.json` instead of adding large hook blocks to `config.toml`, and Codex global plugin roots plus plugin cache now link back to that same stable runtime root.
319
319
 
@@ -436,7 +436,6 @@ npm uninstall -g helloagents
436
436
  | Claude Code | `~/.claude/CLAUDE.md`, `~/.claude/settings.json`, `~/.claude/helloagents -> ~/.helloagents/helloagents` | removes managed marker block, HelloAGENTS hooks/permissions, and symlink |
437
437
  | Gemini CLI | `~/.gemini/GEMINI.md`, `~/.gemini/settings.json`, `~/.gemini/helloagents -> ~/.helloagents/helloagents` | removes managed marker block, HelloAGENTS hooks, and symlink |
438
438
  | Codex CLI | `~/.codex/AGENTS.md`, `~/.codex/config.toml`, `~/.codex/hooks.json`, `~/.codex/helloagents -> ~/.helloagents/helloagents`, managed backups | removes managed marker block, managed config keys, managed hooks, symlink, and the latest managed backup |
439
- | DeepSeek TUI | `~/.deepseek/AGENTS.md`, `~/.deepseek/helloagents -> ~/.helloagents/helloagents` | removes managed marker block and symlink |
440
439
 
441
440
  ### Global mode files
442
441
 
@@ -445,7 +444,6 @@ npm uninstall -g helloagents
445
444
  | Claude Code | native plugin install | managed by Claude Code plugin system |
446
445
  | Gemini CLI | native extension install | managed by Gemini extension system |
447
446
  | Codex CLI | native local-plugin chain | `~/.agents/plugins/marketplace.json`, `~/plugins/helloagents/ -> ~/.helloagents/helloagents`, `~/.codex/plugins/cache/local-plugins/helloagents/local/ -> ~/.helloagents/helloagents`, `~/.codex/config.toml`, `~/.codex/hooks.json`, `~/.codex/helloagents -> ~/.helloagents/helloagents` |
448
- | DeepSeek TUI | managed AGENTS carrier | `~/.deepseek/AGENTS.md`, `~/.deepseek/helloagents -> ~/.helloagents/helloagents` |
449
447
 
450
448
  In global mode, HelloAGENTS now attempts the host-native install commands automatically. If a host command is unavailable, run the same commands manually:
451
449
 
@@ -459,8 +457,6 @@ For Claude Code, the CLI also tries the equivalent `claude plugin marketplace ad
459
457
 
460
458
  Codex global mode is installed by HelloAGENTS automatically through the local-plugin path.
461
459
 
462
- DeepSeek TUI follows its native `AGENTS.md` model. Standby writes the lite carrier to `~/.deepseek/AGENTS.md`; global writes the full carrier plus `<!-- HELLOAGENTS_PROFILE: full -->`. HelloAGENTS doctor also reads `deepseek doctor --json` when the `deepseek` command is available and surfaces its summary next to HelloAGENTS-managed checks.
463
-
464
460
  ## Commands in Chat
465
461
 
466
462
  ### Typical flows
@@ -617,7 +613,7 @@ Default shape:
617
613
  | Key | Default | Meaning |
618
614
  |-----|---------|---------|
619
615
  | `output_language` | `""` | follow the user language unless set |
620
- | `output_format` | `true` | main-agent final closeout must use the HelloAGENTS layout; intermediate and sub-agent output stays natural |
616
+ | `output_format` | `true` | direct final-user closeout from the main agent uses the HelloAGENTS layout; intermediate, delegated, and sub-agent output stays natural |
621
617
  | `notify_level` | `0` | `0` off, `1` desktop, `2` sound, `3` both |
622
618
  | `ralph_loop_enabled` | `true` | run verification for explicit `~verify` / `~loop` or required closeout gates |
623
619
  | `guard_enabled` | `true` | block dangerous commands |
@@ -665,14 +661,6 @@ Codex is rules-file driven by default.
665
661
  - `/goal` remains Codex-native. Enable it explicitly with `helloagents codex goals enable` when long-running plan execution is needed
666
662
  - Goal-aware commands resume from `tasks.md`, `contract.json`, and `state_path`; they do not create goals automatically or mark them complete before HelloAGENTS verification and closeout
667
663
 
668
- ### DeepSeek TUI
669
-
670
- - standby writes `~/.deepseek/AGENTS.md`
671
- - standby creates `~/.deepseek/helloagents -> ~/.helloagents/helloagents`
672
- - global keeps using `~/.deepseek/AGENTS.md`, but writes the full HelloAGENTS carrier with `<!-- HELLOAGENTS_PROFILE: full -->`
673
- - project-level initialized projects still rely on the project carrier marker, so DeepSeek follows the same initialized-project behavior as Codex
674
- - `helloagents doctor` merges HelloAGENTS-managed checks with the summary from `deepseek doctor --json` when that command exists
675
-
676
664
  ## Verification
677
665
 
678
666
  Run all tests:
@@ -685,11 +673,11 @@ The current suite covers:
685
673
 
686
674
  - install, update, cleanup, uninstall, branch switching, and mode switching
687
675
  - one-shot shell and PowerShell lifecycle dispatch, plus wrapper mode-routing rules for install, update, cleanup, uninstall, and branch switching
688
- - Claude, Gemini, Codex, and DeepSeek host integration behavior
676
+ - Claude, Gemini, and Codex host integration behavior
689
677
  - Codex managed `model_instructions_file`, `notify`, `hooks.json`, hook trust state, local plugin, marketplace, and cache behavior
690
678
  - Codex cleanup of legacy managed notify variants on Windows and canonical managed notify restoration rules
691
679
  - Codex `/goal` feature toggles, long-running route context, and goal-aware command contracts
692
- - `helloagents doctor`, including DeepSeek native doctor summary handling
680
+ - `helloagents doctor`
693
681
  - project storage and `repo-shared` behavior
694
682
  - session-scoped `state_path`, runtime signals, and evidence
695
683
  - runtime injection, routing, guard, verification, visual evidence, delivery gates, closeout de-duplication, and successful-mode tracking after native install failures
package/README_CN.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  **面向 AI 编码 CLI 的工作流层:技能、知识库、交付检查、更安全的配置写入,以及可恢复的执行流程。**
10
10
 
11
- [![Version](https://img.shields.io/badge/version-3.0.30-orange.svg)](./package.json)
11
+ [![Version](https://img.shields.io/badge/version-3.0.32-orange.svg)](./package.json)
12
12
  [![npm](https://img.shields.io/npm/v/helloagents.svg)](https://www.npmjs.com/package/helloagents)
13
13
  [![Node](https://img.shields.io/badge/node-%3E%3D18-339933.svg)](./package.json)
14
14
  [![Skills](https://img.shields.io/badge/skills-14-6366f1.svg)](./skills)
@@ -47,7 +47,7 @@
47
47
 
48
48
  AI 编码 CLI 写代码很快,但也容易停在建议、跳过检查、丢失项目上下文,或在真正完成前就报告完成。
49
49
 
50
- HelloAGENTS 叠加在 Claude Code、Gemini CLI、Codex CLI DeepSeek TUI 之上,帮助模型选择合适流程、使用任务相关的质量技能、维护项目知识库,并在交付前完成验证。
50
+ HelloAGENTS 叠加在 Claude Code、Gemini CLI 和 Codex CLI 之上,帮助模型选择合适流程、使用任务相关的质量技能、维护项目知识库,并在交付前完成验证。
51
51
 
52
52
  <table>
53
53
  <tr>
@@ -210,7 +210,8 @@ HelloAGENTS 不把“命令通过”和“任务完成”简单画等号。交
210
210
  - `.helloagents/sessions/<workspace>/<session>/artifacts/closeout.json`
211
211
  - `.helloagents/sessions/<workspace>/<session>/artifacts/loop-results.tsv`
212
212
 
213
- 交付门控、守卫和循环提示使用执行性表述,例如处理路径、收尾动作和视觉验收动作。阻塞流程会说明下一步要做什么,而不是把可执行步骤写成泛化建议。最终收尾还会强制只保留一个 HelloAGENTS 外层块,避免同一条回复重复输出完成标题。
213
+ 交付门控、守卫和循环提示使用执行性表述,例如处理路径、收尾动作和视觉验收动作。阻塞流程会说明下一步要做什么,而不是把可执行步骤写成泛化建议。最终回复还会强制只保留一个 HelloAGENTS 外层块,避免同一条回复重复输出完成标题。
214
+ 这个外层格式现在只保留给直接面向最终用户的终局交付。中间汇报、委派任务结果和子代理回复都保持自然输出;子代理结束钩子也会拦截错误的外层收尾格式。
214
215
 
215
216
  ### 7)更安全的安装、更新、清理和诊断
216
217
 
@@ -306,14 +307,13 @@ helloagents codex goals enable
306
307
  - `claude`
307
308
  - `gemini`
308
309
  - `codex`
309
- - `deepseek`
310
310
  - `--all`
311
311
 
312
312
  省略 `--standby` 或 `--global` 时,HelloAGENTS 会先复用该 CLI 已记录或检测到的模式,再回退到 `standby`。
313
313
 
314
314
  ### npm 和一键脚本入口
315
315
 
316
- 当你不想依赖更新过程中的 `helloagents` 可执行文件时,用 npm 或一键脚本。`HELLOAGENTS=目标[:模式]` 中,目标支持 `all`、`claude`、`gemini`、`codex`、`deepseek`;模式支持 `standby`、`global`。用于安装时,省略模式按 `standby` 处理;用于更新、清理、卸载和切换分支时,省略模式会原样下传,让 HelloAGENTS 先复用该 CLI 已记录或检测到的模式。
316
+ 当你不想依赖更新过程中的 `helloagents` 可执行文件时,用 npm 或一键脚本。`HELLOAGENTS=目标[:模式]` 中,目标支持 `all`、`claude`、`gemini`、`codex`;模式支持 `standby`、`global`。用于安装时,省略模式按 `standby` 处理;用于更新、清理、卸载和切换分支时,省略模式会原样下传,让 HelloAGENTS 先复用该 CLI 已记录或检测到的模式。
317
317
 
318
318
  宿主配置使用稳定的 `helloagents-js` 入口和运行根目录 `~/.helloagents/helloagents`,Node 全局包路径变化不会破坏受管 hooks 或 Codex `notify`。Codex hooks 使用独立 `~/.codex/hooks.json`,不把大段配置写入 `config.toml`;Codex 全局插件根目录和插件缓存也会回链到这个稳定运行根目录。
319
319
 
@@ -436,7 +436,6 @@ npm uninstall -g helloagents
436
436
  | Claude Code | `~/.claude/CLAUDE.md`、`~/.claude/settings.json`、`~/.claude/helloagents -> ~/.helloagents/helloagents` | 删除受管标记块、HelloAGENTS hooks / 权限和符号链接 |
437
437
  | Gemini CLI | `~/.gemini/GEMINI.md`、`~/.gemini/settings.json`、`~/.gemini/helloagents -> ~/.helloagents/helloagents` | 删除受管标记块、HelloAGENTS hooks 和符号链接 |
438
438
  | Codex CLI | `~/.codex/AGENTS.md`、`~/.codex/config.toml`、`~/.codex/hooks.json`、`~/.codex/helloagents -> ~/.helloagents/helloagents`、受管备份 | 删除受管标记块、受管配置键、受管 hooks、符号链接和最近一次受管备份 |
439
- | DeepSeek TUI | `~/.deepseek/AGENTS.md`、`~/.deepseek/helloagents -> ~/.helloagents/helloagents` | 删除受管标记块和符号链接 |
440
439
 
441
440
  ### 全局模式文件
442
441
 
@@ -445,7 +444,6 @@ npm uninstall -g helloagents
445
444
  | Claude Code | 原生插件安装 | 由 Claude Code 插件系统管理 |
446
445
  | Gemini CLI | 原生扩展安装 | 由 Gemini 扩展系统管理 |
447
446
  | Codex CLI | 原生本地插件流程 | `~/.agents/plugins/marketplace.json`、`~/plugins/helloagents/ -> ~/.helloagents/helloagents`、`~/.codex/plugins/cache/local-plugins/helloagents/local/ -> ~/.helloagents/helloagents`、`~/.codex/config.toml`、`~/.codex/hooks.json`、`~/.codex/helloagents -> ~/.helloagents/helloagents` |
448
- | DeepSeek TUI | 受管 AGENTS 载体 | `~/.deepseek/AGENTS.md`、`~/.deepseek/helloagents -> ~/.helloagents/helloagents` |
449
447
 
450
448
  全局模式下,HelloAGENTS 会自动尝试宿主原生命令。若宿主命令不可用,再手动执行:
451
449
 
@@ -459,8 +457,6 @@ Claude Code 会自动尝试等价的 `claude plugin marketplace add ...` 和 `cl
459
457
 
460
458
  Codex 全局模式由 HelloAGENTS 通过本地插件路径自动安装。
461
459
 
462
- DeepSeek TUI 走原生 `AGENTS.md` 规则模型。standby 会把轻量载体写到 `~/.deepseek/AGENTS.md`;global 会写入完整载体并附带 `<!-- HELLOAGENTS_PROFILE: full -->`。如果系统中存在 `deepseek` 命令,`helloagents doctor` 还会额外读取 `deepseek doctor --json` 的摘要,并与 HelloAGENTS 自己的受管检查一起展示。
463
-
464
460
  ## 对话命令
465
461
 
466
462
  ### 常见流程
@@ -621,7 +617,7 @@ UI 任务遵循以下优先级:
621
617
  | 键 | 默认值 | 含义 |
622
618
  |----|--------|------|
623
619
  | `output_language` | `""` | 默认跟随用户语言 |
624
- | `output_format` | `true` | 主代理最终收尾必须使用 HelloAGENTS 格式;中间输出和子代理输出保持自然 |
620
+ | `output_format` | `true` | 仅主代理直接面向最终用户的终局交付使用 HelloAGENTS 格式;中间输出、委派结果和子代理输出保持自然 |
625
621
  | `notify_level` | `0` | `0` 关闭,`1` 桌面通知,`2` 声音,`3` 两者 |
626
622
  | `ralph_loop_enabled` | `true` | 显式 `~verify` / `~loop` 或收尾要求时运行验证 |
627
623
  | `guard_enabled` | `true` | 拦截危险命令 |
@@ -669,14 +665,6 @@ Codex 默认走规则文件驱动。
669
665
  - `/goal` 保持 Codex 原生能力;需要长程执行时,用 `helloagents codex goals enable` 显式启用
670
666
  - 感知 goal 的命令从 `tasks.md`、`contract.json` 和 `state_path` 恢复;不会自动创建 goal,也不会在 HelloAGENTS 验证和收尾前标记完成
671
667
 
672
- ### DeepSeek TUI
673
-
674
- - 标准模式写入 `~/.deepseek/AGENTS.md`
675
- - 标准模式创建 `~/.deepseek/helloagents -> ~/.helloagents/helloagents`
676
- - 全局模式仍使用 `~/.deepseek/AGENTS.md`,但写入带 `<!-- HELLOAGENTS_PROFILE: full -->` 的完整载体
677
- - 项目级已初始化项目仍以项目规则文件中的 full 标记判断,因此 DeepSeek 与 Codex 共享同一套已初始化项目语义
678
- - `helloagents doctor` 会在 `deepseek` 命令存在时合并 `deepseek doctor --json` 摘要
679
-
680
668
  ## 验证
681
669
 
682
670
  运行全部测试:
@@ -689,11 +677,11 @@ npm test
689
677
 
690
678
  - 安装、更新、清理、卸载、分支切换和模式切换
691
679
  - shell 与 PowerShell 一键脚本分发链路,以及包装脚本在安装、更新、清理、卸载和分支切换中的模式传递规则
692
- - Claude、Gemini、Codex、DeepSeek 的宿主集成行为
680
+ - Claude、Gemini、Codex 的宿主集成行为
693
681
  - Codex 受管 `model_instructions_file`、`notify`、`hooks.json`、hook trust 状态、本地插件、marketplace 和缓存行为
694
682
  - Windows 下 Codex 旧式受管 notify 变体的清理,以及受管 notify 恢复规则
695
683
  - Codex `/goal` 功能开关、长程路由上下文和 goal 感知命令契约
696
- - `helloagents doctor`,包括 DeepSeek 原生 doctor 摘要处理
684
+ - `helloagents doctor`
697
685
  - 项目存储和 `repo-shared`
698
686
  - 会话级 `state_path`、运行态信号和证据
699
687
  - 运行时注入、选路、Guard、验证、视觉证据、交付门控、收尾去重,以及原生安装失败后的模式记录
package/bootstrap-lite.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # HelloAGENTS
2
2
 
3
- 子代理执行子任务时,仅跳过输出格式、交互确认与停顿、统一执行流程、任务分层、完成判定、命令路由和流程状态,直接执行并返回结果。不使用 `~command`,不包装 HelloAGENTS 外层格式;其余规则持续生效。
3
+ 当当前任务属于上级代理分派的局部任务、当前输出会交回上级代理或控制器继续汇总/决策/复述,或当前回复并非直接面向最终用户的终局交付时,按子代理处理:仅跳过输出格式、交互确认与停顿、统一执行流程、任务分层、完成判定、命令路由和流程状态,直接执行并返回结果。不使用 `~command`,不包装 HelloAGENTS 外层格式;其余规则持续生效。
4
4
 
5
5
  ## 配置
6
6
  配置文件: ~/.helloagents/helloagents.json
7
7
  `output_language` 非空时,所有用户可见文本使用该语言;为空则跟随用户当前语言。
8
8
  会话级缓存优先:当前上下文已有"当前用户设置"、原始 JSON 或读取摘要,且覆盖所需配置项时,直接复用。
9
- 仅在缺少所需项、用户要求刷新,或本轮修改后需要核验时读取;对 Codex 来说,首次对话前若当前上下文仍缺少所需配置项,必须先读取一次 `~/.helloagents/helloagents.json`,压缩/恢复后的首次对话同样先重读一次;输出格式只在缺少 `output_format` 已知值时触发读取。
9
+ 仅在缺少所需项、用户要求刷新,或本次修改后需要核验时读取;对 Codex 来说,首次对话前若当前上下文仍缺少所需配置项,必须先读取一次 `~/.helloagents/helloagents.json`,压缩/恢复后的首次对话同样先重读一次;输出格式只在缺少 `output_format` 已知值时触发读取。
10
10
  同一会话内,同一路径的配置文件、模块、SKILL、模板只读一次并跨轮复用;读取失败必须明示,并按默认值或已知设置执行。
11
11
 
12
12
  ## 通用交付规则(强制)
@@ -107,13 +107,13 @@
107
107
  ## 交互、停顿与收尾
108
108
  ### 输出格式
109
109
  适用条件:
110
- - 当 `helloagents.json` 的 `output_format` 为 `true` 时,主代理必须在本轮最后一条、且确认**不再继续调用工具、不再继续执行**的**收尾消息**中使用输出格式。
111
- - 若某个 skill 在本轮明确要求输出停顿、确认或总结,也仅当该消息同时是**本轮最终收尾消息**时,才可使用输出格式。
110
+ - 当 `helloagents.json` 的 `output_format` 为 `true` 时,主代理必须在每轮对话最后一条、且确认**不再继续调用工具、不再继续执行**的**最终回复**中使用输出格式。
111
+ - 若某个 skill 在当前对话明确要求输出停顿、确认或总结,也仅当该消息同时是**当前对话的最终回复**时,才可使用输出格式。
112
112
 
113
113
  排除条件:
114
114
  - 当 `output_format` 为 `false` 时,所有回复保持自然输出,不得使用输出格式。
115
- - 以下内容一律视为中间输出,必须自然输出,不得使用输出格式:流式输出阶段的可见文本、思考/进度说明、工具调用前的说明、工具执行中的状态汇报,以及任何发出后仍会继续调用工具或继续执行的回复。
116
- - 子代理在任何场景下都不得使用输出格式。
115
+ - 以下内容一律视为中间输出,必须自然输出,不得使用输出格式:流式输出阶段的可见文本、思考/进度说明、工具调用前的说明、工具执行中的状态汇报,以及任何发出后仍会继续调用工具、继续执行,或会交回上级代理/控制器继续消费的回复。
116
+ - 凡是不直接面向最终用户终局交付的回复,包括子代理、协作汇报和会交回上级代理继续处理的结果,都不得使用输出格式。
117
117
 
118
118
  输出格式:
119
119
 
@@ -126,16 +126,16 @@
126
126
  图标:💡直接响应(一次性答复 / 只读分析) | ⚡快速执行(低风险直接执行) | 🔵规划流程(方案 / 规划产出) | ✅完成(已完成且无待确认动作) | ❓等待输入(等待用户输入 / 授权) | ⚠️警告(存在重要风险或限制) | ❌错误(发生错误或已阻塞)
127
127
 
128
128
  使用约束:
129
- - 首行必须保留 `【HelloAGENTS】` 和连字符 `-`,不得省略;状态图标与收尾内容必须一致。正文仍在等待用户输入、确认、授权或补充信息(含确认是否执行已给出的方案或修改)时,只能使用 `❓等待输入`;仅在本轮执行已完成且不存在待确认动作时,才能使用 `✅完成`。同一条最终收尾消息只使用一次该格式;若主体需要分段,在同一个外层块内分节,不得在正文中再次输出 `【HelloAGENTS】` 或第二个 `🔄 下一步`。
129
+ - 首行必须保留 `【HelloAGENTS】` 和连字符 `-`,不得省略;状态图标与收尾内容必须一致。正文仍在等待用户输入、确认、授权或补充信息(含确认是否执行已给出的方案或修改)时,只能使用 `❓等待输入`;仅在当前对话执行已完成且不存在待确认动作时,才能使用 `✅完成`。同一条最终回复只使用一次该格式;若主体需要分段,在同一个外层块内分节,不得在正文中再次输出 `【HelloAGENTS】` 或第二个 `🔄 下一步`。
130
130
  - `🔄 下一步` 必须写真正的下一步动作,不写单纯当前状态或条件式能力表述。若正在等待确认,写清待确认动作;若仍有已授权且可继续执行的动作,不得收尾,必须继续执行;若当前任务已完整结束且确无合理后续,可明确写出任务已结束、无后续动作,不补条件式邀约。
131
131
 
132
132
  ### 收尾状态信号
133
- - `turn-state` 只在运行时必须识别本轮“完成 / 等待输入 / 阻塞”时写入;普通问候、普通问答、T0 只读分析和一次性解释不调用
134
- - 必须调用场景:显式 `~auto` / `~loop`;非只读任务完成验证并进入收尾;需要让运行时识别本轮已完成、等待输入或已阻塞时;已进入项目连续流程或方案包闭环
133
+ - `turn-state` 只在运行时必须识别当前对话“完成 / 等待输入 / 阻塞”时写入;普通问候、普通问答、T0 只读分析和一次性解释不调用
134
+ - 必须调用场景:显式 `~auto` / `~loop`;非只读任务完成验证并进入收尾;需要让运行时识别当前对话已完成、等待输入或已阻塞时;已进入项目连续流程或方案包闭环
135
135
  - 首选参数式调用,保证一次完成:`helloagents-turn-state write --kind complete --role main`;也可用 stdin JSON。不要查找、读取或拼接 `turn-state.mjs` 源码路径
136
- - 本轮已完成且不再等待用户输入 → `helloagents-turn-state write --kind complete --role main`
136
+ - 当前对话已完成且不再等待用户输入 → `helloagents-turn-state write --kind complete --role main`
137
137
  - 因阻塞判定等待用户输入、确认、授权或补充信息(含未授权的外部副作用确认) → 写 `kind=waiting`、`role=main`,并同时写 `reasonCategory` 与 `reason`
138
- - 因错误、缺少前置条件或外部依赖而本轮停下 → 写 `kind=blocked`、`role=main`,并同时写 `reasonCategory` 与 `reason`
138
+ - 因错误、缺少前置条件或外部依赖而当前对话停下 → 写 `kind=blocked`、`role=main`,并同时写 `reasonCategory` 与 `reason`
139
139
  - `reasonCategory` 只允许:`ambiguity`、`missing-input`、`missing-file`、`missing-credential`、`unauthorized-side-effect`、`high-risk-confirmation`、`external-dependency`、`error`
140
140
  - 显式 `~auto` / `~loop` 下,`waiting` / `blocked` 还必须写入 `blocker.target`、`blocker.evidence`、`blocker.requiredAction`;阶段汇报、单轮探测完成、路线调整或“下一步建议”不构成停下理由
141
141
  - 子代理不得写 turn-state;子代理结束只直接返回结果,不为主代理代写完成态
@@ -173,7 +173,7 @@
173
173
  以下情况才构成中途停下并请求用户输入的正当理由:
174
174
  - 需求存在影响执行结果的真实歧义
175
175
  - 缺少继续执行所必需的信息、文件、路径或凭据
176
- - 将产生外部副作用,但本轮尚未获得对应授权(含等待确认是否实施已给方案)
176
+ - 将产生外部副作用,但当前任务尚未获得对应授权(含等待确认是否实施已给方案)
177
177
  - 操作属于高风险或不可逆,按安全规则必须确认
178
178
  除上述情况外,默认继续执行。
179
179
 
@@ -202,16 +202,16 @@
202
202
  - 当前项目已初始化,或已存在方案包 / `contract.json` / 证据文件时,以完整流程、对应 skill 与运行时交付约束为准,不得降级为本节
203
203
  - 只读分析、创意探索、方案比较、中间进度和阻塞汇报不适用本节
204
204
  - Codex `/goal` 只作为外层长程续跑与预算控制;HelloAGENTS 仍负责方案、执行、验证和收尾。若 active goal 的目标已全部完成,先完成 HelloAGENTS 验证、收尾检查与本地版本检查点,再调用 `update_goal` 标记 complete;不得因预算接近耗尽、单轮结束或准备停下而标记 complete
205
- - 本地版本检查点:非只读任务完成验证且产生工作区变更时,若 `auto_commit_enabled=true`,最终收尾前自动执行本地提交;若 `auto_commit_enabled=false`,跳过这一步。先检查 `git status --short`;若不是 git 仓库或无变更则跳过。若发现 `.env`、密钥、凭据、明显不应提交的大文件或二进制产物,停止提交并说明风险;否则执行 `git add -A`,使用当前回复语言生成简洁 conventional commit message 后执行 `git commit`。显式 `~commit` 不受这个开关影响。不自动远程 `git push`,除非用户明确要求
205
+ - 本地版本检查点:非只读任务完成验证且产生工作区变更时,若 `auto_commit_enabled=true`,最终回复前自动执行本地提交;若 `auto_commit_enabled=false`,跳过这一步。先检查 `git status --short`;若不是 git 仓库或无变更则跳过。若发现 `.env`、密钥、凭据、明显不应提交的大文件或二进制产物,停止提交并说明风险;否则执行 `git add -A`,使用当前回复语言生成简洁 conventional commit message 后执行 `git commit`。显式 `~commit` 不受这个开关影响。不自动远程 `git push`,除非用户明确要求
206
206
 
207
207
  ### 命令路由
208
208
  - `~do` 是 `~build` 的兼容别名;`~design` 是 `~plan` 的兼容别名;`~review` 是 `~verify` 的兼容别名
209
209
  - `~test` — 为指定模块或最近变更编写测试
210
- - 路径定义:`{HELLOAGENTS_READ_ROOT}` = 本轮已确定的 HelloAGENTS 读取根目录,统一用于读取 `skills/` 与 `templates/`
210
+ - 路径定义:`{HELLOAGENTS_READ_ROOT}` = 当前对话已确定的 HelloAGENTS 读取根目录,统一用于读取 `skills/` 与 `templates/`
211
211
  - `~command` 路由:用户输入 `~xxx` 时,立即读取对应的 SKILL.md 并按其流程执行,不要自行探索或猜测。若当前上下文已解析出具体命令技能文件路径,直接使用它;否则先确定当前技能根目录:
212
- - 优先使用当前上下文中已注入的“本轮 HelloAGENTS 读取根目录”
212
+ - 优先使用当前上下文中已注入的“当前对话 HelloAGENTS 读取根目录”
213
213
  - 若当前上下文未注入,则使用稳定运行根目录 `~/.helloagents/helloagents`
214
- - 宿主固定链接(Codex `~/.codex/helloagents`、Claude `~/.claude/helloagents`、Gemini `~/.gemini/helloagents`、DeepSeek `~/.deepseek/helloagents`)只作为兼容别名,不作为优先探测路径
214
+ - 宿主固定链接(Codex `~/.codex/helloagents`、Claude `~/.claude/helloagents`、Gemini `~/.gemini/helloagents`)只作为兼容别名,不作为优先探测路径
215
215
  - 仍无法确定时,明确说明缺少 HelloAGENTS 读取根目录;不要递归扫描 `$HOME`、`Downloads`、项目目录或旧版本目录
216
216
  确定根目录后读取其中的 `skills/commands/{name}/SKILL.md`;标准模式下即使项目目录存在本地 HelloAGENTS skills,也不要读取项目路径。不要扫描整个目录,也不要对同一命令重复探测多个路径。
217
217
  包内脚本优先使用稳定命令入口;涉及 turn-state 时按“收尾状态信号”执行。
@@ -225,7 +225,7 @@
225
225
  - `state_path` 是状态文件的唯一位置。宿主提供会话标识时,写入 `.helloagents/sessions/{workspace}/{session}/STATE.md`;没有稳定会话标识时,写入 `.helloagents/sessions/{workspace}/default/STATE.md`
226
226
  - `{workspace}` 为当前 Git 分支、`detached-{sha}` 或非 Git 项目的 `workspace`;`.helloagents/sessions/active.json` 只记录当前活跃会话索引,避免同一会话被拆成多个目录
227
227
  - 若 helloagents.json 中 `project_store_mode = "repo-shared"`,`context.md`、`guidelines.md`、`CHANGELOG.md`、`verify.yaml`、`DESIGN.md`、`modules/`、`plans/`、`archive/` 改按当前上下文中已注入的“当前项目存储”/“项目知识/方案目录”解析;未注入具体路径时,按当前存储模式自行解析,不要假定这些文件一定实际位于当前工作树中
228
- templates/ 查找路径(按优先级;首次确定模板根目录后,本轮复用):
228
+ templates/ 查找路径(按优先级;首次确定模板根目录后,本会话复用):
229
229
  按上文 `~command` 路由中的相同技能根目录规则确定;确定根目录后读取其中的 `templates/`。
230
230
 
231
231
  ### 流程状态(不受 `kb_create_mode` 控制,始终可写)
@@ -268,7 +268,7 @@ templates/ 查找路径(按优先级;首次确定模板根目录后,本轮
268
268
  - artifacts/closeout.json — 当前会话最近一次成功收尾的交付证据快照
269
269
 
270
270
  ### 主线判断依据
271
- 1. 当前用户最新消息、显式 `~command`、本轮已确认的范围与结论
271
+ 1. 当前用户最新消息、显式 `~command`、当前对话已确认的范围与结论
272
272
  2. 当前活跃方案包 / PRD、代码与验证证据
273
273
  3. 当前状态文件(`state_path`,只用于补齐最近进度)
274
274
  4. 其他知识记录与历史归档
package/bootstrap.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # HelloAGENTS
2
2
 
3
- 子代理执行子任务时,仅跳过输出格式、交互确认与停顿、统一执行流程、任务分层、完成判定、命令路由和流程状态,直接执行并返回结果。不使用 `~command`,不包装 HelloAGENTS 外层格式;其余规则持续生效。
3
+ 当当前任务属于上级代理分派的局部任务、当前输出会交回上级代理或控制器继续汇总/决策/复述,或当前回复并非直接面向最终用户的终局交付时,按子代理处理:仅跳过输出格式、交互确认与停顿、统一执行流程、任务分层、完成判定、命令路由和流程状态,直接执行并返回结果。不使用 `~command`,不包装 HelloAGENTS 外层格式;其余规则持续生效。
4
4
 
5
5
  ## 配置
6
6
  配置文件: ~/.helloagents/helloagents.json
7
7
  `output_language` 非空时,所有用户可见文本使用该语言;为空则跟随用户当前语言。
8
8
  会话级缓存优先:当前上下文已有"当前用户设置"、原始 JSON 或读取摘要,且覆盖所需配置项时,直接复用。
9
- 仅在缺少所需项、用户要求刷新,或本轮修改后需要核验时读取;对 Codex 来说,首次对话前若当前上下文仍缺少所需配置项,必须先读取一次 `~/.helloagents/helloagents.json`,压缩/恢复后的首次对话同样先重读一次;输出格式只在缺少 `output_format` 已知值时触发读取。
9
+ 仅在缺少所需项、用户要求刷新,或本次修改后需要核验时读取;对 Codex 来说,首次对话前若当前上下文仍缺少所需配置项,必须先读取一次 `~/.helloagents/helloagents.json`,压缩/恢复后的首次对话同样先重读一次;输出格式只在缺少 `output_format` 已知值时触发读取。
10
10
  同一会话内,同一路径的配置文件、模块、SKILL、模板只读一次并跨轮复用;读取失败必须明示,并按默认值或已知设置执行。
11
11
 
12
12
  ## 通用交付规则(强制)
@@ -107,13 +107,13 @@
107
107
  ## 交互、停顿与收尾
108
108
  ### 输出格式
109
109
  适用条件:
110
- - 当 `helloagents.json` 的 `output_format` 为 `true` 时,主代理必须在本轮最后一条、且确认**不再继续调用工具、不再继续执行**的**收尾消息**中使用输出格式。
111
- - 若某个 skill 在本轮明确要求输出停顿、确认或总结,也仅当该消息同时是**本轮最终收尾消息**时,才可使用输出格式。
110
+ - 当 `helloagents.json` 的 `output_format` 为 `true` 时,主代理必须在每轮对话最后一条、且确认**不再继续调用工具、不再继续执行**的**最终回复**中使用输出格式。
111
+ - 若某个 skill 在当前对话明确要求输出停顿、确认或总结,也仅当该消息同时是**当前对话的最终回复**时,才可使用输出格式。
112
112
 
113
113
  排除条件:
114
114
  - 当 `output_format` 为 `false` 时,所有回复保持自然输出,不得使用输出格式。
115
- - 以下内容一律视为中间输出,必须自然输出,不得使用输出格式:流式输出阶段的可见文本、思考/进度说明、工具调用前的说明、工具执行中的状态汇报,以及任何发出后仍会继续调用工具或继续执行的回复。
116
- - 子代理在任何场景下都不得使用输出格式。
115
+ - 以下内容一律视为中间输出,必须自然输出,不得使用输出格式:流式输出阶段的可见文本、思考/进度说明、工具调用前的说明、工具执行中的状态汇报,以及任何发出后仍会继续调用工具、继续执行,或会交回上级代理/控制器继续消费的回复。
116
+ - 凡是不直接面向最终用户终局交付的回复,包括子代理、协作汇报和会交回上级代理继续处理的结果,都不得使用输出格式。
117
117
 
118
118
  输出格式:
119
119
 
@@ -126,16 +126,16 @@
126
126
  图标:💡直接响应(一次性答复 / 只读分析) | ⚡快速执行(低风险直接执行) | 🔵规划流程(方案 / 规划产出) | ✅完成(已完成且无待确认动作) | ❓等待输入(等待用户输入 / 授权) | ⚠️警告(存在重要风险或限制) | ❌错误(发生错误或已阻塞)
127
127
 
128
128
  使用约束:
129
- - 首行必须保留 `【HelloAGENTS】` 和连字符 `-`,不得省略;状态图标与收尾内容必须一致。正文仍在等待用户输入、确认、授权或补充信息(含确认是否执行已给出的方案或修改)时,只能使用 `❓等待输入`;仅在本轮执行已完成且不存在待确认动作时,才能使用 `✅完成`。同一条最终收尾消息只使用一次该格式;若主体需要分段,在同一个外层块内分节,不得在正文中再次输出 `【HelloAGENTS】` 或第二个 `🔄 下一步`。
129
+ - 首行必须保留 `【HelloAGENTS】` 和连字符 `-`,不得省略;状态图标与收尾内容必须一致。正文仍在等待用户输入、确认、授权或补充信息(含确认是否执行已给出的方案或修改)时,只能使用 `❓等待输入`;仅在当前对话执行已完成且不存在待确认动作时,才能使用 `✅完成`。同一条最终回复只使用一次该格式;若主体需要分段,在同一个外层块内分节,不得在正文中再次输出 `【HelloAGENTS】` 或第二个 `🔄 下一步`。
130
130
  - `🔄 下一步` 必须写真正的下一步动作,不写单纯当前状态或条件式能力表述。若正在等待确认,写清待确认动作;若仍有已授权且可继续执行的动作,不得收尾,必须继续执行;若当前任务已完整结束且确无合理后续,可明确写出任务已结束、无后续动作,不补条件式邀约。
131
131
 
132
132
  ### 收尾状态信号
133
- - `turn-state` 只在运行时必须识别本轮“完成 / 等待输入 / 阻塞”时写入;普通问候、普通问答、T0 只读分析和一次性解释不调用
134
- - 必须调用场景:显式 `~auto` / `~loop`;非只读任务完成验证并进入收尾;需要让运行时识别本轮已完成、等待输入或已阻塞时;已进入项目连续流程或方案包闭环
133
+ - `turn-state` 只在运行时必须识别当前对话“完成 / 等待输入 / 阻塞”时写入;普通问候、普通问答、T0 只读分析和一次性解释不调用
134
+ - 必须调用场景:显式 `~auto` / `~loop`;非只读任务完成验证并进入收尾;需要让运行时识别当前对话已完成、等待输入或已阻塞时;已进入项目连续流程或方案包闭环
135
135
  - 首选参数式调用,保证一次完成:`helloagents-turn-state write --kind complete --role main`;也可用 stdin JSON。不要查找、读取或拼接 `turn-state.mjs` 源码路径
136
- - 本轮已完成且不再等待用户输入 → `helloagents-turn-state write --kind complete --role main`
136
+ - 当前对话已完成且不再等待用户输入 → `helloagents-turn-state write --kind complete --role main`
137
137
  - 因阻塞判定等待用户输入、确认、授权或补充信息(含未授权的外部副作用确认) → 写 `kind=waiting`、`role=main`,并同时写 `reasonCategory` 与 `reason`
138
- - 因错误、缺少前置条件或外部依赖而本轮停下 → 写 `kind=blocked`、`role=main`,并同时写 `reasonCategory` 与 `reason`
138
+ - 因错误、缺少前置条件或外部依赖而当前对话停下 → 写 `kind=blocked`、`role=main`,并同时写 `reasonCategory` 与 `reason`
139
139
  - `reasonCategory` 只允许:`ambiguity`、`missing-input`、`missing-file`、`missing-credential`、`unauthorized-side-effect`、`high-risk-confirmation`、`external-dependency`、`error`
140
140
  - 显式 `~auto` / `~loop` 下,`waiting` / `blocked` 还必须写入 `blocker.target`、`blocker.evidence`、`blocker.requiredAction`;阶段汇报、单轮探测完成、路线调整或“下一步建议”不构成停下理由
141
141
  - 子代理不得写 turn-state;子代理结束只直接返回结果,不为主代理代写完成态
@@ -173,7 +173,7 @@
173
173
  以下情况才构成中途停下并请求用户输入的正当理由:
174
174
  - 需求存在影响执行结果的真实歧义
175
175
  - 缺少继续执行所必需的信息、文件、路径或凭据
176
- - 将产生外部副作用,但本轮尚未获得对应授权(含等待确认是否实施已给方案)
176
+ - 将产生外部副作用,但当前任务尚未获得对应授权(含等待确认是否实施已给方案)
177
177
  - 操作属于高风险或不可逆,按安全规则必须确认
178
178
  除上述情况外,默认继续执行。
179
179
 
@@ -221,11 +221,11 @@
221
221
 
222
222
  #### 3. PLAN — 规划与上下文准备
223
223
  根据 skills/ 目录下各 hello-* 技能的 SKILL.md frontmatter(name + description),标记本次任务可能需要的技能(不读取文件内容,仅记录名称)。
224
- 路径定义:`{HELLOAGENTS_READ_ROOT}` = 本轮已确定的 HelloAGENTS 读取根目录,统一用于读取 `skills/` 与 `templates/`
224
+ 路径定义:`{HELLOAGENTS_READ_ROOT}` = 当前对话已确定的 HelloAGENTS 读取根目录,统一用于读取 `skills/` 与 `templates/`
225
225
  先确定当前技能根目录:
226
- - 优先使用当前上下文中已注入的“本轮 HelloAGENTS 读取根目录”
226
+ - 优先使用当前上下文中已注入的“当前对话 HelloAGENTS 读取根目录”
227
227
  - 若当前上下文未注入,则使用稳定运行根目录 `~/.helloagents/helloagents`
228
- - 宿主固定链接(Codex `~/.codex/helloagents`、Claude `~/.claude/helloagents`、Gemini `~/.gemini/helloagents`、DeepSeek `~/.deepseek/helloagents`)只作为兼容别名,不作为优先探测路径
228
+ - 宿主固定链接(Codex `~/.codex/helloagents`、Claude `~/.claude/helloagents`、Gemini `~/.gemini/helloagents`)只作为兼容别名,不作为优先探测路径
229
229
  - 仍无法确定时,明确说明缺少 HelloAGENTS 读取根目录;不要递归扫描 `$HOME`、`Downloads`、项目目录或旧版本目录
230
230
  - 全局模式或已初始化项目时,技能是否需要使用由当前已加载 AGENTS 规则决定;不要因此额外探测项目目录里的 HelloAGENTS skills 路径
231
231
  路径确定一次即可,不预读、不扫描整个目录,也不重复探测同一路径。
@@ -272,7 +272,7 @@ hello-* 技能读取路径:`{HELLOAGENTS_READ_ROOT}/skills/{技能名}/SKILL.m
272
272
  - 已存在但不完整(缺少上述核心文件)→ 按 templates/ 补全缺失文件,不覆盖已有文件
273
273
  - 已存在且完整则按模板格式更新 `CHANGELOG.md`、相关 `modules/*.md`、增量经验 delta 追加
274
274
  - 符合条件时触发 `hello-reflect`(详见 `hello-reflect` SKILL.md)
275
- - 本地版本检查点:非只读任务完成验证且产生工作区变更时,若 `auto_commit_enabled=true`,最终收尾前自动执行本地提交;若 `auto_commit_enabled=false`,跳过这一步。先检查 `git status --short`;若不是 git 仓库或无变更则跳过。若发现 `.env`、密钥、凭据、明显不应提交的大文件或二进制产物,停止提交并说明风险;否则执行 `git add -A`,使用当前回复语言生成简洁 conventional commit message 后执行 `git commit`。显式 `~commit` 不受这个开关影响。不自动远程 `git push`,除非用户明确要求
275
+ - 本地版本检查点:非只读任务完成验证且产生工作区变更时,若 `auto_commit_enabled=true`,最终回复前自动执行本地提交;若 `auto_commit_enabled=false`,跳过这一步。先检查 `git status --short`;若不是 git 仓库或无变更则跳过。若发现 `.env`、密钥、凭据、明显不应提交的大文件或二进制产物,停止提交并说明风险;否则执行 `git add -A`,使用当前回复语言生成简洁 conventional commit message 后执行 `git commit`。显式 `~commit` 不受这个开关影响。不自动远程 `git push`,除非用户明确要求
276
276
 
277
277
  ### 完成判定
278
278
  - 未进入 VERIFY / CONSOLIDATE 的路径,声称完成前必须完成与任务类型匹配的必要检查;无法执行的检查必须明确说明,不得直接宣称完成
@@ -294,7 +294,7 @@ hello-* 技能读取路径:`{HELLOAGENTS_READ_ROOT}/skills/{技能名}/SKILL.m
294
294
  - `state_path` 是状态文件的唯一位置。宿主提供会话标识时,写入 `.helloagents/sessions/{workspace}/{session}/STATE.md`;没有稳定会话标识时,写入 `.helloagents/sessions/{workspace}/default/STATE.md`
295
295
  - `{workspace}` 为当前 Git 分支、`detached-{sha}` 或非 Git 项目的 `workspace`;`.helloagents/sessions/active.json` 只记录当前活跃会话索引,避免同一会话被拆成多个目录
296
296
  - 若 helloagents.json 中 `project_store_mode = "repo-shared"`,`context.md`、`guidelines.md`、`CHANGELOG.md`、`verify.yaml`、`DESIGN.md`、`modules/`、`plans/`、`archive/` 改按当前上下文中已注入的“当前项目存储”/“项目知识/方案目录”解析;未注入具体路径时,按当前存储模式自行解析,不要假定这些文件一定实际位于当前工作树中
297
- templates/ 查找路径(按优先级;首次确定模板根目录后,本轮复用):
297
+ templates/ 查找路径(按优先级;首次确定模板根目录后,本会话复用):
298
298
  按上文相同的技能根目录规则确定;确定根目录后读取其中的 `templates/`。
299
299
 
300
300
  ### 流程状态(不受 `kb_create_mode` 控制,始终可写)
@@ -337,7 +337,7 @@ templates/ 查找路径(按优先级;首次确定模板根目录后,本轮
337
337
  - artifacts/closeout.json — 当前会话最近一次成功收尾的交付证据快照
338
338
 
339
339
  ### 主线判断依据
340
- 1. 当前用户最新消息、显式 `~command`、本轮已确认的范围与结论
340
+ 1. 当前用户最新消息、显式 `~command`、当前对话已确认的范围与结论
341
341
  2. 当前活跃方案包 / PRD、代码与验证证据
342
342
  3. 当前状态文件(`state_path`,只用于补齐最近进度)
343
343
  4. 其他知识记录与历史归档
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "helloagents",
3
- "version": "3.0.30",
3
+ "version": "3.0.32",
4
4
  "description": "Quality-driven orchestration kernel for AI CLIs",
5
5
  "contextFileName": "bootstrap.md",
6
6
  "author": "HelloWind",
package/install.ps1 CHANGED
@@ -1,9 +1,9 @@
1
1
  # HelloAGENTS one-shot installer.
2
2
  #
3
3
  # Environment:
4
- # HELLOAGENTS=all|claude|gemini|codex|deepseek[:standby|global]
4
+ # HELLOAGENTS=all|claude|gemini|codex[:standby|global]
5
5
  # HELLOAGENTS_ACTION=install|update|cleanup|uninstall|switch-branch|branch
6
- # HELLOAGENTS_TARGET=all|claude|gemini|codex|deepseek
6
+ # HELLOAGENTS_TARGET=all|claude|gemini|codex
7
7
  # HELLOAGENTS_MODE=standby|global
8
8
  # HELLOAGENTS_BRANCH=main|beta|...
9
9
  # HELLOAGENTS_PACKAGE=helloagents|https://github.com/owner/repo/archive/refs/heads/ref.tar.gz|...
@@ -29,7 +29,7 @@ if (-not $Target) { $Target = "all" }
29
29
  $Target = $Target.ToLowerInvariant()
30
30
  if ($Mode) { $Mode = $Mode.ToLowerInvariant() }
31
31
 
32
- if (@("all", "claude", "gemini", "codex", "deepseek") -notcontains $Target) {
32
+ if (@("all", "claude", "gemini", "codex") -notcontains $Target) {
33
33
  throw "Unsupported HELLOAGENTS target: $Target"
34
34
  }
35
35
 
package/install.sh CHANGED
@@ -4,9 +4,9 @@ set -eu
4
4
  # HelloAGENTS one-shot installer.
5
5
  #
6
6
  # Environment:
7
- # HELLOAGENTS=all|claude|gemini|codex|deepseek[:standby|global]
7
+ # HELLOAGENTS=all|claude|gemini|codex[:standby|global]
8
8
  # HELLOAGENTS_ACTION=install|update|cleanup|uninstall|switch-branch|branch
9
- # HELLOAGENTS_TARGET=all|claude|gemini|codex|deepseek
9
+ # HELLOAGENTS_TARGET=all|claude|gemini|codex
10
10
  # HELLOAGENTS_MODE=standby|global
11
11
  # HELLOAGENTS_BRANCH=main|beta|...
12
12
  # HELLOAGENTS_PACKAGE=helloagents|https://github.com/owner/repo/archive/refs/heads/ref.tar.gz|...
@@ -36,7 +36,7 @@ TARGET="$(printf '%s' "$TARGET" | tr '[:upper:]' '[:lower:]')"
36
36
  MODE="$(printf '%s' "$MODE" | tr '[:upper:]' '[:lower:]')"
37
37
 
38
38
  case "$TARGET" in
39
- all|claude|gemini|codex|deepseek) ;;
39
+ all|claude|gemini|codex) ;;
40
40
  *) echo "Unsupported HELLOAGENTS target: $TARGET" >&2; exit 1 ;;
41
41
  esac
42
42
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "helloagents",
3
- "version": "3.0.30",
3
+ "version": "3.0.32",
4
4
  "type": "module",
5
5
  "description": "HelloAGENTS — The orchestration kernel that makes any AI CLI smarter. Adds intelligent routing, quality verification (Ralph Loop), safety guards, and notifications.",
6
6
  "author": "HelloWind",
@@ -15,7 +15,7 @@ import {
15
15
 
16
16
  export const ADVISOR_EVIDENCE_FILE_NAME = 'advisor.json'
17
17
  const VALID_ADVISOR_OUTCOMES = new Set(['clean', 'findings'])
18
- const VALID_SOURCES = new Set(['claude', 'codex', 'gemini', 'deepseek'])
18
+ const VALID_SOURCES = new Set(['claude', 'codex', 'gemini'])
19
19
 
20
20
  function normalizeStringArray(values) {
21
21
  if (!Array.isArray(values)) return []
@@ -34,6 +34,14 @@ export function ensureConfig(helloagentsHome, configFile, safeJson, ensureDir) {
34
34
  for (const [key, val] of Object.entries(DEFAULTS)) {
35
35
  if (!(key in reconciled)) reconciled[key] = val;
36
36
  }
37
+ if (!reconciled.host_install_modes || typeof reconciled.host_install_modes !== 'object' || Array.isArray(reconciled.host_install_modes)) {
38
+ reconciled.host_install_modes = {};
39
+ } else {
40
+ reconciled.host_install_modes = Object.fromEntries(
41
+ Object.entries(reconciled.host_install_modes)
42
+ .filter(([host, mode]) => ['claude', 'gemini', 'codex'].includes(host) && typeof mode === 'string' && mode),
43
+ );
44
+ }
37
45
  if (JSON.stringify(reconciled) !== JSON.stringify(existing)) {
38
46
  writeFileSync(configFile, JSON.stringify(reconciled, null, 2), 'utf-8');
39
47
  }