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
@@ -0,0 +1,288 @@
1
+ # Feihong Code (fhcode) — Deployment Guide
2
+
3
+ **Version**: v0.5.0-b
4
+ **Date**: 2026-08-16
5
+ **Product**: Feihong Code (feihong-code) — a terminal AI coding agent (a Muse Code reimplementation)
6
+ **Attribution**: Jinjiang Feihongzhi Tech Enterprise Management Co., Ltd. · Feiyang Qiyuan R&D Center · Lead: Wu Cihong
7
+
8
+ ---
9
+
10
+ ## 1. Deployment Shapes
11
+
12
+ | Shape | Scenario | Components |
13
+ |-------|----------|------------|
14
+ | Standalone CLI | Personal dev / intranet terminal | fhcode CLI (Node.js) |
15
+ | Web service | Team sharing / cloud execution | fhcode serve + task queue |
16
+ | Docker | Containerized / private deployment | Dockerfile + docker-compose |
17
+ | Enterprise private | Multi-tenant / audit / quota | Enterprise mode (FH_ENTERPRISE) |
18
+ | IDE integration | In-editor usage | VSCode extension (thin shell) |
19
+
20
+ ---
21
+
22
+ ## 2. Requirements
23
+
24
+ | Item | Requirement | Notes |
25
+ |------|-------------|-------|
26
+ | Node.js | ≥ 18 (20/22 recommended) | Runtime |
27
+ | npm | ≥ 9 | Package manager |
28
+ | git | Recommended | diff/rollback/parallel worktrees |
29
+ | Docker | Optional | `FH_SANDBOX_MODE=container` and Docker deployment |
30
+ | Network | Optional | Real model APIs / skills marketplace / HF datasets (offline mode needs no internet) |
31
+
32
+ **Offline deployment notes**: without a model configured, offline mode (Mock-driven) is used automatically with zero external dependencies; model access can point to an intranet Ollama or a private OpenAI-compatible gateway.
33
+
34
+ ---
35
+
36
+ ## 3. Installation & Deployment
37
+
38
+ ### 3.1 npm Global Install
39
+
40
+ ```bash
41
+ npm install -g feihong-code
42
+ fhcode --version
43
+ ```
44
+
45
+ ### 3.2 From Source
46
+
47
+ ```bash
48
+ git clone https://github.com/wch887292/feihong-code.git
49
+ cd feihong-code
50
+ npm install
51
+ npm run build # tsc + Web static asset copy
52
+ npm test # 164 unit tests self-check
53
+ node scripts/eval.mjs # local benchmark self-check (10/10)
54
+ ```
55
+
56
+ ### 3.3 Docker Deployment (Web service)
57
+
58
+ ```bash
59
+ # build image
60
+ docker build -t feihong-code .
61
+
62
+ # run the Web console (with task queue)
63
+ docker run -d --name fhcode \
64
+ -p 8080:8080 \
65
+ -e FH_WEB_TOKEN=<your-token> \
66
+ -e FH_PROVIDERS='[{"name":"deepseek","type":"openai-compatible","baseUrl":"https://api.deepseek.com/v1","apiKey":"sk-...","tags":["code-gen"]}]' \
67
+ -v fhcode-data:/root/.feihong-code \
68
+ feihong-code
69
+ ```
70
+
71
+ ### 3.4 docker-compose (recommended)
72
+
73
+ ```yaml
74
+ # docker-compose.yml
75
+ services:
76
+ fhcode:
77
+ build: .
78
+ ports: ["8080:8080"]
79
+ environment:
80
+ FH_WEB_TOKEN: ${FH_WEB_TOKEN}
81
+ FH_PROVIDERS: ${FH_PROVIDERS} # model config
82
+ FH_TASK_CONCURRENCY: "2" # task concurrency cap
83
+ FH_TASK_PERSIST_DIR: /data/tasks # task persistence (resume after restart)
84
+ FH_ENTERPRISE: "true" # enterprise mode
85
+ volumes:
86
+ - fhcode-data:/data
87
+ - fhcode-home:/root/.feihong-code
88
+ volumes:
89
+ fhcode-data:
90
+ fhcode-home:
91
+ ```
92
+
93
+ ---
94
+
95
+ ## 4. Environment Variable Reference (full)
96
+
97
+ ### 4.1 App & Paths
98
+
99
+ | Variable | Default | Description |
100
+ |----------|---------|-------------|
101
+ | `FH_HOME` | `~/.feihong-code` | Home dir (sessions/audit/experience/stats/cache) |
102
+ | `FH_LOG_DIR` | `$FH_HOME/sessions` | Session log dir (`~` expansion supported) |
103
+ | `FH_CONFIG` | — | Config file path (fhcode.config.json) |
104
+ | `FHCODE_LANG` | system locale | UI language zh/en |
105
+
106
+ ### 4.2 Model Routing
107
+
108
+ | Variable | Description |
109
+ |----------|-------------|
110
+ | `FH_PROVIDERS` | JSON array (highest priority): `{name,type,baseURL,apiKey,tags[],costPer1k}` |
111
+ | `FH_MODEL_NAME/TYPE/BASE_URL/API_KEY/TAGS/COST_PER_1K` | Quick single-var setup |
112
+ | `FH_MODEL_STRATEGY` | cost/capability/latency |
113
+ | `FH_BUDGET_USD` | Per-task cost cap (circuit breaker) |
114
+ | `FH_TENANT_BUDGET_USD` | Tenant daily cost cap (overrides policy) |
115
+
116
+ ### 4.3 Security
117
+
118
+ | Variable | Description |
119
+ |----------|-------------|
120
+ | `FH_SANDBOX_MODE` | read-only / workspace-write / danger-full-access / container |
121
+ | `FH_SANDBOX_IMAGE` | container mode image (default node:22-alpine) |
122
+ | `FH_SHELL_ALLOW` | Shell allowlist (comma-separated) |
123
+ | `FH_REQUIRE_APPROVAL` | Approval switch (default true) |
124
+ | `FH_NETWORK_ALLOW/DENY` | Network domain rules (deny effective in all modes) |
125
+ | `FH_HOOKS` | Hooks JSON array (PreToolUse/PostToolUse/PostEdit) |
126
+ | `FH_POLICY` | Inline policy JSON (RBAC/blacklists, tighten-only) |
127
+
128
+ ### 4.4 Enterprise Mode
129
+
130
+ | Variable | Description |
131
+ |----------|-------------|
132
+ | `FH_ENTERPRISE` | On by default (false reverts to community mode) |
133
+ | `FH_TENANT` | Tenant id (default: default) |
134
+ | `FH_USER` | User id |
135
+ | `FH_ROLE` | viewer/developer/operator/admin |
136
+
137
+ ### 4.5 Web / Cloud Execution
138
+
139
+ | Variable | Description |
140
+ |----------|-------------|
141
+ | `FH_WEB_TOKEN` | Web console access token (auto-generated if unset) |
142
+ | `FH_WEB_PORT` | Port (default 8080) |
143
+ | `FH_TASK_CONCURRENCY` | Task concurrency cap (default 2) |
144
+ | `FH_TASK_PERSIST_DIR` | Task persistence dir (default `$FH_HOME/tasks`) |
145
+ | `FH_TASK_WEBHOOK_URL` | Task-status webhook (dynamically registrable) |
146
+
147
+ ### 4.6 Message Channels
148
+
149
+ | Variable | Description |
150
+ |----------|-------------|
151
+ | `FH_CHANNEL_TELEGRAM_BOT_TOKEN/CHAT_ID` | Telegram notifications |
152
+ | `FH_CHANNEL_WECOM_KEY` | WeCom bot keys (comma-separated, multiple) |
153
+ | `FH_CHANNEL_ALLOW` | Outbound channel allowlist |
154
+
155
+ ### 4.7 Marketplace / Benchmark
156
+
157
+ | Variable | Description |
158
+ |----------|-------------|
159
+ | `FH_SKILL_MARKET` | Skills marketplace source (default agentskills.io) |
160
+ | `FH_SWEBENCH_DATA_URL` | SWE-bench data mirror/offline JSON (intranet-friendly) |
161
+
162
+ ---
163
+
164
+ ## 5. Enterprise Private Deployment
165
+
166
+ ### 5.1 Directory Layout (tenant isolation)
167
+
168
+ ```
169
+ $FH_HOME/
170
+ ├── tenants/<tenantId>/
171
+ │ ├── sessions/ # session checkpoints
172
+ │ ├── audit/ # audit hash chain (audit-YYYY-MM.jsonl)
173
+ │ └── goals/ # goal files
174
+ ├── policy.json # global policy (RBAC/blacklists)
175
+ ├── experiences/ # experience library
176
+ ├── model-stats.jsonl # model stats
177
+ ├── skills/ # user-level skills
178
+ ├── plugins/ # user-level plugins
179
+ └── bench/ # eval/SWE-bench cache & baselines
180
+ ```
181
+
182
+ ### 5.2 Production Recommendations
183
+
184
+ 1. **Token management**: always set `FH_WEB_TOKEN` explicitly (auto-generated is session-only); inject via a secrets manager
185
+ 2. **Audit compliance**: run `fhcode audit verify` periodically to validate hash-chain integrity; audit files are monthly-sharded for archiving
186
+ 3. **Quota governance**: set `FH_TENANT_BUDGET_USD` for tenant daily budgets; tasks are fail-fast rejected when exceeded
187
+ 4. **Backups**: back up `$FH_HOME` (sessions/audit/experience) daily; keep `FH_TASK_PERSIST_DIR` on a separate volume
188
+ 5. **Multi-instance**: the task queue persists per file; instances sharing the persist dir cross-recover (queued re-enqueues, running zombies marked failed)
189
+ 6. **Intranet models**: point `FH_PROVIDERS` at an intranet Ollama/private gateway to run fully offline
190
+
191
+ ### 5.3 Security Baseline (production must)
192
+
193
+ ```bash
194
+ export FH_REQUIRE_APPROVAL=true
195
+ export FH_SANDBOX_MODE=workspace-write # or container
196
+ export FH_NETWORK_DENY=... # as needed
197
+ export FH_ENTERPRISE=true
198
+ export FH_CHANNEL_ALLOW=telegram,wecom # channel allowlist (optional)
199
+ ```
200
+
201
+ ---
202
+
203
+ ## 6. Web Service Operations
204
+
205
+ ### 6.1 Start & Health Check
206
+
207
+ ```bash
208
+ fhcode serve --port 8080
209
+ curl http://localhost:8080/api/health # unauthenticated health check
210
+ ```
211
+
212
+ ### 6.2 Task Queue API (Bearer auth)
213
+
214
+ ```bash
215
+ TOKEN=$FH_WEB_TOKEN
216
+ # submit / list / query / webhook register
217
+ curl -X POST http://localhost:8080/api/tasks -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{"goal":"..."}'
218
+ curl http://localhost:8080/api/tasks -H "Authorization: Bearer $TOKEN"
219
+ curl http://localhost:8080/api/tasks/<id> -H "Authorization: Bearer $TOKEN"
220
+ curl -X POST http://localhost:8080/api/webhook -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{"url":"https://ci.example.com/hook"}'
221
+ ```
222
+
223
+ ### 6.3 Restart Recovery
224
+
225
+ - Tasks persist to `$FH_HOME/tasks/<id>.json` (atomic writes)
226
+ - After restart: queued tasks re-enqueue, running zombies are marked failed, terminal states remain queryable
227
+ - webhook/channel notifications re-fire on the queued node during recovery
228
+
229
+ ---
230
+
231
+ ## 7. CI/CD Integration (regression gate)
232
+
233
+ ```yaml
234
+ # .github/workflows/ci.yml excerpt
235
+ - name: Build & test
236
+ run: |
237
+ npm ci
238
+ npm run typecheck
239
+ npm test
240
+ npm run build
241
+
242
+ - name: eval regression gate (baseline compare)
243
+ run: |
244
+ npm run build
245
+ node scripts/eval.mjs --baseline bench/eval-baseline.json
246
+ # fails when current pass is below baseline
247
+
248
+ - name: Update baseline (main branch)
249
+ if: github.ref == 'refs/heads/main'
250
+ run: node scripts/eval.mjs --save-baseline bench/eval-baseline.json
251
+ ```
252
+
253
+ ### SWE-bench harness (optional)
254
+
255
+ ```bash
256
+ node scripts/eval-swebench.mjs --split lite --limit 20 --run --report report.md
257
+ # offline/intranet: point FH_SWEBENCH_DATA_URL at a mirror JSON
258
+ ```
259
+
260
+ ---
261
+
262
+ ## 8. Upgrades & Rollback
263
+
264
+ | Action | Command |
265
+ |--------|---------|
266
+ | Upgrade npm package | `npm install -g feihong-code@latest` |
267
+ | Upgrade from source | `git pull && npm install && npm run build` |
268
+ | Check version | `fhcode --version` / `fhcode doctor` |
269
+ | Rollback | npm install a previous version / git checkout an old tag (data dir is compatible and does not roll back with code) |
270
+
271
+ > Data compatibility: session checkpoints/audit/experience are JSON/JSONL text formats, backward compatible across minor versions; back up `$FH_HOME` before upgrading.
272
+
273
+ ---
274
+
275
+ ## 9. Troubleshooting
276
+
277
+ | Symptom | Diagnosis |
278
+ |---------|-----------|
279
+ | 401 after service start | `FH_WEB_TOKEN` unset or mismatched with the caller (Bearer header) |
280
+ | Tasks stuck queued | Concurrency full (`FH_TASK_CONCURRENCY`) or persist dir not writable |
281
+ | Model calls fail | Run `fhcode doctor` to check network reachability and provider config |
282
+ | Shell fails inside Docker | Confirm `FH_SANDBOX_MODE`/image; `FH_SANDBOX_IMAGE` must include required tools |
283
+ | Abnormal task states after restart | Running zombies are marked failed (expected); queued tasks auto-resume |
284
+ | Marketplace/dataset fetch fails | Use a mirror on intranet: `FH_SKILL_MARKET` / `FH_SWEBENCH_DATA_URL` |
285
+
286
+ ---
287
+
288
+ *Full configuration: see Configuration Reference; error codes and detailed troubleshooting: see FAQ & Troubleshooting.*
@@ -0,0 +1,313 @@
1
+ # 自我进化系统使用指南
2
+
3
+ > 版本: v0.5.1 | 最后更新: 2026-08-22
4
+
5
+ ---
6
+
7
+ ## 概述
8
+
9
+ 自我进化(Self-Evolve)是 feihong-code 的核心能力之一,使系统能够从失败中学习、积累经验并持续优化。该系统包含三个主要组件:
10
+
11
+ 1. **失败记录** - 自动捕获执行过程中的错误
12
+ 2. **经验学习** - 分析历史失败,生成解决方案
13
+ 3. **每日复盘** - 总结当日工作,优化策略
14
+
15
+ ---
16
+
17
+ ## 快速开始
18
+
19
+ ### 启用自我进化
20
+
21
+ ```bash
22
+ # CLI 模式
23
+ fhcode "你的任务" --self-evolve
24
+
25
+ # Web 控制台
26
+ # 在设置中启用 "Self-Evolve" 开关
27
+ ```
28
+
29
+ ### 查看进化状态
30
+
31
+ ```bash
32
+ # 查看当前进化状态
33
+ fhcode evolve status
34
+
35
+ # 查看失败记录
36
+ fhcode evolve failures
37
+
38
+ # 查看学习经验
39
+ fhcode evolve lessons
40
+ ```
41
+
42
+ ---
43
+
44
+ ## 核心功能
45
+
46
+ ### 1. 失败记录机制
47
+
48
+ 系统自动记录以下类型的失败:
49
+
50
+ | 错误类型 | 触发条件 | 记录内容 |
51
+ |----------|----------|----------|
52
+ | `MODEL_TIMEOUT` | 模型响应超时 | 超时时长、模型名称 |
53
+ | `AUTH_FAILURE` | API 认证失败 | 错误代码、提供商 |
54
+ | `RATE_LIMIT` | 请求频率限制 | 限制值、重置时间 |
55
+ | `EXECUTION_ERROR` | 工具执行失败 | 工具名、错误信息 |
56
+ | `PERMISSION_DENIED` | 权限不足 | 操作类型、所需权限 |
57
+
58
+ **存储位置**: `~/.fhcode/evolve/failures.jsonl`
59
+
60
+ ### 2. 经验学习引擎
61
+
62
+ 系统会分析失败记录,生成可复用的解决方案:
63
+
64
+ ```typescript
65
+ // 经验数据结构
66
+ interface LearnedLesson {
67
+ errorType: string; // 错误类型
68
+ pattern: string; // 问题模式
69
+ solution: string; // 解决方案
70
+ confidence: number; // 置信度 (0-1)
71
+ usageCount: number; // 应用次数
72
+ createdAt: Date; // 创建时间
73
+ }
74
+ ```
75
+
76
+ **查看学习经验**:
77
+ ```bash
78
+ fhcode evolve lessons --recent # 查看最近学习的经验
79
+ fhcode evolve lessons --type MODEL_TIMEOUT # 按类型筛选
80
+ ```
81
+
82
+ ### 3. 每日复盘报告
83
+
84
+ 系统每天自动生成复盘报告:
85
+
86
+ ```bash
87
+ # 手动生成复盘报告
88
+ fhcode evolve report --date 2026-08-22
89
+
90
+ # 查看今日报告
91
+ fhcode evolve report --today
92
+ ```
93
+
94
+ **报告内容**:
95
+ - 今日失败统计
96
+ - 已应用的解决方案
97
+ - 未解决的问题
98
+ - 优化建议
99
+
100
+ ---
101
+
102
+ ## 配置选项
103
+
104
+ ### 基本配置
105
+
106
+ 编辑 `~/.fhcode/config.json`:
107
+
108
+ ```json
109
+ {
110
+ "selfEvolve": {
111
+ "enabled": true,
112
+ "maxFailuresToRemember": 100,
113
+ "lessonConfidenceThreshold": 0.7,
114
+ "dailyReportEnabled": true,
115
+ "autoApplyLessons": true
116
+ }
117
+ }
118
+ ```
119
+
120
+ ### 配置参数说明
121
+
122
+ | 参数 | 默认值 | 说明 |
123
+ |------|--------|------|
124
+ | `enabled` | `true` | 是否启用自我进化 |
125
+ | `maxFailuresToRemember` | `100` | 最大保留失败记录数 |
126
+ | `lessonConfidenceThreshold` | `0.7` | 经验应用的最低置信度 |
127
+ | `dailyReportEnabled` | `true` | 是否生成每日报告 |
128
+ | `autoApplyLessons` | `true` | 是否自动应用学习到的经验 |
129
+
130
+ ---
131
+
132
+ ## 高级用法
133
+
134
+ ### 强制重新学习
135
+
136
+ ```bash
137
+ # 清除所有学习经验,重新开始
138
+ fhcode evolve reset --lessons
139
+
140
+ # 仅清除失败记录
141
+ fhcode evolve reset --failures
142
+
143
+ # 完全重置(谨慎使用)
144
+ fhcode evolve reset --all
145
+ ```
146
+
147
+ ### 导出学习数据
148
+
149
+ ```bash
150
+ # 导出失败记录
151
+ fhcode evolve export --type failures --format json
152
+
153
+ # 导出学习经验
154
+ fhcode evolve export --type lessons --format json
155
+
156
+ # 导出复盘报告
157
+ fhcode evolve export --type report --format markdown
158
+ ```
159
+
160
+ ### 导入外部经验
161
+
162
+ ```bash
163
+ # 从 JSON 文件导入经验
164
+ fhcode evolve import --file lessons.json
165
+
166
+ # 从 GitHub Gist 导入
167
+ fhcode evolve import --url https://gist.github.com/...
168
+ ```
169
+
170
+ ---
171
+
172
+ ## 与企业安全集成
173
+
174
+ 自我进化系统完全兼容企业安全策略:
175
+
176
+ - **审计链**: 所有失败记录和解决方案变更都会记录到审计日志
177
+ - **权限控制**: 可通过 RBAC 控制谁可以查看/修改学习经验
178
+ - **数据隔离**: 多租户场景下,各租户的学习经验相互隔离
179
+
180
+ ### 安全配置示例
181
+
182
+ ```json
183
+ {
184
+ "selfEvolve": {
185
+ "enabled": true,
186
+ "auditEnabled": true,
187
+ "dataIsolation": "tenant",
188
+ "maxRetentionDays": 90
189
+ }
190
+ }
191
+ ```
192
+
193
+ ---
194
+
195
+ ## 故障排查
196
+
197
+ ### 常见问题
198
+
199
+ **Q: 自我进化没有正常工作?**
200
+
201
+ 检查项:
202
+ 1. 确认 `selfEvolve.enabled` 为 `true`
203
+ 2. 检查 `~/.fhcode/evolve/` 目录权限
204
+ 3. 查看日志: `cat ~/.fhcode/logs/evolve.log`
205
+
206
+ **Q: 学习经验没有生效?**
207
+
208
+ 检查项:
209
+ 1. 确认 `autoApplyLessons` 为 `true`
210
+ 2. 检查经验的 `confidence` 是否达到阈值
211
+ 3. 查看应用日志: `fhcode evolve lessons --verbose`
212
+
213
+ **Q: 每日报告没有生成?**
214
+
215
+ 检查项:
216
+ 1. 确认 `dailyReportEnabled` 为 `true`
217
+ 2. 报告在每天 23:59 自动生成,检查当时系统是否运行
218
+ 3. 手动生成测试: `fhcode evolve report --today`
219
+
220
+ ### 日志位置
221
+
222
+ | 日志类型 | 路径 |
223
+ |----------|------|
224
+ | 主日志 | `~/.fhcode/logs/main.log` |
225
+ | 进化日志 | `~/.fhcode/logs/evolve.log` |
226
+ | 审计日志 | `~/.fhcode/audit/audit.jsonl` |
227
+
228
+ ---
229
+
230
+ ## 最佳实践
231
+
232
+ ### 1. 定期审查学习经验
233
+
234
+ ```bash
235
+ # 每周审查一次
236
+ fhcode evolve lessons --review
237
+
238
+ # 清理低置信度经验
239
+ fhcode evolve clean --confidence < 0.5
240
+ ```
241
+
242
+ ### 2. 分享成功经验
243
+
244
+ 将学习到的经验分享给团队:
245
+
246
+ ```bash
247
+ # 导出团队可用的经验
248
+ fhcode evolve export --scope team --format json
249
+ ```
250
+
251
+ ### 3. 监控进化指标
252
+
253
+ 关注以下指标评估自我进化效果:
254
+
255
+ - **失败率下降趋势**: 同类错误重复发生次数应逐渐减少
256
+ - **经验应用成功率**: 自动应用的解决方案成功率应 > 80%
257
+ - **问题解决时长**: 从首次失败到解决方案生成的时间
258
+
259
+ ---
260
+
261
+ ## 技术架构
262
+
263
+ ### 数据流
264
+
265
+ ```
266
+ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
267
+ │ 任务执行 │ ──→ │ 失败捕获 │ ──→ │ 经验学习 │
268
+ └─────────────┘ └─────────────┘ └─────────────┘
269
+ ┌─────────────┐
270
+ │ 每日复盘 │
271
+ └─────────────┘
272
+
273
+
274
+ ┌─────────────┐
275
+ │ 策略优化 │
276
+ └─────────────┘
277
+ ```
278
+
279
+ ### 核心类
280
+
281
+ ```typescript
282
+ // 自我进化管理器
283
+ class SelfEvolveManager {
284
+ init(): void;
285
+ recordFailure(errorType: string, error: any, attemptedSolutions?: string[]): void;
286
+ searchSolution(errorType: string, errorMessage: string): Lesson[];
287
+ generateDailyReport(): Report;
288
+ }
289
+
290
+ // 经验数据模型
291
+ interface LearnedLesson {
292
+ id: string;
293
+ errorType: string;
294
+ pattern: string;
295
+ solution: string;
296
+ confidence: number;
297
+ usageCount: number;
298
+ createdAt: Date;
299
+ updatedAt: Date;
300
+ }
301
+ ```
302
+
303
+ ---
304
+
305
+ ## 相关链接
306
+
307
+ - [错误码参考](./error-codes.md)
308
+ - [企业部署指南](../DEPLOYMENT-GUIDE.md)
309
+ - [自我进化实现细节](./self-evolve-implementation.md)
310
+
311
+ ---
312
+
313
+ *本系统由飞扬企源研发中心 (FyqyRDC) 开发*