helloloop 0.2.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 +297 -272
- package/hosts/claude/marketplace/plugins/helloloop/.claude-plugin/plugin.json +1 -1
- package/hosts/claude/marketplace/plugins/helloloop/commands/helloloop.md +19 -9
- package/hosts/claude/marketplace/plugins/helloloop/skills/helloloop/SKILL.md +12 -4
- package/hosts/gemini/extension/GEMINI.md +13 -4
- package/hosts/gemini/extension/commands/helloloop.toml +19 -8
- package/hosts/gemini/extension/gemini-extension.json +1 -1
- package/package.json +2 -2
- package/scripts/uninstall-home-plugin.ps1 +25 -0
- package/skills/helloloop/SKILL.md +42 -7
- package/src/analyze_confirmation.mjs +108 -8
- package/src/analyze_prompt.mjs +17 -1
- package/src/analyze_user_input.mjs +321 -0
- package/src/analyzer.mjs +167 -42
- package/src/cli.mjs +34 -308
- 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 +95 -31
- package/src/completion_review.mjs +243 -0
- package/src/config.mjs +50 -0
- package/src/discovery.mjs +243 -9
- package/src/discovery_inference.mjs +62 -18
- package/src/discovery_paths.mjs +143 -8
- package/src/discovery_prompt.mjs +273 -0
- 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 +20 -266
- 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/rebuild.mjs +116 -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 +58 -1
- package/templates/policy.template.json +27 -0
- package/templates/project.template.json +2 -0
- package/templates/task-review-output.schema.json +70 -0
package/README.md
CHANGED
|
@@ -1,414 +1,433 @@
|
|
|
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
|
-
- `
|
|
7
|
+
- 三家都能安装、都能用、都按各自原生 agent 逻辑执行
|
|
8
|
+
- `Codex CLI` 仍然是首发平台、参考实现和最佳体验路径
|
|
9
|
+
- 运行状态统一写入目标仓库根目录的 `.helloloop/`
|
|
10
|
+
- 真正执行前先分析、先确认,执行中不静默失败、不静默切换
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
## 宿主与执行引擎
|
|
13
|
+
|
|
14
|
+
`HelloLoop` 区分两个概念:
|
|
15
|
+
|
|
16
|
+
- **宿主**:你从哪里进入,例如终端、`Codex`、`Claude`、`Gemini`
|
|
17
|
+
- **执行引擎**:真正负责本轮分析 / 开发 / 测试推进的 CLI
|
|
18
|
+
|
|
19
|
+
这意味着:
|
|
20
|
+
|
|
21
|
+
- 无论在终端还是在 `Codex` / `Claude` / `Gemini` 宿主内,只要用户未明确指定引擎,`HelloLoop` 都会先询问本轮执行引擎
|
|
22
|
+
- 当前宿主、项目历史、用户历史只作为推荐依据,不会自动替你选中引擎
|
|
23
|
+
- 如果你已经显式指定,或已经在首轮确认中明确选定了引擎,本轮就固定按该引擎执行
|
|
24
|
+
- 如果后续因为登录、配额、限流等问题需要改用别的引擎,`HelloLoop` 也会先询问,不会静默切换
|
|
25
|
+
|
|
26
|
+
## 支持矩阵
|
|
27
|
+
|
|
28
|
+
| 宿主 | 安装方式 | 原生入口 | 说明 |
|
|
29
|
+
| --- | --- | --- | --- |
|
|
30
|
+
| `Codex CLI` | `helloloop install` / `helloloop install --host codex` | `$helloloop` / `npx helloloop` | Codex 原生插件 + CLI |
|
|
31
|
+
| `Claude Code` | `helloloop install --host claude` | `/helloloop` | Claude 原生 marketplace / plugin |
|
|
32
|
+
| `Gemini CLI` | `helloloop install --host gemini` | `/helloloop` | Gemini 原生 extension |
|
|
33
|
+
|
|
34
|
+
## 最短使用方式
|
|
35
|
+
|
|
36
|
+
推荐先记住下面四种:
|
|
11
37
|
|
|
12
38
|
```bash
|
|
13
39
|
npx helloloop
|
|
14
40
|
npx helloloop <PATH>
|
|
41
|
+
npx helloloop claude
|
|
42
|
+
npx helloloop gemini <PATH> 接续完成剩余开发
|
|
15
43
|
```
|
|
16
44
|
|
|
17
|
-
|
|
45
|
+
其中:
|
|
18
46
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
4. 输出中文执行确认单
|
|
23
|
-
5. 用户确认后,继续按当前宿主的原生 agent 逻辑推进开发、测试和验收
|
|
47
|
+
- `<PATH>` 可以是项目仓库路径、开发文档目录、开发文档文件
|
|
48
|
+
- 命令后可以继续追加自然语言要求
|
|
49
|
+
- 不确定时,优先只输入 `npx helloloop`
|
|
24
50
|
|
|
25
|
-
##
|
|
51
|
+
## 执行引擎选择规则
|
|
26
52
|
|
|
27
|
-
|
|
28
|
-
- [支持矩阵](#支持矩阵)
|
|
29
|
-
- [安装](#安装)
|
|
30
|
-
- [快速开始](#快速开始)
|
|
31
|
-
- [自动发现规则](#自动发现规则)
|
|
32
|
-
- [自动执行边界](#自动执行边界)
|
|
33
|
-
- [Doctor 检查](#doctor-检查)
|
|
34
|
-
- [命令速查](#命令速查)
|
|
35
|
-
- [状态目录](#状态目录)
|
|
36
|
-
- [Skill 用法](#skill-用法)
|
|
37
|
-
- [在 Codex 中使用](#在-codex-中使用)
|
|
38
|
-
- [跨平台与安全](#跨平台与安全)
|
|
39
|
-
- [仓库结构](#仓库结构)
|
|
40
|
-
- [许可证](#许可证)
|
|
53
|
+
执行规则如下:
|
|
41
54
|
|
|
42
|
-
|
|
55
|
+
1. 命令首参数显式引擎:`codex` / `claude` / `gemini`
|
|
56
|
+
2. 自然语言中明确且不歧义地指定了引擎
|
|
57
|
+
3. 如果前两步仍未明确,先停下来询问本轮执行引擎;当前宿主、项目上次 / 默认、用户上次 / 默认只作为推荐依据
|
|
58
|
+
4. `-y` / `--yes` 等非交互模式下,如果你没有显式指定引擎,`HelloLoop` 会直接停止并要求补充引擎
|
|
43
59
|
|
|
44
|
-
|
|
60
|
+
补充说明:
|
|
45
61
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
5. 用户确认后,自动推进后续开发、测试和验收,直到全部完成或遇到硬阻塞
|
|
62
|
+
- 首参只有第一个裸词会被解释为引擎;如果你真要把 `claude` 当目录名,请写成 `./claude`、`.\claude` 或绝对路径
|
|
63
|
+
- 命令后的自然语言如果明确提到 `codex`、`claude`、`gemini`,也会纳入意图判断
|
|
64
|
+
- 当前宿主、项目历史、用户历史不会触发自动选中,只会影响“推荐项”
|
|
65
|
+
- `已安装` 不等于 `可继续执行`;如果当前引擎在运行中遇到 429、5xx、网络抖动、流中断、长时间卡死等问题,`HelloLoop` 会先按无人值守策略做同引擎自动恢复,不会中途停下来询问
|
|
51
66
|
|
|
52
|
-
|
|
67
|
+
## 默认工作流
|
|
53
68
|
|
|
54
|
-
|
|
69
|
+
无论从哪个宿主进入,都遵循同一条主线:
|
|
55
70
|
|
|
56
|
-
|
|
57
|
-
|
|
71
|
+
1. 自动识别目标项目仓库与开发文档
|
|
72
|
+
2. 分析当前代码进度、偏差和项目匹配性
|
|
73
|
+
3. 在目标仓库根目录创建或刷新 `.helloloop/`
|
|
74
|
+
4. 输出中文执行确认单
|
|
75
|
+
5. 用户确认后,按选中的执行引擎持续推进开发、测试、验收
|
|
76
|
+
6. 每个任务完成后,自动做一次“任务完成复核”
|
|
77
|
+
7. backlog 暂时清空后,自动做一次“主线终态复核”
|
|
58
78
|
|
|
59
|
-
|
|
79
|
+
如果分析发现当前实现已经偏离开发文档,`HelloLoop` 会优先先收口偏差,再继续后面的 backlog。
|
|
60
80
|
|
|
61
|
-
|
|
62
|
-
| --- | --- | --- | --- |
|
|
63
|
-
| `Codex CLI` | `helloloop install --host codex` | `$helloloop` / `npx helloloop` | 首发平台、参考实现、最佳体验 |
|
|
64
|
-
| `Claude Code` | `helloloop install --host claude` | `/helloloop` | Claude 原生插件工作流 |
|
|
65
|
-
| `Gemini CLI` | `helloloop install --host gemini` | `/helloloop` | Gemini 原生扩展工作流 |
|
|
81
|
+
这意味着:
|
|
66
82
|
|
|
67
|
-
|
|
83
|
+
- 不会因为执行引擎自己一句“已完成”就直接结束
|
|
84
|
+
- 如果只是部分完成,`HelloLoop` 会继续当前主线任务,而不是跳去做模型随口建议的别的事
|
|
85
|
+
- 如果 backlog 清空了,但主线终态复核仍发现文档目标还有缺口,`HelloLoop` 会自动重新分析并继续推进
|
|
86
|
+
- 如果模型只做了一半就想停下来给“下一步建议”,`HelloLoop` 会优先按主线目标继续推进,而不是把半成品当完成
|
|
68
87
|
|
|
69
|
-
|
|
70
|
-
npx helloloop install --host all
|
|
71
|
-
```
|
|
88
|
+
## 无人值守恢复
|
|
72
89
|
|
|
73
|
-
|
|
90
|
+
`HelloLoop` 的设计目标不是“跑一轮停一轮”,而是启动前确认一次,启动后持续无人值守推进。
|
|
74
91
|
|
|
75
|
-
|
|
92
|
+
因此运行中的默认策略是:
|
|
76
93
|
|
|
77
|
-
|
|
94
|
+
- 普通运行故障不再中途提问:不会因为 429、5xx、网络抖动、结果流中断、短时空输出就停下来问用户
|
|
95
|
+
- 同引擎优先恢复:默认不会自动切换引擎,也不会偷偷改用别的 CLI
|
|
96
|
+
- 保留主线上下文恢复:同引擎恢复时会生成恢复记录与恢复 prompt,要求新一轮执行直接基于当前仓库状态继续,而不是从头另起一套
|
|
97
|
+
- 定时心跳检查:运行中会持续写入心跳与恢复状态,用于判断当前阶段是否还在正常推进
|
|
98
|
+
- 先预警再终止:默认每 60 秒刷新一次心跳;若长时间没有可见进展,先标记为疑似卡住;达到更长的自动恢复阈值后,才会终止当前进程并做同引擎恢复
|
|
99
|
+
- 硬错误直接停止:如果识别为 400 请求错误、登录/鉴权/订阅问题、本地 CLI 缺失或权限错误,不会盲目重试
|
|
78
100
|
|
|
79
|
-
|
|
80
|
-
npx helloloop install --codex-home <CODEX_HOME>
|
|
81
|
-
```
|
|
101
|
+
默认恢复节奏:
|
|
82
102
|
|
|
83
|
-
|
|
103
|
+
- 心跳间隔:60 秒
|
|
104
|
+
- 疑似卡住预警:15 分钟无可见进展
|
|
105
|
+
- 自动恢复阈值:45 分钟无可见进展
|
|
106
|
+
- 同阶段最多自动恢复:4 次
|
|
107
|
+
- 恢复等待:2 分钟 → 5 分钟 → 15 分钟 → 30 分钟
|
|
84
108
|
|
|
85
|
-
|
|
86
|
-
npx helloloop install --host codex
|
|
87
|
-
npx helloloop install --host claude
|
|
88
|
-
npx helloloop install --host gemini
|
|
89
|
-
npx helloloop install --host all
|
|
90
|
-
```
|
|
109
|
+
如果你明确指定或确认了本轮引擎,`HelloLoop` 在自动恢复阶段也会继续锁定该引擎,不会擅自切换。
|
|
91
110
|
|
|
92
|
-
|
|
111
|
+
## 自动发现与交互逻辑
|
|
93
112
|
|
|
94
|
-
|
|
95
|
-
--codex-home <CODEX_HOME>
|
|
96
|
-
--claude-home <CLAUDE_HOME>
|
|
97
|
-
--gemini-home <GEMINI_HOME>
|
|
98
|
-
```
|
|
113
|
+
### 1. 只输入 `npx helloloop`
|
|
99
114
|
|
|
100
|
-
|
|
115
|
+
如果你只输入:
|
|
101
116
|
|
|
102
117
|
```bash
|
|
103
|
-
|
|
118
|
+
npx helloloop
|
|
104
119
|
```
|
|
105
120
|
|
|
106
|
-
|
|
121
|
+
`HelloLoop` 会先明确执行引擎,再快速扫描当前目录:
|
|
107
122
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
123
|
+
- 当前目录本身就是项目仓库或开发文档目录时,直接进入分析
|
|
124
|
+
- 当前目录更像工作区时,优先利用顶层文档,再提示选择候选项目目录
|
|
125
|
+
- 当前目录没有明确开发文档时,不会直接报错,而是先列出:
|
|
126
|
+
- 顶层文档文件
|
|
127
|
+
- 顶层目录
|
|
128
|
+
- 疑似项目目录
|
|
129
|
+
然后再询问开发文档路径
|
|
111
130
|
|
|
112
|
-
|
|
131
|
+
### 2. 项目路径只问一次
|
|
113
132
|
|
|
114
|
-
|
|
115
|
-
- Claude 会写入 `<CLAUDE_HOME>/plugins/marketplaces/helloloop-local`,并生成 `<CLAUDE_HOME>/plugins/cache/helloloop-local/helloloop/<VERSION>`
|
|
116
|
-
- Gemini 会写入 `<GEMINI_HOME>/extensions/helloloop`
|
|
133
|
+
对外只有“项目路径”这一个概念:
|
|
117
134
|
|
|
118
|
-
|
|
135
|
+
- 输入已有目录 → 按现有项目继续分析
|
|
136
|
+
- 输入不存在的目录 → 视为准备创建的新项目目录
|
|
119
137
|
|
|
120
|
-
|
|
121
|
-
npx helloloop doctor --host all
|
|
122
|
-
```
|
|
138
|
+
不会再额外追问一个“新项目路径”。
|
|
123
139
|
|
|
124
|
-
|
|
140
|
+
### 3. 文档和项目缺一不可时会停下询问
|
|
125
141
|
|
|
126
|
-
|
|
142
|
+
以下情况不会硬猜:
|
|
127
143
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
Gemini -> /helloloop
|
|
132
|
-
```
|
|
144
|
+
- 给了开发文档,但无法定位项目仓库
|
|
145
|
+
- 给了项目路径,但无法定位开发文档
|
|
146
|
+
- 同时出现多个冲突的文档路径或项目路径
|
|
133
147
|
|
|
134
|
-
|
|
148
|
+
### 4. 命令 + 自然语言会一起分析
|
|
135
149
|
|
|
136
|
-
|
|
137
|
-
- `Claude` 与 `Gemini` 路径下,`/helloloop` 会走各自原生 agent 执行逻辑
|
|
138
|
-
- 三家都会维护同一个 `.helloloop/` 状态目录规范
|
|
150
|
+
`HelloLoop` 不依赖固定中文关键词做硬编码分流。
|
|
139
151
|
|
|
140
|
-
|
|
152
|
+
命令里的:
|
|
141
153
|
|
|
142
|
-
|
|
154
|
+
- 显式路径
|
|
155
|
+
- 中文自然语言
|
|
156
|
+
- 英文自然语言
|
|
157
|
+
- 其他语言的补充要求
|
|
143
158
|
|
|
144
|
-
|
|
145
|
-
npx helloloop
|
|
146
|
-
```
|
|
159
|
+
都会一起进入分析和确认单,不会因为语言不同被静默忽略。
|
|
147
160
|
|
|
148
|
-
|
|
161
|
+
### 5. 现有项目与文档目标冲突时
|
|
149
162
|
|
|
150
|
-
|
|
151
|
-
npx helloloop <PATH>
|
|
152
|
-
```
|
|
163
|
+
如果当前项目目录已存在,但分析认为它与开发文档目标明显冲突,`HelloLoop` 不会直接清空目录,而是先提示你选择:
|
|
153
164
|
|
|
154
|
-
|
|
165
|
+
1. 继续在当前项目上尝试接续
|
|
166
|
+
2. 清理当前项目内容后按文档目标重建
|
|
167
|
+
3. 取消本次执行
|
|
155
168
|
|
|
156
|
-
|
|
157
|
-
- 开发文档目录
|
|
158
|
-
- 开发文档文件
|
|
169
|
+
如果你明确希望非交互模式下直接重建,可以使用:
|
|
159
170
|
|
|
160
|
-
|
|
171
|
+
```bash
|
|
172
|
+
npx helloloop --rebuild-existing
|
|
173
|
+
```
|
|
161
174
|
|
|
162
|
-
|
|
175
|
+
## 执行确认单
|
|
163
176
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
-
|
|
177
|
+
真正开始开发前,`HelloLoop` 会先输出中文执行确认单,至少包含:
|
|
178
|
+
|
|
179
|
+
- 路径判断与判断依据
|
|
180
|
+
- 本次命令补充输入
|
|
181
|
+
- 执行引擎
|
|
182
|
+
- 需求语义理解
|
|
183
|
+
- 项目匹配判断
|
|
184
|
+
- 目标仓库
|
|
185
|
+
- 开发文档
|
|
186
|
+
- 当前进度
|
|
167
187
|
- 已实现事项
|
|
168
188
|
- 待完成事项
|
|
169
189
|
- 任务统计
|
|
170
190
|
- 首个待执行任务
|
|
171
191
|
- 验证命令预览
|
|
172
|
-
-
|
|
192
|
+
- 自动执行停止条件
|
|
173
193
|
|
|
174
|
-
|
|
194
|
+
未确认前,不会正式修改代码。
|
|
175
195
|
|
|
176
|
-
|
|
196
|
+
确认后,默认行为不是“跑一轮就停”,而是:
|
|
177
197
|
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
-
|
|
198
|
+
- 先按 backlog 执行当前颗粒度任务
|
|
199
|
+
- 每个任务完成后复核其验收是否真的闭合
|
|
200
|
+
- backlog 清空后再复核一次整个主线目标
|
|
201
|
+
- 只有“任务验收闭合 + 主线目标闭合 + 验证通过”才算真正结束
|
|
202
|
+
- 运行中若出现可恢复的 CLI 故障,则按无人值守策略自动恢复,不打断主线
|
|
182
203
|
|
|
183
|
-
|
|
204
|
+
## 安装
|
|
184
205
|
|
|
185
|
-
|
|
206
|
+
### 通过 npm / npx
|
|
207
|
+
|
|
208
|
+
默认安装到 `Codex`:
|
|
186
209
|
|
|
187
210
|
```bash
|
|
188
|
-
npx helloloop
|
|
189
|
-
npx helloloop
|
|
190
|
-
npx helloloop run-once
|
|
211
|
+
npx helloloop install
|
|
212
|
+
npx helloloop install --codex-home <CODEX_HOME>
|
|
191
213
|
```
|
|
192
214
|
|
|
193
|
-
|
|
215
|
+
安装到指定宿主:
|
|
194
216
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
217
|
+
```bash
|
|
218
|
+
npx helloloop install --host codex
|
|
219
|
+
npx helloloop install --host claude
|
|
220
|
+
npx helloloop install --host gemini
|
|
221
|
+
npx helloloop install --host all
|
|
222
|
+
```
|
|
201
223
|
|
|
202
|
-
|
|
224
|
+
可选 home 参数:
|
|
203
225
|
|
|
204
226
|
```bash
|
|
205
|
-
|
|
206
|
-
|
|
227
|
+
--codex-home <CODEX_HOME>
|
|
228
|
+
--claude-home <CLAUDE_HOME>
|
|
229
|
+
--gemini-home <GEMINI_HOME>
|
|
207
230
|
```
|
|
208
231
|
|
|
209
|
-
|
|
232
|
+
### 从源码仓库安装
|
|
210
233
|
|
|
211
234
|
```bash
|
|
212
|
-
|
|
235
|
+
node ./scripts/helloloop.mjs install --host codex
|
|
213
236
|
```
|
|
214
237
|
|
|
215
|
-
|
|
238
|
+
Windows PowerShell 也可以直接运行:
|
|
216
239
|
|
|
217
|
-
|
|
240
|
+
```powershell
|
|
241
|
+
pwsh -NoLogo -NoProfile -File .\scripts\install-home-plugin.ps1 -CodexHome <CODEX_HOME>
|
|
242
|
+
```
|
|
218
243
|
|
|
219
|
-
###
|
|
244
|
+
### 升级、重装、切换分支
|
|
220
245
|
|
|
221
246
|
```bash
|
|
222
|
-
npx helloloop
|
|
223
|
-
npx helloloop
|
|
224
|
-
npx helloloop --
|
|
225
|
-
npx helloloop
|
|
247
|
+
npx helloloop install --force
|
|
248
|
+
npx helloloop install --host claude --force
|
|
249
|
+
npx helloloop install --host gemini --force
|
|
250
|
+
npx helloloop install --host codex --force
|
|
251
|
+
npx helloloop install --host all --force
|
|
226
252
|
```
|
|
227
253
|
|
|
228
|
-
|
|
254
|
+
说明:
|
|
229
255
|
|
|
230
|
-
- `
|
|
231
|
-
- `
|
|
232
|
-
- `
|
|
233
|
-
- `
|
|
256
|
+
- `--force` 会清理当前宿主里旧分支 / 旧版本残留的 `helloloop` 安装目录后再重装
|
|
257
|
+
- `Codex` 会刷新插件目录和 marketplace 条目
|
|
258
|
+
- `Claude` 会刷新 marketplace、缓存插件目录,以及 `settings.json` / `known_marketplaces.json` / `installed_plugins.json` 中的 `helloloop` 条目
|
|
259
|
+
- `Gemini` 会刷新 `extensions/helloloop/`,不会动同目录下其他扩展
|
|
234
260
|
|
|
235
|
-
###
|
|
261
|
+
### 卸载
|
|
236
262
|
|
|
237
|
-
|
|
263
|
+
```bash
|
|
264
|
+
npx helloloop uninstall --host codex
|
|
265
|
+
npx helloloop uninstall --host claude
|
|
266
|
+
npx helloloop uninstall --host gemini
|
|
267
|
+
npx helloloop uninstall --host all
|
|
268
|
+
```
|
|
238
269
|
|
|
239
|
-
|
|
240
|
-
- backlog 已存在失败任务、阻塞任务或未满足依赖
|
|
241
|
-
- 后续任务风险超出自动阈值,且你没有显式加 `--allow-high-risk`
|
|
242
|
-
- 验证命令失败
|
|
243
|
-
- 当前宿主 CLI、插件资产或 shell 环境不可安全执行
|
|
270
|
+
卸载是定向清理:
|
|
244
271
|
|
|
245
|
-
|
|
272
|
+
- 只删除 `helloloop` 自己的安装目录和注册条目
|
|
273
|
+
- 不会顺带删除别的插件、marketplace、扩展或自定义配置
|
|
274
|
+
- 即使某个宿主当前未安装 `helloloop`,也会安全退出,不做破坏性清理
|
|
246
275
|
|
|
247
|
-
|
|
276
|
+
## 使用入口
|
|
248
277
|
|
|
249
|
-
###
|
|
278
|
+
### 终端
|
|
250
279
|
|
|
251
280
|
```bash
|
|
252
|
-
npx helloloop
|
|
281
|
+
npx helloloop
|
|
282
|
+
npx helloloop <PATH>
|
|
283
|
+
npx helloloop codex <PATH>
|
|
284
|
+
npx helloloop claude <PATH>
|
|
285
|
+
npx helloloop gemini <PATH> <补充说明>
|
|
253
286
|
```
|
|
254
287
|
|
|
255
|
-
|
|
288
|
+
如果已经做了全局安装,也可以把 `npx helloloop` 简写为 `helloloop`。是否立刻可用取决于当前 shell 是否已经刷新 `PATH`。
|
|
256
289
|
|
|
257
|
-
|
|
258
|
-
|
|
290
|
+
### Codex CLI
|
|
291
|
+
|
|
292
|
+
```text
|
|
293
|
+
$helloloop
|
|
294
|
+
helloloop:helloloop
|
|
259
295
|
```
|
|
260
296
|
|
|
261
|
-
|
|
297
|
+
在 `Codex` 中也可以直接执行:
|
|
262
298
|
|
|
263
299
|
```bash
|
|
264
|
-
npx helloloop
|
|
300
|
+
npx helloloop
|
|
265
301
|
```
|
|
266
302
|
|
|
267
|
-
`
|
|
303
|
+
如果你在 `Codex` 中直接使用 `$helloloop` 或 `npx helloloop`,但没有明确指定引擎,`HelloLoop` 仍会先让你确认本轮引擎;`Codex` 只会作为推荐项,不会被自动选中。
|
|
268
304
|
|
|
269
|
-
|
|
270
|
-
- 本地运行时资产是否齐全
|
|
271
|
-
- 目标仓库 `.helloloop/` 基础文件是否存在
|
|
272
|
-
- 已安装宿主目录是否已写入对应插件 / 扩展
|
|
305
|
+
### Claude Code / Gemini CLI
|
|
273
306
|
|
|
274
|
-
|
|
307
|
+
```text
|
|
308
|
+
/helloloop
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
它们会按各自 CLI 的原生 agent 逻辑执行,但共享同一套 `.helloloop/` 工作流规范。
|
|
312
|
+
|
|
313
|
+
## 常用命令
|
|
275
314
|
|
|
276
315
|
| 命令 | 作用 |
|
|
277
316
|
| --- | --- |
|
|
278
|
-
| `analyze` |
|
|
279
|
-
| `
|
|
280
|
-
| `
|
|
281
|
-
| `
|
|
282
|
-
| `run-loop` | 手动连续执行多个任务 |
|
|
283
|
-
| `doctor` | 检查所选宿主、运行时资产与目标仓库是否满足运行条件 |
|
|
317
|
+
| `helloloop` / `analyze` | 自动分析、展示确认单,并在确认后持续接续开发,直到主线目标闭合或遇到硬阻塞 |
|
|
318
|
+
| `install` | 安装运行时 bundle 到指定宿主 |
|
|
319
|
+
| `uninstall` | 从指定宿主卸载运行时 bundle 与注册信息 |
|
|
320
|
+
| `doctor` | 检查宿主环境、插件资产与目标仓库状态 |
|
|
284
321
|
| `init` | 手动初始化 `.helloloop/` 模板 |
|
|
285
|
-
| `
|
|
322
|
+
| `status` | 查看 backlog 摘要和当前状态 |
|
|
323
|
+
| `next` | 生成下一任务的干跑预览 |
|
|
324
|
+
| `run-once` | 执行一个任务 |
|
|
325
|
+
| `run-loop` | 连续执行多个任务 |
|
|
286
326
|
|
|
287
|
-
|
|
327
|
+
常用选项:
|
|
288
328
|
|
|
289
|
-
| 选项 |
|
|
329
|
+
| 选项 | 作用 |
|
|
290
330
|
| --- | --- |
|
|
291
|
-
|
|
|
292
|
-
| `--dry-run` |
|
|
293
|
-
| `--
|
|
294
|
-
| `--repo <dir>` |
|
|
295
|
-
| `--docs <dir
|
|
296
|
-
| `--
|
|
297
|
-
| `--
|
|
298
|
-
| `--
|
|
299
|
-
| `--max-strategies <n>` | 单任务最大换路次数 |
|
|
300
|
-
| `--required-doc <path>` | 追加全局必读文档 |
|
|
301
|
-
| `--constraint <text>` | 追加全局实现约束 |
|
|
302
|
-
| `--codex-home <dir>` | 指定 Codex Home |
|
|
303
|
-
| `--claude-home <dir>` | 指定 Claude Home |
|
|
304
|
-
| `--gemini-home <dir>` | 指定 Gemini Home |
|
|
305
|
-
| `--config-dir <dir>` | 指定状态目录名,默认 `.helloloop` |
|
|
306
|
-
| `--force` | 覆盖已有安装目录 |
|
|
307
|
-
|
|
308
|
-
## 状态目录
|
|
309
|
-
|
|
310
|
-
`HelloLoop` 始终把运行状态写入目标仓库根目录,而不是插件目录自身。
|
|
311
|
-
|
|
312
|
-
默认目录:
|
|
313
|
-
|
|
314
|
-
```text
|
|
315
|
-
.helloloop/
|
|
316
|
-
├── backlog.json
|
|
317
|
-
├── policy.json
|
|
318
|
-
├── project.json
|
|
319
|
-
├── status.json
|
|
320
|
-
├── STATE.md
|
|
321
|
-
└── runs/
|
|
322
|
-
```
|
|
331
|
+
| `codex` / `claude` / `gemini` | 作为 `analyze` 模式的命令首参数,显式指定执行引擎 |
|
|
332
|
+
| `--dry-run` | 只分析并输出确认单,不开始自动执行 |
|
|
333
|
+
| `-y` / `--yes` | 跳过执行确认直接开始;但如果未显式指定引擎,会直接报错而不是自动选引擎 |
|
|
334
|
+
| `--repo <dir>` | 高级覆盖:显式指定项目仓库 |
|
|
335
|
+
| `--docs <dir|file>` | 高级覆盖:显式指定开发文档 |
|
|
336
|
+
| `--rebuild-existing` | 项目与文档冲突时,自动清理现有项目后重建 |
|
|
337
|
+
| `--host <name>` | 安装宿主:`codex` / `claude` / `gemini` / `all` |
|
|
338
|
+
| `--config-dir <dir>` | 状态目录名,默认 `.helloloop` |
|
|
323
339
|
|
|
324
|
-
|
|
340
|
+
手动控制示例:
|
|
325
341
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
-
|
|
330
|
-
|
|
331
|
-
- `runs/`:提示词、stdout、stderr、验证日志等留痕
|
|
342
|
+
```bash
|
|
343
|
+
npx helloloop status
|
|
344
|
+
npx helloloop next
|
|
345
|
+
npx helloloop run-once
|
|
346
|
+
```
|
|
332
347
|
|
|
333
|
-
##
|
|
348
|
+
## Doctor
|
|
334
349
|
|
|
335
|
-
|
|
350
|
+
检查默认宿主:
|
|
336
351
|
|
|
337
|
-
```
|
|
338
|
-
|
|
352
|
+
```bash
|
|
353
|
+
npx helloloop doctor
|
|
339
354
|
```
|
|
340
355
|
|
|
341
|
-
|
|
356
|
+
检查全部宿主:
|
|
342
357
|
|
|
343
|
-
```
|
|
344
|
-
helloloop
|
|
358
|
+
```bash
|
|
359
|
+
npx helloloop doctor --host all
|
|
345
360
|
```
|
|
346
361
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
- `$helloloop` 是插件入口
|
|
350
|
-
- `npx helloloop` / `npx helloloop <PATH>` 是实际执行入口
|
|
362
|
+
检查指定安装目录:
|
|
351
363
|
|
|
352
|
-
|
|
364
|
+
```bash
|
|
365
|
+
npx helloloop doctor --host all --codex-home <CODEX_HOME> --claude-home <CLAUDE_HOME> --gemini-home <GEMINI_HOME>
|
|
366
|
+
```
|
|
353
367
|
|
|
354
|
-
|
|
355
|
-
2. 再分析当前代码与文档目标
|
|
356
|
-
3. 再展示执行确认单
|
|
357
|
-
4. 最后在你确认后自动接续执行
|
|
368
|
+
## 宿主写入范围
|
|
358
369
|
|
|
359
|
-
|
|
370
|
+
为了方便排查安装 / 更新 / 卸载问题,下面是默认写入位置:
|
|
360
371
|
|
|
361
|
-
|
|
372
|
+
### `Codex CLI`
|
|
362
373
|
|
|
363
|
-
|
|
364
|
-
/
|
|
365
|
-
```
|
|
374
|
+
- 插件目录:`~/.codex/plugins/helloloop/`
|
|
375
|
+
- 注册文件:`~/.codex/.agents/plugins/marketplace.json`
|
|
366
376
|
|
|
367
|
-
|
|
377
|
+
### `Claude Code`
|
|
368
378
|
|
|
369
|
-
|
|
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`
|
|
370
384
|
|
|
371
|
-
|
|
385
|
+
### `Gemini CLI`
|
|
372
386
|
|
|
373
|
-
|
|
374
|
-
npx helloloop
|
|
375
|
-
```
|
|
387
|
+
- 扩展目录:`~/.gemini/extensions/helloloop/`
|
|
376
388
|
|
|
377
|
-
|
|
389
|
+
`HelloLoop` 只维护自己的目录和自己的注册项,不会重写别的插件条目。
|
|
378
390
|
|
|
379
|
-
|
|
391
|
+
## `.helloloop/` 状态目录
|
|
380
392
|
|
|
381
|
-
|
|
393
|
+
`HelloLoop` 的 backlog、状态和运行记录始终写入目标仓库根目录下的:
|
|
382
394
|
|
|
383
395
|
```text
|
|
384
|
-
helloloop
|
|
396
|
+
.helloloop/
|
|
397
|
+
├── backlog.json
|
|
398
|
+
├── policy.json
|
|
399
|
+
├── project.json
|
|
400
|
+
├── status.json
|
|
401
|
+
├── STATE.md
|
|
402
|
+
└── runs/
|
|
385
403
|
```
|
|
386
404
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
`HelloLoop` 默认兼容 Windows、macOS 和 Linux。
|
|
405
|
+
不会写回插件目录自身。
|
|
390
406
|
|
|
391
|
-
|
|
407
|
+
## 跨平台与安全
|
|
392
408
|
|
|
393
|
-
|
|
394
|
-
- macOS / Linux:`bash` → `sh`
|
|
395
|
-
- Windows 不会回退到 `cmd.exe`
|
|
409
|
+
### Windows
|
|
396
410
|
|
|
397
|
-
|
|
411
|
+
- 优先使用 `pwsh`
|
|
412
|
+
- 也支持 `bash`(如 Git Bash)与 `powershell`
|
|
413
|
+
- 不回退到 `cmd.exe`
|
|
414
|
+
- 避免危险的嵌套命令、路径拼接删除和 `cmd` 风格破坏性流程
|
|
398
415
|
|
|
399
|
-
|
|
400
|
-
- `Claude` / `Gemini` 路径走各自原生插件 / 扩展,但仍应遵守 `HelloLoop` 的安全约束
|
|
416
|
+
### macOS / Linux
|
|
401
417
|
|
|
402
|
-
|
|
418
|
+
- 优先使用 `bash`
|
|
419
|
+
- 如果没有 `bash`,回退到 `sh`
|
|
403
420
|
|
|
404
|
-
|
|
421
|
+
### 通用安全边界
|
|
405
422
|
|
|
406
|
-
-
|
|
407
|
-
-
|
|
408
|
-
-
|
|
409
|
-
-
|
|
410
|
-
-
|
|
411
|
-
-
|
|
423
|
+
- 不静默失败
|
|
424
|
+
- 不静默回退
|
|
425
|
+
- 不静默切换执行引擎
|
|
426
|
+
- 不吞掉错误
|
|
427
|
+
- 真正执行前先确认
|
|
428
|
+
- 真正结束前先验证
|
|
429
|
+
- 不轻信执行引擎口头“已完成”
|
|
430
|
+
- 不接受“先做一半再停下来问要不要继续”
|
|
412
431
|
|
|
413
432
|
## 仓库结构
|
|
414
433
|
|
|
@@ -416,6 +435,8 @@ helloloop:helloloop
|
|
|
416
435
|
helloloop/
|
|
417
436
|
├── .claude-plugin/
|
|
418
437
|
├── .codex-plugin/
|
|
438
|
+
├── .github/
|
|
439
|
+
├── .helloagents/
|
|
419
440
|
├── bin/
|
|
420
441
|
├── docs/
|
|
421
442
|
├── hosts/
|
|
@@ -423,18 +444,22 @@ helloloop/
|
|
|
423
444
|
├── skills/
|
|
424
445
|
├── src/
|
|
425
446
|
├── templates/
|
|
426
|
-
|
|
447
|
+
├── tests/
|
|
448
|
+
├── LICENSE
|
|
449
|
+
├── package.json
|
|
450
|
+
└── README.md
|
|
427
451
|
```
|
|
428
452
|
|
|
429
453
|
其中:
|
|
430
454
|
|
|
431
|
-
- `.
|
|
432
|
-
- `.
|
|
433
|
-
- `hosts/`:Claude marketplace/
|
|
434
|
-
- `
|
|
435
|
-
- `
|
|
436
|
-
- `templates/`:初始化目标仓库 `.helloloop/`
|
|
455
|
+
- `.codex-plugin/`:Codex 插件 manifest
|
|
456
|
+
- `.claude-plugin/`:Claude plugin manifest
|
|
457
|
+
- `hosts/`:Claude marketplace / Gemini extension 资产
|
|
458
|
+
- `skills/`:Codex 插件技能说明
|
|
459
|
+
- `src/`:发现、分析、执行、安装、卸载、doctor 等核心实现
|
|
460
|
+
- `templates/`:初始化目标仓库 `.helloloop/` 的模板
|
|
461
|
+
- `docs/` 与 `tests/`:源码仓库维护资料,不进入运行时安装包
|
|
437
462
|
|
|
438
463
|
## 许可证
|
|
439
464
|
|
|
440
|
-
`HelloLoop` 使用 `Apache-2.0
|
|
465
|
+
`HelloLoop` 使用 `Apache-2.0`,许可证文件位于仓库根目录的 `LICENSE`。
|