helloagents 3.0.39 → 3.1.2

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.
@@ -117,6 +117,10 @@ export function removeTopLevelTomlBlock(text, key) {
117
117
  return normalizeToml(`${normalized.slice(0, existing.start)}${normalized.slice(existing.end)}`);
118
118
  }
119
119
 
120
+ export function hasTopLevelTomlBlock(text, key) {
121
+ return Boolean(findTopLevelTomlBlock(text, key));
122
+ }
123
+
120
124
  export function prependTopLevelTomlBlocks(text, blocks) {
121
125
  const normalizedBlocks = blocks
122
126
  .map((block) => String(block || '').trim())
package/scripts/guard.mjs CHANGED
@@ -88,7 +88,7 @@ function buildHighRiskGate(matches, cwd, payload = {}) {
88
88
  }
89
89
 
90
90
  function buildIdeaBoundaryReason(kind) {
91
- return `[HelloAGENTS Guard] 已阻止 ~idea 中的${kind}。\n当前路由:~idea 是只读探索;先停留在比较方案。若要写文件、改代码、创建知识库或执行有副作用的命令,请先升级到 ~plan / ~build / ~prd / ~auto。`
91
+ return `[HelloAGENTS Guard] 已阻止只读探索命令中的${kind}。\n当前路由:~idea / ~office 都是只读探索;先停留在比较或范围判断。若要写文件、改代码、创建知识库或执行有副作用的命令,请先升级到 ~plan / ~build / ~prd / ~auto。`
92
92
  }
93
93
 
94
94
  function detectIdeaBoundaryContext(data) {
@@ -116,7 +116,7 @@ function emitIdeaBoundaryBlock(data, kind, target) {
116
116
  {
117
117
  command: kind === '有副作用命令' ? target.replace(/^命令:\s*/, '') : '',
118
118
  target: kind === '写入操作' ? target.replace(/^目标:\s*/, '') : '',
119
- guardType: kind === '写入操作' ? 'idea-write-boundary' : 'idea-command-boundary',
119
+ guardType: kind === '写入操作' ? 'readonly-write-boundary' : 'readonly-command-boundary',
120
120
  },
121
121
  data,
122
122
  )
@@ -133,7 +133,7 @@ function buildPostWriteWarnings(data) {
133
133
  const filePath = data.tool_input?.file_path || ''
134
134
  return [
135
135
  ...(detectIdeaBoundaryContext(data)?.zeroSideEffect
136
- ? ['~idea 当前任务要求只读探索;检测到写入文件的工具调用,请回到探索输出,或升级到 ~plan / ~build / ~prd / ~auto 后再修改文件']
136
+ ? ['~idea / ~office 当前任务要求只读探索;检测到写入文件的工具调用,请回到探索输出,或升级到 ~plan / ~build / ~prd / ~auto 后再修改文件']
137
137
  : []),
138
138
  ...scanUnrequestedFiles(filePath, data.tool_name),
139
139
  ...(content ? [...scanForSecrets(content), ...scanDangerousPackages(content, filePath)] : []),
@@ -165,7 +165,7 @@ export function buildSemanticRouteInstruction(cwd, payload = {}) {
165
165
  '请根据用户请求的真实意图选路,不依赖关键词表。',
166
166
  buildDelegatedTaskHint(),
167
167
  'Delivery Tier: T0=探索/比较;T1=低风险小改动或显式验证;T2=多文件功能/新项目/需要结构化产物;T3=高风险或不可逆操作。',
168
- '路由映射:~idea=只读探索,不创建文件;~build=明确实现;~qa=统一质量审查/验证/修复/收尾;~plan=结构化规划;~prd=重型规格;~auto=自动选择并继续执行后续阶段。',
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 质量基线。`,
171
171
  projectStorageHint,
@@ -78,13 +78,13 @@ export function clearRouteContext(options = {}) {
78
78
  }
79
79
 
80
80
  export function writeRouteContext({ cwd, skillName, sourceSkillName = skillName, payload = {}, env, ppid }) {
81
- const shouldEnsureProjectLocal = skillName !== 'idea' && skillName !== 'help'
81
+ const shouldEnsureProjectLocal = skillName !== 'idea' && skillName !== 'office' && skillName !== 'help'
82
82
  const scope = getRuntimeScope(cwd, { payload, env, ppid, ensureProjectLocal: shouldEnsureProjectLocal })
83
83
  const context = {
84
84
  cwd: normalizePath(cwd),
85
85
  skillName,
86
86
  sourceSkillName,
87
- zeroSideEffect: skillName === 'idea',
87
+ zeroSideEffect: skillName === 'idea' || skillName === 'office',
88
88
  identity: extractPayloadIdentity(payload),
89
89
  source: routeSource(payload),
90
90
  promptHash: hashPrompt(payload.prompt),
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: ~auto
3
- description: 自动执行命令 — 自动选择并依次执行 ~idea / ~plan / ~build / ~qa / ~prd,默认持续推进直到交付完成(~auto 命令)
3
+ description: 自动执行命令 — 自动选择并依次执行 ~idea / ~office / ~plan / ~build / ~qa / ~prd,默认持续推进直到交付完成(~auto 命令)
4
4
  policy:
5
5
  allow_implicit_invocation: false
6
6
  ---
7
7
  Trigger: ~auto <任务描述>
8
8
 
9
- `~auto` 是自动执行命令。它根据任务类型、复杂度、风险等级与项目状态,在 `~idea`、`~plan`、`~build`、`~qa`、`~prd` 之间选择合适主路径,并连续推进。
9
+ `~auto` 是自动执行命令。它根据任务类型、复杂度、风险等级与项目状态,在 `~idea`、`~office`、`~plan`、`~build`、`~qa`、`~prd` 之间选择合适主路径,并连续推进。
10
10
  `~auto` 不止做一次选路;主路径一旦确定,就按需要继续执行后续阶段,默认持续推进直到完成交付,只有命中 HelloAGENTS 阻塞判定时才停下。
11
11
 
12
12
  ## 铁律
@@ -36,6 +36,7 @@ Trigger: ~auto <任务描述>
36
36
  - 若当前上下文没有足够的注入约束,再结合以下信号补足判断:影响范围、风险等级、是否需要结构化产物、是否已有活跃方案包、用户是否只想先比较方向
37
37
  - 选路优先级:
38
38
  - 纯探索 / 点子 / 方向比较 → `~idea`
39
+ - 值得做与否 / 范围收缩 / 先做多大仍不清楚 → `~office`
39
40
  - 明确要求质量审查 / 验真 / 跑检查 / 收尾 → `~qa`
40
41
  - 0 到 1 / 产品级 / 多维规格 → `~prd`
41
42
  - 多文件功能 / 架构变更 / 新项目规划 → `~plan`
@@ -43,7 +44,7 @@ Trigger: ~auto <任务描述>
43
44
 
44
45
  ### 2. 按 Tier 校正
45
46
 
46
- - `T0` → 保持在 `~idea`,不创建项目文件
47
+ - `T0` → `~idea` / `~office` 之间选择,不创建项目文件
47
48
  - `T1` → 在 `~build` / `~qa` 间选择最短可交付路径
48
49
  - `T2` → 需要结构化产物或范围未完全明确时优先 `~plan`
49
50
  - `T3` → 纯质量审查/验真走 `~qa`;其余默认 `~plan` 或 `~prd`,待方案与风险边界明确后再进入实现
@@ -51,6 +52,7 @@ Trigger: ~auto <任务描述>
51
52
  ### 3. 读取对应命令并执行主路径
52
53
 
53
54
  - 选中 `idea` → 读取 `skills/commands/idea/SKILL.md`
55
+ - 选中 `office` → 读取 `skills/commands/office/SKILL.md`
54
56
  - 选中 `plan` → 读取 `skills/commands/plan/SKILL.md`
55
57
  - 选中 `build` → 读取 `skills/commands/build/SKILL.md`
56
58
  - 选中 `qa` → 读取 `skills/commands/qa/SKILL.md`
@@ -65,6 +67,7 @@ Trigger: ~auto <任务描述>
65
67
  - 若主路径是 `~prd` → PRD / 任务 / 契约写入后,若当前任务来自 `~auto` 且未命中阻塞判定,按当前结果继续进入 `~build`,必要时先补一轮轻量 `~plan`
66
68
  - 若主路径是 `~qa` → 完成质量闭环 / 收尾后结束
67
69
  - 若主路径是 `~idea`,且用户本意就是探索/比较,则在探索输出后结束;若探索后已有明确方向且当前任务仍要求写文件或改代码,则继续进入 `~plan` 或 `~build`
70
+ - 若主路径是 `~office`,且用户本意就是先做价值/范围判断,则在评估输出后结束;若评估结论已经明确需要结构化方案或直接实现,则继续进入 `~plan` / `~build`
68
71
  - 若 Codex active goal 的目标已满足 → 仍先完成 `~qa` 与 HelloAGENTS 收尾,再标记 goal complete;未满足时继续下一项可执行 AFK 任务
69
72
 
70
73
  ### 5. 何时允许停下
@@ -12,6 +12,7 @@ Trigger: ~help
12
12
  | 命令 | 说明 |
13
13
  |------|------|
14
14
  | ~idea | 轻量点子探索与方向比较 |
15
+ | ~office | 价值与范围评估:先判断该不该做、该做多大、先做哪一小块 |
15
16
  | ~auto | 自动执行:自动选主路径并持续推进到实现 / 质量闭环 / 收尾,除非命中真实阻塞 |
16
17
  | ~plan | 结构化规划:需求澄清 + 方案确认 + 方案包 |
17
18
  | ~build | 执行实现:按需求或方案包完成实现与局部验证 |
@@ -42,6 +42,7 @@ Trigger: ~idea [description]
42
42
  ### 4. 给出升级路径
43
43
 
44
44
  - 如果用户希望继续推进,实现层升级路径为:
45
+ - 想先判断值不值得做、要不要做这么大 → `~office`
45
46
  - 想形成结构化方案 → `~plan`
46
47
  - 想直接进入实现 → `~build`
47
48
  - 需要重型产品规格 → `~prd`
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: ~office
3
+ description: 价值与范围评估命令 — 先判断事情该不该做、该做多大、先做哪一小块(~office 命令)
4
+ policy:
5
+ allow_implicit_invocation: false
6
+ ---
7
+ Trigger: ~office [description]
8
+
9
+ `~office` 是范围收缩命令,用于在不写文件、不进入实现、不激活完整项目流程的前提下,先帮用户判断一件事是否值得做、是否做得过大、最小可验证切口应该落在哪里。
10
+
11
+ ## 铁律
12
+ - 只讨论,不编写实现代码,不创建项目文件,不执行实现操作
13
+ - 不创建 `.helloagents/`
14
+ - 不创建或更新当前项目存储中的 `state_path`;同样禁止更新知识库文件、方案包或项目级规则文件
15
+ - 不生成方案包
16
+ - 不执行会改变工作区或外部状态的命令
17
+ - 不默认使用子代理
18
+ - 输出重点不是“还能做什么”,而是“要不要做、该做多大、先做哪块”
19
+
20
+ ## 流程
21
+
22
+ ### 1. 快速锁定待判断事项
23
+
24
+ - 先用一句话重述当前用户真正想判断的事情
25
+ - 明确判断目标:是评估“值不值得做”、还是评估“要不要现在做”、还是评估“要不要做这么大”
26
+ - 若任务是已有项目中的连续工作,可按需读取少量相关上下文;不要为了做 office 评估而展开完整项目流程
27
+
28
+ ### 2. 从关键维度拷问
29
+
30
+ - 只选当前最相关的 3-5 个维度,不机械全问
31
+ - 可用维度包括:
32
+ - 真实需求是否存在
33
+ - 当前替代方案/现状是什么
34
+ - 最痛的人是谁,痛到什么程度
35
+ - 最小可验证切口是什么
36
+ - 当前最大假设是什么
37
+ - 现在做和以后做的时机差异是什么
38
+ - 做大后的主要成本、风险或返工点是什么
39
+ - 问题必须直指判断,不做泛化 brainstorm
40
+
41
+ ### 3. 挑战前提
42
+
43
+ - 明确指出 1-3 条最值得怀疑的前提
44
+ - 每条前提都说明:
45
+ - 它为什么可疑
46
+ - 如果这条前提不成立,会导致什么
47
+ - 最省成本的验证方式是什么
48
+
49
+ ### 4. 强制给出不同范围方案
50
+
51
+ - 至少给出 3 档范围:
52
+ - 不做 / 暂缓
53
+ - 最小切口
54
+ - 标准推进
55
+ - 如确有必要,可再补一个“做大方案”,但不默认鼓励
56
+ - 每档都给出:
57
+ - 核心动作
58
+ - 主要收益
59
+ - 主要代价或风险
60
+ - 适用前提
61
+
62
+ ### 5. 给出明确判断
63
+
64
+ - 必须明确落到以下结论之一:
65
+ - 不建议做
66
+ - 建议先验证,不建议直接做
67
+ - 值得做,但先做最小切口
68
+ - 值得按当前范围推进
69
+ - 解释理由,不使用空泛形容词
70
+
71
+ ### 6. 给出升级路径
72
+
73
+ - 如果用户希望继续推进,实现层升级路径为:
74
+ - 想比较几个做法方向 → `~idea`
75
+ - 想形成结构化方案 → `~plan`
76
+ - 想直接进入实现 → `~build`
77
+ - 需要重型产品规格 → `~prd`
78
+ - 想让 AI 自动执行完整流程 → `~auto`
79
+ - 如果用户在 `~office` 过程中转而明确要求写文件、改代码、创建知识库或执行命令,不在 `~office` 内偷偷写文件;改为按最合适的升级路径继续
80
+
81
+ ## 输出要求
82
+
83
+ - 必须先给结论,再给判断依据
84
+ - 不做“点子堆砌”
85
+ - 不把尚未验证的假设伪装成事实
86
+ - 不把“可以做很大”默认当成推荐答案
@@ -101,6 +101,7 @@ description: 按任务类型适用 — 建立质量驱动工作流,通过技
101
101
  用户使用 `~command` 时,只读取对应的 command skill,路径按上方“~command 命令技能”规则查找:
102
102
  - `~auto`
103
103
  - `~idea`
104
+ - `~office`
104
105
  - `~plan`
105
106
  - `~build`
106
107
  - `~prd`