feihong-code 7.2.0 → 7.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/workflows/ci.yml +54 -1
- package/.github/workflows/release.yml +30 -0
- package/.github/workflows/swebench-real.yml +84 -0
- package/CHANGELOG.md +41 -39
- package/CONTRIBUTING.md +9 -2
- package/README.md +56 -6
- package/README.self-evolve.md +279 -274
- package/dist/agent/change-manager.js +1 -1
- package/dist/agent/code-rag.js +1 -1
- package/dist/agent/code-review.js +1 -1
- package/dist/agent/code-writer.js +1 -1
- package/dist/agent/completion-engine.js +76 -45
- package/dist/agent/completion-engine.js.map +1 -1
- package/dist/agent/completion-postprocess.js +109 -0
- package/dist/agent/completion-postprocess.js.map +1 -0
- package/dist/agent/context-budget.js +121 -0
- package/dist/agent/context-budget.js.map +1 -0
- package/dist/agent/context-compactor.js +58 -0
- package/dist/agent/context-compactor.js.map +1 -1
- package/dist/agent/experience.js +1 -1
- package/dist/agent/layered-memory.js +1 -1
- package/dist/agent/lint.js +121 -0
- package/dist/agent/lint.js.map +1 -0
- package/dist/agent/orchestrator.js +106 -31
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/parallel-orchestrator.js +1 -1
- package/dist/agent/planner.js +8 -3
- package/dist/agent/planner.js.map +1 -1
- package/dist/agent/prompts.js +55 -55
- package/dist/agent/quality-gate.js +1 -1
- package/dist/agent/repo-context.js +1 -1
- package/dist/agent/repo-reader.js +1 -1
- package/dist/agent/repo-underwriter.js +1 -1
- package/dist/agent/self-correction.js +25 -25
- package/dist/agent/self-heal.js +32 -27
- package/dist/agent/self-heal.js.map +1 -1
- package/dist/agent/self-improver.js +1 -1
- package/dist/agent/subagent-summary.js +1 -1
- package/dist/agent/subagent.js +1 -1
- package/dist/agent/swe-agent.js +1 -1
- package/dist/agent/swe-verifier.js +1 -1
- package/dist/agent/symbol-index.js +1 -1
- package/dist/agent/team.js +1 -1
- package/dist/agent/type-checker.js +1 -1
- package/dist/cli/commands.js +16 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/index.js +66 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/multi-pane-tui.js +217 -0
- package/dist/cli/multi-pane-tui.js.map +1 -0
- package/dist/cli/repl.js +1 -1
- package/dist/cli/run.js +168 -42
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/self-evolve-cli.js +168 -0
- package/dist/cli/tui-run.js +79 -0
- package/dist/cli/tui-run.js.map +1 -0
- package/dist/cli/tui.js +1 -1
- package/dist/cli/tui.js.map +1 -1
- package/dist/cli/version.js +3 -3
- package/dist/cli/version.js.map +1 -1
- package/dist/enterprise/audit.js +1 -1
- package/dist/enterprise/index.js +1 -1
- package/dist/enterprise/policy.js +1 -1
- package/dist/enterprise/quota.js +1 -1
- package/dist/enterprise/tenant.js +1 -1
- package/dist/harness/executor.js +1 -1
- package/dist/harness/index.js +1 -1
- package/dist/harness/loader.js +1 -1
- package/dist/harness/types.js +1 -1
- package/dist/harness/verifier.js +52 -12
- package/dist/harness/verifier.js.map +1 -1
- package/dist/integrations/feishu-bridge.js +348 -0
- package/dist/integrations/feishu-bridge.js.map +1 -0
- package/dist/integrations/github-mcp.js +137 -0
- package/dist/integrations/github-mcp.js.map +1 -0
- package/dist/integrations/wechat-bridge.js +499 -0
- package/dist/integrations/wechat-bridge.js.map +1 -0
- package/dist/integrations/yuanbao-bridge.js +326 -0
- package/dist/integrations/yuanbao-bridge.js.map +1 -0
- package/dist/lsp/lsp-client.js +183 -0
- package/dist/lsp/lsp-client.js.map +1 -0
- package/dist/lsp/lsp-service.js +159 -0
- package/dist/lsp/lsp-service.js.map +1 -0
- package/dist/models/model-router.js +1 -1
- package/dist/models/model.dto.js +1 -1
- package/dist/models/providers/ollama.provider.js +1 -1
- package/dist/models/providers/openai-compatible.provider.js +1 -1
- package/dist/plugins/manager.js +50 -2
- package/dist/plugins/manager.js.map +1 -1
- package/dist/plugins/plugin-loader.js +1 -1
- package/dist/runtime/event-log.js +1 -1
- package/dist/runtime/git.js +1 -1
- package/dist/runtime/hooks.js +71 -4
- package/dist/runtime/hooks.js.map +1 -1
- package/dist/runtime/session-persist.js +1 -1
- package/dist/runtime/worktree.js +1 -1
- package/dist/self-evolve/manager.js +517 -401
- package/dist/self-evolve/self-heal-scheduler.js +160 -0
- package/dist/self-evolve/self-heal-scheduler.js.map +1 -0
- package/dist/shared/concurrency.js +1 -1
- package/dist/shared/config.js +4 -2
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/errors.js +1 -1
- package/dist/shared/i18n.js +109 -101
- package/dist/shared/i18n.js.map +1 -1
- package/dist/shared/secure-store.js +12 -5
- package/dist/shared/secure-store.js.map +1 -1
- package/dist/shared/types.js +1 -1
- package/dist/skills/goal.js +1 -1
- package/dist/skills/grill.js +1 -1
- package/dist/skills/plan.js +1 -1
- package/dist/skills/pua-hooks.js +273 -0
- package/dist/skills/pua-hooks.js.map +1 -0
- package/dist/skills/self-heal.js +9 -3
- package/dist/skills/self-heal.js.map +1 -1
- package/dist/skills/skill-loader.js +1 -1
- package/dist/skills/skill-market.js +84 -8
- package/dist/skills/skill-market.js.map +1 -1
- package/dist/tools/analysis/code-analyzer.js +1 -1
- package/dist/tools/file/edit.tool.js +18 -3
- package/dist/tools/file/edit.tool.js.map +1 -1
- package/dist/tools/file/list.tool.js +1 -1
- package/dist/tools/file/read.tool.js +1 -1
- package/dist/tools/file/write.tool.js +1 -1
- package/dist/tools/generator/code-generator.js +41 -41
- package/dist/tools/generator/test-generator.js +10 -10
- package/dist/tools/index.js +1 -1
- package/dist/tools/mcp/index.js +1 -1
- package/dist/tools/mcp/mcp-client.js +1 -1
- package/dist/tools/safe-path.js +1 -1
- package/dist/tools/search/grep.tool.js +1 -1
- package/dist/tools/shell/exec.js +24 -2
- package/dist/tools/shell/exec.js.map +1 -1
- package/dist/tools/shell/run-shell.tool.js +1 -1
- package/dist/tools/skills/load-skill.tool.js +1 -1
- package/dist/tools/tool.registry.js +10 -1
- package/dist/tools/tool.registry.js.map +1 -1
- package/dist/tools/verify/build-check.tool.js +1 -1
- package/dist/tools/verify/test-run.tool.js +1 -1
- package/dist/tools/web/web.tool.js +1 -1
- package/dist/voice/voice-programming.js +32 -6
- package/dist/voice/voice-programming.js.map +1 -1
- package/dist/web/auth.js +34 -2
- package/dist/web/auth.js.map +1 -1
- package/dist/web/channels.js +1 -1
- package/dist/web/extra-apis.js +440 -0
- package/dist/web/extra-apis.js.map +1 -0
- package/dist/web/public/css/style.css +99 -72
- package/dist/web/public/index.html +44 -1
- package/dist/web/public/js/api.js +64 -2
- package/dist/web/public/js/app.js +151 -128
- package/dist/web/public/js/mock-api.js +25 -0
- package/dist/web/public/js/monaco-editor.js +161 -1
- package/dist/web/public/js/ui.js +292 -56
- package/dist/web/public/service-worker.js +5 -29
- package/dist/web/server.js +178 -61
- package/dist/web/server.js.map +1 -1
- package/dist/web/task-queue.js +6 -21
- package/dist/web/task-queue.js.map +1 -1
- package/docs/App/344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +1 -1
- package/docs/App/346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +1 -1
- package/docs/BENCHMARK_REPORT_en.md +62 -5
- package/docs/BENCHMARK_REPORT_zh.md +66 -9
- package/docs/DPA.md +65 -0
- package/docs/DPA/346/225/260/346/215/256/345/244/204/347/220/206/345/215/217/350/256/256/346/250/241/346/235/277_v1.0.md +69 -0
- package/docs/Deployment_Guide_EN.md +1 -1
- package/docs/SECURITY_WHITEPAPER.md +74 -0
- package/docs/SELF-EVOLVE-GUIDE.md +1 -1
- package/docs/SWE_BENCH_REPORT.md +73 -0
- package/docs/TECHNICAL_SPEC_en.md +1 -1
- package/docs/TECHNICAL_SPEC_zh.md +1 -1
- package/docs/Technical_Manual_EN.md +1 -1
- package/docs/UPDATE_NOTES_en.md +1 -1
- package/docs/UPDATE_NOTES_zh.md +1 -1
- package/docs/UPGRADE_7.2.0.md +309 -0
- package/docs/UPGRADE_GUIDE_7_5.md +86 -0
- package/docs/UPGRADE_GUIDE_7_6.md +153 -0
- package/docs/User_Manual_EN.md +1 -1
- package/docs/VOLTAGENT_SKILLS_CATALOG.md +95 -0
- package/docs/error-codes.md +1 -1
- package/docs/geo-feihong-code.html +391 -0
- package/docs//344/272/247/345/223/201/345/274/200/345/217/221/346/226/207/346/241/243.md +5 -3
- package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +140 -231
- package/docs//345/205/250/351/235/242/345/244/215/347/233/230_50/350/275/256/346/267/261/345/272/246/345/256/241/350/256/241_v7.2.0.md +208 -0
- package/docs//345/205/250/351/235/242/345/244/215/347/233/230_6/351/241/271/351/207/215/347/202/271/346/240/270/346/237/245_v7.2.0.md +152 -0
- package/docs//345/205/250/351/235/242/345/244/215/347/233/230_/350/277/220/350/241/214/346/227/266/345/256/236/346/265/213/347/211/210_v7.2.0.md +271 -0
- package/docs//345/220/210/350/247/204/350/256/244/350/257/201/345/207/206/345/244/207/346/270/205/345/215/225_v7.2.0.md +59 -0
- package/docs//345/256/211/345/205/250/347/231/275/347/232/256/344/271/246_v7.2.0.md +84 -0
- package/docs//346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +240 -149
- package/docs//351/203/250/347/275/262/350/257/264/346/230/216/344/271/246.md +2 -2
- package/electron/main.js +4 -202
- package/package.json +182 -172
- package/templates/skills/api-design/SKILL.md +27 -0
- package/templates/skills/code-review/SKILL.md +35 -0
- package/templates/skills/dependency-upgrade/SKILL.md +29 -0
- package/templates/skills/doc-gen/SKILL.md +29 -0
- package/templates/skills/git-flow/SKILL.md +26 -0
- package/templates/skills/onboarding/SKILL.md +27 -0
- package/templates/skills/performance/SKILL.md +29 -0
- package/templates/skills/refactor/SKILL.md +28 -0
- package/templates/skills/security-audit/SKILL.md +28 -0
- package/templates/skills/test-gen/SKILL.md +30 -0
- package/docs/DEPLOYMENT.md +0 -382
- package/docs/MODEL_FINETUNING.md +0 -405
|
@@ -1,216 +1,307 @@
|
|
|
1
|
-
# 飞虹 Code(fhcode
|
|
1
|
+
# 飞虹 Code(fhcode)技术设计说明书
|
|
2
2
|
|
|
3
|
-
**版本**:
|
|
4
|
-
**日期**:2026-08-
|
|
5
|
-
**产品**:飞虹 Code(feihong-code)— 终端 AI
|
|
3
|
+
**版本**:v7.6.0
|
|
4
|
+
**日期**:2026-08-28
|
|
5
|
+
**产品**:飞虹 Code(feihong-code)— 终端 AI 编程智能体(对标 Muse Code,自研内核)
|
|
6
6
|
**署名**:晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|
|
7
|
+
**配套文档**:`docs/使用说明书.md`(使用)、`docs/UPGRADE_GUIDE_7_6.md`(升级)、`README.md`(总览)
|
|
7
8
|
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
## 一、产品概述
|
|
11
12
|
|
|
12
|
-
飞虹 Code(fhcode
|
|
13
|
+
飞虹 Code(fhcode)是一款运行在 **CLI / Web / Electron 桌面 / Android APK / VS Code** 五端的 AI 编程智能体,以「自然语言 → 代码闭环」为核心,覆盖对话编程、代码补全、全自动软件工程(SWE)、团队协作与自我迭代。零第三方运行时依赖(仅 express + zod),支持离线私有化部署与企业级安全治理。
|
|
13
14
|
|
|
14
|
-
**核心能力矩阵(
|
|
15
|
+
**核心能力矩阵(v7.6.0)**:
|
|
15
16
|
|
|
16
17
|
| 领域 | 能力 |
|
|
17
18
|
|------|------|
|
|
18
|
-
| 编排 | ReAct
|
|
19
|
-
| 模型 | 多模型路由(成本/能力/延迟策略 + fallback + 统计择优)、OpenAI 兼容 / Ollama / Mock |
|
|
20
|
-
| 工具 | 文件读写编辑、搜索、受管 shell、构建检查、测试运行、web
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
19
|
+
| 编排 | ReAct 循环、规划器(planner)、并行 orchestrator、检查点续跑、成本熔断、自愈循环、多 agent 团队协作 |
|
|
20
|
+
| 模型 | 多模型路由(成本/能力/延迟策略 + fallback + 统计择优)、OpenAI 兼容 / Ollama / Mock、成本记账 |
|
|
21
|
+
| 工具 | 文件读写编辑、搜索、受管 shell、构建检查、测试运行、web 检索、技能(SKILL.md)加载、MCP 服务 |
|
|
22
|
+
| 代码智能 | 补全引擎(多候选 Top3 + temperature 分层)、LSP 语义诊断、代码 RAG、符号索引、类型检查、质量门禁 |
|
|
23
|
+
| 软件工程 | SWE Agent(读取→规划→实现→验证→自愈重试)、SWE-bench harness(差分语义校验)、git 集成(diff/rollback/worktree) |
|
|
24
|
+
| 自我迭代 | 统一经验库(self-evolve + self-improve 收敛)、反思回流、自愈闭环、eval 跑分 |
|
|
25
|
+
| 语音 | voice-programming:语音/口头指令 → 编辑器/终端命令(自然语言 → 结构化动作) |
|
|
26
|
+
| 安全 | 沙箱四档、网络域名规则、hooks 确定性控制、RBAC、审计哈希链、配额熔断、脱敏、入站签名校验、SBOM |
|
|
27
|
+
| 生态 | SKILL.md 技能标准、技能市场(本地种子源)、插件分发、MCP、Agent teams |
|
|
28
|
+
| 交付 | CLI/TUI、Web 控制台(任务面板/监控)、Electron 桌面、Android APK、VS Code 扩展、跨进程任务队列 |
|
|
25
29
|
|
|
26
30
|
---
|
|
27
31
|
|
|
28
|
-
##
|
|
32
|
+
## 二、总体架构
|
|
29
33
|
|
|
30
34
|
```
|
|
31
|
-
|
|
32
|
-
│
|
|
33
|
-
│
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
│
|
|
39
|
-
│
|
|
40
|
-
│
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
│
|
|
45
|
-
│
|
|
46
|
-
|
|
47
|
-
│
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
│
|
|
52
|
-
|
|
53
|
-
│
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
│
|
|
58
|
-
|
|
59
|
-
│
|
|
60
|
-
|
|
35
|
+
┌──────────────────────────────────────────────────────────────────┐
|
|
36
|
+
│ 接入层 delivery │
|
|
37
|
+
│ CLI(index/run/repl/tui) · Web(server/task-queue) · Electron │
|
|
38
|
+
│ Android(Capacitor H5) · VS Code 扩展 · 语音(voice-programming) │
|
|
39
|
+
└───────────────────────────────┬──────────────────────────────────┘
|
|
40
|
+
│
|
|
41
|
+
┌───────────────────────────────▼──────────────────────────────────┐
|
|
42
|
+
│ 编排层 agent/ │
|
|
43
|
+
│ Orchestrator(ReAct) · parallel-orchestrator · planner │
|
|
44
|
+
│ repo-reader · swe-agent · swe-planner · swe-verifier │
|
|
45
|
+
│ subagent(嵌套) · custom-agent · solo-agent · event-driven │
|
|
46
|
+
│ team / multi-agent / team-collaboration(协作可视化) │
|
|
47
|
+
│ self-heal · self-correction · quality-gate · code-writer │
|
|
48
|
+
│ completion-engine · code-rag · symbol-index · repo-context │
|
|
49
|
+
│ experience(统一经验库) · self-improver · layered-memory │
|
|
50
|
+
└───────────────────────────────┬──────────────────────────────────┘
|
|
51
|
+
│
|
|
52
|
+
┌───────────────────────────────▼──────────────────────────────────┐
|
|
53
|
+
│ 工具层 tools/ │
|
|
54
|
+
│ 文件读写编辑 · 受管 shell(sandbox) · 构建检查 · 测试运行 │
|
|
55
|
+
│ web 检索 · 技能加载 · MCP · 代码审查 · 类型检查 │
|
|
56
|
+
└───────────────────────────────┬──────────────────────────────────┘
|
|
57
|
+
│
|
|
58
|
+
┌───────────────────────────────▼──────────────────────────────────┐
|
|
59
|
+
│ 模型层 models/ │
|
|
60
|
+
│ model-router(成本/能力/延迟策略) · provider 适配 · cost 记账 │
|
|
61
|
+
│ OpenAI 兼容 / Ollama / Mock │
|
|
62
|
+
└───────────────────────────────┬──────────────────────────────────┘
|
|
63
|
+
│
|
|
64
|
+
┌───────────────────────────────▼──────────────────────────────────┐
|
|
65
|
+
│ 安全/治理/支撑层 shared · runtime · enterprise · harness │
|
|
66
|
+
│ 沙箱四档 · 网络规则 · hooks · RBAC · 审计链 · 配额熔断 · 脱敏 │
|
|
67
|
+
│ 会话持久化 · 事件日志 · 配置中心 · 错误码 · SWE harness │
|
|
68
|
+
└──────────────────────────────────────────────────────────────────┘
|
|
61
69
|
```
|
|
62
70
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
| `models/` | 模型路由、供应商(OpenAI 兼容/Ollama/Mock)、成本估算、DTO 校验 |
|
|
70
|
-
| `tools/` | 工具系统:文件/搜索/shell/验证/web/MCP/技能加载/沙箱 |
|
|
71
|
-
| `enterprise/` | 多租户、RBAC 策略、审计链、配额、守卫 |
|
|
72
|
-
| `runtime/` | 事件日志、会话持久化、git 辅助、worktree、hooks |
|
|
73
|
-
| `shared/` | 配置、i18n、日志(脱敏)、错误层级、类型 |
|
|
74
|
-
| `skills/` | 技能标准(SKILL.md 加载)、技能市场(agentskills.io)、/plan /grill /goal |
|
|
75
|
-
| `plugins/` | 插件分发(plugin.json 打包 skills+hooks+MCP) |
|
|
76
|
-
| `web/` | Web 控制台、任务队列、消息渠道、入站签名校验 |
|
|
71
|
+
**分层职责**:
|
|
72
|
+
- **接入层**:把 CLI 参数、HTTP 请求、IDE 事件、语音输入统一归一化为「任务目标 + 上下文」,经 `executeTask / runSwe / runTeam` 等入口进入编排层。
|
|
73
|
+
- **编排层**:核心大脑。`orchestrator` 跑 ReAct 循环(思考→工具→观察),`swe-agent` 跑「读取仓库→规划→实现→验证→自愈重试」的软件工程闭环,`team` 支持多 agent 消息总线协作。
|
|
74
|
+
- **工具层**:把文件/shell/网络/搜索能力封装为统一 Tool 接口,全部经过 `sandbox`(权限/网络/白名单)拦截。
|
|
75
|
+
- **模型层**:多供应商路由,按成本/能力/延迟策略选模型,失败自动 fallback,全程成本记账。
|
|
76
|
+
- **支撑层**:安全治理(RBAC/审计/配额)、运行时(会话/事件日志/持久化)、评测(SWE harness)。
|
|
77
77
|
|
|
78
78
|
---
|
|
79
79
|
|
|
80
|
-
##
|
|
80
|
+
## 三、模块设计
|
|
81
81
|
|
|
82
|
-
### 3.1
|
|
82
|
+
### 3.1 编排核心(src/agent/)
|
|
83
83
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
84
|
+
| 模块 | 职责 |
|
|
85
|
+
|------|------|
|
|
86
|
+
| `orchestrator.ts` | ReAct 主循环:规划、工具调用、观察整合、上下文压缩、检查点续跑、成本熔断 |
|
|
87
|
+
| `planner.ts` | 任务规划器:把目标拆解为可执行步骤 |
|
|
88
|
+
| `parallel-orchestrator.ts` | 并行任务编排(含默认 Mock 实现) |
|
|
89
|
+
| `repo-reader.ts` | 仓库预读:结构、入口、依赖、配置提取 |
|
|
90
|
+
| `swe-agent.ts` | 全自动软件工程:读取仓库→规划→实现+验证+自愈重试→报告 |
|
|
91
|
+
| `swe-planner.ts` | SWE 子任务规划与拆解 |
|
|
92
|
+
| `swe-verifier.ts` | SWE 结果验证(测试/构建/静态检查) |
|
|
93
|
+
| `subagent.ts` / `custom-agent.ts` / `solo-agent.ts` / `event-driven-agent.ts` | 不同执行模式的 agent |
|
|
94
|
+
| `team.ts` / `multi-agent.ts` / `team-collaboration.ts` | 多 agent 协作:消息总线、任务分配、协作可视化 |
|
|
95
|
+
| `self-heal.ts` / `self-correction.ts` | 失败自愈:错误识别→修复→重试;自我纠错 |
|
|
96
|
+
| `quality-gate.ts` | 产出质量门禁(构建/测试/类型检查通过才放行) |
|
|
97
|
+
| `code-writer.ts` / `change-manager.ts` | 代码生成与变更管理(diff/回滚) |
|
|
98
|
+
| `completion-engine.ts` | 补全引擎:多候选 Top3、temperature 分层、跨文件上下文 |
|
|
99
|
+
| `code-rag.ts` / `symbol-index.ts` / `repo-context.ts` | 代码检索:RAG、符号索引、仓库上下文 |
|
|
100
|
+
| `experience.ts` | **统一经验库**:稳定 id + upsert 合并 + 加权检索,供 orchestrator 注入 |
|
|
101
|
+
| `self-improver.ts` | 新一代自我改进:任务反思→经验回流 |
|
|
102
|
+
| `layered-memory.ts` / `context-compactor.ts` / `context-budget.ts` | 记忆分层与上下文管理 |
|
|
103
|
+
| `type-checker.ts` / `lint.ts` / `code-review.ts` | 静态质量校验 |
|
|
104
|
+
|
|
105
|
+
### 3.2 SWE 评测(src/harness/)
|
|
106
|
+
|
|
107
|
+
SWE-bench 语义评测管道,四段式:
|
|
90
108
|
|
|
91
|
-
|
|
109
|
+
```
|
|
110
|
+
loader.ts → 加载任务(problem_statement / FAIL_TO_PASS / PASS_TO_PASS)
|
|
111
|
+
executor.ts → 在沙箱中 checkout 仓库并执行测试命令
|
|
112
|
+
verifier.ts → 三段式差分校验:
|
|
113
|
+
① beforeCommand:修复前确认 FAIL_TO_PASS 原本失败(防假阳性)
|
|
114
|
+
② 修复后 FAIL_TO_PASS 全部通过(问题确实被修复)
|
|
115
|
+
③ PASS_TO_PASS 回归通过(未修坏既有功能)
|
|
116
|
+
reporter.ts → 输出可复现的跑分报告(markdown/json)
|
|
117
|
+
```
|
|
92
118
|
|
|
93
|
-
|
|
119
|
+
- `types.ts` 定义任务与结果类型;`harness.ts` 编排管道;`index.ts` 导出入口。
|
|
120
|
+
- `verifier.ts` 对测试 id 做 shell 安全转义(`quoteTestId`),受管命令白名单 `sanitizeManagedCommand` 只放行 `npm/pnpm/yarn/bun`,杜绝注入。
|
|
121
|
+
- 跑分现状:自建任务集真实模型跑分 5/5 全过;mock 管道 1/1 通过(`bench/run-2026-08-28-mock.md`,诚实标注口径)。官方 SWE-bench(Python/pytest)受限于 HF 网络不可达与 Docker 环境,见 `docs/SWE_BENCH_REPORT.md`。
|
|
94
122
|
|
|
95
|
-
|
|
123
|
+
### 3.3 语音编程(src/voice/voice-programming.ts)
|
|
96
124
|
|
|
97
|
-
|
|
125
|
+
把自然语言口头指令转译为编辑器/终端动作:
|
|
98
126
|
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
- 统计:`updateStat()` 自动落盘(`statsHomeDir`,P5 闭环修复),`model-stats` 命令可查
|
|
103
|
-
- 子任务分工(P1-1):`tags: ['code-gen','cheap']` 让低成本模型承担子任务
|
|
127
|
+
- 命令类型:`new_file`、`open_file`、`edit`、`copy`、`paste`、`cut`、`close_file`、`replace`、`uncomment`、`stop_code`、`toggle_terminal`、`toggle_sidebar`、`toggle_fullscreen`、`explain_code`、`switch_file` 等。
|
|
128
|
+
- 规则匹配:正则 + 置信度排序;等置信度时**数组顺序即优先级**(语义更具体的规则前置,避免「打开终端」被 `open_file` 抢占)。
|
|
129
|
+
- 随 v7.6.0 补齐死类型规则(copy/paste/cut/close_file/replace/uncomment)、修复 `new_file`「创建一个叫 X 的文件」识别、`explain_code` 放宽「解释」,并新增 7 项单元测试。
|
|
104
130
|
|
|
105
|
-
### 3.
|
|
131
|
+
### 3.4 自我迭代(src/self-evolve/ + src/agent/experience.ts)
|
|
106
132
|
|
|
107
|
-
|
|
108
|
-
- 执行链顺序(纵深防御):**沙箱 → PreToolUse hook → RBAC 守卫 → 工具 → PostToolUse/PostEdit hook**
|
|
109
|
-
- 沙箱四档(P0-2/P5-4):`read-only` / `workspace-write` / `danger-full-access` / `container`(Docker 挂载工作区执行 shell)
|
|
110
|
-
- 网络域名规则:`FH_NETWORK_ALLOW/DENY` 对 run_shell 命令 URL 与 web 工具 URL 均生效
|
|
111
|
-
- hooks(P2-1):`FH_HOOKS` JSON 数组,PreToolUse 非零退出拦截、PostEdit 编辑后触发,占位符 `{cwd}{tool}{path}{runId}{ok}`
|
|
133
|
+
**v7.6.0 关键设计:双系统收敛为单一经验库。**
|
|
112
134
|
|
|
113
|
-
|
|
135
|
+
| 系统 | 职责 | 数据 |
|
|
136
|
+
|------|------|------|
|
|
137
|
+
| self-evolve(旧式,运维视图) | 失败记录、技能沉淀、每日复盘报告 | `~/.feihong-code/self-evolve/{failures,skills-index,history}.json` |
|
|
138
|
+
| self-improve(新式,学习闭环) | 任务反思 → 经验回流 → orchestrator 检索注入 | `~/.feihong-code/experiences/experiences.jsonl` |
|
|
114
139
|
|
|
115
|
-
|
|
140
|
+
**收敛机制**(`src/self-evolve/manager.js`):
|
|
141
|
+
- `recordFailure` → 写入 `error-pattern` 经验(含错误类型/任务描述/规避建议)
|
|
142
|
+
- `markResolved` → 写入 `success-pattern` 经验(含解决方案)
|
|
143
|
+
- `createSkill` → 写入 `success-pattern` 经验(含技能名/触发词/方案)
|
|
144
|
+
- 经验 id 由 `shortHash(type:key)`(djb2 变体,base36)生成,与 `experience.ts` 算法一致,保证跨系统 id 对齐;upsert 语义(同 id 合并 sessionCount、加权成功率、标签合并、刷新 lastUsedAt)防膨胀。
|
|
116
145
|
|
|
117
|
-
|
|
146
|
+
**检索**(`experience.ts`):`retrieveRelevantExperiences` 加权打分(标签重叠×3 + 成功率×2 + 子串 +2 + token×0.5 + 新鲜度衰减),`generateExperiencePrompt` 分组注入(成功模式优先/失败模式警示)。
|
|
118
147
|
|
|
119
|
-
### 3.5
|
|
148
|
+
### 3.5 模型路由(src/models/)
|
|
120
149
|
|
|
121
|
-
- `
|
|
122
|
-
- `
|
|
123
|
-
-
|
|
150
|
+
- `model-router.ts`:按策略(cost 成本 / capability 能力 / latency 延迟)选模型;失败 fallback;按标签过滤(code-gen/cheap/local/long-context)。
|
|
151
|
+
- `cost.ts`:每 1k token 成本记账,支持单任务预算熔断(`FH_BUDGET_USD`)。
|
|
152
|
+
- provider 支持:OpenAI 兼容(DeepSeek/通义 Qwen 等)、Ollama 本地、Mock(离线演示)。
|
|
124
153
|
|
|
125
|
-
### 3.6
|
|
154
|
+
### 3.6 工具层与沙箱(src/tools/)
|
|
126
155
|
|
|
127
|
-
|
|
128
|
-
|------|------|
|
|
129
|
-
| tenant | 租户隔离目录(`tenants/<id>/{sessions,audit,goals}`) |
|
|
130
|
-
| policy | RBAC:角色-工具矩阵(viewer/developer/operator/admin)+ denyShell 黑名单 + denyPaths 敏感路径,deny 优先 |
|
|
131
|
-
| audit | 哈希链(SHA-256,seq/prevHash 衔接),跨进程文件锁 + 指数退避,写入前脱敏,`audit verify` 校验 |
|
|
132
|
-
| quota | 租户日成本预算(`FH_TENANT_BUDGET_USD`),启动前 fail-fast 实时复核(M14 修复) |
|
|
133
|
-
| guard | 「策略→审批→审计」工具前置钩子,审计失败=拒绝 |
|
|
156
|
+
统一 `Tool` 接口(`tool.interface.ts`)+ 注册表(`tool.registry.ts`):
|
|
134
157
|
|
|
135
|
-
|
|
158
|
+
- 文件:读写/编辑(`safe-path.ts` 路径安全校验)
|
|
159
|
+
- Shell:受管执行,`sandbox.ts` 四档模式拦截
|
|
160
|
+
- 网络:域名规则(`FH_NETWORK_DENY/ALLOW`)
|
|
161
|
+
- 搜索/检索:web 检索、代码 RAG
|
|
136
162
|
|
|
137
|
-
|
|
138
|
-
- 发现位置:仓库 `.agents/skills` / `.claude/skills` 逐级回溯 + 打包 `skills/` + 用户级 `~/.feihong-code/skills` + 插件技能目录
|
|
139
|
-
- **技能市场(P6)**:agentskills.io discovery 规范(`/.well-known/agent-skills/index.json`),`skill-market search/install/list`;RFC 3986 URL 解析、sha256 digest 校验、tar.gz 归档解包(零依赖手写,路径穿越防护)
|
|
140
|
-
- **插件(P3-3)**:`plugin.json` 打包 skills+hooks+MCP,用户级/项目级双级发现,`plugin install`(本地目录/git clone)
|
|
163
|
+
**沙箱四档**(Codex 对齐):
|
|
141
164
|
|
|
142
|
-
|
|
165
|
+
| 模式 | 写限制 | Shell | 网络 |
|
|
166
|
+
|------|--------|-------|------|
|
|
167
|
+
| `read-only` | 禁止 | 只读勘察 | 按规则 |
|
|
168
|
+
| `workspace-write`(默认) | 仅工作区 | 白名单 + 审批 | 按规则 |
|
|
169
|
+
| `danger-full-access` | 放开 | 白名单(危险命令黑名单仍生效) | 按规则 |
|
|
170
|
+
| `container` | Docker 隔离 | `--network none` + 内存/pids 上限 + `--cap-drop ALL` + `no-new-privileges` | 断网 |
|
|
143
171
|
|
|
144
|
-
|
|
145
|
-
|------|------|
|
|
146
|
-
| `GET /api/health` | 公开健康检查(免鉴权) |
|
|
147
|
-
| `POST/GET /api/tasks`、`GET /api/tasks/:id` | 任务队列(Bearer 鉴权,P4-1) |
|
|
148
|
-
| `POST/GET /api/webhook` | webhook 调度入口注册/查询(P5-2) |
|
|
149
|
-
| `/api/...` 其它 | 需 `FH_WEB_TOKEN` Bearer(fail-closed,计时安全比较) |
|
|
172
|
+
### 3.7 安全与治理(src/enterprise/ + src/shared/ + src/runtime/)
|
|
150
173
|
|
|
151
|
-
|
|
174
|
+
- **RBAC**:`whoami` / `policy` 命令,角色与权限策略
|
|
175
|
+
- **审计**:`audit` 命令,审计哈希链(篡改可检测),`audit --verify` 校验
|
|
176
|
+
- **多租户**:`tenants` 命令
|
|
177
|
+
- **hooks**:确定性控制(`FH_HOOKS`),事前/事后回调
|
|
178
|
+
- **脱敏**:日志与输出的敏感信息脱敏
|
|
179
|
+
- **配额熔断**:成本/时长/轮次限额
|
|
180
|
+
- **入站签名校验**:Web 控制台请求验签
|
|
181
|
+
- **SBOM**:`npm run security`(npm audit + CycloneDX SBOM + osv-scanner 可选)
|
|
182
|
+
- **错误码**:统一错误分类(`docs/error-codes.md`)
|
|
152
183
|
|
|
153
|
-
|
|
184
|
+
---
|
|
154
185
|
|
|
155
|
-
|
|
186
|
+
## 四、数据设计
|
|
156
187
|
|
|
157
|
-
|
|
188
|
+
### 4.1 数据目录(`~/.feihong-code/`,可用 `FH_HOME` 覆盖)
|
|
158
189
|
|
|
159
|
-
|
|
190
|
+
```
|
|
191
|
+
~/.feihong-code/
|
|
192
|
+
├── config/ # 配置
|
|
193
|
+
├── sessions/ # 会话持久化 + 事件日志(FH_LOG_DIR)
|
|
194
|
+
├── self-evolve/ # 失败记录/技能索引/历史/每日复盘报告(运维视图)
|
|
195
|
+
├── skills/ # 用户技能(SKILL.md)
|
|
196
|
+
├── experiences/
|
|
197
|
+
│ └── experiences.jsonl # ★ 统一经验库(self-evolve + self-improve 共用)
|
|
198
|
+
├── bench/ # SWE 跑分缓存与报告
|
|
199
|
+
└── ...
|
|
200
|
+
```
|
|
160
201
|
|
|
161
|
-
|
|
202
|
+
### 4.2 统一经验库 schema(experiences.jsonl,每行一条)
|
|
203
|
+
|
|
204
|
+
```jsonc
|
|
205
|
+
{
|
|
206
|
+
"id": "exp-<base36 shortHash(type:key)>", // 稳定 id,跨 run 合并
|
|
207
|
+
"type": "success-pattern", // success-pattern | error-pattern | path-planning | tool-efficiency | performance-tip
|
|
208
|
+
"key": "fix:compile-error",
|
|
209
|
+
"title": "自愈修复经验: compile-error",
|
|
210
|
+
"content": "…具体方案与建议…",
|
|
211
|
+
"tags": ["compile-error", "self-heal", "fix", "success"],
|
|
212
|
+
"metadata": {
|
|
213
|
+
"sessionCount": 2, // 出现次数(同 id 累加)
|
|
214
|
+
"successRate": 0.85, // 加权成功率
|
|
215
|
+
"createdAt": "ISO 时间",
|
|
216
|
+
"lastUsedAt": "ISO 时间"
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
```
|
|
162
220
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
| MCP | stdio 传输(NDJSON JSON-RPC 2.0):initialize → notifications/initialized → tools/list → tools/call;工具以 `<server>_<tool>` 前缀注册 |
|
|
167
|
-
| SKILL.md | open agent skills 兼容(frontmatter name/description + 正文,渐进式披露) |
|
|
168
|
-
| agentskills.io | discovery index 0.2.0:`$schema` 校验、skill-md/archive、digest `sha256:<hex>` |
|
|
169
|
-
| webhook | `POST {url}` JSON:`{event:'task.status', task:{...}, ts}`(状态快照) |
|
|
170
|
-
| 入站签名 | HMAC-SHA256(`sha256=<hex>` 头)或企微 SHA1 排序 |
|
|
171
|
-
| 检查点 | `<runId>.session.json`(完整对话/迭代/成本/touchedFiles),resume 续跑 |
|
|
221
|
+
### 4.3 会话与事件
|
|
222
|
+
|
|
223
|
+
- 每次运行生成 `runId`(UUID),`EventLog` 记录全量事件,`SessionStore` 持久化会话;支持 `sessions` 列出、`resume` 续跑、`diff` 查看变更、`rollback` 回滚。
|
|
172
224
|
|
|
173
225
|
---
|
|
174
226
|
|
|
175
|
-
##
|
|
227
|
+
## 五、接口设计
|
|
228
|
+
|
|
229
|
+
### 5.1 CLI 命令(`fhcode <command>`)
|
|
176
230
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
231
|
+
| 命令 | 说明 |
|
|
232
|
+
|------|------|
|
|
233
|
+
| `fhcode <goal>` | 直接执行自然语言任务(默认入口) |
|
|
234
|
+
| `sessions` / `resume <id>` / `diff <id>` / `rollback <id>` | 会话管理:列出/续跑/变更/回滚 |
|
|
235
|
+
| `whoami` / `policy` | RBAC 身份与策略 |
|
|
236
|
+
| `audit [--verify]` / `tenants` | 审计(哈希链校验)/ 多租户 |
|
|
237
|
+
| `doctor` | 环境自检 |
|
|
238
|
+
| `tui` | 多面板终端 UI |
|
|
239
|
+
| `serve [port]` | 启动 Web 控制台 |
|
|
240
|
+
| `plugin` / `skill-market` / `skill-new` | 插件与技能管理 |
|
|
241
|
+
| `review <path>` | 代码审查 |
|
|
242
|
+
| `team <goal>` | 多 agent 团队协作 |
|
|
243
|
+
| `code-write <goal>` / `quality-gate <path>` | 代码生成与质量门禁 |
|
|
244
|
+
| `self-improve` / `self-evolve <action>` | 自我迭代(统一经验库) |
|
|
245
|
+
| `model-stats` / `experiences` | 模型用量统计 / 经验库浏览 |
|
|
246
|
+
| `harness` / `swe <goal>` | SWE 评测与软件工程执行 |
|
|
247
|
+
| `/plan` `/grill` `/self-heal` | 内置技能(规划/拷问/自愈) |
|
|
248
|
+
|
|
249
|
+
### 5.2 HTTP API(`fhcode serve`)
|
|
250
|
+
|
|
251
|
+
- `/api/health`:健康检查(返回版本号)
|
|
252
|
+
- `/api/task` 等任务面板接口:Web 控制台任务下发与状态查询
|
|
253
|
+
- `/api/lint`:补全接受后轻量语法校验
|
|
254
|
+
- 入站请求签名校验;CORS/权限控制
|
|
255
|
+
|
|
256
|
+
### 5.3 LSP / 编辑器协议
|
|
257
|
+
|
|
258
|
+
- Monaco 语义诊断:编辑时 LSP 诊断波浪线 + hover 详情
|
|
259
|
+
- VS Code 扩展:补全、跨文件上下文、accept 后 lint
|
|
260
|
+
|
|
261
|
+
### 5.4 语音输入
|
|
262
|
+
|
|
263
|
+
- `voice-programming`:语音识别文本 → 命令规则匹配 → 结构化动作(open/edit/toggle/explain 等)
|
|
186
264
|
|
|
187
265
|
---
|
|
188
266
|
|
|
189
|
-
##
|
|
267
|
+
## 六、部署形态
|
|
190
268
|
|
|
191
|
-
|
|
|
192
|
-
|
|
193
|
-
|
|
|
194
|
-
|
|
|
195
|
-
|
|
|
196
|
-
|
|
|
197
|
-
|
|
|
198
|
-
|
|
|
269
|
+
| 形态 | 入口 | 说明 |
|
|
270
|
+
|------|------|------|
|
|
271
|
+
| CLI / npm | `npm i -g feihong-code` → `fhcode` | 全功能,离线可用 |
|
|
272
|
+
| 源码构建 | `npm install && npm run build` | `dist/` 产物,`node dist/cli/index.js` |
|
|
273
|
+
| Web 控制台 | `fhcode serve` | 浏览器访问,任务面板 |
|
|
274
|
+
| Electron 桌面 | `npm run electron:build` | Windows 桌面,系统托盘、截图、语音 |
|
|
275
|
+
| Android APK | Capacitor 构建(versionCode 8) | 移动端 H5,配套桌面端 |
|
|
276
|
+
| Docker / 私有化 | 镜像部署 + `FH_HOME` 挂载 | 企业内网隔离 |
|
|
199
277
|
|
|
200
278
|
---
|
|
201
279
|
|
|
202
|
-
##
|
|
280
|
+
## 七、工程与质量
|
|
281
|
+
|
|
282
|
+
- **构建**:`tsc` + `scripts/copy-web.cjs`(复制 Web 静态资源与 self-evolve CLI 到 dist)
|
|
283
|
+
- **测试**:`npm test`(tsx --test,tests/unit/*.test.ts),**v7.6.0 全量 243/243 通过**(含 harness 11、voice 7、symbol-index 等)
|
|
284
|
+
- **类型**:`npm run typecheck`(tsc --noEmit 零错误)
|
|
285
|
+
- **验证门禁**:`npm run verify`(typecheck + build + verify:m4/m6/m7/m8/m9)
|
|
286
|
+
- **安全**:`npm run security`(npm audit + SBOM)
|
|
287
|
+
- **跑分**:`npm run eval`、`fhcode harness`
|
|
288
|
+
- **冒烟**:`scripts/_smoke-full.mjs`(v7.6.0 版本断言)
|
|
203
289
|
|
|
204
|
-
|
|
290
|
+
**依赖原则**:运行时仅 express + zod,其余为标准库;所有第三方依赖仅用于开发/构建,保障离线可交付与企业私有化部署。
|
|
205
291
|
|
|
206
292
|
---
|
|
207
293
|
|
|
208
|
-
##
|
|
294
|
+
## 八、版本历史与演进
|
|
209
295
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
296
|
+
| 版本 | 日期 | 关键里程碑 |
|
|
297
|
+
|------|------|-----------|
|
|
298
|
+
| v0.4.0 → v0.6.1 | 2026-08-10~24 | 对话流、多模型路由、RBAC、SWE agent、Web 控制台 |
|
|
299
|
+
| v7.0.0 | 2026-08-24 | 产品成熟标志:Electron 桌面、对话流重构、记忆系统 |
|
|
300
|
+
| v7.2.0 | 2026-08-25 | 硬伤清零:SWE harness、LSP、Docker 沙箱、合规材料 |
|
|
301
|
+
| v7.5.0 | 2026-08-27 | SWE-bench 官方 harness、容器沙箱加固、SBOM、合规售前 |
|
|
302
|
+
| **v7.6.0** | **2026-08-28** | **verifier 差分语义、voice 加固、双系统经验库收敛、仓库卫生、全库版本对齐** |
|
|
213
303
|
|
|
214
304
|
---
|
|
215
305
|
|
|
216
|
-
|
|
306
|
+
*晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹*
|
|
307
|
+
*2026-08-28 · 技术设计说明书 v7.6.0*
|