helloloop 0.3.1 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +3 -3
- package/README.md +157 -81
- package/hosts/claude/marketplace/plugins/helloloop/.claude-plugin/plugin.json +1 -1
- package/hosts/claude/marketplace/plugins/helloloop/commands/helloloop.md +13 -10
- package/hosts/claude/marketplace/plugins/helloloop/skills/helloloop/SKILL.md +9 -4
- package/hosts/gemini/extension/GEMINI.md +12 -7
- package/hosts/gemini/extension/commands/helloloop.toml +14 -10
- package/hosts/gemini/extension/gemini-extension.json +1 -1
- package/package.json +2 -2
- package/skills/helloloop/SKILL.md +16 -6
- package/src/analyze_confirmation.mjs +29 -5
- package/src/analyze_prompt.mjs +5 -1
- package/src/analyze_user_input.mjs +20 -2
- package/src/analyzer.mjs +130 -43
- package/src/cli.mjs +32 -492
- package/src/cli_analyze_command.mjs +248 -0
- package/src/cli_args.mjs +106 -0
- package/src/cli_command_handlers.mjs +120 -0
- package/src/cli_context.mjs +31 -0
- package/src/cli_render.mjs +70 -0
- package/src/cli_support.mjs +11 -14
- package/src/completion_review.mjs +243 -0
- package/src/config.mjs +50 -0
- package/src/discovery_prompt.mjs +2 -27
- package/src/engine_metadata.mjs +79 -0
- package/src/engine_selection.mjs +335 -0
- package/src/engine_selection_failure.mjs +51 -0
- package/src/engine_selection_messages.mjs +119 -0
- package/src/engine_selection_probe.mjs +78 -0
- package/src/engine_selection_prompt.mjs +48 -0
- package/src/engine_selection_settings.mjs +38 -0
- package/src/guardrails.mjs +15 -4
- package/src/install.mjs +6 -405
- package/src/install_claude.mjs +189 -0
- package/src/install_codex.mjs +114 -0
- package/src/install_gemini.mjs +43 -0
- package/src/install_shared.mjs +90 -0
- package/src/process.mjs +482 -39
- package/src/prompt.mjs +9 -5
- package/src/prompt_session.mjs +40 -0
- package/src/runner.mjs +3 -341
- package/src/runner_execute_task.mjs +301 -0
- package/src/runner_execution_support.mjs +155 -0
- package/src/runner_loop.mjs +106 -0
- package/src/runner_once.mjs +29 -0
- package/src/runner_status.mjs +104 -0
- package/src/runtime_recovery.mjs +301 -0
- package/src/shell_invocation.mjs +16 -0
- package/templates/analysis-output.schema.json +0 -1
- package/templates/policy.template.json +27 -0
- package/templates/project.template.json +2 -0
- package/templates/task-review-output.schema.json +70 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "helloloop",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "面向 Codex CLI、Claude Code、Gemini CLI 的多宿主开发工作流插件,Codex 路径为首发与参考实现。",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "HelloLoop"
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"interface": {
|
|
18
18
|
"displayName": "HelloLoop",
|
|
19
19
|
"shortDescription": "基于 backlog 的持续仓库开发与验证循环",
|
|
20
|
-
"longDescription": "HelloLoop 把基于 backlog 的持续开发能力封装为官方 Codex 插件 bundle。显式调用 helloloop skill 时,默认优先进入 npx helloloop 主 CLI
|
|
20
|
+
"longDescription": "HelloLoop 把基于 backlog 的持续开发能力封装为官方 Codex 插件 bundle。显式调用 helloloop skill 时,默认优先进入 npx helloloop 主 CLI 流程:支持 npx helloloop、npx helloloop <PATH>、npx helloloop codex|claude|gemini ...,先分析、再展示确认单、确认后自动接续推进;运行中按无人值守自动恢复持续推进主线。",
|
|
21
21
|
"developerName": "HelloLoop",
|
|
22
22
|
"category": "Coding",
|
|
23
23
|
"capabilities": [
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"Write"
|
|
26
26
|
],
|
|
27
27
|
"defaultPrompt": [
|
|
28
|
-
"使用 HelloLoop 时,优先执行 npx helloloop 或 npx helloloop <PATH
|
|
28
|
+
"使用 HelloLoop 时,优先执行 npx helloloop 或 npx helloloop <PATH>;如果用户明确指定执行引擎,也允许使用 npx helloloop codex|claude|gemini ...。启动前确认一次,启动后按无人值守自动恢复与主线续跑执行,不要在对话里手工模拟流程。"
|
|
29
29
|
],
|
|
30
30
|
"brandColor": "#0F766E"
|
|
31
31
|
}
|
package/README.md
CHANGED
|
@@ -1,74 +1,112 @@
|
|
|
1
1
|
# HelloLoop
|
|
2
2
|
|
|
3
|
-
`HelloLoop` 是一个面向 `Codex CLI`、`Claude Code`、`Gemini CLI`
|
|
3
|
+
`HelloLoop` 是一个面向 `Codex CLI`、`Claude Code`、`Gemini CLI` 的多宿主开发工作流插件,用来把“根据开发文档持续接续开发、测试、验收,直到最终目标完成”收敛成一条统一、可确认、可追踪的标准流程。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
它的核心原则很简单:
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
- `
|
|
9
|
-
-
|
|
7
|
+
- 三家都能安装、都能用、都按各自原生 agent 逻辑执行
|
|
8
|
+
- `Codex CLI` 仍然是首发平台、参考实现和最佳体验路径
|
|
9
|
+
- 运行状态统一写入目标仓库根目录的 `.helloloop/`
|
|
10
|
+
- 真正执行前先分析、先确认,执行中不静默失败、不静默切换
|
|
10
11
|
|
|
11
|
-
##
|
|
12
|
+
## 宿主与执行引擎
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
`HelloLoop` 区分两个概念:
|
|
15
|
+
|
|
16
|
+
- **宿主**:你从哪里进入,例如终端、`Codex`、`Claude`、`Gemini`
|
|
17
|
+
- **执行引擎**:真正负责本轮分析 / 开发 / 测试推进的 CLI
|
|
18
|
+
|
|
19
|
+
这意味着:
|
|
20
|
+
|
|
21
|
+
- 无论在终端还是在 `Codex` / `Claude` / `Gemini` 宿主内,只要用户未明确指定引擎,`HelloLoop` 都会先询问本轮执行引擎
|
|
22
|
+
- 当前宿主、项目历史、用户历史只作为推荐依据,不会自动替你选中引擎
|
|
23
|
+
- 如果你已经显式指定,或已经在首轮确认中明确选定了引擎,本轮就固定按该引擎执行
|
|
24
|
+
- 如果后续因为登录、配额、限流等问题需要改用别的引擎,`HelloLoop` 也会先询问,不会静默切换
|
|
19
25
|
|
|
20
26
|
## 支持矩阵
|
|
21
27
|
|
|
22
|
-
| 宿主 | 安装方式 | 原生入口 |
|
|
28
|
+
| 宿主 | 安装方式 | 原生入口 | 说明 |
|
|
23
29
|
| --- | --- | --- | --- |
|
|
24
|
-
| `Codex CLI` | `helloloop install --host codex` | `$helloloop` / `npx helloloop` | Codex 原生插件 + CLI |
|
|
30
|
+
| `Codex CLI` | `helloloop install` / `helloloop install --host codex` | `$helloloop` / `npx helloloop` | Codex 原生插件 + CLI |
|
|
25
31
|
| `Claude Code` | `helloloop install --host claude` | `/helloloop` | Claude 原生 marketplace / plugin |
|
|
26
32
|
| `Gemini CLI` | `helloloop install --host gemini` | `/helloloop` | Gemini 原生 extension |
|
|
27
33
|
|
|
34
|
+
## 最短使用方式
|
|
35
|
+
|
|
36
|
+
推荐先记住下面四种:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npx helloloop
|
|
40
|
+
npx helloloop <PATH>
|
|
41
|
+
npx helloloop claude
|
|
42
|
+
npx helloloop gemini <PATH> 接续完成剩余开发
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
其中:
|
|
46
|
+
|
|
47
|
+
- `<PATH>` 可以是项目仓库路径、开发文档目录、开发文档文件
|
|
48
|
+
- 命令后可以继续追加自然语言要求
|
|
49
|
+
- 不确定时,优先只输入 `npx helloloop`
|
|
50
|
+
|
|
51
|
+
## 执行引擎选择规则
|
|
52
|
+
|
|
53
|
+
执行规则如下:
|
|
54
|
+
|
|
55
|
+
1. 命令首参数显式引擎:`codex` / `claude` / `gemini`
|
|
56
|
+
2. 自然语言中明确且不歧义地指定了引擎
|
|
57
|
+
3. 如果前两步仍未明确,先停下来询问本轮执行引擎;当前宿主、项目上次 / 默认、用户上次 / 默认只作为推荐依据
|
|
58
|
+
4. `-y` / `--yes` 等非交互模式下,如果你没有显式指定引擎,`HelloLoop` 会直接停止并要求补充引擎
|
|
59
|
+
|
|
60
|
+
补充说明:
|
|
61
|
+
|
|
62
|
+
- 首参只有第一个裸词会被解释为引擎;如果你真要把 `claude` 当目录名,请写成 `./claude`、`.\claude` 或绝对路径
|
|
63
|
+
- 命令后的自然语言如果明确提到 `codex`、`claude`、`gemini`,也会纳入意图判断
|
|
64
|
+
- 当前宿主、项目历史、用户历史不会触发自动选中,只会影响“推荐项”
|
|
65
|
+
- `已安装` 不等于 `可继续执行`;如果当前引擎在运行中遇到 429、5xx、网络抖动、流中断、长时间卡死等问题,`HelloLoop` 会先按无人值守策略做同引擎自动恢复,不会中途停下来询问
|
|
66
|
+
|
|
28
67
|
## 默认工作流
|
|
29
68
|
|
|
30
|
-
|
|
69
|
+
无论从哪个宿主进入,都遵循同一条主线:
|
|
31
70
|
|
|
32
71
|
1. 自动识别目标项目仓库与开发文档
|
|
33
|
-
2.
|
|
72
|
+
2. 分析当前代码进度、偏差和项目匹配性
|
|
34
73
|
3. 在目标仓库根目录创建或刷新 `.helloloop/`
|
|
35
74
|
4. 输出中文执行确认单
|
|
36
|
-
5.
|
|
75
|
+
5. 用户确认后,按选中的执行引擎持续推进开发、测试、验收
|
|
76
|
+
6. 每个任务完成后,自动做一次“任务完成复核”
|
|
77
|
+
7. backlog 暂时清空后,自动做一次“主线终态复核”
|
|
37
78
|
|
|
38
79
|
如果分析发现当前实现已经偏离开发文档,`HelloLoop` 会优先先收口偏差,再继续后面的 backlog。
|
|
39
80
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
推荐优先只记住下面两条:
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
npx helloloop
|
|
46
|
-
npx helloloop <PATH>
|
|
47
|
-
```
|
|
81
|
+
这意味着:
|
|
48
82
|
|
|
49
|
-
|
|
83
|
+
- 不会因为执行引擎自己一句“已完成”就直接结束
|
|
84
|
+
- 如果只是部分完成,`HelloLoop` 会继续当前主线任务,而不是跳去做模型随口建议的别的事
|
|
85
|
+
- 如果 backlog 清空了,但主线终态复核仍发现文档目标还有缺口,`HelloLoop` 会自动重新分析并继续推进
|
|
86
|
+
- 如果模型只做了一半就想停下来给“下一步建议”,`HelloLoop` 会优先按主线目标继续推进,而不是把半成品当完成
|
|
50
87
|
|
|
51
|
-
|
|
52
|
-
npx helloloop <PATH> <补充说明>
|
|
53
|
-
```
|
|
88
|
+
## 无人值守恢复
|
|
54
89
|
|
|
55
|
-
|
|
90
|
+
`HelloLoop` 的设计目标不是“跑一轮停一轮”,而是启动前确认一次,启动后持续无人值守推进。
|
|
56
91
|
|
|
57
|
-
|
|
58
|
-
npx helloloop docs/plan.md ./demo-app 接续完成剩余开发内容,并严格执行测试和验收
|
|
59
|
-
```
|
|
92
|
+
因此运行中的默认策略是:
|
|
60
93
|
|
|
61
|
-
|
|
94
|
+
- 普通运行故障不再中途提问:不会因为 429、5xx、网络抖动、结果流中断、短时空输出就停下来问用户
|
|
95
|
+
- 同引擎优先恢复:默认不会自动切换引擎,也不会偷偷改用别的 CLI
|
|
96
|
+
- 保留主线上下文恢复:同引擎恢复时会生成恢复记录与恢复 prompt,要求新一轮执行直接基于当前仓库状态继续,而不是从头另起一套
|
|
97
|
+
- 定时心跳检查:运行中会持续写入心跳与恢复状态,用于判断当前阶段是否还在正常推进
|
|
98
|
+
- 先预警再终止:默认每 60 秒刷新一次心跳;若长时间没有可见进展,先标记为疑似卡住;达到更长的自动恢复阈值后,才会终止当前进程并做同引擎恢复
|
|
99
|
+
- 硬错误直接停止:如果识别为 400 请求错误、登录/鉴权/订阅问题、本地 CLI 缺失或权限错误,不会盲目重试
|
|
62
100
|
|
|
63
|
-
|
|
64
|
-
- 开发文档目录
|
|
65
|
-
- 开发文档文件
|
|
101
|
+
默认恢复节奏:
|
|
66
102
|
|
|
67
|
-
|
|
103
|
+
- 心跳间隔:60 秒
|
|
104
|
+
- 疑似卡住预警:15 分钟无可见进展
|
|
105
|
+
- 自动恢复阈值:45 分钟无可见进展
|
|
106
|
+
- 同阶段最多自动恢复:4 次
|
|
107
|
+
- 恢复等待:2 分钟 → 5 分钟 → 15 分钟 → 30 分钟
|
|
68
108
|
|
|
69
|
-
|
|
70
|
-
- 本次执行的额外要求
|
|
71
|
-
- 偏差修正、质量要求、交付目标等自然语言说明
|
|
109
|
+
如果你明确指定或确认了本轮引擎,`HelloLoop` 在自动恢复阶段也会继续锁定该引擎,不会擅自切换。
|
|
72
110
|
|
|
73
111
|
## 自动发现与交互逻辑
|
|
74
112
|
|
|
@@ -80,10 +118,10 @@ npx helloloop docs/plan.md ./demo-app 接续完成剩余开发内容,并严格
|
|
|
80
118
|
npx helloloop
|
|
81
119
|
```
|
|
82
120
|
|
|
83
|
-
`HelloLoop`
|
|
121
|
+
`HelloLoop` 会先明确执行引擎,再快速扫描当前目录:
|
|
84
122
|
|
|
85
123
|
- 当前目录本身就是项目仓库或开发文档目录时,直接进入分析
|
|
86
|
-
-
|
|
124
|
+
- 当前目录更像工作区时,优先利用顶层文档,再提示选择候选项目目录
|
|
87
125
|
- 当前目录没有明确开发文档时,不会直接报错,而是先列出:
|
|
88
126
|
- 顶层文档文件
|
|
89
127
|
- 顶层目录
|
|
@@ -92,12 +130,12 @@ npx helloloop
|
|
|
92
130
|
|
|
93
131
|
### 2. 项目路径只问一次
|
|
94
132
|
|
|
95
|
-
|
|
133
|
+
对外只有“项目路径”这一个概念:
|
|
96
134
|
|
|
97
|
-
-
|
|
98
|
-
-
|
|
135
|
+
- 输入已有目录 → 按现有项目继续分析
|
|
136
|
+
- 输入不存在的目录 → 视为准备创建的新项目目录
|
|
99
137
|
|
|
100
|
-
|
|
138
|
+
不会再额外追问一个“新项目路径”。
|
|
101
139
|
|
|
102
140
|
### 3. 文档和项目缺一不可时会停下询问
|
|
103
141
|
|
|
@@ -107,11 +145,9 @@ npx helloloop
|
|
|
107
145
|
- 给了项目路径,但无法定位开发文档
|
|
108
146
|
- 同时出现多个冲突的文档路径或项目路径
|
|
109
147
|
|
|
110
|
-
此时 `HelloLoop` 会暂停,并要求用户补充正确信息。
|
|
111
|
-
|
|
112
148
|
### 4. 命令 + 自然语言会一起分析
|
|
113
149
|
|
|
114
|
-
`HelloLoop`
|
|
150
|
+
`HelloLoop` 不依赖固定中文关键词做硬编码分流。
|
|
115
151
|
|
|
116
152
|
命令里的:
|
|
117
153
|
|
|
@@ -120,7 +156,7 @@ npx helloloop
|
|
|
120
156
|
- 英文自然语言
|
|
121
157
|
- 其他语言的补充要求
|
|
122
158
|
|
|
123
|
-
|
|
159
|
+
都会一起进入分析和确认单,不会因为语言不同被静默忽略。
|
|
124
160
|
|
|
125
161
|
### 5. 现有项目与文档目标冲突时
|
|
126
162
|
|
|
@@ -136,14 +172,13 @@ npx helloloop
|
|
|
136
172
|
npx helloloop --rebuild-existing
|
|
137
173
|
```
|
|
138
174
|
|
|
139
|
-
重建时会保留必要的仓库元数据和状态目录,例如 `.git`、`.gitignore`、`.gitattributes`、`.helloagents`、`.helloloop`。
|
|
140
|
-
|
|
141
175
|
## 执行确认单
|
|
142
176
|
|
|
143
|
-
真正开始开发前,`HelloLoop`
|
|
177
|
+
真正开始开发前,`HelloLoop` 会先输出中文执行确认单,至少包含:
|
|
144
178
|
|
|
145
179
|
- 路径判断与判断依据
|
|
146
180
|
- 本次命令补充输入
|
|
181
|
+
- 执行引擎
|
|
147
182
|
- 需求语义理解
|
|
148
183
|
- 项目匹配判断
|
|
149
184
|
- 目标仓库
|
|
@@ -158,13 +193,22 @@ npx helloloop --rebuild-existing
|
|
|
158
193
|
|
|
159
194
|
未确认前,不会正式修改代码。
|
|
160
195
|
|
|
196
|
+
确认后,默认行为不是“跑一轮就停”,而是:
|
|
197
|
+
|
|
198
|
+
- 先按 backlog 执行当前颗粒度任务
|
|
199
|
+
- 每个任务完成后复核其验收是否真的闭合
|
|
200
|
+
- backlog 清空后再复核一次整个主线目标
|
|
201
|
+
- 只有“任务验收闭合 + 主线目标闭合 + 验证通过”才算真正结束
|
|
202
|
+
- 运行中若出现可恢复的 CLI 故障,则按无人值守策略自动恢复,不打断主线
|
|
203
|
+
|
|
161
204
|
## 安装
|
|
162
205
|
|
|
163
|
-
### npm / npx
|
|
206
|
+
### 通过 npm / npx
|
|
164
207
|
|
|
165
208
|
默认安装到 `Codex`:
|
|
166
209
|
|
|
167
210
|
```bash
|
|
211
|
+
npx helloloop install
|
|
168
212
|
npx helloloop install --codex-home <CODEX_HOME>
|
|
169
213
|
```
|
|
170
214
|
|
|
@@ -199,13 +243,21 @@ pwsh -NoLogo -NoProfile -File .\scripts\install-home-plugin.ps1 -CodexHome <CODE
|
|
|
199
243
|
|
|
200
244
|
### 升级、重装、切换分支
|
|
201
245
|
|
|
202
|
-
如果你已经安装过,但刚拉取了新版本、切换了分支、或想覆盖旧安装,直接重新执行:
|
|
203
|
-
|
|
204
246
|
```bash
|
|
247
|
+
npx helloloop install --force
|
|
248
|
+
npx helloloop install --host claude --force
|
|
249
|
+
npx helloloop install --host gemini --force
|
|
205
250
|
npx helloloop install --host codex --force
|
|
206
251
|
npx helloloop install --host all --force
|
|
207
252
|
```
|
|
208
253
|
|
|
254
|
+
说明:
|
|
255
|
+
|
|
256
|
+
- `--force` 会清理当前宿主里旧分支 / 旧版本残留的 `helloloop` 安装目录后再重装
|
|
257
|
+
- `Codex` 会刷新插件目录和 marketplace 条目
|
|
258
|
+
- `Claude` 会刷新 marketplace、缓存插件目录,以及 `settings.json` / `known_marketplaces.json` / `installed_plugins.json` 中的 `helloloop` 条目
|
|
259
|
+
- `Gemini` 会刷新 `extensions/helloloop/`,不会动同目录下其他扩展
|
|
260
|
+
|
|
209
261
|
### 卸载
|
|
210
262
|
|
|
211
263
|
```bash
|
|
@@ -215,38 +267,40 @@ npx helloloop uninstall --host gemini
|
|
|
215
267
|
npx helloloop uninstall --host all
|
|
216
268
|
```
|
|
217
269
|
|
|
218
|
-
|
|
270
|
+
卸载是定向清理:
|
|
219
271
|
|
|
220
|
-
|
|
272
|
+
- 只删除 `helloloop` 自己的安装目录和注册条目
|
|
273
|
+
- 不会顺带删除别的插件、marketplace、扩展或自定义配置
|
|
274
|
+
- 即使某个宿主当前未安装 `helloloop`,也会安全退出,不做破坏性清理
|
|
221
275
|
|
|
222
|
-
|
|
223
|
-
- `Claude`:`<CLAUDE_HOME>/plugins/marketplaces/helloloop-local` 与 `plugins/cache/helloloop-local/helloloop/<VERSION>`
|
|
224
|
-
- `Gemini`:`<GEMINI_HOME>/extensions/helloloop`
|
|
276
|
+
## 使用入口
|
|
225
277
|
|
|
226
|
-
|
|
278
|
+
### 终端
|
|
227
279
|
|
|
228
|
-
|
|
280
|
+
```bash
|
|
281
|
+
npx helloloop
|
|
282
|
+
npx helloloop <PATH>
|
|
283
|
+
npx helloloop codex <PATH>
|
|
284
|
+
npx helloloop claude <PATH>
|
|
285
|
+
npx helloloop gemini <PATH> <补充说明>
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
如果已经做了全局安装,也可以把 `npx helloloop` 简写为 `helloloop`。是否立刻可用取决于当前 shell 是否已经刷新 `PATH`。
|
|
229
289
|
|
|
230
290
|
### Codex CLI
|
|
231
291
|
|
|
232
292
|
```text
|
|
233
293
|
$helloloop
|
|
294
|
+
helloloop:helloloop
|
|
234
295
|
```
|
|
235
296
|
|
|
236
|
-
|
|
297
|
+
在 `Codex` 中也可以直接执行:
|
|
237
298
|
|
|
238
299
|
```bash
|
|
239
300
|
npx helloloop
|
|
240
|
-
npx helloloop <PATH>
|
|
241
301
|
```
|
|
242
302
|
|
|
243
|
-
`$helloloop`
|
|
244
|
-
|
|
245
|
-
如果你显式使用技能名,也可以写:
|
|
246
|
-
|
|
247
|
-
```text
|
|
248
|
-
helloloop:helloloop
|
|
249
|
-
```
|
|
303
|
+
如果你在 `Codex` 中直接使用 `$helloloop` 或 `npx helloloop`,但没有明确指定引擎,`HelloLoop` 仍会先让你确认本轮引擎;`Codex` 只会作为推荐项,不会被自动选中。
|
|
250
304
|
|
|
251
305
|
### Claude Code / Gemini CLI
|
|
252
306
|
|
|
@@ -256,11 +310,11 @@ helloloop:helloloop
|
|
|
256
310
|
|
|
257
311
|
它们会按各自 CLI 的原生 agent 逻辑执行,但共享同一套 `.helloloop/` 工作流规范。
|
|
258
312
|
|
|
259
|
-
##
|
|
313
|
+
## 常用命令
|
|
260
314
|
|
|
261
315
|
| 命令 | 作用 |
|
|
262
316
|
| --- | --- |
|
|
263
|
-
| `helloloop` / `analyze` |
|
|
317
|
+
| `helloloop` / `analyze` | 自动分析、展示确认单,并在确认后持续接续开发,直到主线目标闭合或遇到硬阻塞 |
|
|
264
318
|
| `install` | 安装运行时 bundle 到指定宿主 |
|
|
265
319
|
| `uninstall` | 从指定宿主卸载运行时 bundle 与注册信息 |
|
|
266
320
|
| `doctor` | 检查宿主环境、插件资产与目标仓库状态 |
|
|
@@ -274,12 +328,13 @@ helloloop:helloloop
|
|
|
274
328
|
|
|
275
329
|
| 选项 | 作用 |
|
|
276
330
|
| --- | --- |
|
|
331
|
+
| `codex` / `claude` / `gemini` | 作为 `analyze` 模式的命令首参数,显式指定执行引擎 |
|
|
277
332
|
| `--dry-run` | 只分析并输出确认单,不开始自动执行 |
|
|
278
|
-
| `-y` / `--yes` |
|
|
333
|
+
| `-y` / `--yes` | 跳过执行确认直接开始;但如果未显式指定引擎,会直接报错而不是自动选引擎 |
|
|
279
334
|
| `--repo <dir>` | 高级覆盖:显式指定项目仓库 |
|
|
280
335
|
| `--docs <dir|file>` | 高级覆盖:显式指定开发文档 |
|
|
281
336
|
| `--rebuild-existing` | 项目与文档冲突时,自动清理现有项目后重建 |
|
|
282
|
-
| `--host <name>` |
|
|
337
|
+
| `--host <name>` | 安装宿主:`codex` / `claude` / `gemini` / `all` |
|
|
283
338
|
| `--config-dir <dir>` | 状态目录名,默认 `.helloloop` |
|
|
284
339
|
|
|
285
340
|
手动控制示例:
|
|
@@ -290,7 +345,7 @@ npx helloloop next
|
|
|
290
345
|
npx helloloop run-once
|
|
291
346
|
```
|
|
292
347
|
|
|
293
|
-
## Doctor
|
|
348
|
+
## Doctor
|
|
294
349
|
|
|
295
350
|
检查默认宿主:
|
|
296
351
|
|
|
@@ -310,10 +365,28 @@ npx helloloop doctor --host all
|
|
|
310
365
|
npx helloloop doctor --host all --codex-home <CODEX_HOME> --claude-home <CLAUDE_HOME> --gemini-home <GEMINI_HOME>
|
|
311
366
|
```
|
|
312
367
|
|
|
313
|
-
|
|
368
|
+
## 宿主写入范围
|
|
369
|
+
|
|
370
|
+
为了方便排查安装 / 更新 / 卸载问题,下面是默认写入位置:
|
|
371
|
+
|
|
372
|
+
### `Codex CLI`
|
|
373
|
+
|
|
374
|
+
- 插件目录:`~/.codex/plugins/helloloop/`
|
|
375
|
+
- 注册文件:`~/.codex/.agents/plugins/marketplace.json`
|
|
376
|
+
|
|
377
|
+
### `Claude Code`
|
|
378
|
+
|
|
379
|
+
- marketplace:`~/.claude/plugins/marketplaces/helloloop-local/`
|
|
380
|
+
- 已安装插件缓存:`~/.claude/plugins/cache/helloloop-local/helloloop/<VERSION>/`
|
|
381
|
+
- 用户配置:`~/.claude/settings.json`
|
|
382
|
+
- marketplace 索引:`~/.claude/plugins/known_marketplaces.json`
|
|
383
|
+
- 已安装插件索引:`~/.claude/plugins/installed_plugins.json`
|
|
384
|
+
|
|
385
|
+
### `Gemini CLI`
|
|
386
|
+
|
|
387
|
+
- 扩展目录:`~/.gemini/extensions/helloloop/`
|
|
314
388
|
|
|
315
|
-
|
|
316
|
-
- 在目标项目仓库中运行,或显式传入 `--repo`:还会检查 `.helloloop/backlog.json`、`project.json`、`policy.json`、`verify.yaml`
|
|
389
|
+
`HelloLoop` 只维护自己的目录和自己的注册项,不会重写别的插件条目。
|
|
317
390
|
|
|
318
391
|
## `.helloloop/` 状态目录
|
|
319
392
|
|
|
@@ -349,9 +422,12 @@ npx helloloop doctor --host all --codex-home <CODEX_HOME> --claude-home <CLAUDE_
|
|
|
349
422
|
|
|
350
423
|
- 不静默失败
|
|
351
424
|
- 不静默回退
|
|
425
|
+
- 不静默切换执行引擎
|
|
352
426
|
- 不吞掉错误
|
|
353
427
|
- 真正执行前先确认
|
|
354
428
|
- 真正结束前先验证
|
|
429
|
+
- 不轻信执行引擎口头“已完成”
|
|
430
|
+
- 不接受“先做一半再停下来问要不要继续”
|
|
355
431
|
|
|
356
432
|
## 仓库结构
|
|
357
433
|
|
|
@@ -10,12 +10,13 @@ argument-hint: [PATH]
|
|
|
10
10
|
1. 将当前代码视为事实源,将开发文档视为目标源。
|
|
11
11
|
2. 如果用户在命令后提供了 `$ARGUMENTS`,必须同时保留其中的显式路径和自然语言补充要求,不要依赖固定关键词硬编码决策。
|
|
12
12
|
3. 自动识别目标仓库与开发文档,并先分析“当前代码做到哪里了”“与文档目标是否存在偏差”“当前项目与文档目标是否匹配”。
|
|
13
|
-
4.
|
|
14
|
-
5.
|
|
15
|
-
6.
|
|
16
|
-
7.
|
|
17
|
-
8.
|
|
18
|
-
9.
|
|
13
|
+
4. 当前宿主是 `Claude`;如果用户未明确指定执行引擎,必须先确认本轮引擎,`Claude` 只可作为推荐项,不允许自动选中;如果用户明确要求改用 `Codex` 或 `Gemini`,必须先确认,不允许静默切换。
|
|
14
|
+
5. 如果当前目录没有明确开发文档,先展示顶层文档文件、顶层目录和疑似项目目录,再询问用户开发文档路径。
|
|
15
|
+
6. 项目路径对外只有一个概念;如果用户输入的项目路径不存在,就把它视为准备创建的新项目目录,不要再单独追问“新项目路径”。
|
|
16
|
+
7. 在目标仓库根目录创建或刷新 `.helloloop/`,至少维护 `backlog.json`、`project.json`、`status.json`、`STATE.md` 与 `runs/`。
|
|
17
|
+
8. 如果用户给了开发文档但无法定位项目仓库,或者给了项目路径但无法定位开发文档,必须停下来询问用户,而不是猜测。
|
|
18
|
+
9. 如果当前项目目录已存在,但分析认为它与开发文档目标明显冲突,必须先明确提示用户,并确认是继续现有项目、还是清理后按文档重建。
|
|
19
|
+
10. 在真正执行开发前,必须输出一份中文执行确认单,至少包含:
|
|
19
20
|
- 路径判断与判断依据
|
|
20
21
|
- 本次命令补充输入
|
|
21
22
|
- 需求语义理解
|
|
@@ -29,7 +30,9 @@ argument-hint: [PATH]
|
|
|
29
30
|
- 首个待执行任务
|
|
30
31
|
- 验证命令预览
|
|
31
32
|
- 自动执行停止条件
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
11. 未经用户确认,不要开始正式修改代码。
|
|
34
|
+
12. 用户确认后,使用当前确认的执行引擎原生工具持续推进 backlog;每个任务完成后还要再做任务完成复核,backlog 清空后还要再做主线终态复核,直到开发文档的最终目标完成,且相关测试、验证、验收都已通过;遇到硬阻塞或需要用户补充关键信息时再停下。
|
|
35
|
+
13. 如果当前引擎在运行中遇到 429、5xx、网络抖动、流中断或长时间卡死,必须优先按无人值守策略做同引擎自动恢复,不要中途停下来询问用户;只有明确硬阻塞时才停止。
|
|
36
|
+
14. 用户需求明确且当前任务可直接完成时,必须一次性完成本轮应交付的全部工作;禁止做一半后用“如果你要”“是否继续”之类的话术停下,也禁止用“希望这对你有帮助”等套话收尾。
|
|
37
|
+
15. 始终优先使用安全 shell 与原生文件工具;在 Windows 上避免危险的嵌套命令、路径拼接删除和 `cmd` 风格破坏性命令。
|
|
38
|
+
16. 不要调用外部 `npx helloloop` 来替代这个原生工作流;你现在就在 HelloLoop 的 Claude Code 原生模式中。
|
|
@@ -10,10 +10,11 @@ description: 当用户希望 Claude Code 按开发文档先分析当前进度,
|
|
|
10
10
|
## 默认流程
|
|
11
11
|
|
|
12
12
|
1. 自动识别目标仓库与开发文档
|
|
13
|
-
2.
|
|
14
|
-
3.
|
|
15
|
-
4.
|
|
16
|
-
5.
|
|
13
|
+
2. 如果用户未明确指定执行引擎,先确认本轮引擎;`Claude` 只作为推荐项,不自动选中;如果用户明确要求改用 `Codex` / `Gemini`,先确认再切换
|
|
14
|
+
3. 分析当前代码与文档目标之间的真实进度和偏差
|
|
15
|
+
4. 在目标仓库根目录创建或刷新 `.helloloop/`
|
|
16
|
+
5. 输出中文执行确认单
|
|
17
|
+
6. 用户确认后,继续用当前确认的执行引擎原生工具接续开发、测试和验收;每个任务完成后都要复核任务是否真正闭合,backlog 清空后还要复核主线目标是否真正闭合,直到最终目标完成
|
|
17
18
|
|
|
18
19
|
## 关键规则
|
|
19
20
|
|
|
@@ -21,9 +22,13 @@ description: 当用户希望 Claude Code 按开发文档先分析当前进度,
|
|
|
21
22
|
- 如果当前目录没有明确开发文档,应先展示顶层文档文件、顶层目录和疑似项目目录,再询问文档路径。
|
|
22
23
|
- 项目路径对外只有一个概念;如果用户提供的项目路径不存在,直接按新项目路径处理,不要再追问“新项目路径”。
|
|
23
24
|
- 如果当前项目与开发文档目标明显冲突,必须先确认是继续现有项目、清理后重建,还是取消。
|
|
25
|
+
- 如果当前引擎在运行中遇到 429、5xx、网络抖动、流中断或长时间卡死,必须优先按无人值守策略做同引擎自动恢复,不要中途停下来询问用户。
|
|
26
|
+
- 只有识别为 400 请求错误、登录/鉴权/订阅问题、本地 CLI 缺失或权限错误等硬阻塞时,才允许结束本轮自动执行。
|
|
24
27
|
- 不允许跳过执行确认单直接开始正式开发。
|
|
25
28
|
- 不允许把开发文档整体压成一个大任务;需要输出足够细的 backlog。
|
|
26
29
|
- 代码是事实源,开发文档是目标源。
|
|
30
|
+
- 不允许因为执行引擎一句“已完成”就直接结束;必须经过任务复核和主线终态复核。
|
|
31
|
+
- 用户需求明确且当前任务可直接完成时,必须一次性完成本轮应交付的全部工作;禁止做一半后用“如果你要”“是否继续”之类的话术停下,也禁止用客套套话收尾。
|
|
27
32
|
- 遇到失败、阻塞、依赖未满足或风险超出自动阈值时,必须明确说明当前状态。
|
|
28
33
|
|
|
29
34
|
## `.helloloop/` 最低要求
|
|
@@ -9,13 +9,14 @@
|
|
|
9
9
|
## 默认流程
|
|
10
10
|
|
|
11
11
|
1. 自动识别项目仓库与开发文档
|
|
12
|
-
2.
|
|
13
|
-
3.
|
|
14
|
-
4.
|
|
15
|
-
5.
|
|
16
|
-
6.
|
|
17
|
-
7.
|
|
18
|
-
8.
|
|
12
|
+
2. 如果用户未明确指定执行引擎,先确认本轮引擎;`Gemini` 只作为推荐项,不自动选中;如果用户明确要求改用 `Codex` / `Claude`,先确认再切换
|
|
13
|
+
3. 如果当前目录没有明确开发文档,先展示顶层文档文件、顶层目录和疑似项目目录,再询问文档路径
|
|
14
|
+
4. 项目路径对外只有一个概念;若用户输入的路径不存在,直接按新项目路径处理
|
|
15
|
+
5. 分析当前代码与开发文档的差距,并判断当前项目与文档目标是否匹配
|
|
16
|
+
6. 在目标仓库根目录创建或刷新 `.helloloop/`
|
|
17
|
+
7. 输出中文执行确认单(含路径判断、执行引擎、语义理解、项目匹配判断)
|
|
18
|
+
8. 若当前项目与开发文档目标明显冲突,先确认是继续现有项目还是清理后重建
|
|
19
|
+
9. 用户确认后,再继续执行后续开发任务;每个任务完成后复核任务是否真正闭合,backlog 清空后再复核主线目标是否真正闭合,直到最终目标完成且测试、验收全部通过
|
|
19
20
|
|
|
20
21
|
## 强制规则
|
|
21
22
|
|
|
@@ -24,6 +25,10 @@
|
|
|
24
25
|
- 如果无法识别目标仓库或开发文档,必须停下来询问用户。
|
|
25
26
|
- 不要单独追问“新项目路径”;项目路径只需要用户给一次。
|
|
26
27
|
- 如果识别到偏差修正任务,优先收口偏差,再推进后续 backlog。
|
|
28
|
+
- 如果当前引擎在运行中遇到 429、5xx、网络抖动、流中断或长时间卡死,必须优先按无人值守策略做同引擎自动恢复,不要中途停下来询问用户。
|
|
29
|
+
- 只有识别为 400 请求错误、登录/鉴权/订阅问题、本地 CLI 缺失或权限错误等硬阻塞时,才允许结束本轮自动执行。
|
|
30
|
+
- 不允许因为执行引擎一句“已完成”就直接结束;必须经过任务复核和主线终态复核。
|
|
31
|
+
- 用户需求明确且当前任务可直接完成时,必须一次性完成本轮应交付的全部工作;禁止做一半后用“如果你要”“是否继续”之类的话术停下,也禁止用客套套话收尾。
|
|
27
32
|
- 真正执行前确认,真正结束前验证。
|
|
28
33
|
|
|
29
34
|
## Windows 安全
|
|
@@ -5,13 +5,15 @@ prompt = """
|
|
|
5
5
|
执行要求:
|
|
6
6
|
|
|
7
7
|
1. 自动识别目标仓库与开发文档;如果用户在命令后提供了参数,必须同时保留其中的显式路径和自然语言补充要求,不要靠固定关键词硬编码判断。
|
|
8
|
-
2.
|
|
9
|
-
3.
|
|
10
|
-
4.
|
|
11
|
-
5.
|
|
12
|
-
6.
|
|
8
|
+
2. 当前宿主是 `Gemini`;如果用户未明确指定执行引擎,必须先确认本轮引擎,`Gemini` 只可作为推荐项,不允许自动选中;如果用户明确要求改用 `Codex` 或 `Claude`,必须先确认,不允许静默切换。
|
|
9
|
+
3. 如果当前目录没有明确开发文档,应先展示顶层文档文件、顶层目录和疑似项目目录,再询问用户开发文档路径。
|
|
10
|
+
4. 项目路径对外只有一个概念;如果用户给出的项目路径不存在,直接按新项目路径处理,不要再单独追问“新项目路径”。
|
|
11
|
+
5. 分析当前代码与开发文档之间的真实进度和偏差,并判断当前项目目录与开发文档目标是否匹配。
|
|
12
|
+
6. 在目标仓库根目录创建或刷新 `.helloloop/`,至少维护 `backlog.json`、`project.json`、`status.json`、`STATE.md` 与 `runs/`。
|
|
13
|
+
7. 在真正开发前,必须输出中文执行确认单,至少包含:
|
|
13
14
|
- 路径判断与判断依据
|
|
14
15
|
- 本次命令补充输入
|
|
16
|
+
- 执行引擎
|
|
15
17
|
- 需求语义理解
|
|
16
18
|
- 项目匹配判断
|
|
17
19
|
- 目标仓库
|
|
@@ -23,9 +25,11 @@ prompt = """
|
|
|
23
25
|
- 首个待执行任务
|
|
24
26
|
- 验证命令预览
|
|
25
27
|
- 自动执行停止条件
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
8. 如果当前项目目录已存在,但分析认为它与开发文档目标明显冲突,必须先明确提示用户,并确认是继续现有项目、还是清理后按文档重建。
|
|
29
|
+
9. 用户未确认前,不要开始正式修改代码。
|
|
30
|
+
10. 用户确认后,继续用当前确认的执行引擎原生工具推进 backlog;每个任务完成后还要再做任务完成复核,backlog 清空后还要再做主线终态复核,直到开发文档的最终目标完成,且相关测试、验证、验收都已通过;遇到硬阻塞或需要用户补充关键信息时再停下。
|
|
31
|
+
11. 如果当前引擎在运行中遇到 429、5xx、网络抖动、流中断或长时间卡死,必须优先按无人值守策略做同引擎自动恢复,不要中途停下来询问用户;只有明确硬阻塞时才停止。
|
|
32
|
+
12. 如果用户给了开发文档但找不到项目仓库,或给了项目路径但找不到开发文档,必须停下来询问。
|
|
33
|
+
13. 用户需求明确且当前任务可直接完成时,必须一次性完成本轮应交付的全部工作;禁止做一半后用“如果你要”“是否继续”之类的话术停下,也禁止用“希望这对你有帮助”等套话收尾。
|
|
34
|
+
14. Windows 上优先用安全的文件与 shell 操作;禁止危险删除、硬重置、强推和其他破坏性命令。
|
|
31
35
|
"""
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "helloloop",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "面向 Codex CLI、Claude Code、Gemini CLI 的多宿主开发工作流插件",
|
|
5
5
|
"author": "HelloLoop",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"templates"
|
|
31
31
|
],
|
|
32
32
|
"scripts": {
|
|
33
|
-
"test": "node --test tests/analyze_cli.test.mjs tests/analyze_intent_cli.test.mjs tests/cli_surface.test.mjs tests/install_script.test.mjs tests/process_shell.test.mjs tests/prompt_guardrails.test.mjs tests/ralph_loop.test.mjs tests/plugin_bundle.test.mjs"
|
|
33
|
+
"test": "node --test tests/analyze_cli.test.mjs tests/analyze_intent_cli.test.mjs tests/engine_selection_cli.test.mjs tests/cli_surface.test.mjs tests/cli_doctor_surface.test.mjs tests/host_lifecycle_integrity.test.mjs tests/host_single_host_integrity.test.mjs tests/install_script.test.mjs tests/mainline_continuation.test.mjs tests/multi_host_runtime.test.mjs tests/process_shell.test.mjs tests/prompt_guardrails.test.mjs tests/ralph_loop.test.mjs tests/runtime_recovery.test.mjs tests/plugin_bundle.test.mjs"
|
|
34
34
|
},
|
|
35
35
|
"engines": {
|
|
36
36
|
"node": ">=20"
|