deeper-cli 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 (188) hide show
  1. package/README.md +254 -0
  2. package/dist/cli/index.d.ts +1 -0
  3. package/dist/cli/index.js +12067 -0
  4. package/dist/cli/index.js.map +1 -0
  5. package/dist/index.d.ts +415 -0
  6. package/dist/index.js +1599 -0
  7. package/dist/index.js.map +1 -0
  8. package/docs/superpowers/plans/2026-05-14-deepercode-implementation.md +24 -0
  9. package/docs/superpowers/plans/2026-05-14-deepercode-plan.md +1248 -0
  10. package/docs/superpowers/specs/2026-05-14-deepercode-design.md +560 -0
  11. package/package.json +60 -0
  12. package/src/cli/bootstrap.ts +69 -0
  13. package/src/cli/chat-repl.ts +932 -0
  14. package/src/cli/commands/chat.ts +39 -0
  15. package/src/cli/commands/chat.tsx +39 -0
  16. package/src/cli/commands/config.ts +133 -0
  17. package/src/cli/commands/mcp.ts +172 -0
  18. package/src/cli/commands/run.ts +147 -0
  19. package/src/cli/commands/skill.ts +152 -0
  20. package/src/cli/index.ts +184 -0
  21. package/src/core/bugscan.ts +145 -0
  22. package/src/core/config.ts +285 -0
  23. package/src/core/constants.ts +49 -0
  24. package/src/core/eventbus.ts +202 -0
  25. package/src/core/logger.ts +109 -0
  26. package/src/core/storage.ts +96 -0
  27. package/src/index.ts +26 -0
  28. package/src/mcp/ConfigLoader.ts +74 -0
  29. package/src/mcp/MCPClient.ts +326 -0
  30. package/src/mcp/ResourceAdapter.ts +58 -0
  31. package/src/mcp/SSETransport.ts +133 -0
  32. package/src/mcp/StdioTransport.ts +116 -0
  33. package/src/mcp/ToolAdapter.ts +71 -0
  34. package/src/mcp/types.ts +58 -0
  35. package/src/memory/xmemory.ts +275 -0
  36. package/src/model/DeepSeekClient.ts +292 -0
  37. package/src/model/MessageBuilder.ts +155 -0
  38. package/src/model/RetryManager.ts +82 -0
  39. package/src/model/StreamHandler.ts +158 -0
  40. package/src/model/types.ts +86 -0
  41. package/src/skills/SkillCreator.ts +153 -0
  42. package/src/skills/SkillEngine.ts +158 -0
  43. package/src/skills/SkillExecutor.ts +107 -0
  44. package/src/skills/SkillLoader.ts +182 -0
  45. package/src/skills/SkillRegistry.ts +73 -0
  46. package/src/skills/SkillTrigger.ts +82 -0
  47. package/src/skills/types.ts +28 -0
  48. package/src/tools/ToolExecutor.ts +103 -0
  49. package/src/tools/ToolRegistry.ts +71 -0
  50. package/src/tools/ToolValidator.ts +103 -0
  51. package/src/tools/builtin/ai/context_summarize.ts +76 -0
  52. package/src/tools/builtin/ai/memory_store.ts +86 -0
  53. package/src/tools/builtin/ai/prompt_template.ts +71 -0
  54. package/src/tools/builtin/ai/skill_create.ts +53 -0
  55. package/src/tools/builtin/ai/subagent.ts +39 -0
  56. package/src/tools/builtin/ai/todo_manager.ts +157 -0
  57. package/src/tools/builtin/ai/token_count.ts +196 -0
  58. package/src/tools/builtin/ai/tool_create.ts +52 -0
  59. package/src/tools/builtin/code/analyze_deps.ts +72 -0
  60. package/src/tools/builtin/code/bug_scan.ts +80 -0
  61. package/src/tools/builtin/code/code_metrics.ts +111 -0
  62. package/src/tools/builtin/code/extract_function.ts +86 -0
  63. package/src/tools/builtin/code/format_code.ts +57 -0
  64. package/src/tools/builtin/code/generate_code.ts +75 -0
  65. package/src/tools/builtin/code/import_organizer.ts +82 -0
  66. package/src/tools/builtin/code/lint_code.ts +48 -0
  67. package/src/tools/builtin/code/parse_ast.ts +86 -0
  68. package/src/tools/builtin/code/refactor_code.ts +63 -0
  69. package/src/tools/builtin/code/type_check.ts +48 -0
  70. package/src/tools/builtin/data/chart_generate.ts +62 -0
  71. package/src/tools/builtin/data/csv_parse.ts +56 -0
  72. package/src/tools/builtin/data/data_diff.ts +79 -0
  73. package/src/tools/builtin/data/data_transform.ts +74 -0
  74. package/src/tools/builtin/data/data_validate.ts +75 -0
  75. package/src/tools/builtin/data/json_parse.ts +71 -0
  76. package/src/tools/builtin/data/template_render.ts +58 -0
  77. package/src/tools/builtin/data/toml_parse.ts +42 -0
  78. package/src/tools/builtin/data/xml_parse.ts +79 -0
  79. package/src/tools/builtin/data/yaml_parse.ts +42 -0
  80. package/src/tools/builtin/database/db_backup.ts +53 -0
  81. package/src/tools/builtin/database/db_restore.ts +51 -0
  82. package/src/tools/builtin/database/db_schema.ts +66 -0
  83. package/src/tools/builtin/database/nosql_query.ts +50 -0
  84. package/src/tools/builtin/database/orm_generate.ts +66 -0
  85. package/src/tools/builtin/database/redis_command.ts +46 -0
  86. package/src/tools/builtin/database/sql_migrate.ts +55 -0
  87. package/src/tools/builtin/database/sql_query.ts +60 -0
  88. package/src/tools/builtin/filesystem/batch_read.ts +56 -0
  89. package/src/tools/builtin/filesystem/batch_write.ts +67 -0
  90. package/src/tools/builtin/filesystem/copy_file.ts +36 -0
  91. package/src/tools/builtin/filesystem/create_dir.ts +30 -0
  92. package/src/tools/builtin/filesystem/delete_file.ts +30 -0
  93. package/src/tools/builtin/filesystem/diff_files.ts +47 -0
  94. package/src/tools/builtin/filesystem/edit_file.ts +47 -0
  95. package/src/tools/builtin/filesystem/file_info.ts +52 -0
  96. package/src/tools/builtin/filesystem/glob_find.ts +44 -0
  97. package/src/tools/builtin/filesystem/list_dir.ts +51 -0
  98. package/src/tools/builtin/filesystem/merge_files.ts +44 -0
  99. package/src/tools/builtin/filesystem/move_file.ts +37 -0
  100. package/src/tools/builtin/filesystem/read_file.ts +55 -0
  101. package/src/tools/builtin/filesystem/watch_file.ts +33 -0
  102. package/src/tools/builtin/filesystem/write_file.ts +45 -0
  103. package/src/tools/builtin/index.ts +244 -0
  104. package/src/tools/builtin/network/api_call.ts +79 -0
  105. package/src/tools/builtin/network/browser_action.ts +54 -0
  106. package/src/tools/builtin/network/check_url.ts +59 -0
  107. package/src/tools/builtin/network/download_file.ts +64 -0
  108. package/src/tools/builtin/network/graphql_query.ts +46 -0
  109. package/src/tools/builtin/network/http_request.ts +61 -0
  110. package/src/tools/builtin/network/parse_html.ts +101 -0
  111. package/src/tools/builtin/network/proxy_request.ts +53 -0
  112. package/src/tools/builtin/network/screenshot_page.ts +58 -0
  113. package/src/tools/builtin/network/web_fetch.ts +70 -0
  114. package/src/tools/builtin/network/web_search.ts +128 -0
  115. package/src/tools/builtin/network/websocket_connect.ts +70 -0
  116. package/src/tools/builtin/project/build_project.ts +68 -0
  117. package/src/tools/builtin/project/config_manage.ts +99 -0
  118. package/src/tools/builtin/project/coverage_report.ts +59 -0
  119. package/src/tools/builtin/project/docker_manage.ts +90 -0
  120. package/src/tools/builtin/project/env_manage.ts +88 -0
  121. package/src/tools/builtin/project/npm_manage.ts +71 -0
  122. package/src/tools/builtin/project/project_init.ts +59 -0
  123. package/src/tools/builtin/project/run_test.ts +74 -0
  124. package/src/tools/builtin/search/codebase_search.ts +76 -0
  125. package/src/tools/builtin/search/find_definition.ts +84 -0
  126. package/src/tools/builtin/search/find_references.ts +75 -0
  127. package/src/tools/builtin/search/fuzzy_find.ts +75 -0
  128. package/src/tools/builtin/search/grep_search.ts +90 -0
  129. package/src/tools/builtin/search/regex_find.ts +91 -0
  130. package/src/tools/builtin/search/search_docs.ts +51 -0
  131. package/src/tools/builtin/search/search_package.ts +50 -0
  132. package/src/tools/builtin/search/symbol_search.ts +82 -0
  133. package/src/tools/builtin/search/text_search.ts +63 -0
  134. package/src/tools/builtin/security/decrypt_file.ts +54 -0
  135. package/src/tools/builtin/security/encrypt_file.ts +52 -0
  136. package/src/tools/builtin/security/hash_generate.ts +48 -0
  137. package/src/tools/builtin/security/jwt_decode.ts +53 -0
  138. package/src/tools/builtin/security/secret_scan.ts +82 -0
  139. package/src/tools/builtin/security/vulnerability_check.ts +71 -0
  140. package/src/tools/builtin/shell/background_terminal.ts +38 -0
  141. package/src/tools/builtin/shell/check_status.ts +48 -0
  142. package/src/tools/builtin/shell/interactive_terminal.ts +31 -0
  143. package/src/tools/builtin/shell/kill_terminal.ts +29 -0
  144. package/src/tools/builtin/shell/list_terminals.ts +61 -0
  145. package/src/tools/builtin/shell/pipe_commands.ts +55 -0
  146. package/src/tools/builtin/shell/process-pool.ts +150 -0
  147. package/src/tools/builtin/shell/run_async.ts +73 -0
  148. package/src/tools/builtin/shell/run_command.ts +60 -0
  149. package/src/tools/builtin/shell/send_ctrl_keys.ts +43 -0
  150. package/src/tools/builtin/shell/send_keys.ts +36 -0
  151. package/src/tools/builtin/shell/send_text.ts +35 -0
  152. package/src/tools/builtin/shell/shell_script.ts +65 -0
  153. package/src/tools/builtin/shell/stop_command.ts +40 -0
  154. package/src/tools/builtin/shell/terminal_resize.ts +31 -0
  155. package/src/tools/builtin/shell/terminal_screenshot.ts +28 -0
  156. package/src/tools/builtin/system/log_viewer.ts +89 -0
  157. package/src/tools/builtin/system/notify_user.ts +55 -0
  158. package/src/tools/builtin/system/process_list.ts +66 -0
  159. package/src/tools/builtin/system/resource_monitor.ts +66 -0
  160. package/src/tools/builtin/system/system_info.ts +41 -0
  161. package/src/tools/tool-types.ts +97 -0
  162. package/src/ui/AgentTree.tsx +98 -0
  163. package/src/ui/App.tsx +46 -0
  164. package/src/ui/ChatView.tsx +278 -0
  165. package/src/ui/ConfirmDialog.tsx +68 -0
  166. package/src/ui/DiffView.tsx +64 -0
  167. package/src/ui/FilePreview.tsx +59 -0
  168. package/src/ui/InputBox.tsx +267 -0
  169. package/src/ui/MessageBubble.tsx +30 -0
  170. package/src/ui/Spinner.tsx +35 -0
  171. package/src/ui/StatusBar.tsx +41 -0
  172. package/src/ui/ToolCallCard.tsx +73 -0
  173. package/src/ui/ansi.ts +50 -0
  174. package/src/ui/markdown.ts +238 -0
  175. package/src/ui/themes/dark.ts +4 -0
  176. package/src/ui/themes/default.ts +25 -0
  177. package/src/ui/themes/light.ts +14 -0
  178. package/tests/unit/BuiltinTools.test.ts +129 -0
  179. package/tests/unit/BuiltinToolsIntegration.test.ts +111 -0
  180. package/tests/unit/FilesystemTools.test.ts +211 -0
  181. package/tests/unit/SkillLoader.test.ts +141 -0
  182. package/tests/unit/SkillRegistry.test.ts +113 -0
  183. package/tests/unit/ToolExecutor.test.ts +160 -0
  184. package/tests/unit/ToolRegistry.test.ts +103 -0
  185. package/tests/unit/ToolValidator.test.ts +137 -0
  186. package/tsconfig.json +28 -0
  187. package/tsup.config.ts +17 -0
  188. package/vitest.config.ts +20 -0
