closer-code 1.0.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.
Files changed (100) hide show
  1. package/.env.example +83 -0
  2. package/API_GUIDE.md +1411 -0
  3. package/AUTO_MKDIR_IMPROVEMENT.md +354 -0
  4. package/CLAUDE.md +55 -0
  5. package/CTRL_C_EXPERIMENT.md +90 -0
  6. package/PROJECT_CLEANUP_SUMMARY.md +121 -0
  7. package/README.md +686 -0
  8. package/cloco.md +51 -0
  9. package/config.example.json +116 -0
  10. package/dist/bash-runner.js +128 -0
  11. package/dist/batch-cli.js +20736 -0
  12. package/dist/closer-cli.js +21190 -0
  13. package/dist/index.js +31228 -0
  14. package/docs/EXPORT_COMMAND.md +152 -0
  15. package/docs/FILE_NAMING_IMPROVEMENT.md +168 -0
  16. package/docs/GLOBAL_CONFIG.md +128 -0
  17. package/docs/LONG_MESSAGE_DISPLAY_FIX.md +202 -0
  18. package/docs/PROJECT_HISTORY_ISOLATION.md +315 -0
  19. package/docs/QUICK_START_HISTORY.md +207 -0
  20. package/docs/TASK_PROGRESS_FEATURE.md +190 -0
  21. package/docs/THINKING_CONTENT_RESEARCH.md +267 -0
  22. package/docs/THINKING_FEATURE.md +187 -0
  23. package/docs/THINKING_IMPROVEMENT_COMPARISON.md +193 -0
  24. package/docs/THINKING_OPTIMIZATION_SUMMARY.md +242 -0
  25. package/docs/UI_IMPROVEMENTS_2025-01-18.md +256 -0
  26. package/docs/WHY_THINKING_SHORT.md +201 -0
  27. package/package.json +49 -0
  28. package/scenarios/README.md +234 -0
  29. package/scenarios/run-all-scenarios.js +342 -0
  30. package/scenarios/scenario1-batch-converter.js +247 -0
  31. package/scenarios/scenario2-code-analyzer.js +375 -0
  32. package/scenarios/scenario3-doc-generator.js +371 -0
  33. package/scenarios/scenario4-log-analyzer.js +496 -0
  34. package/scenarios/scenario5-tdd-helper.js +681 -0
  35. package/src/ai-client-legacy.js +171 -0
  36. package/src/ai-client.js +221 -0
  37. package/src/bash-runner.js +148 -0
  38. package/src/batch-cli.js +327 -0
  39. package/src/cli.jsx +166 -0
  40. package/src/closer-cli.jsx +1103 -0
  41. package/src/closer-cli.jsx.backup +948 -0
  42. package/src/commands/batch.js +62 -0
  43. package/src/commands/chat.js +10 -0
  44. package/src/commands/config.js +154 -0
  45. package/src/commands/help.js +76 -0
  46. package/src/commands/history.js +192 -0
  47. package/src/commands/setup.js +17 -0
  48. package/src/commands/upgrade.js +101 -0
  49. package/src/commands/workflow-tests.js +125 -0
  50. package/src/config.js +343 -0
  51. package/src/conversation.js +962 -0
  52. package/src/git-helper.js +349 -0
  53. package/src/index.js +88 -0
  54. package/src/logger.js +347 -0
  55. package/src/plan.js +193 -0
  56. package/src/planner.js +397 -0
  57. package/src/search.js +195 -0
  58. package/src/setup.js +147 -0
  59. package/src/shortcuts.js +269 -0
  60. package/src/snippets.js +430 -0
  61. package/src/test-modules.js +118 -0
  62. package/src/tools.js +398 -0
  63. package/src/utils/cli.js +124 -0
  64. package/src/utils/validator.js +184 -0
  65. package/src/utils/version.js +33 -0
  66. package/src/utils/workflow-test.js +271 -0
  67. package/src/utils/workflow.js +268 -0
  68. package/test/demo-file-naming.js +92 -0
  69. package/test/demo-thinking.js +124 -0
  70. package/test/final-verification-report.md +303 -0
  71. package/test/research-thinking.js +130 -0
  72. package/test/test-auto-mkdir.js +123 -0
  73. package/test/test-e2e-empty-dir.md +108 -0
  74. package/test/test-export-logic.js +119 -0
  75. package/test/test-global-cloco.js +126 -0
  76. package/test/test-history-isolation.js +291 -0
  77. package/test/test-improved-thinking.js +43 -0
  78. package/test/test-long-message.js +65 -0
  79. package/test/test-plan-functionality.js +95 -0
  80. package/test/test-real-scenario.js +216 -0
  81. package/test/test-thinking-display.js +65 -0
  82. package/test/ui-verification-test.js +203 -0
  83. package/test/verify-history-isolation.sh +71 -0
  84. package/test/verify-thinking.js +339 -0
  85. package/test/workflows/empty-dir-creation.md +51 -0
  86. package/test/workflows/inventor/ascii-teacup.js +199 -0
  87. package/test/workflows/inventor/ascii-teacup.mjs +199 -0
  88. package/test/workflows/inventor/ascii_apple.hs +84 -0
  89. package/test/workflows/inventor/ascii_apple.py +91 -0
  90. package/test/workflows/inventor/cloco.md +3 -0
  91. package/test/workflows/longtalk/cloco.md +19 -0
  92. package/test/workflows/longtalk/emoji_500.txt +63 -0
  93. package/test/workflows/longtalk/emoji_list.txt +20 -0
  94. package/test/workflows/programmer/adder.md +33 -0
  95. package/test/workflows/programmer/expect.md +2 -0
  96. package/test/workflows/programmer/prompt.md +3 -0
  97. package/test/workflows/test-empty-dir-creation.js +113 -0
  98. package/test-ctrl-c.jsx +126 -0
  99. package/test-manual-file-creation.js +151 -0
  100. package/winfix.md +3 -0
