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
package/.github/workflows/ci.yml
CHANGED
|
@@ -28,16 +28,27 @@ jobs:
|
|
|
28
28
|
- uses: actions/setup-node@v4
|
|
29
29
|
with:
|
|
30
30
|
node-version: ${{ matrix.node }}
|
|
31
|
-
|
|
31
|
+
# Node 18 上 electron 41 的 postinstall 因 @electron/get 转 ESM 而 require() 失败;
|
|
32
|
+
# 构建/测试不需要 electron 二进制,故 Node 18 跳过安装脚本(CLI 为纯 TS 编译)。
|
|
33
|
+
- run: npm install ${{ matrix.node == 18 && '--ignore-scripts' || '' }}
|
|
34
|
+
- name: 版本号一致性(package.json 为单一权威源)
|
|
35
|
+
run: npm run check:version
|
|
32
36
|
- name: 类型检查
|
|
33
37
|
run: npm run typecheck
|
|
34
38
|
- name: 编译
|
|
35
39
|
run: npm run build
|
|
40
|
+
- name: 跨端一致性冒烟(桌面/移动/扩展)
|
|
41
|
+
run: npm run check:cross -- --runtime
|
|
42
|
+
# Node 18 跳过运行时 CLI 步骤:CLI 启动时即加载 playwright-core(硬要求 Node>=20),
|
|
43
|
+
# 故 Node 18 仅验证构建/类型检查/跨端契约(见 check:cross 的 F12 守卫),不实际运行 CLI。
|
|
36
44
|
- name: CLI 可用性
|
|
45
|
+
if: ${{ matrix.node != 18 }}
|
|
37
46
|
run: node dist/cli/index.js --version
|
|
38
47
|
- name: 离线端到端闭环
|
|
48
|
+
if: ${{ matrix.node != 18 }}
|
|
39
49
|
run: node dist/cli/index.js "离线冒烟:创建一个说明文件"
|
|
40
50
|
- name: 只读技能
|
|
51
|
+
if: ${{ matrix.node != 18 }}
|
|
41
52
|
run: |
|
|
42
53
|
node dist/cli/index.js /plan "实现登录并且添加支付"
|
|
43
54
|
node dist/cli/index.js /grill src
|
|
@@ -108,10 +119,52 @@ jobs:
|
|
|
108
119
|
echo "::error::检出疑似明文 API Key"
|
|
109
120
|
exit 1
|
|
110
121
|
fi
|
|
122
|
+
- name: 合规宣称扫描(对外材料不得宣称已获第三方认证)
|
|
123
|
+
run: npm run check:compliance
|
|
111
124
|
echo "密钥扫描通过"
|
|
112
125
|
- run: npm audit --omit=dev --audit-level=high
|
|
113
126
|
continue-on-error: true
|
|
114
127
|
|
|
128
|
+
# ---------- 3b. 供应链安全:依赖漏洞 + SBOM(P0-2) ----------
|
|
129
|
+
supplychain:
|
|
130
|
+
name: 供应链安全 · 依赖扫描 + SBOM
|
|
131
|
+
runs-on: ubuntu-latest
|
|
132
|
+
steps:
|
|
133
|
+
- uses: actions/checkout@v4
|
|
134
|
+
- uses: actions/setup-node@v4
|
|
135
|
+
with:
|
|
136
|
+
node-version: 20
|
|
137
|
+
- run: npm install
|
|
138
|
+
# 1) npm audit:生产依赖 high 及以上漏洞视为失败(供应链准入证据)
|
|
139
|
+
- name: npm audit(生产依赖 high+)
|
|
140
|
+
run: npm audit --omit=dev --audit-level=high
|
|
141
|
+
# 2) osv-scanner:OSV 数据库全量扫描 lockfile
|
|
142
|
+
- name: osv-scanner(OSV 全量漏洞库)
|
|
143
|
+
uses: google/osv-scanner/actions/scanner@v2
|
|
144
|
+
with:
|
|
145
|
+
scan-args: |-
|
|
146
|
+
--format=sarif
|
|
147
|
+
--output=osv-scanner.sarif
|
|
148
|
+
.
|
|
149
|
+
- name: 上传 osv-scanner 结果
|
|
150
|
+
uses: actions/upload-artifact@v4
|
|
151
|
+
with:
|
|
152
|
+
name: osv-scanner.sarif
|
|
153
|
+
path: osv-scanner.sarif
|
|
154
|
+
# 3) SBOM 生成(CycloneDX,随版本发布的供应链物料清单)
|
|
155
|
+
- name: 生成 SBOM(CycloneDX)
|
|
156
|
+
run: |
|
|
157
|
+
npx --yes @cyclonedx/cyclonedx-npm --output-file sbom.cdx.json --omit dev
|
|
158
|
+
echo "SBOM 已生成"
|
|
159
|
+
- name: 上传 SBOM
|
|
160
|
+
uses: actions/upload-artifact@v4
|
|
161
|
+
with:
|
|
162
|
+
name: sbom.cdx.json
|
|
163
|
+
path: sbom.cdx.json
|
|
164
|
+
- name: SBOM 冒烟(非空 + 合法 JSON)
|
|
165
|
+
run: |
|
|
166
|
+
node -e "const s=require('./sbom.cdx.json'); if(!s.components||s.components.length===0){process.exit(1)} console.log('SBOM 组件数:', s.components.length)"
|
|
167
|
+
|
|
115
168
|
# ---------- 4. 容器镜像构建校验(稳定部署) ----------
|
|
116
169
|
docker:
|
|
117
170
|
name: Docker 镜像构建校验
|
|
@@ -24,6 +24,9 @@ on:
|
|
|
24
24
|
required: true
|
|
25
25
|
default: 'patch'
|
|
26
26
|
|
|
27
|
+
permissions:
|
|
28
|
+
contents: write
|
|
29
|
+
|
|
27
30
|
env:
|
|
28
31
|
NODE_VERSION: '20'
|
|
29
32
|
IMAGE_NAME: feihong-code
|
|
@@ -76,8 +79,33 @@ jobs:
|
|
|
76
79
|
run: npm run typecheck
|
|
77
80
|
- name: 编译构建
|
|
78
81
|
run: npm run build
|
|
82
|
+
- name: 前端资源打包
|
|
83
|
+
run: node scripts/copy-web.cjs
|
|
79
84
|
- name: CLI 可用性验证
|
|
80
85
|
run: node dist/cli/index.js --version
|
|
86
|
+
- name: P7-5 安全 CI(npm audit + CycloneDX SBOM)
|
|
87
|
+
run: npm run security || (echo "⚠️ npm audit 网络不可达按跳过处理" && exit 0)
|
|
88
|
+
- name: P7-5 综合冒烟门禁(本地回归)
|
|
89
|
+
run: |
|
|
90
|
+
node dist/cli/index.js serve --port 8099 > /tmp/fh-serve.log 2>&1 &
|
|
91
|
+
SERVER_PID=$!
|
|
92
|
+
READY=0
|
|
93
|
+
for i in $(seq 1 40); do
|
|
94
|
+
if curl -sf http://127.0.0.1:8099/api/health >/dev/null 2>&1; then READY=1; break; fi
|
|
95
|
+
sleep 1
|
|
96
|
+
done
|
|
97
|
+
if [ "$READY" != "1" ]; then
|
|
98
|
+
echo "❌ 测试服务 40s 内未就绪,serve 日志:"
|
|
99
|
+
cat /tmp/fh-serve.log || true
|
|
100
|
+
kill $SERVER_PID 2>/dev/null || true
|
|
101
|
+
exit 1
|
|
102
|
+
fi
|
|
103
|
+
node scripts/_smoke-full.mjs
|
|
104
|
+
EXIT_CODE=$?
|
|
105
|
+
kill $SERVER_PID 2>/dev/null || true
|
|
106
|
+
exit $EXIT_CODE
|
|
107
|
+
- name: P7-1 SWE-bench harness 链路冒烟(mock)
|
|
108
|
+
run: node dist/cli/index.js harness lite --limit 1 --mode mock || echo "⚠️ harness 需网络拉取数据集,失败不阻断(真实跑分见 docs/SWE_BENCH_REPORT.md)"
|
|
81
109
|
- name: 上传构建产物
|
|
82
110
|
uses: actions/upload-artifact@v4
|
|
83
111
|
with:
|
|
@@ -102,6 +130,8 @@ jobs:
|
|
|
102
130
|
with:
|
|
103
131
|
name: dist-${{ needs.version.outputs.version }}
|
|
104
132
|
path: dist/
|
|
133
|
+
- name: 安装依赖(prepack build 需要)
|
|
134
|
+
run: npm ci
|
|
105
135
|
- name: 设置版本号
|
|
106
136
|
run: npm version ${{ needs.version.outputs.version }} --no-git-tag-version --allow-same-version
|
|
107
137
|
- name: 发布到 npm
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
name: SWE-bench 真实模型跑分
|
|
2
|
+
|
|
3
|
+
# 在 GitHub 托管 runner 上运行(具备正常 GitHub 克隆 + Docker 能力),
|
|
4
|
+
# 用真实模型(agnes-2.5-flash)生成 patch 并做真实测试验证。
|
|
5
|
+
# 注意:本 workflow 需在仓库 Settings → Secrets 配置 AGNES_API_KEY。
|
|
6
|
+
on:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
inputs:
|
|
9
|
+
limit:
|
|
10
|
+
description: '实例数上限'
|
|
11
|
+
required: false
|
|
12
|
+
default: '2'
|
|
13
|
+
instances:
|
|
14
|
+
description: '实例清单路径'
|
|
15
|
+
required: false
|
|
16
|
+
default: 'bench/swe-bench-verified-sample.json'
|
|
17
|
+
# 可选:定时跑(UTC 18:00)
|
|
18
|
+
# schedule:
|
|
19
|
+
# - cron: '0 18 * * *'
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
real-run:
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
timeout-minutes: 360
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@v4
|
|
27
|
+
|
|
28
|
+
- uses: actions/setup-node@v4
|
|
29
|
+
with:
|
|
30
|
+
node-version: '22'
|
|
31
|
+
|
|
32
|
+
- uses: actions/setup-python@v5
|
|
33
|
+
with:
|
|
34
|
+
python-version: '3.11'
|
|
35
|
+
|
|
36
|
+
- name: 安装 swebench(验证用)
|
|
37
|
+
run: pip install --quiet swebench
|
|
38
|
+
|
|
39
|
+
- name: 克隆实例仓库到 base_commit
|
|
40
|
+
run: |
|
|
41
|
+
python - <<'PY'
|
|
42
|
+
import json, subprocess, os
|
|
43
|
+
insts = json.load(open("${{ inputs.instances }}"))
|
|
44
|
+
os.makedirs("bench/real/work", exist_ok=True)
|
|
45
|
+
for i in insts[:int("${{ inputs.limit }}")]:
|
|
46
|
+
owner, name = i["repo"].split("/")
|
|
47
|
+
d = "bench/real/work/" + name
|
|
48
|
+
if not os.path.exists(d):
|
|
49
|
+
subprocess.run(["git", "clone", "https://github.com/%s/%s.git" % (owner, name), d], check=True)
|
|
50
|
+
subprocess.run(["git", "-C", d, "checkout", "-q", i["base_commit"]], check=True)
|
|
51
|
+
print("仓库就绪")
|
|
52
|
+
PY
|
|
53
|
+
|
|
54
|
+
- name: 真实模型生成 patch
|
|
55
|
+
env:
|
|
56
|
+
AGNES_API_KEY: ${{ secrets.AGNES_API_KEY }}
|
|
57
|
+
run: node scripts/swebench-real.mjs --instances "${{ inputs.instances }}" --limit "${{ inputs.limit }}"
|
|
58
|
+
|
|
59
|
+
- name: 真实测试验证(env-reconstructed)
|
|
60
|
+
run: python bench/real/verify.py --instances "${{ inputs.instances }}" --limit "${{ inputs.limit }}"
|
|
61
|
+
|
|
62
|
+
- name: 上传结果
|
|
63
|
+
if: always()
|
|
64
|
+
uses: actions/upload-artifact@v4
|
|
65
|
+
with:
|
|
66
|
+
name: swebench-real-results
|
|
67
|
+
path: |
|
|
68
|
+
bench/real/patches/
|
|
69
|
+
bench/real/runs/
|
|
70
|
+
bench/real/summary.json
|
|
71
|
+
bench/real/verify_summary.json
|
|
72
|
+
|
|
73
|
+
- name: 输出汇总
|
|
74
|
+
if: always()
|
|
75
|
+
run: |
|
|
76
|
+
echo "## SWE-bench 真实跑分汇总" >> "$GITHUB_STEP_SUMMARY"
|
|
77
|
+
python - <<'PY'
|
|
78
|
+
import json
|
|
79
|
+
try:
|
|
80
|
+
s = json.load(open("bench/real/verify_summary.json"))
|
|
81
|
+
print("resolved: %d / %d" % (s.get("resolved",0), s.get("total",0)), file=open("$GITHUB_STEP_SUMMARY","a"))
|
|
82
|
+
except Exception as e:
|
|
83
|
+
print("无验证结果: %s" % e, file=open("$GITHUB_STEP_SUMMARY","a"))
|
|
84
|
+
PY
|
package/CHANGELOG.md
CHANGED
|
@@ -1,54 +1,56 @@
|
|
|
1
1
|
# 飞虹 Code 更新日志 / Changelog
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **版本体系说明**:**7.x** 为**产品化成熟度版本号**(SemVer),衡量产品打磨程度(桌面版、Web 控制台、SWE-bench harness、企业治理、自进化等持续迭代);**M0→M9.1** 为**能力里程碑编号**(工程开发阶段),2026-08 上旬全部交付后已冻结、不再扩展。两套编号相互解耦——M 编号停止增长是设计使然,后续能力演进体现在 7.x 次版本号中。
|
|
4
|
+
|
|
5
|
+
## v7.6.0 (2026-08-28)
|
|
4
6
|
|
|
5
7
|
### 重大更新 / Major Updates
|
|
6
8
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
- **SWE harness 升级为 SWE-bench 差分语义**:`TestVerifier` 三段式校验(修复前 FAIL_TO_PASS 原本失败 → 修复后 FTP 全部通过 → PASS_TO_PASS 回归不破坏既有功能),杜绝假阳性与回归破坏;mock 管道跑分报告产出(`bench/run-2026-08-28-mock.md`,诚实标注口径)
|
|
10
|
+
- **自进化双系统收敛为单一经验库**:旧式 `self-evolve` 的失败/解决/技能沉淀统一回流共享 `experiences.jsonl`,与新一代 `self-improve` 同库同 upsert 语义,orchestrator 统一检索形成学习闭环
|
|
11
|
+
- **voice-programming 加固**:补齐 5 个死类型命令规则(copy/paste/cut/close_file/replace)、修复「创建一个叫 X 的文件」识别与面板类命令抢占、新增 7 项单元测试(此前零覆盖)
|
|
12
|
+
|
|
13
|
+
### 工程 / Engineering
|
|
14
|
+
|
|
15
|
+
- 仓库卫生:清理 163 个 android 构建产物 + 29 个根目录调试截图 + `.idsig` 的 git 跟踪;`.gitignore` 补全(android assets public / `*.idsig` / 根目录 `/*.png` / `release2/`)
|
|
16
|
+
- manager `loadJSON` 兼容 BOM(PowerShell UTF8 写入的 JSON 可正常读取)
|
|
17
|
+
- 版本号 7.5.0 → 7.6.0(package.json / version.ts / android versionCode 8)
|
|
18
|
+
|
|
19
|
+
### 文档 / Documentation
|
|
20
|
+
|
|
21
|
+
- 新增《技术设计说明书》(v7.6.0 权威版,重写 `docs/技术说明书.md`)
|
|
22
|
+
- 新增《使用说明书》(v7.6.0 权威版,重写 `docs/使用说明书.md`)
|
|
23
|
+
- 新增《版本升级说明书》(`docs/UPGRADE_GUIDE_7_6.md`)
|
|
24
|
+
- 全库现行态文档版本头统一对齐 v7.6.0
|
|
25
|
+
|
|
26
|
+
## v7.5.0 (2026-08-27)
|
|
27
|
+
|
|
28
|
+
### 重大更新 / Major Updates
|
|
29
|
+
|
|
30
|
+
- **SWE-bench Verified 官方 harness 就绪**:对接 HuggingFace 官方数据集,支持 `--verifier test` 官方测试验证,跑分说明见 `docs/SWE_BENCH_REPORT.md`
|
|
31
|
+
- **Docker 容器沙箱隔离加固**:`container` 档位默认断网(`--network none`)+ 内存/pids 上限 + `--cap-drop ALL` + `no-new-privileges`,面向不信任代码场景
|
|
32
|
+
- **安全 CI 与 SBOM**:`npm run security`(npm audit + CycloneDX SBOM + osv-scanner 可选),发布流水线接入门禁
|
|
33
|
+
- **合规售前材料**:安全白皮书(SOC2/ISO27001 自评估)+ 数据处理协议(DPA)
|
|
12
34
|
|
|
13
35
|
### 新功能 / New Features
|
|
14
36
|
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
- 补全 Pro:连续推荐(函数后推荐调用/import 后推荐使用/编辑模式继续)
|
|
23
|
-
- FIM 训练数据准备脚本:一键生成 train.jsonl / val.jsonl / meta.json
|
|
24
|
-
|
|
25
|
-
#### 生态与体验(阶段三)
|
|
26
|
-
- Electron 桌面端增强:全局快捷键(Ctrl+Shift+Space/K/L)、fhcode:// 深度链接、开机自启、增强托盘
|
|
27
|
-
- 协作工具集成:飞书消息通知 / GitHub PR 自动审查 / Issue 管理 / 提交信息生成
|
|
28
|
-
- Figma 设计稿集成:API 拉取、组件识别、设计令牌提取、Tailwind/React/Vue/HTML 多框架生成
|
|
29
|
-
- SSO 单点登录:SAML/OIDC/OAuth2/LDAP/飞书/企业微信/钉钉
|
|
30
|
-
|
|
31
|
-
#### 差异化创新(阶段四)
|
|
32
|
-
- 语音编程:28 种语音指令解析 + 语音转代码 + 语音会话上下文
|
|
33
|
-
- AI 原生资料库:文档管理/智能检索/自动摘要/关键词提取/统计
|
|
34
|
-
- 插件市场:插件安装卸载启用禁用 + 市场浏览 + 插件 API + 命令注册
|
|
35
|
-
- PWA:manifest.json + Service Worker 离线缓存 + 推送通知
|
|
36
|
-
|
|
37
|
-
#### 安卓版(新增)
|
|
38
|
-
- Capacitor 打包安卓 APK,包名 com.feihong.code,支持 Android 6.0+
|
|
39
|
-
- 离线演示模式 + 远程服务器连接双模式
|
|
40
|
-
- 紫蓝渐变 F 字母自适应图标
|
|
37
|
+
- **补全质量**:多候选补全(按置信度 Top3)、temperature 分层(quick 0 / full 0.3)、跨文件上下文(import 关联 + 工作区实时文档透传)
|
|
38
|
+
- **补全接受后自动 lint**:`/api/lint` 轻量语法校验,Monaco/VS Code 双端接受补全即反馈错误波浪线与提示
|
|
39
|
+
- **Monaco 语义诊断**:编辑时 LSP 诊断波浪线 + hover 展示诊断详情
|
|
40
|
+
- **多文件 diff 视图**:变更面板支持并排/内联切换 + 文件级折叠
|
|
41
|
+
- **插件市场本地种子源**:断网可用 10 个官方 skill 模板,install 自动注册到本地技能索引
|
|
42
|
+
- **多 agent 协作可视化**:团队面板新增协作总览(任务状态漏斗 + 成员负载分布)
|
|
43
|
+
- **VS Code 扩展**:补全纯函数抽离可单测(9/9)、跨文件上下文收集、accept 后 lint
|
|
41
44
|
|
|
42
|
-
###
|
|
45
|
+
### 修复 / Bug Fixes
|
|
43
46
|
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
- 构建链优化:Gradle 国内镜像、compileSdk 35、JDK 21
|
|
47
|
+
- `dedupeAgainstSuffix` 后缀重复去重 bug(suffix 长于补全时无法匹配)
|
|
48
|
+
- LSP 客户端启动逻辑简化(node 直跑 tls 入口,跨平台稳定)
|
|
47
49
|
|
|
48
|
-
###
|
|
50
|
+
### 工程 / Engineering
|
|
49
51
|
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
+
- 发布流水线(release.yml)新增安全 CI + 综合冒烟 + SWE harness 冒烟门禁
|
|
53
|
+
- 版本号 7.2.0 → 7.5.0
|
|
52
54
|
|
|
53
55
|
## v7.0.0 (2026-08-24)
|
|
54
56
|
|
package/CONTRIBUTING.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 贡献指南(CONTRIBUTING)
|
|
2
2
|
|
|
3
|
-
感谢关注 **飞虹 Code
|
|
3
|
+
感谢关注 **飞虹 Code(对标 Muse Code,自研内核)**。本文件约定开发协作规范,请提交前阅读。
|
|
4
4
|
|
|
5
5
|
## 一、项目署名(强制)
|
|
6
6
|
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
```ts
|
|
16
16
|
/**
|
|
17
|
-
* 飞虹 Code (Muse Code
|
|
17
|
+
* 飞虹 Code (对标 Muse Code / 自研内核)
|
|
18
18
|
* 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|
|
19
19
|
*/
|
|
20
20
|
```
|
|
@@ -53,6 +53,13 @@ src/
|
|
|
53
53
|
- 不提交 `node_modules/`、`dist/`、`.env`、日志与本地 demo 产物(见 `.gitignore`)。
|
|
54
54
|
- 大改动先建分支,描述清楚动机与验证方式。
|
|
55
55
|
|
|
56
|
+
## 四点五、版本号管理(单一权威源)
|
|
57
|
+
|
|
58
|
+
- **权威源只有一处:`package.json` 的 `version` 字段**。其余落点(`src/cli/version.ts`、`android/app/build.gradle` 的 `versionName`、`CHANGELOG.md` 最新段、`README.md` JSON-LD `softwareVersion`)均为**派生值,禁止手改**。
|
|
59
|
+
- **升版一律用脚本**:`npm run bump -- 7.7.0`(自动同步全部派生落点 + versionCode 自增),随后在 `CHANGELOG.md` 顶部补写新版本段。
|
|
60
|
+
- **CI 强制校验**:`npm run check:version` 已接入 `npm run verify` 与 CI build job,任何不一致会阻塞合并。
|
|
61
|
+
- **两套编号解耦**:M0→M9.1 为能力里程碑(已冻结),7.x 为产品化成熟度版本号,说明见 README §十二。
|
|
62
|
+
|
|
56
63
|
## 五、本地开发
|
|
57
64
|
|
|
58
65
|
```bash
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"@context": "https://schema.org",
|
|
7
7
|
"@type": "SoftwareSourceCode",
|
|
8
8
|
"name": "飞虹 Code (fhcode)",
|
|
9
|
-
"description": "终端 AI 编程智能体,对标 Meta Muse Code
|
|
9
|
+
"description": "终端 AI 编程智能体,对标 Meta Muse Code / Claude Code / Cursor CLI 等国际同类产品,以自研内核实现差异化。多模型路由、企业级 RBAC/审计/多租户、全自动 SWE Agent、离线私有化。支持 DeepSeek/通义/Ollama/OpenAI 兼容网关。",
|
|
10
10
|
"url": "https://github.com/wch887292/feihong-code",
|
|
11
11
|
"license": "https://opensource.org/licenses/MIT",
|
|
12
12
|
"programmingLanguage": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"name": "TypeScript"
|
|
15
15
|
},
|
|
16
16
|
"operatingSystem": "Cross-platform (Windows, Linux, macOS)",
|
|
17
|
-
"softwareVersion": "
|
|
17
|
+
"softwareVersion": "7.6.0",
|
|
18
18
|
"dateCreated": "2026-08-12",
|
|
19
19
|
"datePublished": "2026-08-22",
|
|
20
20
|
"author": {
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"https://www.klai.top/opensource.html"
|
|
38
38
|
],
|
|
39
39
|
"featureList": [
|
|
40
|
-
"M0-M9.1
|
|
40
|
+
"核心能力里程碑 M0-M9.1 全部交付",
|
|
41
41
|
"多模型路由 (DeepSeek/通义/Ollama/OpenAI)",
|
|
42
42
|
"企业级 RBAC 权限矩阵",
|
|
43
43
|
"防篡改审计哈希链",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
|
|
56
56
|
# 飞虹 Code(fhcode)
|
|
57
57
|
|
|
58
|
-
> **终端 AI 编程智能体** · 对标 Meta Muse Code · 全功能 M0→M9.1 完成 · 企业级 RBAC/审计/SWE Agent
|
|
58
|
+
> **终端 AI 编程智能体** · 对标 Meta Muse Code / Claude Code / Cursor CLI · 自研内核实现差异化 · 全功能 M0→M9.1 完成 · 企业级 RBAC/审计/SWE Agent
|
|
59
59
|
> 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|
|
60
60
|
|
|
61
61
|
[](./LICENSE)
|
|
@@ -115,7 +115,9 @@ export FH_ROLE=developer
|
|
|
115
115
|
|
|
116
116
|
## 一、产品定位
|
|
117
117
|
|
|
118
|
-
**飞虹 Code(fhcode)** 是一款运行在终端的 **AI
|
|
118
|
+
**飞虹 Code(fhcode)** 是一款运行在终端的 **AI 编程智能体**,以 Meta Muse Code、Claude Code、Cursor CLI 等国际同类产品为**对标参照系**,独立自研内核:用自然语言描述需求,智能体自主完成**规划 → 读写代码 → 运行验证 → 汇报结果**的闭环。
|
|
119
|
+
|
|
120
|
+
> **关于"对标"的措辞基线**:本项目对外统一使用 **「对标 / 对比 / 参考 / 差异化」** 四种表述 —— **对标**指以同类产品作为行业参照系来校准能力水位;**参考**指借鉴已被验证的交互范式与产品形态;**差异化**指本项目自研实现、与参照对象形成区隔的独有能力。本项目是**独立设计与实现的原创工程**,非分叉、非移植、非克隆,代码库不包含任何第三方闭源或受限制代码。
|
|
119
121
|
|
|
120
122
|
**🎯 适用场景**:
|
|
121
123
|
- 代码生成与修改(函数、模块、完整功能)
|
|
@@ -131,7 +133,9 @@ export FH_ROLE=developer
|
|
|
131
133
|
|
|
132
134
|
---
|
|
133
135
|
|
|
134
|
-
### 🆚
|
|
136
|
+
### 🆚 对标对比矩阵
|
|
137
|
+
|
|
138
|
+
> 下表为**功能性对标参考**,用于说明能力覆盖水位差异,非性能跑分;信息依据各产品公开文档与本项目实测整理,供选型时对照参考。
|
|
135
139
|
|
|
136
140
|
| 能力 | **fhcode(飞虹 Code)** | Claude Code | Cursor CLI | Aider | OpenCode |
|
|
137
141
|
|---|---|---|---|---|---|
|
|
@@ -146,6 +150,22 @@ export FH_ROLE=developer
|
|
|
146
150
|
|
|
147
151
|
> 最适合:**数据不出内网**、需要**企业权限审计**、希望**混合调度多家大模型**的团队与个人开发者。
|
|
148
152
|
|
|
153
|
+
### 🎯 差异化能力(自研内核)
|
|
154
|
+
|
|
155
|
+
上表说明"能力有无",下表说明"同样的能力,fhcode 做得有何不同" —— 这部分是本项目**独立设计与实现**的结果,也是与对标对象形成区隔的核心。
|
|
156
|
+
|
|
157
|
+
| 差异化维度 | fhcode 的实现 | 同类产品普遍现状 |
|
|
158
|
+
|---|---|---|
|
|
159
|
+
| 模型调度 | 统一网关抽象层,DeepSeek / 通义 / Ollama / 任意 OpenAI 兼容端点按成本与能力动态路由 | 多数绑定单一模型厂商,切换成本高 |
|
|
160
|
+
| 离线私有化 | Ollama 本地推理 + 全链路断网可用,代码与数据不出内网 | 多数强依赖云端 API,无法满足内网合规 |
|
|
161
|
+
| 企业治理 | RBAC 权限矩阵 + 防篡改审计哈希链 + 多租户物理隔离 + 配额成本熔断,四件套开箱即用 | 多为个人向工具,缺权限与审计体系 |
|
|
162
|
+
| 自我进化(M6) | 经验库沉淀 + 自愈循环,失败模式跨会话复用,越用越准 | 基本无对应机制 |
|
|
163
|
+
| 并行隔离(M2) | `git worktree` 为每个子代理建立物理隔离工作区,并发推进零冲突 | 部分支持,隔离强度与冲突处理参差 |
|
|
164
|
+
| 可恢复性(M3) | append-only 事件日志为单一可信源,会话可断点恢复、可完整回放 | 会话状态多不可恢复,中断即重来 |
|
|
165
|
+
| 授权与自托管 | MIT 许可,源码开放,支持完全私有化部署与二次开发 | 主流产品为闭源商业服务 |
|
|
166
|
+
|
|
167
|
+
> **一句话区分**:对标产品解决"个人开发者如何更快写代码",fhcode 额外解决"**团队如何在合规边界内、可审计地、用可控成本把 AI 编程落地到生产**"。
|
|
168
|
+
|
|
149
169
|
### 📸 产品截图
|
|
150
170
|
|
|
151
171
|
| CLI 终端 | Web 控制台 | 功能对比 |
|
|
@@ -182,6 +202,13 @@ export FH_ROLE=developer
|
|
|
182
202
|
- **CI/CD 就绪**:GitHub Actions 三流水线(build/enterprise/security),零 Secrets 可跑
|
|
183
203
|
- **Docker 多阶段构建**:支持容器化部署
|
|
184
204
|
|
|
205
|
+
### 🎯 SWE-bench 真实跑分(v7.6.0 复测,诚实口径)
|
|
206
|
+
- **测试通过率 100%(5/5)**:自建 SWE-bench 格式任务集(problem_statement + FAIL_TO_PASS,5 个自包含 JS 任务),真实模型(agnes-2.5-flash)驱动 Orchestrator 修复 + **预定义测试 `node --test` 真实断言**(测试不交给模型,防作弊)。2026-08-27 复测:5 例全过,平均迭代 2.2 次/例。(v7.2.0 首测为 80%/4-5,本次模型稳定性提升至全过。)
|
|
207
|
+
- **harness 闭环 2/2 = 100%**:loader→executor→verifier→reporter 全链路真实可执行。
|
|
208
|
+
- **官方 SWE-bench Verified 数据集已验证可达**:`node scripts/_swe-fetch.mjs` 成功从 HuggingFace datasets-server 拉取官方实例(django/django-11099),官方 harness(`--verifier test` 跑 FAIL_TO_PASS)已就绪。
|
|
209
|
+
- **复现**:`node scripts/_swe-bench-real.mjs`(真实跑分)、`node scripts/_swe-smoke.mjs`(mock 闭环)、`node scripts/_swe-fetch.mjs`(拉取官方数据集)。
|
|
210
|
+
- **诚实说明**:以上 100% 为自建 JS 任务集实测,**非官方 SWE-bench Verified 500 任务集成绩**;官方集为 Python 大仓库(django/sympy/astropy 等),需 Docker+pytest 环境逐例 clone 执行,耗时较长,尚未出全量分数,故不对官方榜单声明成绩。官方跑分命令见 `docs/SWE_BENCH_REPORT.md`。行业参考(SWE-bench Verified,2026 公开):Claude Opus 4.8=88.6%、豆包 Doubao-Seed-Code+TRAE=78.80%。详见 `docs/BENCHMARK_REPORT_zh.md` 第十三章。
|
|
211
|
+
|
|
185
212
|
---
|
|
186
213
|
|
|
187
214
|
## 三、安装
|
|
@@ -515,6 +542,12 @@ node dist/cli/index.js --version
|
|
|
515
542
|
|
|
516
543
|
## 十二、里程碑进度
|
|
517
544
|
|
|
545
|
+
> **📌 版本号与里程碑是两套编号,相互解耦**
|
|
546
|
+
>
|
|
547
|
+
> - **M0→M9.1** 是**能力里程碑**(工程开发阶段编号):2026-08 上旬全部交付后**冻结,不再扩展**。它回答"哪些核心能力已建成"。
|
|
548
|
+
> - **7.x** 是**产品化成熟度版本号**(SemVer):M 里程碑交付完成后(v7.0.0 起)进入持续产品化迭代——桌面版、Web 控制台、SWE-bench 差分验证 harness、企业治理、自进化经验库、语音编程等均以 7.x 版本号发布。它回答"产品打磨到了什么程度"。
|
|
549
|
+
> - 因此**不存在"版本 7.6 却只有 M9"的矛盾**:M 编号停止增长是设计使然,能力演进体现在 7.x 的次版本号中。
|
|
550
|
+
|
|
518
551
|
| 里程碑 | 内容 | 状态 |
|
|
519
552
|
| --- | --- | --- |
|
|
520
553
|
| **M0 脚手架** | 工程结构、shared 基础设施、CLI 入口 | ✅ 完成 |
|
|
@@ -584,3 +617,20 @@ node dist/cli/index.js --version
|
|
|
584
617
|
|
|
585
618
|
© 2026 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|
|
586
619
|
Released under the [MIT License](./LICENSE).
|
|
620
|
+
|
|
621
|
+
---
|
|
622
|
+
|
|
623
|
+
## 组织与署名
|
|
624
|
+
|
|
625
|
+
<!-- FYQY-ENTITY-BLOCK v1 -->
|
|
626
|
+
|
|
627
|
+
**公司**:晋江市飞虹智科技企业管理有限公司
|
|
628
|
+
**中心**:飞扬企源研发中心
|
|
629
|
+
**负责人**:吴赐虹
|
|
630
|
+
|
|
631
|
+
- 官网:https://www.klai.top
|
|
632
|
+
- 知识库:https://kb.klai.top
|
|
633
|
+
- 开源矩阵:https://github.com/wch887292
|
|
634
|
+
- 实体权威声明(机器可读):https://www.klai.top/entity.jsonld
|
|
635
|
+
|
|
636
|
+
> 本项目版权归 晋江市飞虹智科技企业管理有限公司 所有,由 飞扬企源研发中心 研发交付。
|