feihong-code 0.2.3 → 0.6.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 (180) hide show
  1. package/.github/FUNDING.yml +4 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +37 -37
  3. package/.github/ISSUE_TEMPLATE/config.yml +14 -14
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +28 -28
  5. package/.github/PULL_REQUEST_TEMPLATE.md +46 -46
  6. package/.github/SECURITY.md +67 -67
  7. package/.github/dependabot.yml +16 -0
  8. package/.github/workflows/ci.yml +1 -1
  9. package/AGENT-GUIDE.md +382 -237
  10. package/CHANGELOG.md +392 -0
  11. package/CODE_OF_CONDUCT.md +56 -56
  12. package/CONTRIBUTING.md +68 -68
  13. package/LICENSE +22 -22
  14. package/README.md +586 -522
  15. package/README.self-evolve.md +274 -0
  16. package/dist/agent/code-review.js +2 -0
  17. package/dist/agent/code-review.js.map +1 -1
  18. package/dist/agent/code-writer.js +74 -18
  19. package/dist/agent/code-writer.js.map +1 -1
  20. package/dist/agent/context-compactor.js +13 -4
  21. package/dist/agent/context-compactor.js.map +1 -1
  22. package/dist/agent/experience.js +319 -84
  23. package/dist/agent/experience.js.map +1 -1
  24. package/dist/agent/orchestrator.js +233 -71
  25. package/dist/agent/orchestrator.js.map +1 -1
  26. package/dist/agent/planner.js +30 -7
  27. package/dist/agent/planner.js.map +1 -1
  28. package/dist/agent/prompts.js +9 -0
  29. package/dist/agent/prompts.js.map +1 -1
  30. package/dist/agent/quality-gate.js +10 -4
  31. package/dist/agent/quality-gate.js.map +1 -1
  32. package/dist/agent/repo-context.js +181 -0
  33. package/dist/agent/repo-context.js.map +1 -0
  34. package/dist/agent/repo-reader.js +92 -99
  35. package/dist/agent/repo-reader.js.map +1 -1
  36. package/dist/agent/self-heal.js +80 -60
  37. package/dist/agent/self-heal.js.map +1 -1
  38. package/dist/agent/self-improver.js +65 -61
  39. package/dist/agent/self-improver.js.map +1 -1
  40. package/dist/agent/subagent-summary.js +31 -0
  41. package/dist/agent/subagent-summary.js.map +1 -0
  42. package/dist/agent/subagent.js +52 -2
  43. package/dist/agent/subagent.js.map +1 -1
  44. package/dist/agent/symbol-index.js +160 -0
  45. package/dist/agent/symbol-index.js.map +1 -0
  46. package/dist/agent/team.js +193 -0
  47. package/dist/agent/team.js.map +1 -0
  48. package/dist/cli/commands.js +124 -143
  49. package/dist/cli/commands.js.map +1 -1
  50. package/dist/cli/index.js +113 -106
  51. package/dist/cli/index.js.map +1 -1
  52. package/dist/cli/repl.js +82 -7
  53. package/dist/cli/repl.js.map +1 -1
  54. package/dist/cli/run.js +600 -95
  55. package/dist/cli/run.js.map +1 -1
  56. package/dist/cli/tui.js +145 -0
  57. package/dist/cli/tui.js.map +1 -0
  58. package/dist/cli/version.js +1 -1
  59. package/dist/enterprise/audit.js +145 -23
  60. package/dist/enterprise/audit.js.map +1 -1
  61. package/dist/enterprise/index.js +14 -11
  62. package/dist/enterprise/index.js.map +1 -1
  63. package/dist/enterprise/policy.js +22 -10
  64. package/dist/enterprise/policy.js.map +1 -1
  65. package/dist/harness/executor.js +127 -0
  66. package/dist/harness/executor.js.map +1 -0
  67. package/dist/harness/harness.js +87 -0
  68. package/dist/harness/harness.js.map +1 -0
  69. package/dist/harness/index.js +31 -0
  70. package/dist/harness/index.js.map +1 -0
  71. package/dist/harness/loader.js +138 -0
  72. package/dist/harness/loader.js.map +1 -0
  73. package/dist/harness/reporter.js +34 -0
  74. package/dist/harness/reporter.js.map +1 -0
  75. package/dist/harness/types.js +10 -0
  76. package/dist/harness/types.js.map +1 -0
  77. package/dist/harness/verifier.js +48 -0
  78. package/dist/harness/verifier.js.map +1 -0
  79. package/dist/hello.js +14 -0
  80. package/dist/hello.js.map +1 -0
  81. package/dist/memory/auto-summarize.js +208 -0
  82. package/dist/memory/auto-summarize.js.map +1 -0
  83. package/dist/memory/index.js +228 -0
  84. package/dist/memory/index.js.map +1 -0
  85. package/dist/models/model-router.js +100 -27
  86. package/dist/models/model-router.js.map +1 -1
  87. package/dist/models/model.dto.js +25 -3
  88. package/dist/models/model.dto.js.map +1 -1
  89. package/dist/models/providers/ollama.provider.js +12 -0
  90. package/dist/models/providers/ollama.provider.js.map +1 -1
  91. package/dist/models/providers/openai-compatible.provider.js +14 -1
  92. package/dist/models/providers/openai-compatible.provider.js.map +1 -1
  93. package/dist/plugins/plugin-loader.js +179 -0
  94. package/dist/plugins/plugin-loader.js.map +1 -0
  95. package/dist/runtime/event-log.js.map +1 -1
  96. package/dist/runtime/hooks.js +80 -0
  97. package/dist/runtime/hooks.js.map +1 -0
  98. package/dist/self-evolve/hook.js +60 -0
  99. package/dist/self-evolve/hook.js.map +1 -0
  100. package/dist/self-evolve/hook.ts +80 -0
  101. package/dist/self-evolve/manager.d.ts +8 -0
  102. package/dist/self-evolve/manager.js +401 -0
  103. package/dist/shared/config.js +35 -3
  104. package/dist/shared/config.js.map +1 -1
  105. package/dist/shared/errors.js +6 -2
  106. package/dist/shared/errors.js.map +1 -1
  107. package/dist/shared/i18n.js +535 -0
  108. package/dist/shared/i18n.js.map +1 -0
  109. package/dist/shared/secure-store.js +117 -0
  110. package/dist/shared/secure-store.js.map +1 -0
  111. package/dist/skills/grill.js +2 -1
  112. package/dist/skills/grill.js.map +1 -1
  113. package/dist/skills/self-heal.js +73 -0
  114. package/dist/skills/self-heal.js.map +1 -0
  115. package/dist/skills/skill-loader.js +131 -0
  116. package/dist/skills/skill-loader.js.map +1 -0
  117. package/dist/skills/skill-market.js +195 -0
  118. package/dist/skills/skill-market.js.map +1 -0
  119. package/dist/tools/analysis/code-analyzer.js +45 -18
  120. package/dist/tools/analysis/code-analyzer.js.map +1 -1
  121. package/dist/tools/index.js +5 -0
  122. package/dist/tools/index.js.map +1 -1
  123. package/dist/tools/mcp/index.js +84 -0
  124. package/dist/tools/mcp/index.js.map +1 -0
  125. package/dist/tools/mcp/mcp-client.js +194 -0
  126. package/dist/tools/mcp/mcp-client.js.map +1 -0
  127. package/dist/tools/sandbox.js +126 -0
  128. package/dist/tools/sandbox.js.map +1 -0
  129. package/dist/tools/shell/exec.js +72 -3
  130. package/dist/tools/shell/exec.js.map +1 -1
  131. package/dist/tools/shell/run-shell.tool.js +37 -7
  132. package/dist/tools/shell/run-shell.tool.js.map +1 -1
  133. package/dist/tools/skills/load-skill.tool.js +36 -0
  134. package/dist/tools/skills/load-skill.tool.js.map +1 -0
  135. package/dist/tools/tool.interface.js.map +1 -1
  136. package/dist/tools/tool.registry.js +69 -1
  137. package/dist/tools/tool.registry.js.map +1 -1
  138. package/dist/tools/web/web.tool.js +139 -0
  139. package/dist/tools/web/web.tool.js.map +1 -0
  140. package/dist/web/auth.js +178 -3
  141. package/dist/web/auth.js.map +1 -1
  142. package/dist/web/channels.js +171 -0
  143. package/dist/web/channels.js.map +1 -0
  144. package/dist/web/public/css/style.css +1546 -0
  145. package/dist/web/public/index.html +804 -37
  146. package/dist/web/public/js/api.js +309 -0
  147. package/dist/web/public/js/app.js +1472 -0
  148. package/dist/web/public/js/ui.js +832 -0
  149. package/dist/web/public/js/utils.js +170 -0
  150. package/dist/web/server.js +937 -11
  151. package/dist/web/server.js.map +1 -1
  152. package/dist/web/task-queue.js +470 -0
  153. package/dist/web/task-queue.js.map +1 -0
  154. package/dist/web/web-config.js +143 -0
  155. package/dist/web/web-config.js.map +1 -0
  156. package/docs/App/344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +299 -0
  157. package/docs/App/346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +554 -0
  158. package/docs/Deployment_Guide_EN.md +288 -0
  159. package/docs/SELF-EVOLVE-GUIDE.md +313 -0
  160. package/docs/Technical_Manual_EN.md +216 -0
  161. package/docs/User_Manual_EN.md +314 -0
  162. package/docs/error-codes.md +198 -0
  163. package/docs/screenshots/cli-demo.png +0 -0
  164. package/docs/screenshots/feature-comparison.png +0 -0
  165. package/docs/screenshots/web-console.png +0 -0
  166. package/docs/self-evolve-implementation.md +165 -0
  167. package/docs/self-evolve.md +166 -0
  168. package/docs//344/272/247/345/223/201/345/274/200/345/217/221/346/226/207/346/241/243.md +614 -614
  169. package/docs//344/274/201/344/270/232/351/203/250/347/275/262/344/270/216/345/220/210/350/247/204.md +267 -267
  170. package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +318 -358
  171. package/docs//345/270/270/350/247/201/351/227/256/351/242/230/344/270/216/346/225/205/351/232/234/346/216/222/346/237/245.md +130 -130
  172. package/docs//346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +216 -303
  173. package/docs//346/236/266/346/236/204/344/270/216API.md +238 -238
  174. package/docs//347/224/250/346/210/267/346/211/213/345/206/214.md +196 -196
  175. package/docs//351/203/250/347/275/262/346/214/207/345/215/227.md +165 -165
  176. package/docs//351/203/250/347/275/262/350/257/264/346/230/216/344/271/246.md +288 -0
  177. package/docs//351/205/215/347/275/256/345/217/202/350/200/203.md +127 -127
  178. package/docs//351/241/265/351/235/242/345/212/237/350/203/275/345/244/215/347/233/230/344/270/216/345/206/222/347/203/237/346/265/213/350/257/225/346/212/245/345/221/212.html +117 -0
  179. package/package.json +108 -109
  180. package/tool-schema.json +117 -46