@@ -0,0 +1,560 @@
1
+ # DeeperCode 设计规格文档
2
+
3
+ > 版本:1.0.0 | 日期:2026-05-14 | 状态:待审阅
4
+
5
+ ---
6
+
7
+ ## 1. 项目概述
8
+
9
+ **DeeperCode** 是一款终端 CLI 类型的 Agentic 编程工具,目标定位为"中文世界最强大的 AI 编程助手"。基于 DeepSeek-V4-Pro 模型,提供现代化的交互式 REPL 界面、强大的 Agent 系统、混合型 Skills 引擎、完整 MCP 协议支持以及 105 个内置工具。
10
+
11
+ ### 1.1 核心目标
12
+
13
+ - 一句话生成完整项目
14
+ - 现代化 CLI 式 UI(Ink/React 渲染)
15
+ - 强大的 Agent 系统(树形委派 + 单 Agent 模式)
16
+ - 混合型 Skills 引擎(AI 可自创建 Skill)
17
+ - 完整 MCP 客户端支持(stdio + SSE/HTTP)
18
+ - 105 个内置 AI 可用工具
19
+ - AI 可自定义工具
20
+
21
+ ### 1.2 非目标(明确排除)
22
+
23
+ - 不提供 Git 内置工具(用户使用系统 Git)
24
+ - 不提供 GUI 界面(纯终端 CLI)
25
+ - 不提供多租户 SaaS 平台
26
+
27
+ ---
28
+
29
+ ## 2. 技术栈
30
+
31
+ | 层 | 技术 | 版本要求 |
32
+ |----|------|----------|
33
+ | 语言 | TypeScript | 5.x |
34
+ | 运行时 | Node.js | 20+ LTS |
35
+ | CLI 框架 | Ink + React | Ink 5, React 18 |
36
+ | 构建工具 | tsup | latest |
37
+ | 测试框架 | Vitest | latest |
38
+ | 包管理器 | pnpm | latest |
39
+ | Markdown 渲染 | ink-markdown + marked | latest |
40
+ | MCP SDK | @modelcontextprotocol/sdk | latest |
41
+ | AST 解析 | tree-sitter | latest |
42
+ | 沙箱执行 | isolated-vm | latest |
43
+ | SSE 解析 | eventsource-parser | latest |
44
+ | 代码检查 | ESLint + Prettier | latest |
45
+
46
+ ---
47
+
48
+ ## 3. AI 模型集成
49
+
50
+ ### 3.1 模型配置
51
+
52
+ | 配置项 | 值 |
53
+ |--------|-----|
54
+ | Provider | DeepSeek |
55
+ | Model | `deepseek-v4-pro` |
56
+ | Base URL | `https://api.deepseek.com` |
57
+ | 上下文窗口 | 1,000,000 Token |
58
+ | 架构 | MoE 混合专家,万亿级参数 |
59
+ | 多模态 | 文本 + 图像 + 音视频 |
60
+ | API 兼容 | OpenAI ChatCompletions 接口 |
61
+
62
+ ### 3.2 Think 模式
63
+
64
+ Think(思考推理)模式通过 API 参数控制,而非模型名后缀:
65
+
66
+ ```json
67
+ {
68
+ "model": "deepseek-v4-pro",
69
+ "reasoning_effort": "high",
70
+ "thinking": { "type": "enabled", "budget_tokens": 32000 }
71
+ }
72
+ ```
73
+
74
+ ### 3.3 流式处理
75
+
76
+ - 使用 SSE(Server-Sent Events)协议接收流式响应
77
+ - 支持 `thinking` 块解析(推理过程独立展示)
78
+ - 支持工具调用增量解析(streaming tool calls)
79
+
80
+ ---
81
+
82
+ ## 4. 项目工程结构
83
+
84
+ ```
85
+ deeper-code/
86
+ ├── src/
87
+ │ ├── cli/ # CLI 入口层
88
+ │ │ ├── index.ts # 主入口,参数解析
89
+ │ │ ├── bootstrap.ts # 启动引导
90
+ │ │ └── commands/ # CLI 子命令
91
+ │ │ ├── chat.ts
92
+ │ │ ├── run.ts
93
+ │ │ ├── config.ts
94
+ │ │ ├── skill.ts
95
+ │ │ └── mcp.ts
96
+ │ │
97
+ │ ├── ui/ # Ink/React 终端 UI
98
+ │ │ ├── App.tsx
99
+ │ │ ├── ChatView.tsx
100
+ │ │ ├── MessageBubble.tsx
101
+ │ │ ├── DiffView.tsx
102
+ │ │ ├── FilePreview.tsx
103
+ │ │ ├── StatusBar.tsx
104
+ │ │ ├── InputBox.tsx
105
+ │ │ ├── ToolCallCard.tsx
106
+ │ │ ├── AgentTree.tsx
107
+ │ │ ├── Spinner.tsx
108
+ │ │ ├── ConfirmDialog.tsx
109
+ │ │ └── themes/
110
+ │ │ ├── default.ts
111
+ │ │ ├── dark.ts
112
+ │ │ └── light.ts
113
+ │ │
114
+ │ ├── agent/ # Agent 系统核心
115
+ │ │ ├── Agent.ts
116
+ │ │ ├── Orchestrator.ts
117
+ │ │ ├── SubAgent.ts
118
+ │ │ ├── AgentPool.ts
119
+ │ │ ├── AgentLoop.ts
120
+ │ │ ├── TaskDecomposer.ts
121
+ │ │ ├── ResultAggregator.ts
122
+ │ │ └── types.ts
123
+ │ │
124
+ │ ├── context/ # 上下文管理
125
+ │ │ ├── ContextManager.ts
126
+ │ │ ├── TokenCounter.ts
127
+ │ │ ├── HistoryManager.ts
128
+ │ │ ├── Summarizer.ts
129
+ │ │ ├── FileContext.ts
130
+ │ │ └── Prioritizer.ts
131
+ │ │
132
+ │ ├── tools/ # 105 工具系统
133
+ │ │ ├── ToolRegistry.ts
134
+ │ │ ├── ToolExecutor.ts
135
+ │ │ ├── ToolValidator.ts
136
+ │ │ ├── ToolSandbox.ts
137
+ │ │ ├── DynamicTool.ts
138
+ │ │ ├── tool-types.ts
139
+ │ │ └── builtin/
140
+ │ │ ├── filesystem/ # 15 工具
141
+ │ │ ├── search/ # 10 工具
142
+ │ │ ├── shell/ # 15 工具
143
+ │ │ ├── network/ # 12 工具
144
+ │ │ ├── code/ # 10 工具
145
+ │ │ ├── database/ # 8 工具
146
+ │ │ ├── data/ # 10 工具
147
+ │ │ ├── security/ # 6 工具
148
+ │ │ ├── project/ # 8 工具
149
+ │ │ ├── ai/ # 6 工具
150
+ │ │ └── system/ # 5 工具
151
+ │ │
152
+ │ ├── mcp/ # MCP 客户端
153
+ │ │ ├── MCPClient.ts
154
+ │ │ ├── StdioTransport.ts
155
+ │ │ ├── SSETransport.ts
156
+ │ │ ├── ConfigLoader.ts
157
+ │ │ ├── ToolAdapter.ts
158
+ │ │ ├── ResourceAdapter.ts
159
+ │ │ └── types.ts
160
+ │ │
161
+ │ ├── skills/ # Skills 引擎
162
+ │ │ ├── SkillEngine.ts
163
+ │ │ ├── SkillLoader.ts
164
+ │ │ ├── SkillExecutor.ts
165
+ │ │ ├── SkillCreator.ts
166
+ │ │ ├── SkillTrigger.ts
167
+ │ │ ├── SkillRegistry.ts
168
+ │ │ └── types.ts
169
+ │ │
170
+ │ ├── model/ # 模型 API 层
171
+ │ │ ├── DeepSeekClient.ts
172
+ │ │ ├── MessageBuilder.ts
173
+ │ │ ├── StreamHandler.ts
174
+ │ │ ├── ThinkMode.ts
175
+ │ │ ├── RetryManager.ts
176
+ │ │ └── types.ts
177
+ │ │
178
+ │ ├── core/ # 核心基础模块
179
+ │ │ ├── config.ts
180
+ │ │ ├── logger.ts
181
+ │ │ ├── eventbus.ts
182
+ │ │ ├── sandbox.ts
183
+ │ │ ├── process.ts
184
+ │ │ ├── storage.ts
185
+ │ │ ├── crypto.ts
186
+ │ │ └── constants.ts
187
+ │ │
188
+ │ └── index.ts
189
+
190
+ ├── skills/ # 内置 Skills
191
+ ├── tests/
192
+ │ ├── unit/
193
+ │ ├── integration/
194
+ │ └── e2e/
195
+ ├── scripts/
196
+ ├── package.json
197
+ ├── tsconfig.json
198
+ └── tsconfig.build.json
199
+ ```
200
+
201
+ ---
202
+
203
+ ## 5. Agent 系统设计
204
+
205
+ ### 5.1 架构模式:树形委派
206
+
207
+ ```
208
+ ┌──────────────┐
209
+ │ User Input │
210
+ └──────┬───────┘
211
+ ┌──────▼───────┐
212
+ │ Main Agent │ (Orchestrator)
213
+ └──────┬───────┘
214
+ ┌────────────┼────────────┐
215
+ ┌─────▼─────┐ ┌───▼────┐ ┌────▼─────┐
216
+ │ Sub-Agent │ │Sub-Agent│ │Sub-Agent │
217
+ │ #1 │ │ #2 │ │ #3 │
218
+ └───────────┘ └────────┘ └──────────┘
219
+ ```
220
+
221
+ ### 5.2 Agent 生命周期状态机
222
+
223
+ ```
224
+ CREATED → THINKING → EXECUTING → WAITING → COMPLETED
225
+ → FAILED
226
+ → CANCELLED
227
+ ```
228
+
229
+ ### 5.3 关键约束
230
+
231
+ | 参数 | 默认值 | 说明 |
232
+ |------|--------|------|
233
+ | 最大子 Agent 数 | 5 | 并发 fork 上限 |
234
+ | 最大递归深度 | 2 | 子→孙,孙不能再 fork |
235
+ | 子 Agent 超时 | 120,000ms | 超时自动终止 |
236
+ | 每层 Token 预算 | 80,000 | 防止上下文失控 |
237
+ | 结果摘要上限 | 5,000 字符 | 子 Agent 回传摘要截断 |
238
+
239
+ ### 5.4 单 Agent 模式
240
+
241
+ 任务复杂度判定为"简单"时,不启动子 Agent,主 Agent 直接完成:
242
+
243
+ ```
244
+ User → Main Agent → Tool Executor → Result
245
+ ```
246
+
247
+ 复杂度判定规则:
248
+ - 单文件操作:单 Agent
249
+ - 涉及 < 3 个独立子任务:单 Agent
250
+ - 超过 3 个独立子任务或跨多模块:树形委派
251
+
252
+ ---
253
+
254
+ ## 6. 105 内置工具体系
255
+
256
+ ### 6.1 工具接口定义
257
+
258
+ ```typescript
259
+ interface Tool {
260
+ name: string;
261
+ description: string;
262
+ category: ToolCategory;
263
+ parameters: JSONSchema;
264
+ execute(params: Record<string, unknown>): Promise<ToolResult>;
265
+ dangerous?: boolean;
266
+ requiresApproval?: boolean;
267
+ }
268
+
269
+ interface ToolResult {
270
+ success: boolean;
271
+ output: string;
272
+ error?: string;
273
+ metadata?: Record<string, unknown>;
274
+ }
275
+ ```
276
+
277
+ ### 6.2 工具分类清单
278
+
279
+ #### 文件系统操作(15)
280
+ `read_file`, `write_file`, `edit_file`, `delete_file`, `list_dir`, `glob_find`, `move_file`, `copy_file`, `create_dir`, `file_info`, `watch_file`, `batch_read`, `batch_write`, `diff_files`, `merge_files`
281
+
282
+ #### 搜索与代码检索(10)
283
+ `grep_search`, `codebase_search`, `symbol_search`, `find_references`, `find_definition`, `text_search`, `fuzzy_find`, `regex_find`, `search_package`, `search_docs`
284
+
285
+ #### Shell & 终端管理(15)
286
+ `run_command`, `run_async`, `check_status`, `stop_command`, `pipe_commands`, `shell_script`, `background_terminal`, `send_keys`, `send_ctrl_keys`, `send_text`, `terminal_screenshot`, `terminal_resize`, `list_terminals`, `kill_terminal`, `interactive_terminal`
287
+
288
+ #### 网络 & Web(12)
289
+ `web_fetch`, `web_search`, `http_request`, `download_file`, `api_call`, `graphql_query`, `websocket_connect`, `check_url`, `screenshot_page`, `parse_html`, `browser_action`, `proxy_request`
290
+
291
+ #### 代码解析与生成(10)
292
+ `parse_ast`, `format_code`, `lint_code`, `type_check`, `generate_code`, `refactor_code`, `extract_function`, `analyze_deps`, `import_organizer`, `code_metrics`
293
+
294
+ #### 数据库操作(8)
295
+ `sql_query`, `sql_migrate`, `nosql_query`, `db_schema`, `db_backup`, `db_restore`, `redis_command`, `orm_generate`
296
+
297
+ #### 数据处理(10)
298
+ `json_parse`, `csv_parse`, `xml_parse`, `yaml_parse`, `toml_parse`, `data_transform`, `data_validate`, `data_diff`, `template_render`, `chart_generate`
299
+
300
+ #### 安全与密钥(6)
301
+ `secret_scan`, `encrypt_file`, `decrypt_file`, `hash_generate`, `jwt_decode`, `vulnerability_check`
302
+
303
+ #### 项目工程(8)
304
+ `npm_manage`, `project_init`, `build_project`, `run_test`, `coverage_report`, `env_manage`, `config_manage`, `docker_manage`
305
+
306
+ #### AI 专用工具(6)
307
+ `token_count`, `context_summarize`, `prompt_template`, `skill_create`, `tool_create`, `memory_store`
308
+
309
+ #### 系统与监控(5)
310
+ `process_list`, `system_info`, `resource_monitor`, `notify_user`, `log_viewer`
311
+
312
+ ### 6.3 工具安全分级
313
+
314
+ | 级别 | 工具示例 | 行为 |
315
+ |------|----------|------|
316
+ | **安全** | `read_file`, `list_dir`, `grep_search` | 自动批准,无需确认 |
317
+ | **需确认** | `write_file`, `delete_file`, `run_command` | 弹确认对话框 |
318
+ | **危险** | `sudo_command`, `kill_terminal` | 需用户显式授权 |
319
+
320
+ ---
321
+
322
+ ## 7. Skills 引擎设计
323
+
324
+ ### 7.1 Skill 文件格式
325
+
326
+ 每个 Skill 由两个文件组成:
327
+
328
+ ```
329
+ skills/<skill-name>/
330
+ ├── skill.md # 指令文件(必需)
331
+ └── skill.js # 代码实现(可选)
332
+ ```
333
+
334
+ ### 7.2 skill.md 结构
335
+
336
+ ```markdown
337
+ ---
338
+ name: pdf
339
+ description: PDF 文件的创建、解析、编辑、合并与导出
340
+ version: 1.0.0
341
+ author: deeper
342
+ triggers:
343
+ - pdf
344
+ - 合并pdf
345
+ - 提取pdf
346
+ - 转换pdf
347
+ tools:
348
+ - read_file
349
+ - write_file
350
+ - run_command
351
+ dependencies:
352
+ - pdf-lib
353
+ - pdf-parse
354
+ ---
355
+
356
+ # PDF Skill
357
+
358
+ ## 概述
359
+ 处理所有 PDF 相关操作。
360
+
361
+ ## 工作流程
362
+ 1. 解析用户意图
363
+ 2. 调用 skill.js 中的对应函数
364
+ 3. 返回处理结果
365
+
366
+ ## 最佳实践
367
+ - 大文件先分块处理
368
+ ```
369
+
370
+ ### 7.3 Skill 引擎能力
371
+
372
+ | 能力 | 说明 |
373
+ |------|------|
374
+ | 自动发现 | 扫描 `~/.deeper/skills/` 和项目 `.deeper/skills/` |
375
+ | 触发匹配 | 根据用户输入关键词自动推荐 Skill |
376
+ | 热加载 | 文件变更自动重新加载 |
377
+ | 沙箱执行 | 代码型 Skill 在 isolated-vm 中运行 |
378
+ | 工具权限 | Skill 声明所需工具,超出需授权 |
379
+ | AI 自创建 | `skill_create` 工具生成新 Skill |
380
+ | 社区导入 | 支持从 URL/Git 导入外部 Skill |
381
+
382
+ ### 7.4 AI 创建 Skill 流程
383
+
384
+ ```
385
+ 用户: "帮我创建一个自动生成 CHANGELOG 的 skill"
386
+ → AI 理解需求 → 生成 skill.md → 生成 skill.js → 写入目录 → 注册引擎 → 反馈确认
387
+ ```
388
+
389
+ ---
390
+
391
+ ## 8. MCP 集成设计
392
+
393
+ ### 8.1 传输协议支持
394
+
395
+ | 协议 | 状态 | 用途 |
396
+ |------|------|------|
397
+ | stdio | 支持 | 本地 MCP Server 进程 |
398
+ | SSE/HTTP | 支持 | 远程 MCP 服务 |
399
+
400
+ ### 8.2 MCP 协议覆盖
401
+
402
+ | 能力 | 支持 | 说明 |
403
+ |------|------|------|
404
+ | Tools | 完全支持 | 注册为可用工具 |
405
+ | Resources | 完全支持 | 资源访问 |
406
+ | Prompts | 完全支持 | 预定义提示词 |
407
+ | Sampling | 完全支持 | Server 请求 LLM |
408
+ | Roots | 完全支持 | 工作目录声明 |
409
+ | Logging | 支持 | 服务端日志 |
410
+
411
+ ### 8.3 配置文件
412
+
413
+ ```jsonc
414
+ // ~/.deeper/mcp.json
415
+ {
416
+ "servers": {
417
+ "filesystem": {
418
+ "command": "npx",
419
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path"],
420
+ "type": "stdio"
421
+ },
422
+ "github": {
423
+ "url": "https://mcp.github.com/sse",
424
+ "type": "sse",
425
+ "headers": { "Authorization": "Bearer ${GITHUB_TOKEN}" }
426
+ }
427
+ }
428
+ }
429
+ ```
430
+
431
+ ---
432
+
433
+ ## 9. CLI UX 交互设计
434
+
435
+ ### 9.1 REPL 界面布局
436
+
437
+ ```
438
+ ┌──────────────────────────────────────────────────┐
439
+ │ DeeperCode deepseek-v4-pro ⚡ │ ← 顶栏
440
+ ├──────────────────────────────────────────────────┤
441
+ │ [对话区 - 可滚动] │
442
+ │ - Agent 分析卡片 │
443
+ │ - 工具调用卡片 │
444
+ │ - Diff 预览 │
445
+ │ - 消息气泡(Markdown 渲染) │
446
+ ├──────────────────────────────────────────────────┤
447
+ │ > 输入区(多行,支持快捷键) │
448
+ ├──────────────────────────────────────────────────┤
449
+ │ 📊 Tokens: 12,450/131,072 | 内存: 320MB │ ← 状态栏
450
+ └──────────────────────────────────────────────────┘
451
+ ```
452
+
453
+ ### 9.2 键盘快捷键
454
+
455
+ | 快捷键 | 功能 |
456
+ |--------|------|
457
+ | `Ctrl+Enter` | 发送消息 |
458
+ | `Ctrl+K` | 切换多行输入 |
459
+ | `Ctrl+C` | 中断/退出(需二次确认) |
460
+ | `Ctrl+L` | 清屏 |
461
+ | `Ctrl+R` | 搜索历史 |
462
+ | `↑/↓` | 浏览历史命令 |
463
+ | `Tab` | 智能补全 |
464
+ | `Esc` | 取消当前操作 |
465
+
466
+ ### 9.3 斜杠命令
467
+
468
+ ```
469
+ /help, /config, /model, /skill list, /skill create,
470
+ /mcp list, /mcp add, /mcp connect, /memory, /clear,
471
+ /export, /session new, /session list, /tools,
472
+ /theme, /debug, /quit
473
+ ```
474
+
475
+ ---
476
+
477
+ ## 10. 配置系统
478
+
479
+ ### 10.1 配置层级(优先级从高到低)
480
+
481
+ 1. 命令行参数
482
+ 2. 环境变量(`DEEPER_*` 前缀)
483
+ 3. 项目级 `.deeper/config.json`
484
+ 4. 用户级 `~/.deeper/config.json`
485
+ 5. 默认配置
486
+
487
+ ### 10.2 核心配置项
488
+
489
+ | 分类 | 配置项 | 默认值 |
490
+ |------|--------|--------|
491
+ | model | model | `deepseek-v4-pro` |
492
+ | model | base_url | `https://api.deepseek.com` |
493
+ | model | temperature | `0.7` |
494
+ | model | think.enabled | `true` |
495
+ | model | think.budget | `32000` |
496
+ | agent | max_sub_agents | `5` |
497
+ | agent | max_recursion_depth | `2` |
498
+ | agent | sub_agent_timeout_ms | `120000` |
499
+ | context | max_tokens | `100000` |
500
+ | context | auto_summarize_threshold | `80000` |
501
+ | ui | theme | `dark` |
502
+ | ui | show_token_count | `true` |
503
+
504
+ ---
505
+
506
+ ## 11. 核心数据流
507
+
508
+ ```
509
+ 用户输入 → CLI Entry → Orchestrator(任务分解)
510
+ → Agent Loop(Think→Act→Observe)
511
+ → Tool Executor(内置/MCP/Skill 工具)
512
+ → DeepSeek API(流式响应)
513
+ → Context Manager(更新上下文)
514
+ → UI 渲染(流式输出)
515
+ → 循环至 Orchestrator
516
+ ```
517
+
518
+ ---
519
+
520
+ ## 12. 分发与安装
521
+
522
+ ```bash
523
+ # 全局安装
524
+ npm install -g deeper
525
+
526
+ # 配置 API Key
527
+ deeper config set api_key "sk-xxx"
528
+
529
+ # 进入 REPL
530
+ deeper
531
+
532
+ # 单次执行
533
+ deeper run "帮我创建一个 React 项目"
534
+ ```
535
+
536
+ ---
537
+
538
+ ## 13. 测试策略
539
+
540
+ | 层级 | 覆盖目标 | 框架 |
541
+ |------|----------|------|
542
+ | 单元测试 | 每个工具函数、Agent 状态机 | Vitest |
543
+ | 集成测试 | Agent 完整流程、Skill 执行 | Vitest |
544
+ | E2E 测试 | CLI 端到端交互 | Vitest + PTY |
545
+ | 手动测试 | UI 交互验证 | 人工 |
546
+
547
+ ---
548
+
549
+ ## 14. 成功标准
550
+
551
+ 1. 用户可通过 `npm install -g deeper` 完成安装
552
+ 2. 配置 API Key 后可立即进入 REPL 交互
553
+ 3. 一句话描述需求后 AI 能完成完整项目生成
554
+ 4. 105 个工具全部可被 AI 正确调用
555
+ 5. Skill 系统可被 AI 自创建新 Skill
556
+ 6. MCP 可连接外部 Server 并注册其工具
557
+ 7. 子 Agent 能正确完成委派任务并回传结果
558
+ 8. 终端 UI 渲染流畅无卡顿
559
+ 9. 构建产物无 TypeScript 类型错误
560
+ 10. 所有单元测试和集成测试通过
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "deeper-cli",
3
+ "version": "1.0.0",
4
+ "description": "DeeperCode - 一句话生成完整项目的 AI Agentic CLI 工具",
5
+ "type": "module",
6
+ "bin": {
7
+ "deeper": "dist/cli/index.js"
8
+ },
9
+ "main": "dist/index.js",
10
+ "scripts": {
11
+ "dev": "tsup --watch",
12
+ "build": "tsup",
13
+ "start": "node dist/cli/index.js",
14
+ "test": "vitest run",
15
+ "test:watch": "vitest",
16
+ "lint": "eslint src/",
17
+ "typecheck": "tsc --noEmit"
18
+ },
19
+ "keywords": [
20
+ "ai",
21
+ "agent",
22
+ "cli",
23
+ "deepseek",
24
+ "coding-assistant"
25
+ ],
26
+ "license": "MIT",
27
+ "engines": {
28
+ "node": ">=20.0.0"
29
+ },
30
+ "dependencies": {
31
+ "cheerio": "^1.2.0",
32
+ "csv-parse": "^6.2.1",
33
+ "diff": "^9.0.0",
34
+ "fast-glob": "^3.3.3",
35
+ "glob": "^13.0.6",
36
+ "ink": "^5.2.1",
37
+ "mkdirp": "^3.0.1",
38
+ "open": "^11.0.0",
39
+ "react": "^18.3.1",
40
+ "toml": "^4.1.1",
41
+ "ws": "^8.20.1",
42
+ "yaml": "^2.9.0"
43
+ },
44
+ "devDependencies": {
45
+ "@types/diff": "^7.0.2",
46
+ "@types/node": "^25.7.0",
47
+ "@types/react": "^19.2.14",
48
+ "@types/ws": "^8.18.1",
49
+ "tsup": "^8.5.1",
50
+ "tsx": "^4.22.0",
51
+ "typescript": "^5.9.3",
52
+ "vitest": "^4.1.6"
53
+ },
54
+ "directories": {
55
+ "doc": "docs",
56
+ "test": "tests"
57
+ },
58
+ "author": "",
59
+ "types": "./dist/index.d.ts"
60
+ }
@@ -0,0 +1,69 @@
1
+ import { existsSync, mkdirSync } from 'node:fs';
2
+ import { DEEPER_HOME, DEEPER_CONFIG_FILE, DEEPER_SKILLS_DIR, DEEPER_SESSIONS_DIR, DEEPER_LOGS_DIR, DEEPER_VERSION } from '../core/constants.ts';
3
+ import { loadConfig } from '../core/config.ts';
4
+ import { eventbus } from '../core/eventbus.ts';
5
+
6
+ export interface BootstrapResult {
7
+ success: boolean;
8
+ errors: string[];
9
+ warnings: string[];
10
+ config: ReturnType<typeof loadConfig>;
11
+ }
12
+
13
+ export async function bootstrap(): Promise<BootstrapResult> {
14
+ const errors: string[] = [];
15
+ const warnings: string[] = [];
16
+
17
+ const nodeVersion = process.versions.node;
18
+ const majorVersion = parseInt(nodeVersion.split('.')[0], 10);
19
+ if (majorVersion < 20) {
20
+ errors.push(`Node.js 版本过低: ${nodeVersion},需要 >= 20.0.0`);
21
+ return { success: false, errors, warnings, config: loadConfig() };
22
+ }
23
+
24
+ const dirs = [
25
+ DEEPER_HOME,
26
+ DEEPER_SKILLS_DIR,
27
+ DEEPER_SESSIONS_DIR,
28
+ DEEPER_LOGS_DIR,
29
+ ];
30
+
31
+ for (const dir of dirs) {
32
+ try {
33
+ if (!existsSync(dir)) {
34
+ mkdirSync(dir, { recursive: true });
35
+ }
36
+ } catch {
37
+ errors.push(`无法创建目录: ${dir}`);
38
+ }
39
+ }
40
+
41
+ let config;
42
+ try {
43
+ config = loadConfig();
44
+ } catch (e) {
45
+ const msg = e instanceof Error ? e.message : String(e);
46
+ errors.push(`配置加载失败: ${msg}`);
47
+ config = loadConfig();
48
+ }
49
+
50
+ if (!config.apiKey && !process.env.DEEPSEEK_API_KEY) {
51
+ warnings.push('未设置 API Key。请运行: deeper config set api_key "sk-你的密钥"');
52
+ }
53
+
54
+ if (errors.length > 0) {
55
+ return { success: false, errors, warnings, config };
56
+ }
57
+
58
+ return { success: true, errors, warnings, config };
59
+ }
60
+
61
+ export function checkNodeVersion(): boolean {
62
+ const nodeVersion = process.versions.node;
63
+ const majorVersion = parseInt(nodeVersion.split('.')[0], 10);
64
+ return majorVersion >= 20;
65
+ }
66
+
67
+ export function getVersionInfo(): string {
68
+ return `DeeperCode v${DEEPER_VERSION} | Node.js ${process.versions.node} | ${process.platform} ${process.arch}`;
69
+ }