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.
- package/.github/FUNDING.yml +4 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +37 -37
- package/.github/ISSUE_TEMPLATE/config.yml +14 -14
- package/.github/ISSUE_TEMPLATE/feature_request.md +28 -28
- package/.github/PULL_REQUEST_TEMPLATE.md +46 -46
- package/.github/SECURITY.md +67 -67
- package/.github/dependabot.yml +16 -0
- package/.github/workflows/ci.yml +1 -1
- package/AGENT-GUIDE.md +382 -237
- package/CHANGELOG.md +392 -0
- package/CODE_OF_CONDUCT.md +56 -56
- package/CONTRIBUTING.md +68 -68
- package/LICENSE +22 -22
- package/README.md +586 -522
- package/README.self-evolve.md +274 -0
- package/dist/agent/code-review.js +2 -0
- package/dist/agent/code-review.js.map +1 -1
- package/dist/agent/code-writer.js +74 -18
- package/dist/agent/code-writer.js.map +1 -1
- package/dist/agent/context-compactor.js +13 -4
- package/dist/agent/context-compactor.js.map +1 -1
- package/dist/agent/experience.js +319 -84
- package/dist/agent/experience.js.map +1 -1
- package/dist/agent/orchestrator.js +233 -71
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/planner.js +30 -7
- package/dist/agent/planner.js.map +1 -1
- package/dist/agent/prompts.js +9 -0
- package/dist/agent/prompts.js.map +1 -1
- package/dist/agent/quality-gate.js +10 -4
- package/dist/agent/quality-gate.js.map +1 -1
- package/dist/agent/repo-context.js +181 -0
- package/dist/agent/repo-context.js.map +1 -0
- package/dist/agent/repo-reader.js +92 -99
- package/dist/agent/repo-reader.js.map +1 -1
- package/dist/agent/self-heal.js +80 -60
- package/dist/agent/self-heal.js.map +1 -1
- package/dist/agent/self-improver.js +65 -61
- package/dist/agent/self-improver.js.map +1 -1
- package/dist/agent/subagent-summary.js +31 -0
- package/dist/agent/subagent-summary.js.map +1 -0
- package/dist/agent/subagent.js +52 -2
- package/dist/agent/subagent.js.map +1 -1
- package/dist/agent/symbol-index.js +160 -0
- package/dist/agent/symbol-index.js.map +1 -0
- package/dist/agent/team.js +193 -0
- package/dist/agent/team.js.map +1 -0
- package/dist/cli/commands.js +124 -143
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/index.js +113 -106
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/repl.js +82 -7
- package/dist/cli/repl.js.map +1 -1
- package/dist/cli/run.js +600 -95
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/tui.js +145 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/cli/version.js +1 -1
- package/dist/enterprise/audit.js +145 -23
- package/dist/enterprise/audit.js.map +1 -1
- package/dist/enterprise/index.js +14 -11
- package/dist/enterprise/index.js.map +1 -1
- package/dist/enterprise/policy.js +22 -10
- package/dist/enterprise/policy.js.map +1 -1
- package/dist/harness/executor.js +127 -0
- package/dist/harness/executor.js.map +1 -0
- package/dist/harness/harness.js +87 -0
- package/dist/harness/harness.js.map +1 -0
- package/dist/harness/index.js +31 -0
- package/dist/harness/index.js.map +1 -0
- package/dist/harness/loader.js +138 -0
- package/dist/harness/loader.js.map +1 -0
- package/dist/harness/reporter.js +34 -0
- package/dist/harness/reporter.js.map +1 -0
- package/dist/harness/types.js +10 -0
- package/dist/harness/types.js.map +1 -0
- package/dist/harness/verifier.js +48 -0
- package/dist/harness/verifier.js.map +1 -0
- package/dist/hello.js +14 -0
- package/dist/hello.js.map +1 -0
- package/dist/memory/auto-summarize.js +208 -0
- package/dist/memory/auto-summarize.js.map +1 -0
- package/dist/memory/index.js +228 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/models/model-router.js +100 -27
- package/dist/models/model-router.js.map +1 -1
- package/dist/models/model.dto.js +25 -3
- package/dist/models/model.dto.js.map +1 -1
- package/dist/models/providers/ollama.provider.js +12 -0
- package/dist/models/providers/ollama.provider.js.map +1 -1
- package/dist/models/providers/openai-compatible.provider.js +14 -1
- package/dist/models/providers/openai-compatible.provider.js.map +1 -1
- package/dist/plugins/plugin-loader.js +179 -0
- package/dist/plugins/plugin-loader.js.map +1 -0
- package/dist/runtime/event-log.js.map +1 -1
- package/dist/runtime/hooks.js +80 -0
- package/dist/runtime/hooks.js.map +1 -0
- package/dist/self-evolve/hook.js +60 -0
- package/dist/self-evolve/hook.js.map +1 -0
- package/dist/self-evolve/hook.ts +80 -0
- package/dist/self-evolve/manager.d.ts +8 -0
- package/dist/self-evolve/manager.js +401 -0
- package/dist/shared/config.js +35 -3
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/errors.js +6 -2
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/i18n.js +535 -0
- package/dist/shared/i18n.js.map +1 -0
- package/dist/shared/secure-store.js +117 -0
- package/dist/shared/secure-store.js.map +1 -0
- package/dist/skills/grill.js +2 -1
- package/dist/skills/grill.js.map +1 -1
- package/dist/skills/self-heal.js +73 -0
- package/dist/skills/self-heal.js.map +1 -0
- package/dist/skills/skill-loader.js +131 -0
- package/dist/skills/skill-loader.js.map +1 -0
- package/dist/skills/skill-market.js +195 -0
- package/dist/skills/skill-market.js.map +1 -0
- package/dist/tools/analysis/code-analyzer.js +45 -18
- package/dist/tools/analysis/code-analyzer.js.map +1 -1
- package/dist/tools/index.js +5 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp/index.js +84 -0
- package/dist/tools/mcp/index.js.map +1 -0
- package/dist/tools/mcp/mcp-client.js +194 -0
- package/dist/tools/mcp/mcp-client.js.map +1 -0
- package/dist/tools/sandbox.js +126 -0
- package/dist/tools/sandbox.js.map +1 -0
- package/dist/tools/shell/exec.js +72 -3
- package/dist/tools/shell/exec.js.map +1 -1
- package/dist/tools/shell/run-shell.tool.js +37 -7
- package/dist/tools/shell/run-shell.tool.js.map +1 -1
- package/dist/tools/skills/load-skill.tool.js +36 -0
- package/dist/tools/skills/load-skill.tool.js.map +1 -0
- package/dist/tools/tool.interface.js.map +1 -1
- package/dist/tools/tool.registry.js +69 -1
- package/dist/tools/tool.registry.js.map +1 -1
- package/dist/tools/web/web.tool.js +139 -0
- package/dist/tools/web/web.tool.js.map +1 -0
- package/dist/web/auth.js +178 -3
- package/dist/web/auth.js.map +1 -1
- package/dist/web/channels.js +171 -0
- package/dist/web/channels.js.map +1 -0
- package/dist/web/public/css/style.css +1546 -0
- package/dist/web/public/index.html +804 -37
- package/dist/web/public/js/api.js +309 -0
- package/dist/web/public/js/app.js +1472 -0
- package/dist/web/public/js/ui.js +832 -0
- package/dist/web/public/js/utils.js +170 -0
- package/dist/web/server.js +937 -11
- package/dist/web/server.js.map +1 -1
- package/dist/web/task-queue.js +470 -0
- package/dist/web/task-queue.js.map +1 -0
- package/dist/web/web-config.js +143 -0
- package/dist/web/web-config.js.map +1 -0
- package/docs/App/344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +299 -0
- package/docs/App/346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +554 -0
- package/docs/Deployment_Guide_EN.md +288 -0
- package/docs/SELF-EVOLVE-GUIDE.md +313 -0
- package/docs/Technical_Manual_EN.md +216 -0
- package/docs/User_Manual_EN.md +314 -0
- package/docs/error-codes.md +198 -0
- package/docs/screenshots/cli-demo.png +0 -0
- package/docs/screenshots/feature-comparison.png +0 -0
- package/docs/screenshots/web-console.png +0 -0
- package/docs/self-evolve-implementation.md +165 -0
- package/docs/self-evolve.md +166 -0
- package/docs//344/272/247/345/223/201/345/274/200/345/217/221/346/226/207/346/241/243.md +614 -614
- 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
- package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +318 -358
- 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
- package/docs//346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +216 -303
- package/docs//346/236/266/346/236/204/344/270/216API.md +238 -238
- package/docs//347/224/250/346/210/267/346/211/213/345/206/214.md +196 -196
- package/docs//351/203/250/347/275/262/346/214/207/345/215/227.md +165 -165
- package/docs//351/203/250/347/275/262/350/257/264/346/230/216/344/271/246.md +288 -0
- package/docs//351/205/215/347/275/256/345/217/202/350/200/203.md +127 -127
- 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
- package/package.json +108 -109
- package/tool-schema.json +117 -46
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# FH_ 错误码完整参考
|
|
2
|
+
|
|
3
|
+
> 版本: v0.5.1 | 最后更新: 2026-08-22
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 错误码分类
|
|
8
|
+
|
|
9
|
+
| 分类 | 前缀 | 说明 |
|
|
10
|
+
|------|------|------|
|
|
11
|
+
| 配置错误 | FH_CFG_ | 配置相关错误 |
|
|
12
|
+
| 模型错误 | FH_MDL_ | 模型调用相关错误 |
|
|
13
|
+
| 代理错误 | FH_AGT_ | 代理执行相关错误 |
|
|
14
|
+
| 会话错误 | FH_SSN_ | 会话管理相关错误 |
|
|
15
|
+
| 工具错误 | FH_TL_ | 工具调用相关错误 |
|
|
16
|
+
| 安全错误 | FH_SEC_ | 安全相关错误 |
|
|
17
|
+
| 网络错误 | FH_NET_ | 网络连接相关错误 |
|
|
18
|
+
| 系统错误 | FH_SYS_ | 系统级错误 |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 配置错误 (FH_CFG_)
|
|
23
|
+
|
|
24
|
+
### FH_CFG_001 - 配置文件缺失
|
|
25
|
+
- **原因**: `fhcode.config.json` 不存在或路径错误
|
|
26
|
+
- **解决**: 运行 `fhcode init` 初始化配置
|
|
27
|
+
|
|
28
|
+
### FH_CFG_002 - 配置验证失败
|
|
29
|
+
- **原因**: 配置文件格式错误或必填字段缺失
|
|
30
|
+
- **解决**: 检查配置文件 JSON 格式,确保必填字段存在
|
|
31
|
+
|
|
32
|
+
### FH_CFG_003 - 环境变量缺失
|
|
33
|
+
- **原因**: 必需的环境变量未设置
|
|
34
|
+
- **解决**: 设置所需环境变量(见环境变量表)
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 模型错误 (FH_MDL_)
|
|
39
|
+
|
|
40
|
+
### FH_MDL_001 - 模型提供商不可用
|
|
41
|
+
- **原因**: 配置的模型提供商连接失败
|
|
42
|
+
- **解决**: 检查网络连通性,验证 API Key 有效性
|
|
43
|
+
|
|
44
|
+
### FH_MDL_002 - 模型名称无效
|
|
45
|
+
- **原因**: 指定的模型名称在提供商中不存在
|
|
46
|
+
- **解决**: 查看提供商文档确认可用模型列表
|
|
47
|
+
|
|
48
|
+
### FH_MDL_003 - API 配额超限
|
|
49
|
+
- **原因**: API Key 配额已用完或达到速率限制
|
|
50
|
+
- **解决**: 等待配额重置或升级账户
|
|
51
|
+
|
|
52
|
+
### FH_MDL_004 - 模型响应超时
|
|
53
|
+
- **原因**: 模型响应时间超过设定阈值
|
|
54
|
+
- **解决**: 增加 `modelTimeout` 配置或检查网络延迟
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 代理错误 (FH_AGT_)
|
|
59
|
+
|
|
60
|
+
### FH_AGT_001 - 代理执行超时
|
|
61
|
+
- **原因**: 代理任务执行时间超过最大迭代次数
|
|
62
|
+
- **解决**:
|
|
63
|
+
- 增加 `maxIterations` 参数
|
|
64
|
+
- 拆分复杂任务为多个子任务
|
|
65
|
+
- 检查是否有无限循环
|
|
66
|
+
|
|
67
|
+
### FH_AGT_002 - 并行代理数量超限
|
|
68
|
+
- **原因**: 同时运行的代理数量超过限制
|
|
69
|
+
- **解决**: 减少 `maxParallelAgents` 配置
|
|
70
|
+
|
|
71
|
+
### FH_AGT_003 - 代理状态丢失
|
|
72
|
+
- **原因**: 恢复审计时找不到代理状态
|
|
73
|
+
- **解决**: 检查 `.fhcode/audit/` 目录权限
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 会话错误 (FH_SSN_)
|
|
78
|
+
|
|
79
|
+
### FH_SSN_001 - 会话 ID 无效
|
|
80
|
+
- **原因**: 提供的会话 ID 不存在
|
|
81
|
+
- **解决**: 使用 `fhcode session list` 查看有效会话
|
|
82
|
+
|
|
83
|
+
### FH_SSN_002 - 会话锁定
|
|
84
|
+
- **原因**: 会话正在进行中,无法访问
|
|
85
|
+
- **解决**: 等待当前任务完成或使用 `--force` 强制解锁
|
|
86
|
+
|
|
87
|
+
### FH_SSN_003 - 会话数据损坏
|
|
88
|
+
- **原因**: 会话文件损坏或不完整
|
|
89
|
+
- **解决**: 删除损坏的会话文件,重新开始
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 工具错误 (FH_TL_)
|
|
94
|
+
|
|
95
|
+
### FH_TL_001 - 工具调用失败
|
|
96
|
+
- **原因**: 工具执行过程中出错
|
|
97
|
+
- **解决**: 查看具体工具的错误日志
|
|
98
|
+
|
|
99
|
+
### FH_TL_002 - 工具权限不足
|
|
100
|
+
- **原因**: 工具需要额外权限但未授权
|
|
101
|
+
- **解决**: 使用 `--allow` 标志授权工具
|
|
102
|
+
|
|
103
|
+
### FH_TL_003 - 工具参数验证失败
|
|
104
|
+
- **原因**: 传递给工具的参数不符合要求
|
|
105
|
+
- **解决**: 检查工具文档确认参数格式
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 安全错误 (FH_SEC_)
|
|
110
|
+
|
|
111
|
+
### FH_SEC_001 - 操作被安全策略拦截
|
|
112
|
+
- **原因**: 操作违反了企业安全策略
|
|
113
|
+
- **解决**: 联系管理员调整安全策略配置
|
|
114
|
+
|
|
115
|
+
### FH_SEC_002 - 敏感数据检测
|
|
116
|
+
- **原因**: 检测到可能包含敏感信息的内容
|
|
117
|
+
- **解决**: 确认内容安全或添加白名单
|
|
118
|
+
|
|
119
|
+
### FH_SEC_003 - 未授权的操作类型
|
|
120
|
+
- **原因**: 当前用户角色无权执行该操作
|
|
121
|
+
- **解决**: 使用具有适当权限的账户
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 网络错误 (FH_NET_)
|
|
126
|
+
|
|
127
|
+
### FH_NET_001 - 网络连接失败
|
|
128
|
+
- **原因**: 无法连接到目标服务器
|
|
129
|
+
- **解决**:
|
|
130
|
+
- 检查网络连接
|
|
131
|
+
- 验证代理设置
|
|
132
|
+
- 检查防火墙规则
|
|
133
|
+
|
|
134
|
+
### FH_NET_002 - DNS 解析失败
|
|
135
|
+
- **原因**: 无法解析域名
|
|
136
|
+
- **解决**: 检查 DNS 设置或使用 IP 地址
|
|
137
|
+
|
|
138
|
+
### FH_NET_003 - SSL/TLS 握手失败
|
|
139
|
+
- **原因**: 证书验证失败
|
|
140
|
+
- **解决**:
|
|
141
|
+
- 检查系统时间
|
|
142
|
+
- 更新 CA 证书
|
|
143
|
+
- 必要时设置 `NODE_TLS_REJECT_UNAUTHORIZED=0`(仅测试环境)
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## 系统错误 (FH_SYS_)
|
|
148
|
+
|
|
149
|
+
### FH_SYS_001 - 文件系统错误
|
|
150
|
+
- **原因**: 文件读写操作失败
|
|
151
|
+
- **解决**: 检查文件权限和磁盘空间
|
|
152
|
+
|
|
153
|
+
### FH_SYS_002 - 内存不足
|
|
154
|
+
- **原因**: 进程占用内存超过限制
|
|
155
|
+
- **解决**:
|
|
156
|
+
- 增加 Node.js 内存限制: `export NODE_OPTIONS="--max-old-space-size=4096"`
|
|
157
|
+
- 减少并行代理数量
|
|
158
|
+
|
|
159
|
+
### FH_SYS_003 - 进程被终止
|
|
160
|
+
- **原因**: 进程被系统或用户强制终止
|
|
161
|
+
- **解决**: 重新启动任务
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 环境变量参考
|
|
166
|
+
|
|
167
|
+
| 变量名 | 说明 | 必填 |
|
|
168
|
+
|--------|------|------|
|
|
169
|
+
| `DEEPSEEK_API_KEY` | DeepSeek API 密钥 | 是(如使用 DeepSeek) |
|
|
170
|
+
| `DASHSCOPE_API_KEY` | 通义千问 API 密钥 | 是(如使用通义) |
|
|
171
|
+
| `OPENAI_API_KEY` | OpenAI API 密钥 | 是(如使用 OpenAI) |
|
|
172
|
+
| `OLLAMA_HOST` | Ollama 服务地址 | 否(默认 localhost:11434) |
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 排查流程图
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
遇到错误
|
|
180
|
+
↓
|
|
181
|
+
查看错误码前缀
|
|
182
|
+
↓
|
|
183
|
+
对应分类章节
|
|
184
|
+
↓
|
|
185
|
+
按照解决方案排查
|
|
186
|
+
↓
|
|
187
|
+
仍无法解决?
|
|
188
|
+
├─ 是 → 查看日志文件 ~/.fhcode/logs/
|
|
189
|
+
└─ 否 → 问题解决 ✓
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 获取帮助
|
|
195
|
+
|
|
196
|
+
- GitHub Issues: https://github.com/wch887292/feihong-code/issues
|
|
197
|
+
- 文档: https://github.com/wch887292/feihong-code/tree/master/docs
|
|
198
|
+
- 联系我们: wch887292@gmail.com
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# Self-Evolve 实现指南
|
|
2
|
+
|
|
3
|
+
## 核心架构
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
7
|
+
│ Self-Evolve Manager │
|
|
8
|
+
├─────────────────────────────────────────────────────────────┤
|
|
9
|
+
│ • failures.json - 失败记录存储 │
|
|
10
|
+
│ • skills-index.json - 技能索引 │
|
|
11
|
+
│ • history.json - 操作历史 │
|
|
12
|
+
│ • config.json - 配置参数 │
|
|
13
|
+
└─────────────────────────────────────────────────────────────┘
|
|
14
|
+
│
|
|
15
|
+
▼
|
|
16
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
17
|
+
│ Hook System │
|
|
18
|
+
├─────────────────────────────────────────────────────────────┤
|
|
19
|
+
│ • onToolFailure() - 工具调用失败时触发 │
|
|
20
|
+
│ • onTaskComplete() - 任务完成时触发 │
|
|
21
|
+
│ • dailyReview() - 每日自动复盘 │
|
|
22
|
+
└─────────────────────────────────────────────────────────────┘
|
|
23
|
+
│
|
|
24
|
+
▼
|
|
25
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
26
|
+
│ CLI Interface │
|
|
27
|
+
├─────────────────────────────────────────────────────────────┤
|
|
28
|
+
│ • self-evolve init - 初始化系统 │
|
|
29
|
+
│ • self-evolve status - 查看状态 │
|
|
30
|
+
│ • self-evolve failures - 管理失败记录 │
|
|
31
|
+
│ • self-evolve skills - 管理技能库 │
|
|
32
|
+
│ • self-evolve review - 定期复盘 │
|
|
33
|
+
│ • self-evolve analyze - 分析错误模式 │
|
|
34
|
+
│ • self-evolve create-skill - 创建新技能 │
|
|
35
|
+
└─────────────────────────────────────────────────────────────┘
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 数据模型
|
|
39
|
+
|
|
40
|
+
### 失败记录 (failure.json)
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"id": "uuid",
|
|
44
|
+
"timestamp": "ISO时间",
|
|
45
|
+
"task": "任务描述",
|
|
46
|
+
"error_type": "错误类型",
|
|
47
|
+
"error_message": "错误信息",
|
|
48
|
+
"attempted_solutions": [],
|
|
49
|
+
"root_cause": "根本原因",
|
|
50
|
+
"solution": "解决方案",
|
|
51
|
+
"created_skill": false,
|
|
52
|
+
"skill_name": null,
|
|
53
|
+
"status": "pending|resolved|manual"
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 技能索引 (skills-index.json)
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"name": "技能名称",
|
|
61
|
+
"description": "技能描述",
|
|
62
|
+
"triggers": ["触发词"],
|
|
63
|
+
"error_pattern": "错误模式",
|
|
64
|
+
"solution": "解决方案",
|
|
65
|
+
"created_at": "创建时间",
|
|
66
|
+
"usage_count": 0,
|
|
67
|
+
"version": "1.0.0"
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 集成到主流程
|
|
72
|
+
|
|
73
|
+
### 1. 在工具调用链中添加 Hook
|
|
74
|
+
|
|
75
|
+
在 `src/tools/` 下的工具调用失败时:
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
// 示例:在 shell 工具中
|
|
79
|
+
try {
|
|
80
|
+
const result = await executeCommand(command);
|
|
81
|
+
// 成功处理
|
|
82
|
+
} catch (error) {
|
|
83
|
+
// 记录失败
|
|
84
|
+
selfEvolveHook.onToolFailure({
|
|
85
|
+
tool: 'shell',
|
|
86
|
+
input: { command },
|
|
87
|
+
error: error.message,
|
|
88
|
+
attemptedSolutions: []
|
|
89
|
+
});
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 2. 在任务完成时检查
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
// 在任务完成后
|
|
98
|
+
selfEvolveHook.onTaskComplete({
|
|
99
|
+
success: isSuccess,
|
|
100
|
+
task: taskDescription,
|
|
101
|
+
error: error?.message
|
|
102
|
+
});
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 3. 定期复盘
|
|
106
|
+
|
|
107
|
+
可以设置 cron job 或定时任务:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# 每天凌晨2点复盘
|
|
111
|
+
0 2 * * * fhcode self-evolve review --daily
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## 扩展开发
|
|
115
|
+
|
|
116
|
+
### 添加新的错误类型
|
|
117
|
+
|
|
118
|
+
在 `manager.js` 的 `categorizeError` 方法中添加:
|
|
119
|
+
|
|
120
|
+
```javascript
|
|
121
|
+
if (msg.includes('新的错误关键词')) {
|
|
122
|
+
return 'new-error-type';
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 创建自定义 Hook
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
class CustomHook {
|
|
130
|
+
onToolFailure(context) {
|
|
131
|
+
// 自定义逻辑
|
|
132
|
+
this.manager.recordFailure(...);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## 最佳实践
|
|
138
|
+
|
|
139
|
+
1. **及时记录**:失败后立即记录,不要延迟
|
|
140
|
+
2. **详细上下文**:记录完整的错误信息和复现步骤
|
|
141
|
+
3. **尝试多种方案**:记录所有尝试过的解决方案
|
|
142
|
+
4. **定期复盘**:每天至少一次复盘分析
|
|
143
|
+
5. **渐进改进**:每次只优化一个方面
|
|
144
|
+
|
|
145
|
+
## 故障排除
|
|
146
|
+
|
|
147
|
+
### 数据丢失
|
|
148
|
+
- 检查 `~/.feihong-code/self-evolve/` 目录权限
|
|
149
|
+
- 确保有写入权限
|
|
150
|
+
|
|
151
|
+
### 技能未生效
|
|
152
|
+
- 检查技能索引是否正确更新
|
|
153
|
+
- 确认 SKILL.md 文件格式正确
|
|
154
|
+
- 重启系统重新加载技能
|
|
155
|
+
|
|
156
|
+
### 复盘失败
|
|
157
|
+
- 检查配置文件是否存在
|
|
158
|
+
- 确认磁盘空间充足
|
|
159
|
+
- 查看日志文件获取详细错误
|
|
160
|
+
|
|
161
|
+
## 版本兼容性
|
|
162
|
+
|
|
163
|
+
- Node.js >= 18.0.0
|
|
164
|
+
- TypeScript >= 5.0
|
|
165
|
+
- 飞虹 Code >= 0.5.0
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Self-Evolve 自我迭代系统
|
|
2
|
+
|
|
3
|
+
## 概述
|
|
4
|
+
|
|
5
|
+
Self-Evolve 是飞虹 Code 的自我学习与迭代升级系统,能够:
|
|
6
|
+
- 自动记录任务执行中的失败
|
|
7
|
+
- 分析错误模式并提取经验教训
|
|
8
|
+
- 当遇到无法解决的问题时,自动生成新技能
|
|
9
|
+
- 定期复盘优化系统行为
|
|
10
|
+
|
|
11
|
+
## 快速开始
|
|
12
|
+
|
|
13
|
+
### 1. 初始化系统
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# 运行初始化脚本
|
|
17
|
+
bash scripts/self-evolve-setup.sh
|
|
18
|
+
|
|
19
|
+
# 或使用 CLI
|
|
20
|
+
fhcode self-evolve init
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 2. 查看状态
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
fhcode self-evolve status
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
输出示例:
|
|
30
|
+
```
|
|
31
|
+
📊 自我迭代系统状态
|
|
32
|
+
========================================
|
|
33
|
+
总失败记录: 15
|
|
34
|
+
已解决: 12
|
|
35
|
+
待处理: 3
|
|
36
|
+
解决率: 80.0%
|
|
37
|
+
技能库: 5 个技能
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 3. 列出失败记录
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# 列出所有失败
|
|
44
|
+
fhcode self-evolve failures list
|
|
45
|
+
|
|
46
|
+
# 按类型过滤
|
|
47
|
+
fhcode self-evolve failures list --type compile-error
|
|
48
|
+
|
|
49
|
+
# 最近7天
|
|
50
|
+
fhcode self-evolve failures list --days 7
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 4. 查看技能库
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
fhcode self-evolve skills list
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 5. 每日复盘
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
fhcode self-evolve review --daily
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 6. 分析错误模式
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# 分析最近7天
|
|
69
|
+
fhcode self-evolve analyze
|
|
70
|
+
|
|
71
|
+
# 分析最近30天
|
|
72
|
+
fhcode self-evolve analyze --days 30
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 7. 创建新技能
|
|
76
|
+
|
|
77
|
+
当遇到新的错误模式时:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
fhcode self-evolve create-skill \
|
|
81
|
+
--name path-traversal-handler \
|
|
82
|
+
--description "处理路径穿越错误" \
|
|
83
|
+
--pattern path-error \
|
|
84
|
+
--solution "检查路径安全性,确保在workspace范围内" \
|
|
85
|
+
--triggers "path traversal, outside workspace, EACCES"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## 数据存储
|
|
89
|
+
|
|
90
|
+
所有数据存储在 `~/.feihong-code/self-evolve/` 目录:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
~/.feihong-code/self-evolve/
|
|
94
|
+
├── config.json # 配置文件
|
|
95
|
+
├── failures.json # 失败记录
|
|
96
|
+
├── skills-index.json # 技能索引
|
|
97
|
+
├── history.json # 操作历史
|
|
98
|
+
├── version.txt # 版本信息
|
|
99
|
+
└── report-YYYY-MM-DD.json # 每日报告
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
技能文件存储在 `~/.feihong-code/skills/<skill-name>/SKILL.md`
|
|
103
|
+
|
|
104
|
+
## 工作原理
|
|
105
|
+
|
|
106
|
+
### 失败记录流程
|
|
107
|
+
|
|
108
|
+
1. 任务执行失败 → 自动记录到 failures.json
|
|
109
|
+
2. 搜索已知解决方案 → 找到则应用
|
|
110
|
+
3. 未找到 → 标记为待处理
|
|
111
|
+
4. 用户手动解决或系统自动创建技能
|
|
112
|
+
5. 定期复盘优化
|
|
113
|
+
|
|
114
|
+
### 技能创建流程
|
|
115
|
+
|
|
116
|
+
1. 检测新的错误模式
|
|
117
|
+
2. 分析根因
|
|
118
|
+
3. 生成解决方案
|
|
119
|
+
4. 创建 SKILL.md 文件
|
|
120
|
+
5. 更新技能索引
|
|
121
|
+
6. 验证效果
|
|
122
|
+
|
|
123
|
+
## 扩展开发
|
|
124
|
+
|
|
125
|
+
### 添加自定义 Hook
|
|
126
|
+
|
|
127
|
+
在 `src/self-evolve/hook.ts` 中扩展:
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
export class SelfEvolveHook {
|
|
131
|
+
onToolFailure(context) { /* 自定义逻辑 */ }
|
|
132
|
+
onTaskComplete(context) { /* 自定义逻辑 */ }
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 集成到主流程
|
|
137
|
+
|
|
138
|
+
在工具调用链中添加钩子:
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
// 在工具调用失败时
|
|
142
|
+
selfEvolveHook.onToolFailure({
|
|
143
|
+
tool: 'shell',
|
|
144
|
+
input: { command: 'npm test' },
|
|
145
|
+
error: new Error('test failed')
|
|
146
|
+
});
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## 纪律
|
|
150
|
+
|
|
151
|
+
- 诚实记录失败,不伪造成功
|
|
152
|
+
- 每日至少一次复盘
|
|
153
|
+
- 新技能必须经过验证
|
|
154
|
+
- 所有变更可追溯
|
|
155
|
+
|
|
156
|
+
## 与现有系统集成
|
|
157
|
+
|
|
158
|
+
Self-Evolve 可以与以下技能配合:
|
|
159
|
+
|
|
160
|
+
- `/self-heal`:自动创建修复技能
|
|
161
|
+
- `/plan`:计划时参考历史失败
|
|
162
|
+
- `/goal`:目标设定参考迭代进度
|
|
163
|
+
|
|
164
|
+
## 版本历史
|
|
165
|
+
|
|
166
|
+
- v1.0.0 (2026-08-16): 初始版本,基础功能完成
|