package/AGENT-GUIDE.md CHANGED
@@ -1,237 +1,382 @@
1
- # AGENT-GUIDE.md — 面向 AI Agent 的使用指南
2
-
3
- > **本文档专为 AI Agent 设计**,提供快速上手所需的环境、配置、工具契约与最佳实践。
4
- >
5
- > 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
6
- > 版本:0.2.1 | 2026-08-12
7
-
8
- ---
9
-
10
- ## 一、项目简介
11
-
12
- **飞虹 Code(fhcode)** 是一款运行在终端的 AI 编程智能体,支持:
13
-
14
- - **自然语言 → 代码闭环**:描述需求,自动规划、编写、验证
15
- - **多模型路由**:DeepSeek / 通义 / Ollama(本地)/ OpenAI 兼容
16
- - **企业级安全**:RBAC、审计链、多租户、配额熔断
17
- - **全自动软件工程**:`swe` 命令可自主完成仓库级开发任务
18
-
19
- **GitHub**:`github.com/wch887292/feihong-code`(待上线)
20
-
21
- ---
22
-
23
- ## 二、环境要求
24
-
25
- ```bash
26
- # 必需
27
- Node.js >= 18(推荐 20 或 22)
28
- npm >= 9
29
-
30
- # 可选但推荐
31
- git(--parallel 模式需要 worktree)
32
- tsx(开发模式)
33
- ```
34
-
35
- **验证环境**:
36
- ```bash
37
- node --version # 应 >= 18.0.0
38
- npm --version # 应 >= 9.0.0
39
- ```
40
-
41
- ---
42
-
43
- ## 三、快速安装
44
-
45
- ### 方式一:从源码构建(推荐)
46
- ```bash
47
- git clone https://github.com/wch887292/feihong-code.git
48
- cd feihong-code
49
- npm install
50
- npm run build
51
- ```
52
-
53
- ### 方式二:全局安装
54
- ```bash
55
- npm install -g feihong-code
56
- fhcode --version # 验证安装
57
- ```
58
-
59
- ---
60
-
61
- ## 四、模型配置(关键)
62
-
63
- ### 4.1 环境变量优先级
64
- 1. `FH_PROVIDERS`(JSON 数组,最高优先级)
65
- 2. `fhcode.config.json`(项目配置文件)
66
- 3. 单环境变量 `FH_MODEL_*`(快速接入)
67
-
68
- ### 4.2 Ollama 本地模型(推荐测试)
69
- ```bash
70
- export FH_MODEL_NAME=qwen3:8b
71
- export FH_MODEL_TYPE=ollama
72
- export FH_MODEL_BASE_URL=http://localhost:11434
73
- export FH_MODEL_TAGS=code-gen,reasoning,local
74
- ```
75
-
76
- ### 4.3 DeepSeek(推荐生产)
77
- ```bash
78
- export FH_PROVIDERS='[{"name":"deepseek","type":"openai-compatible","baseUrl":"https://api.deepseek.com/v1","apiKey":"sk-...","tags":["code-gen","reasoning"],"priority":1}]'
79
- ```
80
-
81
- ### 4.4 离线 Mock(测试)
82
- ```bash
83
- export FH_OFFLINE=true
84
- # 或使用空 providers
85
- export FH_PROVIDERS='[]'
86
- ```
87
-
88
- ---
89
-
90
- ## 五、典型工作流
91
-
92
- ### 5.1 单任务执行
93
- ```bash
94
- # 基础用法
95
- fhcode "实现一个 HTTP 服务器,监听 3000 端口"
96
-
97
- # 带约束
98
- fhcode --max-iterations 10 --yes "修复 src/auth.ts 中的 token 验证 bug"
99
- ```
100
-
101
- ### 5.2 并行子任务
102
- ```bash
103
- # 自动拆分目标,worktree 隔离执行
104
- fhcode --parallel "实现登录模块 并且 添加用户管理 并且 写集成测试"
105
- ```
106
-
107
- ### 5.3 全自动软件工程
108
- ```bash
109
- # 读取整个仓库 规划 → 实现 → 验证 → 报告
110
- fhcode swe "修复 src/calc.ts 的 add 函数 bug,让 tests/calc.test.ts 通过" \
111
- --repo /path/to/project \
112
- --max-tasks 3 \
113
- --max-iterations 5
114
- ```
115
-
116
- ### 5.4 只读技能
117
- ```bash
118
- # 生成实现计划
119
- fhcode /plan "实现登录并且添加支付"
120
-
121
- # 红队审查(安全审计)
122
- fhcode /grill src/
123
-
124
- # 目标跟踪
125
- fhcode /goal
126
- ```
127
-
128
- ---
129
-
130
- ## 六、工具调用契约
131
-
132
- ### 6.1 工具清单
133
- | 类别 | 工具 | 说明 |
134
- |------|------|------|
135
- | 文件 | `write_file` | 写入/覆盖文件 |
136
- | 文件 | `edit_file` | 插入/删除/替换文本 |
137
- | 文件 | `read_file` | 读取文件内容 |
138
- | 文件 | `list_files` | 列出目录内容 |
139
- | 搜索 | `grep` | 正则搜索 |
140
- | Shell | `run_shell` | 执行命令 |
141
- | 验证 | `build_check` | 检查编译 |
142
- | 验证 | `run_tests` | 运行测试 |
143
-
144
- ### 6.2 工具参数格式
145
- 所有工具调用遵循 JSON Schema:
146
- ```json
147
- {
148
- "tool_calls": [
149
- {
150
- "type": "function",
151
- "function": {
152
- "name": "write_file",
153
- "arguments": "{\"path\":\"src/main.ts\",\"content\":\"export const x = 1;\"}"
154
- }
155
- }
156
- ]
157
- }
158
- ```
159
-
160
- ### 6.3 工具返回格式
161
- ```json
162
- {
163
- "tool_call_id": "call_abc123",
164
- "output": "已写入 src/main.ts(25 字节)",
165
- "error": null
166
- }
167
- ```
168
-
169
- ---
170
-
171
- ## 七、错误处理
172
-
173
- ### 7.1 常见错误码
174
- | 错误码 | 含义 | 处理建议 |
175
- |--------|------|----------|
176
- | `FH_4001` | 配额超限 | 等待重置或申请配额 |
177
- | `FH_4003` | 权限拒绝 | 检查 RBAC 策略 |
178
- | `FH_5001` | 模型调用失败 | 检查 provider 配置 |
179
- | `FH_5002` | 上下文压缩失败 | 使用 /plan 重新规划 |
180
- | `FH_6001` | 文件路径越权 | 检查沙箱规则 |
181
-
182
- ### 7.2 调试技巧
183
- ```bash
184
- # 查看详细日志
185
- export FH_LOG_LEVEL=debug
186
- fhcode "你的任务"
187
-
188
- # 查看会话历史
189
- fhcode sessions
190
-
191
- # 恢复上次会话
192
- fhcode resume <session-id>
193
- ```
194
-
195
- ---
196
-
197
- ## 八、企业部署
198
-
199
- ### 8.1 必需环境变量
200
- ```bash
201
- export FH_ENTERPRISE=true
202
- export FH_TENANT=my-org
203
- export FH_USER=agent-sa
204
- export FH_ROLE=developer
205
- export FH_WEB_TOKEN=<web-console-token>
206
- ```
207
-
208
- ### 8.2 Web 控制台
209
- ```bash
210
- # 启动服务
211
- fhcode serve --port 8080
212
-
213
- # 访问
214
- # http://localhost:8080
215
- ```
216
-
217
- ---
218
-
219
- ## 九、验证套件
220
-
221
- ```bash
222
- # 全量验证
223
- npm run verify
224
-
225
- # 单项验证
226
- npm run verify:m4 # 企业能力
227
- npm test # 单元测试
228
- node scripts/verify-m9.mjs # SWE 能力
229
- ```
230
-
231
- ---
232
-
233
- ## 十、联系与反馈
234
-
235
- - **GitHub Issues**:提交 bug 或功能请求
236
- - **文档**:详见 `docs/` 目录
237
- - **署名**:晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
1
+ # AGENT-GUIDE.md — 面向 AI Agent 的使用指南
2
+
3
+ > **本文档专为 AI Agent 设计**,提供快速上手所需的环境、配置、工具契约与最佳实践。
4
+ >
5
+ > 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
6
+ > 版本:0.5.0 | 2026-08-17
7
+
8
+ ---
9
+
10
+ ## 一、项目简介
11
+
12
+ **飞虹 Code(fhcode)** 是一款运行在终端的 AI 编程智能体,支持:
13
+
14
+ - **自然语言 → 代码闭环**:描述需求,自动规划、编写、验证
15
+ - **多模型路由**:DeepSeek / 通义 / Ollama(本地)/ OpenAI 兼容
16
+ - **企业级安全**:RBAC、审计链、多租户、配额熔断
17
+ - **全自动软件工程**:`swe` 命令可自主完成仓库级开发任务
18
+
19
+ **GitHub**:`github.com/wch887292/feihong-code`(待上线)
20
+
21
+ ---
22
+
23
+ ## 二、环境要求
24
+
25
+ ```bash
26
+ # 必需
27
+ Node.js >= 18(推荐 20 或 22)
28
+ npm >= 9
29
+
30
+ # 可选但推荐
31
+ git(--parallel 模式需要 worktree)
32
+ tsx(开发模式)
33
+ ```
34
+
35
+ **验证环境**:
36
+ ```bash
37
+ node --version # 应 >= 18.0.0
38
+ npm --version # 应 >= 9.0.0
39
+ ```
40
+
41
+ ---
42
+
43
+ ## 三、快速安装
44
+
45
+ ### 方式一:从源码构建(推荐)
46
+ ```bash
47
+ git clone https://github.com/wch887292/feihong-code.git
48
+ cd feihong-code
49
+ npm install
50
+ npm run build
51
+ ```
52
+
53
+ ### 方式二:全局安装
54
+ ```bash
55
+ npm install -g feihong-code
56
+ fhcode --version # 验证安装
57
+ ```
58
+
59
+ ---
60
+
61
+ ## 四、模型配置(关键)
62
+
63
+ ### 4.1 环境变量优先级
64
+ 1. `FH_PROVIDERS`(JSON 数组,最高优先级)
65
+ 2. `fhcode.config.json`(项目配置文件)
66
+ 3. 单环境变量 `FH_MODEL_*`(快速接入)
67
+
68
+ ### 4.2 Ollama 本地模型(推荐测试)
69
+ ```bash
70
+ export FH_MODEL_NAME=qwen3:8b
71
+ export FH_MODEL_TYPE=ollama
72
+ export FH_MODEL_BASE_URL=http://localhost:11434
73
+ export FH_MODEL_TAGS=code-gen,reasoning,local
74
+ ```
75
+
76
+ ### 4.3 DeepSeek(推荐生产)
77
+ ```bash
78
+ export FH_PROVIDERS='[{"name":"deepseek","type":"openai-compatible","baseUrl":"https://api.deepseek.com/v1","apiKey":"sk-...","tags":["code-gen","reasoning"],"priority":1}]'
79
+ ```
80
+
81
+ ### 4.4 离线 Mock(测试)
82
+ ```bash
83
+ export FH_OFFLINE=true
84
+ # 或使用空 providers
85
+ export FH_PROVIDERS='[]'
86
+ ```
87
+
88
+ ### 4.5 沙箱三模式(P0-2,对齐 Codex)
89
+ ```bash
90
+ export FH_SANDBOX_MODE=read-only # 只读勘察(禁写禁执行)
91
+ export FH_SANDBOX_MODE=workspace-write # 工作区可写(默认,shell 受白名单+审批)
92
+ export FH_SANDBOX_MODE=danger-full-access # 全权限(危险命令黑名单仍生效)
93
+
94
+ # 网络域名规则(作用于 run_shell 命令中的 http(s) 目标)
95
+ export FH_NETWORK_DENY=evil.example.com # 命中即拦截(任意模式生效)
96
+ # export FH_NETWORK_ALLOW=api.example.com # 配置后未命中即拦截
97
+ ```
98
+
99
+ ### 4.6 MCP 外部工具(P0-3)
100
+ ```bash
101
+ export FH_MCP_SERVERS='[{"name":"github","command":"npx","args":["-y","github-mcp-server"]}]'
102
+ # 远程工具以 <serverName>_<tool> 前缀注册(如 github_list_issues),沙箱/守卫同样生效
103
+ ```
104
+
105
+ ### 4.7 仓库级指令(P0-4)
106
+ 在仓库根或任意目录放置 `AGENTS.md`(或 CLAUDE.md / .atomcode.md),
107
+ 任务启动时自动发现并注入 system prompt(限 8KB),无需任何配置。
108
+
109
+ ### 4.8 hooks 确定性控制(P2-1)
110
+ ```bash
111
+ # FH_HOOKS:JSON 数组。PreToolUse 非零退出会拦截工具调用;PostToolUse/PostEdit 只记录
112
+ export FH_HOOKS='[
113
+ {"event":"PreToolUse","command":"node scripts/guard.js","tools":["run_shell"]},
114
+ {"event":"PostEdit","command":"npx eslint --fix {path}","paths":["src/"]}
115
+ ]'
116
+ # 占位符: {cwd} {tool} {path} {runId} {ok}
117
+ ```
118
+
119
+ ### 4.9 AGENTS.md 路径级规则(P2-3)
120
+ 带 `paths` frontmatter 的规则只在操作相关文件时按需注入(JIT,省 token):
121
+ ```markdown
122
+ ---
123
+ paths: ["src/**", "tests/**"]
124
+ ---
125
+ src 与 tests 目录规则:改动必须附带单元测试。
126
+ ```
127
+ 无 `paths` 的正文作为全局指令常驻注入。
128
+
129
+ ### 4.10 插件分发(P3-3)
130
+ ```bash
131
+ # 安装插件(本地目录或 git URL;清单 plugin.json 打包 skills + hooks + MCP)
132
+ fhcode plugin install ./my-plugin
133
+ fhcode plugin install git@github.com:user/my-plugin.git
134
+ fhcode plugin list # 列出已安装插件
135
+ ```
136
+ 插件目录结构:`plugin.json`(必含 name/version)+ 可选 `skills/<name>/SKILL.md`、`hooks`、`mcp` 配置。安装后自动生效(技能入索引、hooks/MCP 叠加)。
137
+
138
+ ### 4.11 实时信息检索(P3-2)
139
+ 内置 `web_search`(默认 DuckDuckGo,`FH_SEARCH_ENDPOINT` 可换端点)与 `web_fetch` 工具,
140
+ 目标域名受沙箱网络规则约束(FH_NETWORK_ALLOW/DENY)。
141
+
142
+ ### 4.12 云执行任务队列(P4-1 / P6-4)
143
+ ```bash
144
+ # 启动 Web 控制台(含 /api/tasks 任务队列,服务端静默执行)
145
+ fhcode serve --port 8080
146
+
147
+ # 提交任务(Bearer 鉴权)
148
+ curl -X POST http://localhost:8080/api/tasks \
149
+ -H "Authorization: Bearer $FH_WEB_TOKEN" -H "Content-Type: application/json" \
150
+ -d '{"goal":"写一个 hello.ts"}'
151
+ # 查询: GET /api/tasks 列表 · GET /api/tasks/:id 单任务
152
+ ```
153
+ 并发上限默认 2,可用 `FH_TASK_CONCURRENCY` 调整。
154
+ **跨进程持久化(P6-4)**:任务默认落盘 `~/.feihong-code/tasks/`(可用 `FH_TASK_PERSIST_DIR` 覆盖),
155
+ 服务重启自动恢复队列——queued 重新入队执行、running 僵尸标记 failed(防崩溃遗留)。
156
+
157
+ ### 4.13 Agent teams 多 agent 协作(P4-2)
158
+ ```bash
159
+ # 目标自动拆解为任务清单,多 agent 并发认领执行,消息总线汇报
160
+ fhcode team "实现登录模块 并且 添加用户管理 并且 写集成测试"
161
+ ```
162
+ 内置消息总线(TeamBus)与共享任务清单(TaskBoard,原子认领防重复),逐任务结果摘要回传。
163
+
164
+ ### 4.14 调度入口与消息渠道(P5-2 / P5-6)
165
+ ```bash
166
+ # 任务状态 webhook(CI/外部系统编排): FH_TASK_WEBHOOK_URL 或 POST /api/webhook {"url":"..."}
167
+ # 消息渠道推送(任务状态变化通知)
168
+ export FH_CHANNEL_TELEGRAM_BOT_TOKEN=bot:xxx
169
+ export FH_CHANNEL_TELEGRAM_CHAT_ID=12345
170
+ export FH_CHANNEL_WECOM_KEY=key1,key2 # 企业微信群机器人(可多个)
171
+ ```
172
+
173
+ ### 4.15 Docker 沙箱(P5-4)
174
+ ```bash
175
+ export FH_SANDBOX_MODE=container # shell 在容器内执行(docker run 挂载工作区)
176
+ export FH_SANDBOX_IMAGE=node:22-alpine # 容器镜像(默认)
177
+ ```
178
+
179
+ ### 4.16 语义索引与 VSCode 扩展(P5-5 / P5-3)
180
+ - 符号索引:`symbol-index.ts` 自动提取函数/类/接口符号并缓存(FH_HOME/symbol-index.json),供 /grill swe 聚焦
181
+ - VSCode 扩展:`vscode-extension/` 目录,`fhcode.run` / `fhcode.diff` 命令,配置 `fhcode.binaryPath` / `fhcode.offline`
182
+
183
+ ### 4.17 Skills 市场(agentskills.io 对接)
184
+ ```bash
185
+ # 搜索市场技能(默认 agentskills.io;--repo 或 FH_SKILL_MARKET 换源)
186
+ fhcode skill-market search "code review"
187
+
188
+ # 安装到 ~/.feihong-code/skills/(安装后任务中自动发现,渐进式披露)
189
+ fhcode skill-market install code-review
190
+
191
+ # 列出本地已安装技能
192
+ fhcode skill-market list
193
+ ```
194
+ 市场源协议:站点暴露 `/.well-known/agent-skills/index.json`(agentskills.io discovery 规范),
195
+ 支持 SKILL.md 直下与 tar.gz 归档(sha256 digest 校验防篡改,路径穿越防护)。
196
+
197
+ ### 4.18 VSCode 扩展增强(P6-3)
198
+ ```bash
199
+ # vscode-extension/ 目录打包或 F5 调试加载
200
+ # fhcode: 运行任务(附带选区上下文)——选中代码自动作为 <selection> 上下文注入目标
201
+ # fhcode: 就地查看工作区 diff——VSCode 原生 diff 编辑器展示 HEAD ↔ 工作区
202
+ # fhcode: 查看最近任务输出
203
+ ```
204
+ 配置:`fhcode.binaryPath`(CLI 路径,默认 PATH 中的 fhcode)、`fhcode.offline`。
205
+ diff 面板通过 `git show HEAD:<path>` 提供左侧内容,需 git 仓库。
206
+
207
+ ---
208
+
209
+ ## 五、典型工作流
210
+
211
+ ### 5.1 单任务执行
212
+ ```bash
213
+ # 基础用法
214
+ fhcode "实现一个 HTTP 服务器,监听 3000 端口"
215
+
216
+ # 带约束
217
+ fhcode --max-iterations 10 --yes "修复 src/auth.ts 中的 token 验证 bug"
218
+
219
+ # 流式输出(P0-1:任务过程实时可见)
220
+ fhcode --stream "重构 src/calc.ts 的 add 函数"
221
+ ```
222
+
223
+ ### 5.2 并行子任务
224
+ ```bash
225
+ # 自动拆分目标,worktree 隔离执行
226
+ fhcode --parallel "实现登录模块 并且 添加用户管理 并且 写集成测试"
227
+ ```
228
+
229
+ ### 5.3 全自动软件工程
230
+ ```bash
231
+ # 读取整个仓库 → 规划 → 实现 → 验证 → 报告
232
+ fhcode swe "修复 src/calc.ts 的 add 函数 bug,让 tests/calc.test.ts 通过" \
233
+ --repo /path/to/project \
234
+ --max-tasks 3 \
235
+ --max-iterations 5
236
+ ```
237
+
238
+ ### 5.4 只读技能
239
+ ```bash
240
+ # 生成实现计划
241
+ fhcode /plan "实现登录并且添加支付"
242
+
243
+ # 红队审查(安全审计)
244
+ fhcode /grill src/
245
+
246
+ # 目标跟踪
247
+ fhcode /goal
248
+ ```
249
+
250
+ ### 5.5 技能标准(P1-2,SKILL.md)
251
+ 内置 /plan /grill /goal 已迁入打包技能 `skills/<name>/SKILL.md`(open agent skills 兼容):
252
+ - 模型侧:技能索引(name+description)常驻 system prompt,正文由 `load_skill` 工具按需加载(渐进式披露)
253
+ - 自定义技能:在仓库 `.agents/skills/<name>/SKILL.md` 或用户级 `~/.feihong-code/skills/<name>/SKILL.md` 放一个带 frontmatter 的 SKILL.md 即自动发现
254
+ ```markdown
255
+ ---
256
+ name: my-skill
257
+ description: 何时触发该技能
258
+ ---
259
+ 技能指令正文
260
+ ```
261
+
262
+ ### 5.6 跑分基准(P1-3)
263
+ ```bash
264
+ npm run build && npm run eval # 本地 mock 跑分(完成率/工具效率/自愈率)
265
+ npm run build && npm run eval -- --json # 结构化输出(横向对比用)
266
+ ```
267
+
268
+ ### 5.7 子代理模型分工(P1-1)
269
+ `swe` / `--parallel` 的子任务自动带 `['code-gen','cheap']` 标签路由:
270
+ 低成本 provider(FH_PROVIDERS 中带 `"cheap"` 标签)优先承担子任务,主任务仍走 code-gen。
271
+ 未配置 cheap 标签时自动回退全部 provider,无感。
272
+
273
+ ---
274
+
275
+ ## 六、工具调用契约
276
+
277
+ ### 6.1 工具清单
278
+ | 类别 | 工具 | 说明 |
279
+ |------|------|------|
280
+ | 文件 | `write_file` | 写入/覆盖文件 |
281
+ | 文件 | `edit_file` | 插入/删除/替换文本 |
282
+ | 文件 | `read_file` | 读取文件内容 |
283
+ | 文件 | `list_files` | 列出目录内容 |
284
+ | 搜索 | `grep` | 正则搜索 |
285
+ | Shell | `run_shell` | 执行命令 |
286
+ | 验证 | `build_check` | 检查编译 |
287
+ | 验证 | `run_tests` | 运行测试 |
288
+
289
+ ### 6.2 工具参数格式
290
+ 所有工具调用遵循 JSON Schema:
291
+ ```json
292
+ {
293
+ "tool_calls": [
294
+ {
295
+ "type": "function",
296
+ "function": {
297
+ "name": "write_file",
298
+ "arguments": "{\"path\":\"src/main.ts\",\"content\":\"export const x = 1;\"}"
299
+ }
300
+ }
301
+ ]
302
+ }
303
+ ```
304
+
305
+ ### 6.3 工具返回格式
306
+ ```json
307
+ {
308
+ "tool_call_id": "call_abc123",
309
+ "output": "已写入 src/main.ts(25 字节)",
310
+ "error": null
311
+ }
312
+ ```
313
+
314
+ ---
315
+
316
+ ## 七、错误处理
317
+
318
+ ### 7.1 常见错误码
319
+ | 错误码 | 含义 | 处理建议 |
320
+ |--------|------|----------|
321
+ | `FH_4001` | 配额超限 | 等待重置或申请配额 |
322
+ | `FH_4003` | 权限拒绝 | 检查 RBAC 策略 |
323
+ | `FH_5001` | 模型调用失败 | 检查 provider 配置 |
324
+ | `FH_5002` | 上下文压缩失败 | 使用 /plan 重新规划 |
325
+ | `FH_6001` | 文件路径越权 | 检查沙箱规则 |
326
+
327
+ ### 7.2 调试技巧
328
+ ```bash
329
+ # 查看详细日志
330
+ export FH_LOG_LEVEL=debug
331
+ fhcode "你的任务"
332
+
333
+ # 查看会话历史
334
+ fhcode sessions
335
+
336
+ # 恢复上次会话
337
+ fhcode resume <session-id>
338
+ ```
339
+
340
+ ---
341
+
342
+ ## 八、企业部署
343
+
344
+ ### 8.1 必需环境变量
345
+ ```bash
346
+ export FH_ENTERPRISE=true
347
+ export FH_TENANT=my-org
348
+ export FH_USER=agent-sa
349
+ export FH_ROLE=developer
350
+ export FH_WEB_TOKEN=<web-console-token>
351
+ ```
352
+
353
+ ### 8.2 Web 控制台
354
+ ```bash
355
+ # 启动服务
356
+ fhcode serve --port 8080
357
+
358
+ # 访问
359
+ # http://localhost:8080
360
+ ```
361
+
362
+ ---
363
+
364
+ ## 九、验证套件
365
+
366
+ ```bash
367
+ # 全量验证
368
+ npm run verify
369
+
370
+ # 单项验证
371
+ npm run verify:m4 # 企业能力
372
+ npm test # 单元测试
373
+ node scripts/verify-m9.mjs # SWE 能力
374
+ ```
375
+
376
+ ---
377
+
378
+ ## 十、联系与反馈
379
+
380
+ - **GitHub Issues**:提交 bug 或功能请求
381
+ - **文档**:详见 `docs/` 目录
382
+ - **署名**:晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