package/README.md ADDED
@@ -0,0 +1,686 @@
1
+ # Closer Code
2
+
3
+ > AI 编程助理 - 通过对话完成编码、调试和任务规划
4
+
5
+ **版本**: v2.0.0 - SDK 完全集成 | [更新日志](#更新日志)
6
+
7
+ Closer Code 是一个强大的命令行 AI 编程助理,可以帮助开发者:
8
+ - 📝 编写和编辑代码
9
+ - 🐛 调试和修复错误
10
+ - 📋 规划和执行复杂任务
11
+ - 🔍 搜索和理解代码库
12
+ - ⚡ 运行测试和命令
13
+
14
+ **命令**: `cloco` (closer + code)
15
+
16
+ ## 🎉 v2.0.0 新特性
17
+
18
+ ### SDK 完全集成
19
+ - ✅ 使用 `@anthropic-ai/sdk` 官方 SDK
20
+ - ✅ 代码量减少 **35%**
21
+ - ✅ 类型安全的工具定义(Zod Schema)
22
+ - ✅ 自动工具调用循环(无需手工解析)
23
+ - ✅ 内置错误处理和重试
24
+ - ✅ 实时进度显示
25
+
26
+ ### 项目历史隔离 🆕
27
+ - ✅ 每个项目拥有独立的对话历史
28
+ - ✅ 基于项目路径自动隔离上下文
29
+ - ✅ 避免不同项目之间的上下文混淆
30
+ - ✅ 历史管理命令行工具
31
+ - ✅ 完整的测试覆盖
32
+
33
+ 查看 [项目历史隔离文档](./docs/PROJECT_HISTORY_ISOLATION.md) 了解详情。
34
+
35
+ ### 移除的复杂性
36
+ - ❌ 无需手工 SSE 解析
37
+ - ❌ 无需正则表达式解析工具调用
38
+ - ❌ 无需工具调用格式说明
39
+
40
+ 查看 [SDK 迁移指南](./SDK_MIGRATION.md) 了解详情。
41
+
42
+ ## 功能特性
43
+
44
+ ### 对话式交互
45
+ - 自然语言交互,无需记忆复杂命令
46
+ - 上下文感知的对话历史
47
+ - 支持流式响应
48
+
49
+ ### 批处理模式 🚀
50
+ - 非交互式命令执行
51
+ - 支持脚本集成和 CI/CD
52
+ - 多种输出格式(text/json/verbose)
53
+
54
+ ### 任务规划与执行
55
+ - 自动将复杂任务分解为可执行步骤
56
+ - 可视化任务进度
57
+ - 支持任务依赖管理
58
+
59
+ ### 工具集成
60
+ - **Bash 执行**: 运行任意 shell 命令
61
+ - **文件操作**: 读取、写入、编辑文件
62
+ - **代码搜索**: 按模式搜索文件和代码
63
+ - **错误诊断**: 智能分析和解决错误
64
+ - **测试运行**: 自动检测并运行测试
65
+
66
+ ### 快捷操作 ⚡
67
+ 20+ 预定义快捷操作,提高开发效率:
68
+ - **文件**: `ls`, `cat`, `pwd` - 快速文件操作
69
+ - **Git**: `gs`, `ga`, `gc`, `gp`, `gl` - Git 常用命令
70
+ - **项目**: `build`, `test`, `clean`, `install` - 项目管理
71
+ - **搜索**: `find`, `grep` - 代码搜索
72
+ - **AI**: `explain`, `fix`, `refactor`, `review` - AI 辅助
73
+
74
+ ### 代码片段管理 📦
75
+ - 创建、编辑、删除代码片段
76
+ - 按标签、语言、内容搜索
77
+ - 使用统计和最近使用追踪
78
+ - 导入/导出功能
79
+ - 7+ 预定义模板(React、Express、Python 等)
80
+
81
+ ### Git 集成 🎯
82
+ - Git 仓库状态查询
83
+ - 分支管理(创建、切换、删除)
84
+ - 提交历史查看
85
+ - 远程仓库管理
86
+ - 智能提交助手
87
+ - 仓库统计信息
88
+
89
+ ### 项目学习
90
+ - 自动学习项目结构和模式
91
+ - 适应项目的编码风格
92
+ - 持久化项目知识
93
+
94
+ ## 安装
95
+
96
+ ### 前置要求
97
+ - Node.js >= 18.0.0
98
+ - npm 或 yarn
99
+
100
+ ### 全局安装
101
+
102
+ ```bash
103
+ # 克隆仓库
104
+ git clone <repository-url>
105
+ cd closer-code
106
+
107
+ # 安装依赖
108
+ npm install
109
+
110
+ # 构建项目
111
+ npm run build
112
+
113
+ # 全局安装
114
+ npm install -g .
115
+
116
+ # 使用命令
117
+ cloco
118
+ ```
119
+
120
+ ### 本地开发
121
+
122
+ ```bash
123
+ # 克隆仓库
124
+ git clone <repository-url>
125
+ cd closer-code
126
+
127
+ # 安装依赖
128
+ npm install
129
+
130
+ # 构建项目
131
+ npm run build
132
+
133
+ # 启动应用
134
+ npm start
135
+ # 或直接运行
136
+ node dist/index.js
137
+ ```
138
+
139
+ ## 配置
140
+
141
+ ### AI 提供商
142
+
143
+ Closer Code 支持多个 AI 提供商:
144
+
145
+ #### 1. Anthropic Claude (推荐)
146
+ ```bash
147
+ export ANTHROPIC_API_KEY='your-api-key'
148
+ ```
149
+
150
+ #### 2. OpenAI
151
+ ```bash
152
+ export OPENAI_API_KEY='your-api-key'
153
+ ```
154
+
155
+ #### 3. Ollama (本地运行)
156
+ ```bash
157
+ # 确保 Ollama 服务运行在 localhost:11434
158
+ ollama serve
159
+ ```
160
+
161
+ ### 配置文件
162
+
163
+ 配置文件位于 `~/.closer-code/config.json`:
164
+
165
+ ```json
166
+ {
167
+ "ai": {
168
+ "provider": "anthropic",
169
+ "anthropic": {
170
+ "apiKey": "your-api-key",
171
+ "model": "claude-sonnet-4-5-20250929",
172
+ "maxTokens": 8192
173
+ }
174
+ },
175
+ "behavior": {
176
+ "autoPlan": true,
177
+ "autoExecute": false,
178
+ "confirmDestructive": true
179
+ },
180
+ "tools": {
181
+ "enabled": [
182
+ "bash",
183
+ "readFile",
184
+ "writeFile",
185
+ "editFile",
186
+ "searchFiles",
187
+ "searchCode",
188
+ "listFiles",
189
+ "analyzeError",
190
+ "runTests",
191
+ "planTask"
192
+ ]
193
+ }
194
+ }
195
+ ```
196
+
197
+ ## 使用方法
198
+
199
+ ### 命令概览
200
+
201
+ ```bash
202
+ # 交互模式(默认)
203
+ cloco # 首次使用会自动运行配置向导
204
+
205
+ # 批处理模式
206
+ cloco -b "分析代码" # 短选项
207
+ cloco --batch "列出文件" # 长选项
208
+ cloco -b --json "生成代码" > out.js # JSON 格式输出
209
+ cloco -b --file prompt.txt # 从文件读取提示词
210
+
211
+ # 配置管理
212
+ cloco config # 查看当前配置
213
+ cloco config set <key> <value> # 设置配置项
214
+ cloco config edit # 打开配置文件编辑器
215
+
216
+ # 其他命令
217
+ cloco setup # 手动运行配置向导
218
+ cloco upgrade # 检查版本更新
219
+ cloco version # 显示版本信息
220
+ cloco help # 显示帮助
221
+ ```
222
+
223
+ ### 交互模式
224
+
225
+ 启动交互式对话:
226
+
227
+ ```bash
228
+ cloco
229
+ ```
230
+
231
+ 首次使用会自动运行配置向导。
232
+
233
+ ### 批处理模式
234
+
235
+ 批处理模式适用于自动化脚本和 CI/CD 集成:
236
+
237
+ ```bash
238
+ # 基本使用
239
+ cloco -b "解释这个函数"
240
+
241
+ # JSON 输出(便于脚本处理)
242
+ cloco -b --json "生成代码" > output.json
243
+
244
+ # 详细输出(包含工具调用过程)
245
+ cloco -b --verbose "分析项目结构"
246
+
247
+ # 从文件读取提示词
248
+ cloco -b --file prompt.txt
249
+
250
+ # 标准输入
251
+ echo "列出当前目录的文件" | cloco -b
252
+ ```
253
+
254
+ **输出格式**:
255
+
256
+ - **text**(默认):纯文本输出
257
+ - **json**:结构化 JSON,包含工具调用和元数据
258
+ - **verbose**:详细输出,显示工具执行过程
259
+
260
+ ### 基本对话
261
+
262
+ 直接输入你的问题或任务:
263
+
264
+ ```
265
+ ❯ 帮我添加一个用户认证功能
266
+ ```
267
+
268
+ ```
269
+ ❯ 为什么我的测试失败了?
270
+ ```
271
+
272
+ ```
273
+ ❯ 重构这个组件,使其更易维护
274
+ ```
275
+
276
+ ### 命令
277
+
278
+ | 命令 | 描述 |
279
+ |------|------|
280
+ | `/help` | 显示帮助信息 |
281
+ | `/clear` | 清除对话历史 |
282
+ | `/export <filename>` | 导出对话到文本文件 |
283
+ | `/plan <task>` | 创建并执行任务计划 |
284
+ | `/learn` | 学习项目模式 |
285
+ | `/status` | 显示对话统计 |
286
+
287
+ ### 快捷操作
288
+
289
+ 直接输入快捷命令(无需斜杠):
290
+
291
+ ```
292
+ ❯ ls # 列出当前目录
293
+ ❯ cat package.json # 读取文件
294
+ ❯ gs # Git 状态
295
+ ❯ build # 运行构建
296
+ ❯ test # 运行测试
297
+ ❯ find "TODO" # 搜索代码
298
+ ```
299
+
300
+ ### 代码片段
301
+
302
+ ```
303
+ ❯ 使用 React 组件模板创建一个新组件
304
+ ```
305
+
306
+ ```
307
+ ❯ 保存这段代码为 snippet
308
+ ```
309
+
310
+ ```
311
+ ❯ 搜索所有 JavaScript 片段
312
+ ```
313
+
314
+ ### Git 操作
315
+
316
+ ```
317
+ ❯ 创建新分支 feature/new-api
318
+ ❯ 切换到 develop 分支
319
+ ❯ 显示最近 5 次提交
320
+ ❯ 智能提交当前更改
321
+ ```
322
+
323
+ ### 项目历史管理
324
+
325
+ ```
326
+ ❯ 列出所有项目的历史
327
+ node src/commands/history.js list
328
+
329
+ ❯ 查看当前项目的历史
330
+ node src/commands/history.js show $(pwd)
331
+
332
+ ❯ 清除项目历史
333
+ node src/commands/history.js clear $(pwd)
334
+
335
+ ❯ 导出项目历史
336
+ node src/commands/history.js export $(pwd)
337
+ ```
338
+
339
+ ### 任务规划示例
340
+
341
+ ```
342
+ ❯ /plan 创建一个 REST API
343
+ ```
344
+
345
+ 这将:
346
+ 1. 分析项目结构
347
+ 2. 创建详细的执行计划
348
+ 3. 逐步执行每个步骤
349
+ 4. 显示进度和结果
350
+
351
+ ### 工具使用示例
352
+
353
+ AI 可以自动使用工具,你也可以明确要求:
354
+
355
+ ```
356
+ ❯ 读取 package.json 文件
357
+ ```
358
+
359
+ ```
360
+ ❯ 搜索所有包含 'TODO' 的文件
361
+ ```
362
+
363
+ ```
364
+ ❯ 运行测试并告诉我结果
365
+ ```
366
+
367
+ ## AI 智能执行能力 🤖
368
+
369
+ Closer Code 的 AI 助理具备强大的任务规划和执行能力,能够自动完成复杂的多步骤任务。
370
+
371
+ ### 自动工具调用
372
+
373
+ AI 会根据你的请求自动选择和使用合适的工具:
374
+
375
+ ```
376
+ ❯ 这个目录里有什么?
377
+ → AI 自动调用 bash ls -la
378
+
379
+ ❯ 帮我看看 package.json
380
+ → AI 自动调用 readFile 读取文件
381
+
382
+ ❯ 搜索所有 TODO 注释
383
+ → AI 自动调用 searchCode 搜索代码
384
+ ```
385
+
386
+ ### 多步骤任务执行
387
+
388
+ 对于复杂任务,AI 会自动规划并执行所有必要的步骤:
389
+
390
+ #### 完整项目分析
391
+
392
+ ```
393
+ ❯ 把整个项目读一遍,告诉我它是做什么的,有什么性能隐患
394
+ ```
395
+
396
+ AI 会自动:
397
+ 1. ✅ 列出 src/ 目录的所有文件
398
+ 2. ✅ 读取 README.md、package.json 等配置文件
399
+ 3. ✅ **逐个读取所有源代码文件** (.js, .jsx, .ts, .tsx)
400
+ 4. ✅ 分析代码架构和模块关系
401
+ 5. ✅ 识别性能瓶颈和安全问题
402
+ 6. ✅ 提供详细的分析报告
403
+
404
+ **注意**:AI 会读取所有源文件,不会只读 1-2 个就停止。
405
+
406
+ #### 代码调试
407
+
408
+ ```
409
+ ❯ 帮我调试这个错误:TypeError: Cannot read property 'x' of undefined
410
+ ```
411
+
412
+ AI 会自动:
413
+ 1. 分析错误信息和堆栈跟踪
414
+ 2. 搜索相关的代码文件
415
+ 3. 读取问题代码
416
+ 4. 识别根本原因
417
+ 5. 提出修复方案
418
+ 6. 在你确认后实施修复
419
+
420
+ #### 代码重构
421
+
422
+ ```
423
+ ❯ 重构这个组件,使其更易维护
424
+ ```
425
+
426
+ AI 会自动:
427
+ 1. 读取组件代码
428
+ 2. 分析现有实现
429
+ 3. 识别可改进的地方
430
+ 4. 提出重构方案
431
+ 5. 实施重构(需确认)
432
+ 6. 验证重构后的代码
433
+
434
+ ### 实时活动反馈
435
+
436
+ 在执行任务时,界面会显示当前活动状态:
437
+
438
+ - 📤 发送消息到 AI...
439
+ - 🤔 AI 正在思考...
440
+ - ✍️ AI 正在输入...
441
+ - ⚡ 执行工具: bash...
442
+ - 📊 处理工具结果...
443
+
444
+ ### 任务完成标准
445
+
446
+ AI 认为任务完成当且仅当:
447
+ 1. ✅ 收集了所有必要的信息
448
+ 2. ✅ 彻底分析了数据
449
+ 3. ✅ 提供了可操作的见解或结果
450
+ 4. ✅ 回答了你的具体问题
451
+
452
+ ### 最佳实践
453
+
454
+ 为了让 AI 更好地帮助你:
455
+
456
+ ✅ **明确的任务描述**
457
+ ```
458
+ 好:分析整个项目的性能瓶颈并给出优化建议
459
+ 好:读取所有源文件,找出所有 console.log 语句
460
+ 差:看看代码
461
+ ```
462
+
463
+ ✅ **具体的请求**
464
+ ```
465
+ 好:读取 src/ai-client.js 和 src/conversation.js,比较它们的错误处理方式
466
+ 好:搜索所有包含 'TODO' 的文件并列出来
467
+ 差:检查一下代码
468
+ ```
469
+
470
+ ✅ **分步骤的复杂任务**
471
+ ```
472
+ 好:第一步列出所有配置文件,第二步读取它们,第三步分析配置是否合理
473
+ 好:先找到所有测试文件,然后运行测试,最后分析失败的测试
474
+ ```
475
+
476
+ ## 架构
477
+
478
+ ```
479
+ src/
480
+ ├── index.js # 统一 CLI 入口(cloco 命令)
481
+ ├── commands/ # 子命令实现
482
+ │ ├── chat.js # 交互模式
483
+ │ ├── batch.js # 批处理模式
484
+ │ ├── config.js # 配置管理
485
+ │ ├── setup.js # 初始化向导
486
+ │ ├── upgrade.js # 版本更新检查
487
+ │ └── help.js # 帮助文档
488
+ ├── utils/ # 工具函数
489
+ │ ├── cli.js # CLI 参数解析
490
+ │ └── version.js # 版本信息
491
+ ├── closer-cli.jsx # 交互式 UI 组件(保留)
492
+ ├── batch-cli.js # 批处理模式(保留,向后兼容)
493
+ ├── ai-client.js # AI 客户端(支持多个提供商)
494
+ ├── conversation.js # 对话管理器
495
+ ├── planner.js # 任务规划器
496
+ ├── tools.js # 工具执行器
497
+ ├── search.js # 代码搜索
498
+ ├── shortcuts.js # 快捷操作管理
499
+ ├── snippets.js # 代码片段管理
500
+ ├── git-helper.js # Git 集成
501
+ ├── config.js # 配置管理
502
+ ├── setup.js # 设置向导
503
+ ├── test-modules.js # 测试验证
504
+ └── bash-runner.js # Bash 执行器
505
+ ```
506
+
507
+ ## 开发
508
+
509
+ ### 快速开始
510
+
511
+ ```bash
512
+ # 运行设置向导
513
+ npm run setup
514
+
515
+ # 启动应用(使用 cloco 命令)
516
+ npm start
517
+
518
+ # 或直接运行
519
+ node dist/index.js
520
+ ```
521
+
522
+ ### 构建
523
+
524
+ ```bash
525
+ # 构建所有文件
526
+ npm run build
527
+
528
+ # 仅构建主入口
529
+ npm run build:main
530
+
531
+ # 仅构建交互模式
532
+ npm run build:cli
533
+
534
+ # 仅构建批处理模式
535
+ npm run build:batch
536
+ ```
537
+
538
+ ### 开发模式(自动重建)
539
+
540
+ ```bash
541
+ npm run dev
542
+ ```
543
+
544
+ ### 测试
545
+
546
+ ```bash
547
+ # 测试模块
548
+ npm test
549
+ ```
550
+
551
+ ### 检查编译
552
+
553
+ ```bash
554
+ npm run check
555
+ ```
556
+
557
+ ## 实验记录
558
+
559
+ ### AI 错误处理和自我修复能力 🆕
560
+
561
+ **问题**:在空目录中创建多文件项目时,AI 会因为父目录不存在而失败,导致工作流中断。
562
+
563
+ **解决方案**:
564
+ - 工具返回详细的错误信息和修复建议(而不是自动处理)
565
+ - AI 分析错误并自主决定解决方案
566
+ - AI 执行修复操作(如创建目录)
567
+ - AI 重试原操作(最多 3 次)
568
+
569
+ **设计理念**:
570
+ - ❌ 不是简单地在工具层自动处理(绕过 AI 思考)
571
+ - ✅ 而是让 AI 具备真正的错误分析和自我修复能力
572
+
573
+ **示例**:
574
+ ```bash
575
+ # AI 的自我修复过程
576
+ cloco -b "创建一个 React 组件在 src/components/Button.tsx"
577
+
578
+ # AI 执行:
579
+ # 1. 尝试写入 → 失败(目录不存在)
580
+ # 2. 分析错误 → ENOENT,需要创建目录
581
+ # 3. 执行修复 → mkdir -p src/components/
582
+ # 4. 重试写入 → 成功!
583
+ ```
584
+
585
+ **测试验证**:
586
+ - 单元测试:`node test/test-auto-mkdir.js`
587
+ - 完整文档:`AUTO_MKDIR_IMPROVEMENT.md`
588
+
589
+ ### Ctrl+C 双击退出功能
590
+
591
+ 在 Ink (React CLI) 应用中实现了标准的 Ctrl+C 双击退出行为。完整的实验记录和实现方案见 [CTRL_C_EXPERIMENT.md](./CTRL_C_EXPERIMENT.md)。
592
+
593
+ **关键要点**:
594
+ - 使用 `useInput` hook 的 `{ capture: true }` 选项捕获 Ctrl+C
595
+ - 在 `render()` 时设置 `exitOnCtrlC: false` 禁用默认处理
596
+ - 不使用 SIGINT 处理器(会导致立即退出)
597
+ - 测试文件:`test-ctrl-c.jsx`
598
+
599
+ ## 向后兼容
600
+
601
+ 为了平滑过渡,保留了旧的命令:
602
+
603
+ - `closer` - 等同于 `cloco`(交互模式)
604
+ - `closer-batch` - 等同于 `cloco -b`(批处理模式)
605
+
606
+ 旧命令会显示迁移提示但仍然可用。建议新用户直接使用 `cloco` 命令。
607
+
608
+ ## 工作原理
609
+
610
+ 1. **对话循环**
611
+ - 接收用户输入
612
+ - 构建消息上下文
613
+ - 发送到 AI 模型
614
+ - 解析响应和工具调用
615
+ - 执行工具并返回结果
616
+
617
+ 2. **任务规划**
618
+ - 分析用户请求
619
+ - 分解为可执行步骤
620
+ - 处理步骤依赖
621
+ - 执行并验证结果
622
+
623
+ 3. **工具执行**
624
+ - 验证工具权限
625
+ - 执行操作
626
+ - 收集结果
627
+ - 返回给 AI
628
+
629
+ ## 配置选项
630
+
631
+ ### 行为配置
632
+
633
+ | 选项 | 类型 | 默认值 | 描述 |
634
+ |------|------|--------|------|
635
+ | `autoPlan` | boolean | true | 自动规划任务 |
636
+ | `autoExecute` | boolean | false | 自动执行低风险操作 |
637
+ | `confirmDestructive` | boolean | true | 危险操作需要确认 |
638
+ | `maxRetries` | number | 3 | 失败重试次数 |
639
+ | `timeout` | number | 30000 | 操作超时时间(ms) |
640
+
641
+ ### 工具配置
642
+
643
+ 可用工具:
644
+ - `bash` - 执行 shell 命令
645
+ - `readFile` - 读取文件内容
646
+ - `writeFile` - 写入文件
647
+ - `editFile` - 编辑文件(替换)
648
+ - `searchFiles` - 搜索文件
649
+ - `searchCode` - 搜索代码内容
650
+ - `listFiles` - 列出目录文件
651
+ - `analyzeError` - 分析错误
652
+ - `runTests` - 运行测试
653
+ - `planTask` - 规划任务
654
+
655
+ ## 故障排查
656
+
657
+ ### API 密钥错误
658
+ ```
659
+ Error: API key not configured
660
+ ```
661
+ 确保设置了正确的环境变量或配置文件。
662
+
663
+ ### 构建错误
664
+ ```bash
665
+ rm -rf node_modules dist
666
+ npm install
667
+ npm run build
668
+ ```
669
+
670
+ ### 工具执行失败
671
+ 检查:
672
+ 1. 工具是否在配置中启用
673
+ 2. 工作目录是否正确
674
+ 3. 文件权限是否足够
675
+
676
+ ## 贡献
677
+
678
+ 欢迎贡献!请先阅读贡献指南。
679
+
680
+ ## 许可证
681
+
682
+ MIT License
683
+
684
+ ## 致谢
685
+
686
+ Co-Authored-By: Claude & GLM4.7.
package/cloco.md ADDED
@@ -0,0 +1,51 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ # 项目概述
6
+
7
+ 这是一个通过编程试验 Node.js 对进程调度 bash 行为的实验项目。
8
+
9
+ ## 项目目标
10
+
11
+ 探索和研究 Node.js 如何创建和管理子进程来执行 bash/shell 命令,包括:
12
+ - 使用 `child_process` 模块(`spawn`, `exec`, `fork` 等)创建 bash 进程
13
+ - 研究进程间的通信机制(stdin, stdout, stderr)
14
+ - 测试不同平台(Windows/Linux/Mac)下的 bash 行为差异
15
+ - 分析进程生命周期和信号处理
16
+
17
+ ## 技术栈
18
+
19
+ - **运行时**: Node.js
20
+ - **核心模块**: `child_process`, `events`, `stream`
21
+ - **目标**: bash/shell 进程
22
+
23
+ ## 开发指南
24
+
25
+ ### 运行测试脚本
26
+ read [PATH hints](./winfix.md) to set bash exprot PATH
27
+ ```bash
28
+ # 运行某个测试脚本(具体取决于项目中的文件)
29
+ node <script-name>.js
30
+
31
+ # 使用 npm 运行(如果有 package.json)
32
+ npm test
33
+ npm start
34
+ ```
35
+
36
+ AI助理的修改后可以不运行,但至少检查一下编译情况
37
+
38
+ ### 关键 API
39
+
40
+ - `child_process.spawn()` - 启动新进程
41
+ - `child_process.exec()` - 执行 shell 命令
42
+ - `child_process.fork()` - 创建 Node.js 子进程
43
+ - `stdio` 流配置 - 进程间通信
44
+ - 进程信号处理 - SIGTERM, SIGKILL 等
45
+
46
+ ### 平台注意事项
47
+
48
+ 在 Windows (MINGW64) 环境下,bash 可通过 Git Bash 或 WSL 提供,需要注意:
49
+ - 路径分隔符差异(`\` vs `/`)
50
+ - 可执行文件查找机制
51
+ - shell 环境变量的继承