helloloop 0.8.6 → 0.10.0
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 +230 -498
- package/hosts/claude/marketplace/plugins/helloloop/.claude-plugin/plugin.json +1 -1
- package/hosts/gemini/extension/gemini-extension.json +1 -1
- package/native/windows-hidden-shell-proxy/HelloLoopHiddenShellProxy.csproj +11 -0
- package/native/windows-hidden-shell-proxy/Program.cs +498 -0
- package/package.json +4 -2
- package/src/activity_projection.mjs +294 -0
- package/src/analyze_confirmation.mjs +3 -1
- package/src/analyzer.mjs +2 -1
- package/src/auto_execution_options.mjs +13 -0
- package/src/background_launch.mjs +73 -0
- package/src/cli.mjs +51 -1
- package/src/cli_analyze_command.mjs +12 -14
- package/src/cli_args.mjs +106 -32
- package/src/cli_command_handlers.mjs +73 -25
- package/src/cli_support.mjs +2 -0
- package/src/common.mjs +11 -0
- package/src/dashboard_command.mjs +371 -0
- package/src/dashboard_tui.mjs +289 -0
- package/src/dashboard_web.mjs +351 -0
- package/src/dashboard_web_client.mjs +167 -0
- package/src/dashboard_web_page.mjs +49 -0
- package/src/engine_event_parser_codex.mjs +167 -0
- package/src/engine_process_support.mjs +7 -2
- package/src/engine_selection.mjs +24 -0
- package/src/engine_selection_probe.mjs +10 -6
- package/src/engine_selection_settings.mjs +53 -44
- package/src/execution_interactivity.mjs +12 -0
- package/src/host_continuation.mjs +305 -0
- package/src/install_codex.mjs +20 -30
- package/src/install_shared.mjs +9 -0
- package/src/node_process_launch.mjs +28 -0
- package/src/process.mjs +2 -0
- package/src/runner_execute_task.mjs +15 -1
- package/src/runner_execution_support.mjs +69 -3
- package/src/runner_once.mjs +5 -0
- package/src/runner_status.mjs +72 -4
- package/src/runtime_engine_support.mjs +52 -5
- package/src/runtime_engine_task.mjs +7 -0
- package/src/runtime_settings.mjs +105 -0
- package/src/runtime_settings_loader.mjs +19 -0
- package/src/shell_invocation.mjs +227 -9
- package/src/supervisor_cli_support.mjs +49 -0
- package/src/supervisor_guardian.mjs +307 -0
- package/src/supervisor_runtime.mjs +142 -83
- package/src/supervisor_state.mjs +64 -0
- package/src/supervisor_watch.mjs +364 -0
- package/src/terminal_session_limits.mjs +1 -21
- package/src/windows_hidden_shell_proxy.mjs +405 -0
- package/src/workspace_registry.mjs +155 -0
package/README.md
CHANGED
|
@@ -1,649 +1,381 @@
|
|
|
1
1
|
# HelloLoop
|
|
2
2
|
|
|
3
3
|
> [!WARNING]
|
|
4
|
-
>
|
|
5
|
-
> 使用 `HelloLoop` 执行持续 / 持久型任务仍存在不可完全控制的风险。虽然项目已经加入高危行为管控与防护策略,但仍不能排除误删数据、误改文件、异常覆盖或其他不可预期后果。请在使用前务必先备份重要数据,并自行通过人工或借助 AI 对 `HelloLoop` 的安全风险做评估与审计;因使用本插件造成的数据丢失或其他损失,项目方不承担责任。
|
|
4
|
+
> `HelloLoop` 适合“持续推进型”的自动开发任务,不适合在未备份的重要仓库上直接盲跑。请先备份关键数据,并对自动修改结果进行人工复核。
|
|
6
5
|
|
|
7
|
-
`HelloLoop` 是一个面向 `Codex CLI`、`Claude Code`、`Gemini CLI`
|
|
6
|
+
`HelloLoop` 是一个面向 `Codex CLI`、`Claude Code`、`Gemini CLI` 的持续开发工作流插件。
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
它解决的不是“问一次、答一次”的问题,而是这类场景:
|
|
10
9
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
10
|
+
- 根据开发文档持续推进一个仓库,直到 backlog 清空
|
|
11
|
+
- 先分析当前代码进度,再补齐缺口,而不是从头乱做
|
|
12
|
+
- 中途遇到宿主中断、限流、网络抖动后还能继续接上
|
|
13
|
+
- 同时查看多个仓库的任务状态与执行进度
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
---
|
|
17
16
|
|
|
18
|
-
|
|
17
|
+
## 1. HelloLoop 能做什么
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
- **执行引擎**:真正负责本轮分析 / 开发 / 测试推进的 CLI
|
|
19
|
+
把“开发文档 + 现有代码 + 持续执行 + 可视化跟踪”收口成一条标准流程:
|
|
22
20
|
|
|
23
|
-
|
|
21
|
+
1. 自动识别项目仓库与开发文档
|
|
22
|
+
2. 分析当前进度、偏差和剩余任务
|
|
23
|
+
3. 生成 / 刷新 `.helloloop/backlog.json`
|
|
24
|
+
4. 输出中文确认单
|
|
25
|
+
5. 确认后持续执行、验证、复核
|
|
26
|
+
6. 中断后支持继续接续,而不是重新来一遍
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
- 在 `Codex` 中,只有显式输入 `$helloloop` / `#helloloop` / `helloloop:helloloop` 才算调用;仅仅提到 `helloloop` 仓库、README、代码、测试、release、npm 包名,都不算调用
|
|
27
|
-
- 无论在终端还是在 `Codex` / `Claude` / `Gemini` 宿主内,只要用户未明确指定引擎,`HelloLoop` 都会先询问本轮执行引擎
|
|
28
|
-
- 当前宿主、项目历史、用户历史只作为推荐依据,不会自动替你选中引擎
|
|
29
|
-
- 如果你已经显式指定,或已经在首轮确认中明确选定了引擎,本轮就固定按该引擎执行
|
|
30
|
-
- 如果后续因为登录、配额、限流等问题需要改用别的引擎,`HelloLoop` 也会先询问,不会静默切换
|
|
28
|
+
---
|
|
31
29
|
|
|
32
|
-
##
|
|
30
|
+
## 2. 最适合的使用场景
|
|
33
31
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
- 按架构文档、PRD、任务拆解持续完成仓库开发
|
|
33
|
+
- 多仓并行推进,需要统一看板跟踪
|
|
34
|
+
- 任务需要跑很久,不希望因为一次中断就全部停掉
|
|
35
|
+
- 需要让主终端、TUI 看板、Web 看板都能看到当前状态
|
|
36
|
+
- 需要在 `Codex CLI` / `Claude Code` / `Gemini CLI` 之间保持一致体验
|
|
39
37
|
|
|
40
|
-
|
|
38
|
+
不适合的场景:
|
|
41
39
|
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
40
|
+
- 只改一个很小的文件
|
|
41
|
+
- 单轮对话就能完成的简单问答
|
|
42
|
+
- 不允许自动修改文件、只想人工讨论方案
|
|
45
43
|
|
|
46
|
-
|
|
44
|
+
---
|
|
47
45
|
|
|
48
|
-
|
|
46
|
+
## 3. 核心能力
|
|
49
47
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
- `<PATH>` 可以是项目仓库路径、开发文档目录、开发文档文件
|
|
60
|
-
- 命令后可以继续追加自然语言要求
|
|
61
|
-
- 不确定时,优先只输入 `npx helloloop`
|
|
62
|
-
|
|
63
|
-
## 执行引擎选择规则
|
|
64
|
-
|
|
65
|
-
执行规则如下:
|
|
66
|
-
|
|
67
|
-
1. 命令首参数显式引擎:`codex` / `claude` / `gemini`
|
|
68
|
-
2. 自然语言中明确且不歧义地指定了引擎
|
|
69
|
-
3. 如果前两步仍未明确,先停下来询问本轮执行引擎;当前宿主、项目上次 / 默认、用户上次 / 默认只作为推荐依据
|
|
70
|
-
4. `-y` / `--yes` 等非交互模式下,如果你没有显式指定引擎,`HelloLoop` 会直接停止并要求补充引擎
|
|
71
|
-
|
|
72
|
-
补充说明:
|
|
73
|
-
|
|
74
|
-
- 首参只有第一个裸词会被解释为引擎;如果你真要把 `claude` 当目录名,请写成 `./claude`、`.\claude` 或绝对路径
|
|
75
|
-
- 命令后的自然语言如果明确提到 `codex`、`claude`、`gemini`,也会纳入意图判断
|
|
76
|
-
- 当前宿主、项目历史、用户历史不会触发自动选中,只会影响“推荐项”
|
|
77
|
-
- `已安装` 不等于 `可继续执行`;如果当前引擎在运行中遇到 400、鉴权、欠费、429、5xx、网络抖动、流中断、长时间卡死等问题,`HelloLoop` 会先按无人值守策略做同引擎“健康探测 + 条件恢复”,不会中途停下来询问
|
|
78
|
-
|
|
79
|
-
## 默认工作流
|
|
80
|
-
|
|
81
|
-
无论从哪个宿主进入,都遵循同一条主线:
|
|
82
|
-
|
|
83
|
-
1. 自动识别目标项目仓库与开发文档
|
|
84
|
-
2. 分析当前代码进度、偏差和项目匹配性
|
|
85
|
-
3. 在目标仓库根目录创建或刷新 `.helloloop/`
|
|
86
|
-
4. 输出中文执行确认单
|
|
87
|
-
5. 用户确认后,按选中的执行引擎持续推进开发、测试、验收
|
|
88
|
-
6. 每个任务完成后,自动做一次“任务完成复核”
|
|
89
|
-
7. backlog 暂时清空后,自动做一次“主线终态复核”
|
|
90
|
-
|
|
91
|
-
如果分析发现当前实现已经偏离开发文档,`HelloLoop` 会优先先收口偏差,再继续后面的 backlog。
|
|
92
|
-
|
|
93
|
-
这意味着:
|
|
94
|
-
|
|
95
|
-
- 不会因为执行引擎自己一句“已完成”就直接结束
|
|
96
|
-
- 如果只是部分完成,`HelloLoop` 会继续当前主线任务,而不是跳去做模型随口建议的别的事
|
|
97
|
-
- 如果 backlog 清空了,但主线终态复核仍发现文档目标还有缺口,`HelloLoop` 会自动重新分析并继续推进
|
|
98
|
-
- 如果模型只做了一半就想停下来给“下一步建议”,`HelloLoop` 会优先按主线目标继续推进,而不是把半成品当完成
|
|
99
|
-
|
|
100
|
-
## 后台监督执行
|
|
101
|
-
|
|
102
|
-
从当前版本开始,`HelloLoop` 的自动执行主线统一走 **detached supervisor + host lease** 模式:
|
|
103
|
-
|
|
104
|
-
- `analyze` 确认后的自动执行、`run-once`、`run-loop` 都默认切到后台 supervisor
|
|
105
|
-
- 当前对话 turn 就算被误按 `Esc`、被宿主暂停、或当前工具调用被中断,后台 supervisor 仍会继续
|
|
106
|
-
- 原有的 15 分钟级恢复、健康探测、同引擎自动恢复,也会继续由这个后台 supervisor 接管
|
|
107
|
-
- 这不是“当前进程死掉后每 15 分钟重新拉起一遍主进程”,而是 supervisor 本身持续存活,所以恢复链不会因为当前 turn 消失而断掉
|
|
108
|
-
- 真正的停止边界改成 **宿主租约**:只要宿主 CLI 窗口 / 进程还活着,任务就继续;如果宿主窗口真的关闭,HelloLoop 才会停止当前子进程并把任务回退为 `pending`
|
|
109
|
-
|
|
110
|
-
常见场景:
|
|
111
|
-
|
|
112
|
-
- 在 `Codex` / `Claude` / `Gemini` 宿主里运行 `helloloop`:确认后默认转入后台执行,可用 `helloloop status` 查看进度
|
|
113
|
-
- 在普通终端里运行 `npx helloloop`、`npx helloloop run-once`、`npx helloloop run-loop`:默认也会转入后台执行
|
|
114
|
-
- `--supervised` 仍然保留,但现在只是兼容参数,不再是开启后台 supervisor 的前提
|
|
115
|
-
|
|
116
|
-
## 无人值守恢复
|
|
117
|
-
|
|
118
|
-
`HelloLoop` 的设计目标不是“跑一轮停一轮”,而是启动前确认一次,启动后持续无人值守推进。
|
|
119
|
-
|
|
120
|
-
- 因此运行中的默认策略是:
|
|
121
|
-
|
|
122
|
-
- 普通运行故障不再中途提问:不会因为 429、5xx、网络抖动、结果流中断、短时空输出就停下来问用户
|
|
123
|
-
- 同引擎优先恢复:默认不会自动切换引擎,也不会偷偷改用别的 CLI
|
|
124
|
-
- 先探测、后续跑:重试前会先做最小健康探测;只有探测通过后,才会恢复主线任务,而不是盲目把完整任务再跑一遍
|
|
125
|
-
- 保留主线上下文恢复:同引擎恢复时会生成恢复记录与恢复 prompt,要求新一轮执行直接基于当前仓库状态继续,而不是从头另起一套
|
|
126
|
-
- 定时心跳检查:运行中会持续写入心跳与恢复状态,用于判断当前阶段是否还在正常推进
|
|
127
|
-
- 最终停止会告警:如果自动恢复额度真正用尽,且已配置全局邮箱,`HelloLoop` 会把错误类型与具体内容发到指定邮箱
|
|
128
|
-
|
|
129
|
-
默认恢复节奏:
|
|
130
|
-
|
|
131
|
-
- 心跳间隔:60 秒
|
|
132
|
-
- 疑似卡住预警:15 分钟无可见进展
|
|
133
|
-
- 自动终止阈值:45 分钟无可见进展
|
|
134
|
-
- 硬阻塞:每 15 分钟探测 1 次,共 5 次;仍失败则暂停等待人工介入
|
|
135
|
-
- 软阻塞:先每 15 分钟探测 5 次,再 30 分钟 2 次,再按 60 / 90 / 120 / 150 / 180 分钟各探测 1 次;仍失败则暂停等待人工介入
|
|
136
|
-
|
|
137
|
-
如果你明确指定或确认了本轮引擎,`HelloLoop` 在自动恢复阶段也会继续锁定该引擎,不会擅自切换。
|
|
138
|
-
|
|
139
|
-
但要特别注意:
|
|
140
|
-
|
|
141
|
-
- 在 `Codex` / `Claude` / `Gemini` 宿主里,当前 turn 被误按 `Esc`、当前工具调用被取消,或当前会话暂时暂停时,只要宿主窗口本身还活着,后台 supervisor 仍会继续,原有自动恢复节奏也会继续生效
|
|
142
|
-
- 如果真正关闭了宿主 CLI 窗口、终端进程结束,或宿主租约已经失效,HelloLoop 会停止当前子进程,并把未完成任务回退为 `pending`
|
|
143
|
-
- 也就是说:**当前 turn 取消 ≠ 停止 HelloLoop;关闭宿主窗口 = 停止 HelloLoop**
|
|
144
|
-
- 宿主窗口已经关闭后,HelloLoop 不会再脱离宿主自行无限后台驻留;这时需要你重新打开宿主并再次显式调用 `helloloop` 来接续
|
|
48
|
+
- 显式调用才接管,不会默默劫持普通对话
|
|
49
|
+
- 自动对齐“开发文档目标”与“当前代码事实”
|
|
50
|
+
- 分析、执行、验证、任务复核、主线终态复核一体化
|
|
51
|
+
- 默认后台执行,但当前终端可以继续实时观察
|
|
52
|
+
- 宿主中断后可输出自然语言续跑提示
|
|
53
|
+
- 提供终端 TUI 总控台
|
|
54
|
+
- 提供本地 Web 看板
|
|
55
|
+
- 提供结构化 JSON 状态流,方便上层程序消费
|
|
56
|
+
- Windows 下尽量隐藏后台控制台,避免频繁弹窗 / 闪烁
|
|
145
57
|
|
|
146
|
-
|
|
58
|
+
---
|
|
147
59
|
|
|
148
|
-
|
|
60
|
+
## 4. 支持的宿主
|
|
149
61
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
```json
|
|
157
|
-
{
|
|
158
|
-
"notifications": {
|
|
159
|
-
"email": {
|
|
160
|
-
"enabled": true,
|
|
161
|
-
"to": ["you@example.com"],
|
|
162
|
-
"from": "helloloop@example.com",
|
|
163
|
-
"smtp": {
|
|
164
|
-
"host": "smtp.example.com",
|
|
165
|
-
"port": 465,
|
|
166
|
-
"secure": true,
|
|
167
|
-
"username": "helloloop@example.com",
|
|
168
|
-
"passwordEnv": "HELLOLOOP_SMTP_PASSWORD"
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
```
|
|
62
|
+
| 宿主 | 调用方式 |
|
|
63
|
+
| --- | --- |
|
|
64
|
+
| `Codex CLI` | `Codex` 内输入 `$helloloop` / `#helloloop` / `helloloop:helloloop` |
|
|
65
|
+
| `Claude Code` | `/helloloop` |
|
|
66
|
+
| `Gemini CLI` | `/helloloop` |
|
|
67
|
+
| 普通终端 | `npx helloloop` |
|
|
174
68
|
|
|
175
69
|
说明:
|
|
176
70
|
|
|
177
|
-
-
|
|
178
|
-
-
|
|
71
|
+
- 只有用户显式调用时才进入 HelloLoop
|
|
72
|
+
- 只是在对话里提到 `helloloop` 仓库、README、命令示例,不算调用
|
|
179
73
|
|
|
180
|
-
|
|
74
|
+
---
|
|
181
75
|
|
|
182
|
-
|
|
76
|
+
## 5. 安装
|
|
183
77
|
|
|
184
|
-
|
|
185
|
-
- **背景终端** 指 detached supervisor 后台会话
|
|
78
|
+
### 安装到 Codex
|
|
186
79
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
- 背景终端最多 `8`
|
|
191
|
-
- 显示 + 背景合计最多 `8`
|
|
80
|
+
```bash
|
|
81
|
+
npx helloloop install --host codex
|
|
82
|
+
```
|
|
192
83
|
|
|
193
|
-
|
|
84
|
+
### 安装到 Claude Code
|
|
194
85
|
|
|
195
|
-
```
|
|
196
|
-
|
|
86
|
+
```bash
|
|
87
|
+
npx helloloop install --host claude
|
|
197
88
|
```
|
|
198
89
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
"runtime": {
|
|
204
|
-
"terminalConcurrency": {
|
|
205
|
-
"enabled": true,
|
|
206
|
-
"visibleMax": 8,
|
|
207
|
-
"backgroundMax": 8,
|
|
208
|
-
"totalMax": 8
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
90
|
+
### 安装到 Gemini CLI
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npx helloloop install --host gemini
|
|
212
94
|
```
|
|
213
95
|
|
|
214
|
-
|
|
96
|
+
### 一次装到全部宿主
|
|
215
97
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
98
|
+
```bash
|
|
99
|
+
npx helloloop install --host all
|
|
100
|
+
```
|
|
219
101
|
|
|
220
|
-
|
|
102
|
+
---
|
|
221
103
|
|
|
222
|
-
|
|
104
|
+
## 6. 最快上手
|
|
223
105
|
|
|
224
|
-
|
|
106
|
+
### 只让 HelloLoop 自己判断
|
|
225
107
|
|
|
226
108
|
```bash
|
|
227
109
|
npx helloloop
|
|
228
110
|
```
|
|
229
111
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
- 当前目录本身就是开发文档目录时,会先尝试从文档反推项目目录
|
|
233
|
-
- 当前目录看起来像普通项目目录时,默认直接把当前目录作为项目目录
|
|
234
|
-
- 当前目录更像工作区或用户主目录时,才会额外询问项目目录
|
|
235
|
-
- 如果当前项目目录下没有明确开发文档,会只提示补充“开发文档”这一项,并说明已检查的常见位置
|
|
236
|
-
|
|
237
|
-
### 2. 项目路径只问一次
|
|
238
|
-
|
|
239
|
-
对外只有“项目路径”这一个概念:
|
|
240
|
-
|
|
241
|
-
- 输入已有目录 → 按现有项目继续分析
|
|
242
|
-
- 输入不存在的目录 → 视为准备创建的新项目目录
|
|
243
|
-
|
|
244
|
-
不会再额外追问一个“新项目路径”。
|
|
245
|
-
|
|
246
|
-
### 3. 缺什么就只问什么
|
|
247
|
-
|
|
248
|
-
正常情况下只需要两项信息:
|
|
249
|
-
|
|
250
|
-
- 项目目录
|
|
251
|
-
- 开发文档
|
|
252
|
-
|
|
253
|
-
其中:
|
|
254
|
-
|
|
255
|
-
- 项目目录默认优先使用当前打开的目录
|
|
256
|
-
- 当前目录明显不是项目目录时,才会额外询问项目目录
|
|
257
|
-
- 开发文档缺失时,只会询问开发文档
|
|
258
|
-
|
|
259
|
-
以下情况不会硬猜:
|
|
112
|
+
### 指定开发文档或项目路径
|
|
260
113
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
### 4. 命令 + 自然语言会一起分析
|
|
266
|
-
|
|
267
|
-
`HelloLoop` 不依赖固定中文关键词做硬编码分流。
|
|
268
|
-
|
|
269
|
-
命令里的:
|
|
270
|
-
|
|
271
|
-
- 显式路径
|
|
272
|
-
- 中文自然语言
|
|
273
|
-
- 英文自然语言
|
|
274
|
-
- 其他语言的补充要求
|
|
275
|
-
|
|
276
|
-
都会一起进入分析和确认单,不会因为语言不同被静默忽略。
|
|
277
|
-
|
|
278
|
-
### 5. 现有项目与文档目标冲突时
|
|
114
|
+
```bash
|
|
115
|
+
npx helloloop <PATH>
|
|
116
|
+
```
|
|
279
117
|
|
|
280
|
-
|
|
118
|
+
`<PATH>` 可以是:
|
|
281
119
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
120
|
+
- 项目仓库目录
|
|
121
|
+
- 开发文档目录
|
|
122
|
+
- 开发文档文件
|
|
285
123
|
|
|
286
|
-
|
|
124
|
+
### 明确指定执行引擎
|
|
287
125
|
|
|
288
126
|
```bash
|
|
289
|
-
npx helloloop
|
|
127
|
+
npx helloloop codex
|
|
128
|
+
npx helloloop claude
|
|
129
|
+
npx helloloop gemini
|
|
290
130
|
```
|
|
291
131
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
真正开始开发前,`HelloLoop` 会先输出中文执行确认单,至少包含:
|
|
295
|
-
|
|
296
|
-
- 路径判断与判断依据
|
|
297
|
-
- 本次命令补充输入
|
|
298
|
-
- 执行引擎
|
|
299
|
-
- 需求语义理解
|
|
300
|
-
- 项目匹配判断
|
|
301
|
-
- 项目目录
|
|
302
|
-
- 开发文档
|
|
303
|
-
- 当前进度
|
|
304
|
-
- 已实现事项
|
|
305
|
-
- 待完成事项
|
|
306
|
-
- 任务统计
|
|
307
|
-
- 首个待执行任务
|
|
308
|
-
- 验证命令预览
|
|
309
|
-
- 自动执行停止条件
|
|
132
|
+
### 跳过确认直接开始
|
|
310
133
|
|
|
311
|
-
|
|
134
|
+
```bash
|
|
135
|
+
npx helloloop -y
|
|
136
|
+
```
|
|
312
137
|
|
|
313
|
-
|
|
138
|
+
### 只分析,不执行
|
|
314
139
|
|
|
315
|
-
|
|
316
|
-
-
|
|
317
|
-
|
|
318
|
-
- 只有“任务验收闭合 + 主线目标闭合 + 验证通过”才算真正结束
|
|
319
|
-
- 运行中若出现可恢复的 CLI 故障,则按无人值守策略自动恢复,不打断主线
|
|
140
|
+
```bash
|
|
141
|
+
npx helloloop --dry-run
|
|
142
|
+
```
|
|
320
143
|
|
|
321
|
-
|
|
144
|
+
---
|
|
322
145
|
|
|
323
|
-
|
|
146
|
+
## 7. 常见使用方式
|
|
324
147
|
|
|
325
|
-
|
|
148
|
+
### 场景 A:根据文档持续完成一个仓库
|
|
326
149
|
|
|
327
150
|
```bash
|
|
328
|
-
npx helloloop
|
|
329
|
-
npx helloloop install --codex-home <CODEX_HOME>
|
|
151
|
+
npx helloloop "D:\GitHub\dev\hellomind-codex\docs"
|
|
330
152
|
```
|
|
331
153
|
|
|
332
|
-
|
|
154
|
+
### 场景 B:指定仓库并补充自然语言要求
|
|
333
155
|
|
|
334
156
|
```bash
|
|
335
|
-
npx helloloop
|
|
336
|
-
npx helloloop install --host claude
|
|
337
|
-
npx helloloop install --host gemini
|
|
338
|
-
npx helloloop install --host all
|
|
157
|
+
npx helloloop "D:\GitHub\dev\repo" 先对齐开发文档,再继续完成剩余任务
|
|
339
158
|
```
|
|
340
159
|
|
|
341
|
-
|
|
160
|
+
### 场景 C:强制某个引擎继续推进
|
|
342
161
|
|
|
343
162
|
```bash
|
|
344
|
-
|
|
345
|
-
--claude-home <CLAUDE_HOME>
|
|
346
|
-
--gemini-home <GEMINI_HOME>
|
|
163
|
+
npx helloloop codex "D:\GitHub\dev\repo" 接着做,不要重新分析无关内容
|
|
347
164
|
```
|
|
348
165
|
|
|
349
|
-
###
|
|
166
|
+
### 场景 D:宿主中断后继续接上
|
|
350
167
|
|
|
351
168
|
```bash
|
|
352
|
-
|
|
169
|
+
helloloop resume-host
|
|
353
170
|
```
|
|
354
171
|
|
|
355
|
-
|
|
172
|
+
如果要让上层程序读取结构化结果:
|
|
356
173
|
|
|
357
|
-
```
|
|
358
|
-
|
|
174
|
+
```bash
|
|
175
|
+
helloloop resume-host --json
|
|
359
176
|
```
|
|
360
177
|
|
|
361
|
-
|
|
178
|
+
---
|
|
362
179
|
|
|
363
|
-
|
|
364
|
-
npx helloloop install --force
|
|
365
|
-
npx helloloop install --host claude --force
|
|
366
|
-
npx helloloop install --host gemini --force
|
|
367
|
-
npx helloloop install --host codex --force
|
|
368
|
-
npx helloloop install --host all --force
|
|
369
|
-
```
|
|
180
|
+
## 8. 后台执行与继续观察
|
|
370
181
|
|
|
371
|
-
|
|
182
|
+
`HelloLoop` 的默认体验是:
|
|
372
183
|
|
|
373
|
-
-
|
|
374
|
-
-
|
|
375
|
-
-
|
|
376
|
-
- `Gemini` 会刷新 `extensions/helloloop/`,不会动同目录下其他扩展
|
|
377
|
-
- 安装 / 升级 / 重装时,会同步校准 `~/.helloloop/settings.json` 的当前版本结构:补齐缺失项、清理未知项、保留已知项现有值
|
|
378
|
-
- 如果 `~/.helloloop/settings.json` 被确认不是合法 JSON,会先备份原文件,再按当前版本结构重建
|
|
379
|
-
- 如果只是首次读取时出现瞬时异常,但重读后内容合法,则不会误生成备份文件
|
|
380
|
-
- 如果宿主自己的配置 JSON(如 `Codex marketplace.json`、`Claude settings.json`、`known_marketplaces.json`、`installed_plugins.json`)本身已损坏,`HelloLoop` 会先明确报错并停止,不会先清理现有安装再失败
|
|
184
|
+
- 自动执行时切到后台继续跑
|
|
185
|
+
- 当前终端仍可继续观察实时输出
|
|
186
|
+
- 当前 turn 被打断,不等于后台任务立即停止
|
|
381
187
|
|
|
382
|
-
|
|
188
|
+
如果你稍后想重新看进度:
|
|
383
189
|
|
|
384
190
|
```bash
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
npx helloloop uninstall --host gemini
|
|
388
|
-
npx helloloop uninstall --host all
|
|
191
|
+
helloloop watch
|
|
192
|
+
helloloop status --watch
|
|
389
193
|
```
|
|
390
194
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
- 只删除 `helloloop` 自己的安装目录和注册条目
|
|
394
|
-
- 不会顺带删除别的插件、marketplace、扩展或自定义配置
|
|
395
|
-
- 即使某个宿主当前未安装 `helloloop`,也会安全退出,不做破坏性清理
|
|
396
|
-
|
|
397
|
-
## 使用入口
|
|
398
|
-
|
|
399
|
-
### 终端
|
|
195
|
+
如果你只想后台继续跑,前台命令立即返回:
|
|
400
196
|
|
|
401
197
|
```bash
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
npx helloloop codex <PATH>
|
|
405
|
-
npx helloloop claude <PATH>
|
|
406
|
-
npx helloloop gemini <PATH> <补充说明>
|
|
198
|
+
helloloop run-loop --detach
|
|
199
|
+
helloloop run-once --detach
|
|
407
200
|
```
|
|
408
201
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
### Codex CLI
|
|
202
|
+
---
|
|
412
203
|
|
|
413
|
-
|
|
414
|
-
$helloloop
|
|
415
|
-
helloloop:helloloop
|
|
416
|
-
```
|
|
204
|
+
## 9. 看板与可视化
|
|
417
205
|
|
|
418
|
-
|
|
206
|
+
### 终端 TUI 总控台
|
|
419
207
|
|
|
420
208
|
```bash
|
|
421
|
-
|
|
209
|
+
helloloop dashboard
|
|
210
|
+
helloloop tui
|
|
211
|
+
helloloop dash
|
|
422
212
|
```
|
|
423
213
|
|
|
424
|
-
|
|
425
|
-
未显式调用 `$helloloop`、`helloloop:helloloop` 或 `npx helloloop` 时,普通 `Codex` 会话不会被 HelloLoop 自动接管。
|
|
426
|
-
|
|
427
|
-
### Claude Code / Gemini CLI
|
|
214
|
+
适合:
|
|
428
215
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
216
|
+
- 常驻一个终端看多仓任务
|
|
217
|
+
- 在仓库之间快速切换
|
|
218
|
+
- 查看 backlog 的待处理 / 进行中 / 已完成 / 阻塞 / 失败
|
|
432
219
|
|
|
433
|
-
|
|
434
|
-
只有在你显式调用 `/helloloop` 时,它们才会进入 HelloLoop 工作流;普通 Claude / Gemini 会话不会被自动接管。
|
|
220
|
+
快捷键:
|
|
435
221
|
|
|
436
|
-
|
|
222
|
+
- `← / →` 切换仓库
|
|
223
|
+
- `↑ / ↓` 滚动
|
|
224
|
+
- `1-9` 直达仓库
|
|
225
|
+
- `r` 刷新
|
|
226
|
+
- `q` 退出
|
|
437
227
|
|
|
438
|
-
|
|
439
|
-
| --- | --- |
|
|
440
|
-
| `helloloop` / `analyze` | 自动分析、展示确认单,并在确认后持续接续开发,直到主线目标闭合或遇到硬阻塞 |
|
|
441
|
-
| `install` | 安装运行时 bundle 到指定宿主 |
|
|
442
|
-
| `uninstall` | 从指定宿主卸载运行时 bundle 与注册信息 |
|
|
443
|
-
| `doctor` | 检查宿主环境、插件资产与目标仓库状态 |
|
|
444
|
-
| `init` | 手动初始化 `.helloloop/` 模板 |
|
|
445
|
-
| `status` | 查看 backlog 摘要和当前状态 |
|
|
446
|
-
| `next` | 生成下一任务的干跑预览 |
|
|
447
|
-
| `run-once` | 执行一个任务 |
|
|
448
|
-
| `run-loop` | 连续执行多个任务 |
|
|
449
|
-
|
|
450
|
-
常用选项:
|
|
451
|
-
|
|
452
|
-
| 选项 | 作用 |
|
|
453
|
-
| --- | --- |
|
|
454
|
-
| `codex` / `claude` / `gemini` | 作为 `analyze` 模式的命令首参数,显式指定执行引擎 |
|
|
455
|
-
| `--dry-run` | 只分析并输出确认单,不开始自动执行 |
|
|
456
|
-
| `-y` / `--yes` | 跳过执行确认直接开始;但如果未显式指定引擎,会直接报错而不是自动选引擎 |
|
|
457
|
-
| `--repo <dir>` | 高级覆盖:显式指定项目仓库 |
|
|
458
|
-
| `--docs <dir|file>` | 高级覆盖:显式指定开发文档 |
|
|
459
|
-
| `--supervised` | 兼容保留;当前版本默认已启用 detached supervisor |
|
|
460
|
-
| `--rebuild-existing` | 项目与文档冲突时,自动清理现有项目后重建 |
|
|
461
|
-
| `--host <name>` | 安装宿主:`codex` / `claude` / `gemini` / `all` |
|
|
462
|
-
| `--config-dir <dir>` | 状态目录名,默认 `.helloloop` |
|
|
463
|
-
|
|
464
|
-
手动控制示例:
|
|
228
|
+
### 本地 Web 看板
|
|
465
229
|
|
|
466
230
|
```bash
|
|
467
|
-
|
|
468
|
-
npx helloloop next
|
|
469
|
-
npx helloloop run-once
|
|
231
|
+
helloloop web
|
|
470
232
|
```
|
|
471
233
|
|
|
472
|
-
|
|
234
|
+
默认会启动一个本地 Web 服务,并输出访问地址。
|
|
473
235
|
|
|
474
|
-
|
|
236
|
+
可选参数:
|
|
475
237
|
|
|
476
238
|
```bash
|
|
477
|
-
|
|
239
|
+
helloloop web --port 3210
|
|
240
|
+
helloloop web --bind 127.0.0.1
|
|
241
|
+
helloloop web --stop
|
|
478
242
|
```
|
|
479
243
|
|
|
480
|
-
|
|
244
|
+
适合:
|
|
481
245
|
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
246
|
+
- 长时间像 Jira 一样挂着看板
|
|
247
|
+
- 多仓泳道 + 任务列跟踪
|
|
248
|
+
- 点击任务查看详情
|
|
485
249
|
|
|
486
|
-
|
|
250
|
+
### 给主代理或外部程序消费结构化状态
|
|
487
251
|
|
|
488
252
|
```bash
|
|
489
|
-
|
|
253
|
+
helloloop dashboard --json
|
|
254
|
+
helloloop dashboard --json --watch
|
|
255
|
+
helloloop dash -j --watch --poll-ms 2000
|
|
490
256
|
```
|
|
491
257
|
|
|
492
|
-
|
|
258
|
+
---
|
|
493
259
|
|
|
494
|
-
|
|
260
|
+
## 10. 常用命令速查
|
|
495
261
|
|
|
496
|
-
|
|
497
|
-
|
|
262
|
+
| 命令 | 作用 |
|
|
263
|
+
| --- | --- |
|
|
264
|
+
| `helloloop` | 分析并进入主流程 |
|
|
265
|
+
| `helloloop status` / `helloloop st` | 查看当前仓库状态 |
|
|
266
|
+
| `helloloop watch` / `helloloop w` | 重新附着后台会话 |
|
|
267
|
+
| `helloloop next` / `helloloop n` | 预览下一任务 |
|
|
268
|
+
| `helloloop run-once` / `helloloop once` | 执行一个任务 |
|
|
269
|
+
| `helloloop run-loop` / `helloloop loop` | 连续执行多个任务 |
|
|
270
|
+
| `helloloop dashboard` / `helloloop dash` | 打开终端总控台 |
|
|
271
|
+
| `helloloop tui` | 显式打开 TUI 看板 |
|
|
272
|
+
| `helloloop web` | 启动本地 Web 看板 |
|
|
273
|
+
| `helloloop resume-host` / `helloloop rh` | 输出宿主续跑提示 |
|
|
274
|
+
| `helloloop doctor` / `helloloop dr` | 诊断安装与运行环境 |
|
|
275
|
+
| `helloloop install` | 安装插件到宿主 |
|
|
276
|
+
| `helloloop uninstall` | 从宿主卸载插件 |
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## 11. 短命令别名
|
|
281
|
+
|
|
282
|
+
如果你不想每次打很长:
|
|
498
283
|
|
|
499
284
|
```bash
|
|
500
|
-
|
|
501
|
-
|
|
285
|
+
helloloop dash
|
|
286
|
+
helloloop tui
|
|
287
|
+
helloloop web
|
|
288
|
+
helloloop st
|
|
289
|
+
helloloop w
|
|
290
|
+
helloloop rh
|
|
291
|
+
helloloop once
|
|
292
|
+
helloloop loop
|
|
502
293
|
```
|
|
503
294
|
|
|
504
|
-
|
|
295
|
+
---
|
|
505
296
|
|
|
506
|
-
|
|
507
|
-
git tag vX.Y.Z
|
|
508
|
-
git push origin vX.Y.Z
|
|
509
|
-
```
|
|
297
|
+
## 12. 配置文件
|
|
510
298
|
|
|
511
|
-
|
|
299
|
+
全局设置位于:
|
|
512
300
|
|
|
513
|
-
```
|
|
514
|
-
|
|
515
|
-
git push origin vX.Y.Z-beta.N
|
|
301
|
+
```text
|
|
302
|
+
~/.helloloop/settings.json
|
|
516
303
|
```
|
|
517
304
|
|
|
518
|
-
|
|
305
|
+
常见配置包括:
|
|
519
306
|
|
|
520
|
-
-
|
|
521
|
-
-
|
|
522
|
-
-
|
|
523
|
-
-
|
|
524
|
-
- GitHub Release
|
|
307
|
+
- 观察层自动重试
|
|
308
|
+
- 后台守护保活
|
|
309
|
+
- 终端并发上限
|
|
310
|
+
- 告警邮箱
|
|
525
311
|
|
|
526
|
-
|
|
312
|
+
项目级运行状态位于目标仓库:
|
|
527
313
|
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
- GitHub Release 阶段现已改为使用官方 `gh` CLI + `generate-notes` API 创建 / 更新 release,不再依赖会触发 Node runtime deprecation warning 的第三方 action
|
|
532
|
-
|
|
533
|
-
## 宿主写入范围
|
|
534
|
-
|
|
535
|
-
为了方便排查安装 / 更新 / 卸载问题,下面是默认写入位置:
|
|
536
|
-
|
|
537
|
-
### `Codex CLI`
|
|
538
|
-
|
|
539
|
-
- 插件源码目录:`~/plugins/helloloop/`
|
|
540
|
-
- 已安装缓存:`~/.codex/plugins/cache/local-plugins/helloloop/local/`
|
|
541
|
-
- marketplace:`~/.agents/plugins/marketplace.json`
|
|
542
|
-
- 启用配置:`~/.codex/config.toml`
|
|
543
|
-
|
|
544
|
-
### `Claude Code`
|
|
545
|
-
|
|
546
|
-
- marketplace:`~/.claude/plugins/marketplaces/helloloop-local/`
|
|
547
|
-
- 已安装插件缓存:`~/.claude/plugins/cache/helloloop-local/helloloop/<VERSION>/`
|
|
548
|
-
- 用户配置:`~/.claude/settings.json`
|
|
549
|
-
- marketplace 索引:`~/.claude/plugins/known_marketplaces.json`
|
|
550
|
-
- 已安装插件索引:`~/.claude/plugins/installed_plugins.json`
|
|
551
|
-
|
|
552
|
-
### `Gemini CLI`
|
|
314
|
+
```text
|
|
315
|
+
<repo>/.helloloop/
|
|
316
|
+
```
|
|
553
317
|
|
|
554
|
-
|
|
318
|
+
其中通常会包含:
|
|
555
319
|
|
|
556
|
-
|
|
320
|
+
- backlog
|
|
321
|
+
- 运行状态
|
|
322
|
+
- supervisor 状态
|
|
323
|
+
- 宿主续跑信息
|
|
324
|
+
- runs 执行记录
|
|
557
325
|
|
|
558
|
-
|
|
326
|
+
---
|
|
559
327
|
|
|
560
|
-
|
|
328
|
+
## 13. Windows 使用说明
|
|
561
329
|
|
|
562
|
-
|
|
563
|
-
~/.helloloop/
|
|
564
|
-
└── settings.json
|
|
565
|
-
```
|
|
330
|
+
`HelloLoop` 会尽量把后台启动、内部调度和观察链做成隐藏模式,目标是:
|
|
566
331
|
|
|
567
|
-
|
|
332
|
+
- 不弹出空白 PowerShell 窗口
|
|
333
|
+
- 不让后台守护层反复闪烁控制台
|
|
334
|
+
- 主任务在后台继续跑,主终端只负责观察
|
|
568
335
|
|
|
569
|
-
|
|
570
|
-
- 安装 / 升级 / 重装时,会对 `settings.json` 做结构校准,但不会校验或篡改你已存在的已知项内容
|
|
571
|
-
- 只有在 `settings.json` 被确认非法时,才会先备份,再重建为当前版本结构
|
|
572
|
-
- 如果只是读取瞬时异常、重读后合法,不会误生成 `.bak`
|
|
336
|
+
但首次安装、系统权限、终端自身限制等因素仍可能影响最终表现。
|
|
573
337
|
|
|
574
|
-
|
|
338
|
+
如果你主要关心状态可视化,优先使用:
|
|
575
339
|
|
|
576
|
-
`
|
|
340
|
+
- `helloloop dashboard`
|
|
341
|
+
- `helloloop tui`
|
|
342
|
+
- `helloloop web`
|
|
577
343
|
|
|
578
|
-
|
|
579
|
-
.helloloop/
|
|
580
|
-
├── backlog.json
|
|
581
|
-
├── policy.json
|
|
582
|
-
├── project.json
|
|
583
|
-
├── status.json
|
|
584
|
-
├── STATE.md
|
|
585
|
-
└── runs/
|
|
586
|
-
```
|
|
344
|
+
---
|
|
587
345
|
|
|
588
|
-
|
|
589
|
-
也不会写入 `~/.helloloop/`。
|
|
346
|
+
## 14. 边界说明
|
|
590
347
|
|
|
591
|
-
|
|
348
|
+
`HelloLoop` 不会做这些事:
|
|
592
349
|
|
|
593
|
-
|
|
350
|
+
- 不会在普通对话里静默接管当前宿主
|
|
351
|
+
- 不会在未确认时默认清空已有项目目录
|
|
352
|
+
- 不会因为一条“已完成”回复就直接宣称任务真正完成
|
|
353
|
+
- 不会在恢复阶段偷偷切换到别的引擎
|
|
594
354
|
|
|
595
|
-
|
|
596
|
-
- 也支持 `bash`(如 Git Bash)与 `powershell`
|
|
597
|
-
- 不回退到 `cmd.exe`
|
|
598
|
-
- 避免危险的嵌套命令、路径拼接删除和 `cmd` 风格破坏性流程
|
|
355
|
+
---
|
|
599
356
|
|
|
600
|
-
|
|
357
|
+
## 15. 推荐工作方式
|
|
601
358
|
|
|
602
|
-
|
|
603
|
-
- 如果没有 `bash`,回退到 `sh`
|
|
359
|
+
### 个人开发者
|
|
604
360
|
|
|
605
|
-
|
|
361
|
+
- 用 `npx helloloop` 或宿主内显式调用开始
|
|
362
|
+
- 用 `watch` 看实时过程
|
|
363
|
+
- 用 `dashboard` / `tui` 看多仓状态
|
|
606
364
|
|
|
607
|
-
|
|
608
|
-
- 不静默回退
|
|
609
|
-
- 不静默切换执行引擎
|
|
610
|
-
- 不吞掉错误
|
|
611
|
-
- 真正执行前先确认
|
|
612
|
-
- 真正结束前先验证
|
|
613
|
-
- 不轻信执行引擎口头“已完成”
|
|
614
|
-
- 不接受“先做一半再停下来问要不要继续”
|
|
365
|
+
### 多仓联动开发
|
|
615
366
|
|
|
616
|
-
|
|
367
|
+
- 每个仓库各自维护 `.helloloop/`
|
|
368
|
+
- 用 `web` 看整体进度
|
|
369
|
+
- 用 `resume-host` 在主代理中断后继续接上
|
|
617
370
|
|
|
618
|
-
|
|
619
|
-
helloloop/
|
|
620
|
-
├── .claude-plugin/
|
|
621
|
-
├── .codex-plugin/
|
|
622
|
-
├── .github/
|
|
623
|
-
├── .helloagents/
|
|
624
|
-
├── bin/
|
|
625
|
-
├── docs/
|
|
626
|
-
├── hosts/
|
|
627
|
-
├── scripts/
|
|
628
|
-
├── skills/
|
|
629
|
-
├── src/
|
|
630
|
-
├── templates/
|
|
631
|
-
├── tests/
|
|
632
|
-
├── LICENSE
|
|
633
|
-
├── package.json
|
|
634
|
-
└── README.md
|
|
635
|
-
```
|
|
371
|
+
### 长时间任务
|
|
636
372
|
|
|
637
|
-
|
|
373
|
+
- 先确认后启动
|
|
374
|
+
- 让后台继续执行
|
|
375
|
+
- 用 `status` / `watch` / `dashboard` / `web` 轮流观察
|
|
638
376
|
|
|
639
|
-
|
|
640
|
-
- `.claude-plugin/`:Claude plugin manifest
|
|
641
|
-
- `hosts/`:Claude marketplace / Gemini extension 资产
|
|
642
|
-
- `skills/`:Codex 插件技能说明
|
|
643
|
-
- `src/`:发现、分析、执行、安装、卸载、doctor 等核心实现
|
|
644
|
-
- `templates/`:初始化目标仓库 `.helloloop/` 的模板
|
|
645
|
-
- `docs/` 与 `tests/`:源码仓库维护资料,不进入运行时安装包
|
|
377
|
+
---
|
|
646
378
|
|
|
647
|
-
##
|
|
379
|
+
## 16. 一句话理解
|
|
648
380
|
|
|
649
|
-
`HelloLoop`
|
|
381
|
+
如果普通 CLI 像“单次回答助手”,那 `HelloLoop` 更像“持续推进开发任务的执行层 + 观察层 + 续跑层”。
|