feihong-code 7.5.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 +193 -180
- package/.github/workflows/release.yml +203 -200
- package/.github/workflows/swebench-real.yml +84 -0
- package/CHANGELOG.md +117 -94
- package/CONTRIBUTING.md +9 -2
- package/README.md +636 -609
- 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-postprocess.js +1 -1
- package/dist/agent/context-compactor.js +11 -0
- package/dist/agent/context-compactor.js.map +1 -1
- package/dist/agent/custom-agent.js +52 -52
- package/dist/agent/design-to-code.js +40 -40
- package/dist/agent/experience.js +1 -1
- package/dist/agent/layered-memory.js +1 -1
- package/dist/agent/lint.js +1 -1
- package/dist/agent/multi-agent.js +44 -44
- package/dist/agent/orchestrator.js +93 -18
- 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 +2 -2
- 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 +1 -1
- package/dist/agent/self-heal.js +5 -0
- 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 +7 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/index.js +57 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/repl.js +1 -1
- package/dist/cli/run.js +40 -3
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/self-evolve-cli.js +168 -0
- package/dist/cli/tui-run.js +1 -1
- package/dist/cli/tui.js +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/hello.js +14 -0
- package/dist/hello.js.map +1 -0
- 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 +1 -1
- 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/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/hook.ts +80 -0
- package/dist/self-evolve/manager.d.ts +8 -0
- 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 +1 -1
- 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 +1 -1
- package/dist/tools/generator/test-generator.js +1 -1
- 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 +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/public/css/style.css +1751 -1724
- package/dist/web/public/index.html +1243 -1242
- package/dist/web/public/js/api.js +558 -555
- package/dist/web/public/js/app.js +2233 -2210
- package/dist/web/public/js/mock-api.js +259 -234
- package/dist/web/public/js/monaco-editor.js +363 -363
- package/dist/web/public/js/ui.js +2217 -2251
- package/dist/web/public/js/utils.js +214 -214
- package/dist/web/public/manifest.json +59 -59
- package/dist/web/public/service-worker.js +149 -173
- package/dist/web/public/vendor/monaco/vs/abap-D-t0cyap.js +1 -0
- package/dist/web/public/vendor/monaco/vs/apex-CcIm7xu6.js +1 -0
- package/dist/web/public/vendor/monaco/vs/assets/css.worker-URu8fCFR.js +97 -0
- package/dist/web/public/vendor/monaco/vs/assets/editor.worker-lj3bdIIn.js +30 -0
- package/dist/web/public/vendor/monaco/vs/assets/editorWebWorkerMain-CA_vMoUU.js +30 -0
- package/dist/web/public/vendor/monaco/vs/assets/html.worker-D1SL3iM8.js +474 -0
- package/dist/web/public/vendor/monaco/vs/assets/json.worker-CoJx_OPf.js +62 -0
- package/dist/web/public/vendor/monaco/vs/assets/ts.worker-BWKtMYOk.js +67722 -0
- package/dist/web/public/vendor/monaco/vs/azcli-BA0tQDCg.js +1 -0
- package/dist/web/public/vendor/monaco/vs/basic-languages/monaco.contribution.js +1 -0
- package/dist/web/public/vendor/monaco/vs/bat-C397hTD6.js +1 -0
- package/dist/web/public/vendor/monaco/vs/bicep-DF5aW17k.js +2 -0
- package/dist/web/public/vendor/monaco/vs/cameligo-plsz8qhj.js +1 -0
- package/dist/web/public/vendor/monaco/vs/clojure-Y2auQMzK.js +1 -0
- package/dist/web/public/vendor/monaco/vs/coffee-Bu45yuWE.js +1 -0
- package/dist/web/public/vendor/monaco/vs/cpp-CkKPQIni.js +1 -0
- package/dist/web/public/vendor/monaco/vs/csharp-CX28MZyh.js +1 -0
- package/dist/web/public/vendor/monaco/vs/csp-D8uWnyxW.js +1 -0
- package/dist/web/public/vendor/monaco/vs/css-CaeNmE3S.js +3 -0
- package/dist/web/public/vendor/monaco/vs/css.worker-CyhWkhHo.js +1 -0
- package/dist/web/public/vendor/monaco/vs/cssMode-CV6Ay48H.js +1 -0
- package/dist/web/public/vendor/monaco/vs/cypher-DVThT8BS.js +1 -0
- package/dist/web/public/vendor/monaco/vs/dart-CmGfCvrO.js +1 -0
- package/dist/web/public/vendor/monaco/vs/dockerfile-CZqqYdch.js +1 -0
- package/dist/web/public/vendor/monaco/vs/ecl-30fUercY.js +1 -0
- package/dist/web/public/vendor/monaco/vs/editor/editor.main.css +1 -0
- package/dist/web/public/vendor/monaco/vs/editor/editor.main.js +1 -0
- package/dist/web/public/vendor/monaco/vs/editor/editor.worker.js +1 -0
- package/dist/web/public/vendor/monaco/vs/editor-KLE6jdfb.js +831 -0
- package/dist/web/public/vendor/monaco/vs/editor.js +1 -0
- package/dist/web/public/vendor/monaco/vs/editorWorkerHost-fVE1cjcC.js +35 -0
- package/dist/web/public/vendor/monaco/vs/elixir-xjPaIfzF.js +1 -0
- package/dist/web/public/vendor/monaco/vs/flow9-DqtmStfK.js +1 -0
- package/dist/web/public/vendor/monaco/vs/freemarker2-FWreY7v7.js +3 -0
- package/dist/web/public/vendor/monaco/vs/fsharp-BOMdg4U1.js +1 -0
- package/dist/web/public/vendor/monaco/vs/go-D_hbi-Jt.js +1 -0
- package/dist/web/public/vendor/monaco/vs/graphql-CKUU4kLG.js +1 -0
- package/dist/web/public/vendor/monaco/vs/handlebars-CZi4pHCH.js +1 -0
- package/dist/web/public/vendor/monaco/vs/hcl-DTaboeZW.js +1 -0
- package/dist/web/public/vendor/monaco/vs/html-j_7ZTNRU.js +1 -0
- package/dist/web/public/vendor/monaco/vs/html.worker-CA3iAimZ.js +1 -0
- package/dist/web/public/vendor/monaco/vs/htmlMode-27by_KM4.js +1 -0
- package/dist/web/public/vendor/monaco/vs/index-049xrXrp.js +1 -0
- package/dist/web/public/vendor/monaco/vs/index-CBVt3dzv.js +5 -0
- package/dist/web/public/vendor/monaco/vs/index.js +1 -0
- package/dist/web/public/vendor/monaco/vs/ini-CsNwO04R.js +1 -0
- package/dist/web/public/vendor/monaco/vs/initialize-DL0l1TGY.js +1 -0
- package/dist/web/public/vendor/monaco/vs/java-CI4ZMsH9.js +1 -0
- package/dist/web/public/vendor/monaco/vs/javascript-DTJl4Jn1.js +1 -0
- package/dist/web/public/vendor/monaco/vs/json.worker-BizpAl9O.js +1 -0
- package/dist/web/public/vendor/monaco/vs/jsonMode-DLUiMUrI.js +1 -0
- package/dist/web/public/vendor/monaco/vs/julia-BwzEvaQw.js +1 -0
- package/dist/web/public/vendor/monaco/vs/kotlin-IUYPiTV8.js +1 -0
- package/dist/web/public/vendor/monaco/vs/language/css/css.worker.js +66 -0
- package/dist/web/public/vendor/monaco/vs/language/css/monaco.contribution.js +1 -0
- package/dist/web/public/vendor/monaco/vs/language/html/html.worker.js +443 -0
- package/dist/web/public/vendor/monaco/vs/language/html/monaco.contribution.js +1 -0
- package/dist/web/public/vendor/monaco/vs/language/json/json.worker.js +17 -0
- package/dist/web/public/vendor/monaco/vs/language/json/monaco.contribution.js +1 -0
- package/dist/web/public/vendor/monaco/vs/language/typescript/monaco.contribution.js +1 -0
- package/dist/web/public/vendor/monaco/vs/language/typescript/ts.worker.js +67693 -0
- package/dist/web/public/vendor/monaco/vs/less-C0eDYdqa.js +2 -0
- package/dist/web/public/vendor/monaco/vs/lexon-iON-Kj97.js +1 -0
- package/dist/web/public/vendor/monaco/vs/liquid-CLJYelW6.js +1 -0
- package/dist/web/public/vendor/monaco/vs/loader.js +1368 -0
- package/dist/web/public/vendor/monaco/vs/lspLanguageFeatures-BIkJOWLw.js +2 -0
- package/dist/web/public/vendor/monaco/vs/lua-DtygF91M.js +1 -0
- package/dist/web/public/vendor/monaco/vs/m3-CsR4AuFi.js +1 -0
- package/dist/web/public/vendor/monaco/vs/main-BEx-Fmlo.js +15 -0
- package/dist/web/public/vendor/monaco/vs/main-DsK8pnKg.js +3 -0
- package/dist/web/public/vendor/monaco/vs/markdown-C_rD0bIw.js +1 -0
- package/dist/web/public/vendor/monaco/vs/mdx-CpzZIPHF.js +1 -0
- package/dist/web/public/vendor/monaco/vs/mips-CiYP61RB.js +1 -0
- package/dist/web/public/vendor/monaco/vs/monaco.contribution-9cKT3C7t.js +1 -0
- package/dist/web/public/vendor/monaco/vs/monaco.contribution-BE88ZNGY.js +1 -0
- package/dist/web/public/vendor/monaco/vs/monaco.contribution-BPhsneLd.js +1 -0
- package/dist/web/public/vendor/monaco/vs/monaco.contribution-BgRy6xDf.js +1 -0
- package/dist/web/public/vendor/monaco/vs/msdax-C38-sJlp.js +1 -0
- package/dist/web/public/vendor/monaco/vs/mysql-CdtbpvbG.js +1 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/cs.d.ts +1 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/cs.js +9 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/de.d.ts +1 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/de.js +9 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/es.d.ts +1 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/es.js +9 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/fr.d.ts +1 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/fr.js +9 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/it.d.ts +1 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/it.js +9 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/ja.d.ts +1 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/ja.js +9 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/ko.d.ts +1 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/ko.js +9 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/pl.d.ts +1 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/pl.js +9 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/pt-br.d.ts +1 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/pt-br.js +9 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/ru.d.ts +1 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/ru.js +9 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/tr.d.ts +1 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/tr.js +9 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/zh-cn.d.ts +1 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/zh-cn.js +9 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/zh-tw.d.ts +1 -0
- package/dist/web/public/vendor/monaco/vs/nls/lang/zh-tw.js +9 -0
- package/dist/web/public/vendor/monaco/vs/nls.messages-loader.js +1 -0
- package/dist/web/public/vendor/monaco/vs/objective-c-CntZFaHX.js +1 -0
- package/dist/web/public/vendor/monaco/vs/pascal-r6kuqfl_.js +1 -0
- package/dist/web/public/vendor/monaco/vs/pascaligo-BiXoTmXh.js +1 -0
- package/dist/web/public/vendor/monaco/vs/perl-DABw_TcH.js +1 -0
- package/dist/web/public/vendor/monaco/vs/pgsql-me_jFXeX.js +1 -0
- package/dist/web/public/vendor/monaco/vs/php-D_kh-9LK.js +1 -0
- package/dist/web/public/vendor/monaco/vs/pla-VfZjczW0.js +1 -0
- package/dist/web/public/vendor/monaco/vs/postiats-BBSzz8Pk.js +1 -0
- package/dist/web/public/vendor/monaco/vs/powerquery-Dt-g_2cc.js +1 -0
- package/dist/web/public/vendor/monaco/vs/powershell-B-7ap1zc.js +1 -0
- package/dist/web/public/vendor/monaco/vs/protobuf-BmtuEB1A.js +2 -0
- package/dist/web/public/vendor/monaco/vs/pug-BRpRNeEb.js +1 -0
- package/dist/web/public/vendor/monaco/vs/python-CqWUUgfu.js +1 -0
- package/dist/web/public/vendor/monaco/vs/qsharp-BzsFaUU9.js +1 -0
- package/dist/web/public/vendor/monaco/vs/r-f8dDdrp4.js +1 -0
- package/dist/web/public/vendor/monaco/vs/razor-hok5y9Km.js +1 -0
- package/dist/web/public/vendor/monaco/vs/redis-fvZQY4PI.js +1 -0
- package/dist/web/public/vendor/monaco/vs/redshift-45Et0LQi.js +1 -0
- package/dist/web/public/vendor/monaco/vs/restructuredtext-C7UUFKFD.js +1 -0
- package/dist/web/public/vendor/monaco/vs/ruby-CZO8zYTz.js +1 -0
- package/dist/web/public/vendor/monaco/vs/rust-Bfetafyc.js +1 -0
- package/dist/web/public/vendor/monaco/vs/sb-3GYllVck.js +1 -0
- package/dist/web/public/vendor/monaco/vs/scala-foMgrKo1.js +1 -0
- package/dist/web/public/vendor/monaco/vs/scheme-CHdMtr7p.js +1 -0
- package/dist/web/public/vendor/monaco/vs/scss-C1cmLt9V.js +3 -0
- package/dist/web/public/vendor/monaco/vs/shell-ClXCKCEW.js +1 -0
- package/dist/web/public/vendor/monaco/vs/solidity-MZ6ExpPy.js +1 -0
- package/dist/web/public/vendor/monaco/vs/sophia-DWkuSsPQ.js +1 -0
- package/dist/web/public/vendor/monaco/vs/sparql-AUGFYSyk.js +1 -0
- package/dist/web/public/vendor/monaco/vs/sql-32GpJSV2.js +1 -0
- package/dist/web/public/vendor/monaco/vs/st-CuDFIVZ_.js +1 -0
- package/dist/web/public/vendor/monaco/vs/swift-t-PfMj7W.js +1 -0
- package/dist/web/public/vendor/monaco/vs/systemverilog-Ch4vA8Yt.js +1 -0
- package/dist/web/public/vendor/monaco/vs/tcl-D74tq1nH.js +1 -0
- package/dist/web/public/vendor/monaco/vs/toggleHighContrast-qGX7E9o7.js +61 -0
- package/dist/web/public/vendor/monaco/vs/ts.worker-2QLmBukE.js +1 -0
- package/dist/web/public/vendor/monaco/vs/tsMode-B0S_kp2q.js +11 -0
- package/dist/web/public/vendor/monaco/vs/twig-C6taOxMV.js +1 -0
- package/dist/web/public/vendor/monaco/vs/typescript-_2t_511t.js +1 -0
- package/dist/web/public/vendor/monaco/vs/typespec-8OfoLt6R.js +1 -0
- package/dist/web/public/vendor/monaco/vs/vb-Dyb2648j.js +1 -0
- package/dist/web/public/vendor/monaco/vs/wgsl-BhLXMOR0.js +298 -0
- package/dist/web/public/vendor/monaco/vs/workers-BBttULjf.js +1 -0
- package/dist/web/public/vendor/monaco/vs/xml-cZjNDqDT.js +1 -0
- package/dist/web/public/vendor/monaco/vs/yaml-A1fOIdH6.js +1 -0
- package/dist/web/server.js +81 -16
- 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/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 +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 +386 -386
- package/docs/BENCHMARK_REPORT_zh.md +386 -386
- package/docs/DPA.md +65 -63
- 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 -67
- package/docs/Deployment_Guide_EN.md +1 -1
- package/docs/SECURITY_WHITEPAPER.md +2 -2
- package/docs/SELF-EVOLVE-GUIDE.md +1 -1
- package/docs/SWE_BENCH_REPORT.md +73 -55
- package/docs/TECHNICAL_SPEC_en.md +292 -292
- package/docs/TECHNICAL_SPEC_zh.md +292 -292
- package/docs/Technical_Manual_EN.md +1 -1
- package/docs/UPDATE_NOTES_en.md +159 -159
- package/docs/UPDATE_NOTES_zh.md +159 -159
- package/docs/UPGRADE_7.2.0.md +309 -309
- package/docs/UPGRADE_GUIDE_7_5.md +86 -86
- 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 -391
- 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 -208
- 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 -152
- 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 -271
- 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 -59
- package/docs//345/256/211/345/205/250/347/231/275/347/232/256/344/271/246_v7.2.0.md +84 -82
- 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 +404 -404
- package/package.json +12 -5
- package/templates/skills/api-design/SKILL.md +1 -1
- package/templates/skills/code-review/SKILL.md +1 -1
- package/templates/skills/dependency-upgrade/SKILL.md +1 -1
- package/templates/skills/doc-gen/SKILL.md +1 -1
- package/templates/skills/git-flow/SKILL.md +1 -1
- package/templates/skills/onboarding/SKILL.md +1 -1
- package/templates/skills/performance/SKILL.md +1 -1
- package/templates/skills/refactor/SKILL.md +1 -1
- package/templates/skills/security-audit/SKILL.md +1 -1
- package/templates/skills/test-gen/SKILL.md +1 -1
- package/tool-schema.json +197 -197
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# 飞虹 Code
|
|
1
|
+
# 飞虹 Code(对标 Muse Code,自研内核)产品开发文档
|
|
2
2
|
|
|
3
3
|
> 项目代号:**飞虹 Code / FeiHong Code**
|
|
4
4
|
> 文档类型:完整产品开发文档(定位 + 架构 + 模块 + 接口 + 数据模型 + 里程碑 + 落地计划)
|
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
|
|
30
30
|
- Meta 于 2026-08 发布 **Muse Code**(终端 AI 编程 Agent,基于 Muse Spark 1.2),对标 Claude Code / OpenAI Codex,主打多智能体并行、长时任务、仓库级代码变更,并采用低价按量付费策略(贡献者套餐便宜逾 10 倍,但需授权数据留存)。
|
|
31
31
|
- 该形态验证了「终端 Agent 自主完成完整软件工程任务」的市场价值,但**闭源、依赖 Meta 模型、数据留存策略对国内企业不友好**。
|
|
32
|
-
- 飞虹 Code
|
|
32
|
+
- 飞虹 Code 的目标:**参照其能力范式,自研一套自主可控、模型可切换、数据不出域、可私有化部署的终端编程智能体**,复用本团队 TS/Node 工程能力与飞扬企源企业管理方法学。
|
|
33
33
|
|
|
34
34
|
### 1.3 参照对象能力拆解(Muse Code)
|
|
35
35
|
|
|
36
|
-
| 能力维度 | Muse Code 实现 |
|
|
36
|
+
| 能力维度 | Muse Code 实现 | 我们是否覆盖 | 我们的差异点 |
|
|
37
37
|
|----------|----------------|--------------|--------------|
|
|
38
38
|
| 安装方式 | 单命令 `curl … | bash` | ✅ | 增加 `npm i -g` / 国内镜像源 |
|
|
39
39
|
| 多智能体并行 | 主代理 + 多个持久化子代理,隔离 worktree 并行 | ✅ | 子代理角色可配置(规划/编码/审查) |
|
|
@@ -518,6 +518,8 @@ FH_REQUIRE_APPROVAL=true
|
|
|
518
518
|
|
|
519
519
|
## 10. 开发里程碑
|
|
520
520
|
|
|
521
|
+
> **编号体系说明**:M0→M9.1 为**能力里程碑编号**(工程开发阶段),全部交付后冻结不再扩展;对外发布的 **7.x** 为**产品化成熟度版本号**(SemVer),与 M 编号解耦——产品化迭代(桌面版、SWE-bench harness、企业治理、自进化等)以 7.x 版本号持续演进,详见 [CHANGELOG.md](../CHANGELOG.md) 头部说明。
|
|
522
|
+
|
|
521
523
|
| 里程碑 | 周期(估) | 交付物 | 退出标准 |
|
|
522
524
|
|--------|----------|--------|----------|
|
|
523
525
|
| **M0 脚手架** | 3d | feature-first 工程结构、config/errors/logger、CLI 入口 | `fhcode --version` 可运行,构建通过 ✅(2026-08-10) |
|
|
@@ -1,9 +1,10 @@
|
|
|
1
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`(升级)、`docs/常见问题与故障排查.md`(FAQ)
|
|
7
8
|
|
|
8
9
|
---
|
|
9
10
|
|
|
@@ -15,304 +16,212 @@
|
|
|
15
16
|
- npm ≥ 9
|
|
16
17
|
- git(diff/rollback/并行 worktree 需要)
|
|
17
18
|
- Docker(仅 `FH_SANDBOX_MODE=container` 时需要)
|
|
19
|
+
- 可选:Ollama(本地模型)、faster-whisper(本地语音)
|
|
18
20
|
|
|
19
21
|
### 1.2 安装
|
|
20
22
|
|
|
21
23
|
```bash
|
|
22
|
-
#
|
|
24
|
+
# 方式一:npm 全局安装(推荐)
|
|
25
|
+
npm install -g feihong-code
|
|
26
|
+
fhcode --version # 应输出 7.6.0
|
|
27
|
+
|
|
28
|
+
# 方式二:源码构建
|
|
23
29
|
git clone https://github.com/wch887292/feihong-code.git
|
|
24
30
|
cd feihong-code
|
|
25
31
|
npm install
|
|
26
32
|
npm run build
|
|
33
|
+
node dist/cli/index.js --version # 7.6.0
|
|
27
34
|
|
|
28
|
-
#
|
|
29
|
-
npm
|
|
30
|
-
fhcode --version # 验证
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### 1.3 三秒上手
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
# 未配置模型时自动进入离线模式(Mock 驱动闭环),可直接体验
|
|
37
|
-
fhcode "写一个 hello.ts"
|
|
35
|
+
# 方式三:Electron 桌面版
|
|
36
|
+
npm run electron:build # 生成 Windows 安装包
|
|
38
37
|
|
|
39
|
-
#
|
|
40
|
-
|
|
41
|
-
fhcode "修复 src/auth.ts 中的 token 校验 bug"
|
|
38
|
+
# 方式四:Android APK(versionCode 8 / 7.6.0)
|
|
39
|
+
# 从发布渠道安装,配套桌面端使用
|
|
42
40
|
```
|
|
43
41
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
## 二、命令速查
|
|
42
|
+
### 1.3 首次配置
|
|
47
43
|
|
|
48
44
|
```bash
|
|
49
|
-
#
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
fhcode --stream "<需求>" 流式输出(任务过程实时可见)
|
|
53
|
-
fhcode --yes "<需求>" 跳过审批(危险操作需谨慎)
|
|
54
|
-
fhcode --lang zh|en 设置界面语言
|
|
55
|
-
|
|
56
|
-
# 只读技能
|
|
57
|
-
fhcode /plan "<目标>" 生成实现计划
|
|
58
|
-
fhcode /grill [路径] 红队式代码审查(文本)
|
|
59
|
-
fhcode review [路径] [--json] 结构化代码审查(--json 供 IDE/CI 消费)
|
|
60
|
-
fhcode /goal "<目标>" 分解并保存高层目标
|
|
61
|
-
|
|
62
|
-
# 会话管理(M3)
|
|
63
|
-
fhcode sessions 列出历史会话
|
|
64
|
-
fhcode resume <id> 从检查点续跑
|
|
65
|
-
fhcode diff [id] 查看会话/工作区变更
|
|
66
|
-
fhcode rollback <id> --yes 回滚会话改动(破坏性)
|
|
67
|
-
|
|
68
|
-
# 企业能力(M4)
|
|
69
|
-
fhcode whoami 当前租户/用户/角色/配额
|
|
70
|
-
fhcode policy 查看生效 RBAC 策略
|
|
71
|
-
fhcode audit [verify] 审计记录 / 哈希链校验
|
|
72
|
-
fhcode tenants 租户用量汇总
|
|
73
|
-
|
|
74
|
-
# 自我进化(M6/M8/M9)
|
|
75
|
-
fhcode model-stats 模型性能统计
|
|
76
|
-
fhcode experiences [路径] 经验库
|
|
77
|
-
fhcode code-write "<目标>" 自主编程
|
|
78
|
-
fhcode quality-gate [路径] 质量门禁审查
|
|
79
|
-
fhcode self-improve 自我改进统计
|
|
80
|
-
fhcode swe "<目标>" 全自动软件工程 Agent
|
|
81
|
-
fhcode team "<目标>" 多 agent 协作(共享任务板+消息总线)
|
|
82
|
-
|
|
83
|
-
# 生态
|
|
84
|
-
fhcode skill-market search "<关键词>" 搜索技能市场(agentskills.io)
|
|
85
|
-
fhcode skill-market install <技能名> 安装技能
|
|
86
|
-
fhcode skill-market list 列出本地技能
|
|
87
|
-
fhcode plugin install <目录|git URL> 安装插件
|
|
88
|
-
fhcode plugin list 列出插件
|
|
89
|
-
fhcode doctor 环境自检
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
**常用 flag**:`--parallel`(并行 worktree)/ `--repo`(swe 目标仓库/市场源)/ `--context-file <path>`(附加文件上下文)/ `--max-iterations N` / `--max-retries N` / `--plan-only` / `--verify-only` / `--json`。
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## 三、模型配置
|
|
45
|
+
# 复制配置模板并填写模型 API Key
|
|
46
|
+
cp .env.example .env
|
|
47
|
+
# 编辑 .env:至少配置 FH_PROVIDERS 中一个 provider 的 apiKey
|
|
97
48
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
1. `FH_PROVIDERS`(JSON 数组,最高优先级)
|
|
101
|
-
2. `fhcode.config.json`(项目配置文件 `models.providers`)
|
|
102
|
-
3. 单环境变量 `FH_MODEL_*`
|
|
103
|
-
|
|
104
|
-
### 3.2 Ollama 本地模型
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
export FH_MODEL_NAME=qwen3:8b
|
|
108
|
-
export FH_MODEL_TYPE=ollama
|
|
109
|
-
export FH_MODEL_BASE_URL=http://localhost:11434
|
|
110
|
-
export FH_MODEL_TAGS=code-gen,reasoning,local
|
|
49
|
+
# 环境自检(可选)
|
|
50
|
+
fhcode doctor
|
|
111
51
|
```
|
|
112
52
|
|
|
113
|
-
###
|
|
53
|
+
### 1.4 第一个任务
|
|
114
54
|
|
|
115
55
|
```bash
|
|
116
|
-
#
|
|
117
|
-
|
|
118
|
-
# 通义千问
|
|
119
|
-
export FH_PROVIDERS='[{"name":"qwen","type":"openai-compatible","baseUrl":"https://dashscope.aliyuncs.com/compatible-mode/v1","apiKey":"...","tags":["code-gen","long-context"]}]'
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### 3.4 路由策略
|
|
56
|
+
# 直接下达自然语言任务
|
|
57
|
+
fhcode "给我写一个 Node.js 的 hello world HTTP 服务,监听 3000 端口"
|
|
123
58
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
59
|
+
# 查看会话与回滚
|
|
60
|
+
fhcode sessions # 列出历史会话
|
|
61
|
+
fhcode diff <会话ID> # 查看本次改动
|
|
62
|
+
fhcode rollback <会话ID> # 回滚改动
|
|
127
63
|
```
|
|
128
|
-
低成本标签 `cheap` 的 provider 会优先承担 `swe`/并行子任务(P1-1 模型分工)。
|
|
129
64
|
|
|
130
65
|
---
|
|
131
66
|
|
|
132
|
-
##
|
|
67
|
+
## 二、CLI 命令手册
|
|
68
|
+
|
|
69
|
+
| 命令 | 说明 | 示例 |
|
|
70
|
+
|------|------|------|
|
|
71
|
+
| `fhcode <目标>` | 直接执行自然语言任务(默认入口) | `fhcode "修复登录接口的 bug"` |
|
|
72
|
+
| `fhcode sessions` | 列出历史会话 | `fhcode sessions` |
|
|
73
|
+
| `fhcode resume <id>` | 续跑指定会话 | `fhcode resume 3f9a…` |
|
|
74
|
+
| `fhcode diff <id>` | 查看会话产生的代码改动 | `fhcode diff 3f9a…` |
|
|
75
|
+
| `fhcode rollback <id>` | 回滚会话改动 | `fhcode rollback 3f9a…` |
|
|
76
|
+
| `fhcode whoami` | 查看当前身份与角色 | `fhcode whoami` |
|
|
77
|
+
| `fhcode policy` | 查看/管理权限策略 | `fhcode policy` |
|
|
78
|
+
| `fhcode audit` | 审计日志;`--verify` 校验哈希链 | `fhcode audit --verify` |
|
|
79
|
+
| `fhcode tenants` | 多租户管理 | `fhcode tenants` |
|
|
80
|
+
| `fhcode doctor` | 环境自检(依赖/权限/网络) | `fhcode doctor` |
|
|
81
|
+
| `fhcode tui` | 进入多面板终端 UI | `fhcode tui` |
|
|
82
|
+
| `fhcode serve [port]` | 启动 Web 控制台 | `fhcode serve 8080` |
|
|
83
|
+
| `fhcode plugin <action>` | 插件管理(install/list/remove) | `fhcode plugin install xxx` |
|
|
84
|
+
| `fhcode skill-market <action>` | 技能市场(search/install) | `fhcode skill-market search lint` |
|
|
85
|
+
| `fhcode skill-new <name>` | 新建技能(SKILL.md 模板) | `fhcode skill-new my-lint` |
|
|
86
|
+
| `fhcode review <path>` | 代码审查 | `fhcode review src/` |
|
|
87
|
+
| `fhcode team <目标>` | 多 agent 团队协作 | `fhcode team "完成这个模块"` |
|
|
88
|
+
| `fhcode code-write <目标>` | 纯代码生成 | `fhcode code-write "写一个排序函数"` |
|
|
89
|
+
| `fhcode quality-gate <path>` | 质量门禁检查 | `fhcode quality-gate src/` |
|
|
90
|
+
| `fhcode self-improve` | 查看自我改进学习沉淀 | `fhcode self-improve` |
|
|
91
|
+
| `fhcode self-evolve <action>` | 自我迭代运维(status/report) | `fhcode self-evolve status` |
|
|
92
|
+
| `fhcode model-stats` | 模型用量与成本统计 | `fhcode model-stats` |
|
|
93
|
+
| `fhcode experiences` | 浏览统一经验库 | `fhcode experiences` |
|
|
94
|
+
| `fhcode harness …` | SWE-bench 评测 | `fhcode harness --split lite --limit 1 --mode mock` |
|
|
95
|
+
| `fhcode swe <目标>` | 全自动软件工程任务 | `fhcode swe "实现排序功能"` |
|
|
96
|
+
| 内置技能 | `/plan`(规划)`/grill`(拷问)`/self-heal`(自愈) | `fhcode /plan "实现登录"` |
|
|
133
97
|
|
|
134
|
-
|
|
98
|
+
---
|
|
135
99
|
|
|
136
|
-
|
|
137
|
-
# 基础
|
|
138
|
-
fhcode "实现一个 HTTP 服务器,监听 3000 端口"
|
|
139
|
-
# 流式 + 指定上下文文件
|
|
140
|
-
fhcode --stream --context-file src/auth.ts "审查并修复此文件中的安全问题"
|
|
141
|
-
```
|
|
100
|
+
## 三、核心功能
|
|
142
101
|
|
|
143
|
-
###
|
|
102
|
+
### 3.1 对话编程
|
|
144
103
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
--max-tasks 3 --max-iterations 5
|
|
149
|
-
# --plan-only 仅规划 / --verify-only 仅验证 / --max-retries N 自愈重试
|
|
150
|
-
```
|
|
104
|
+
- 纯文本输出 + 实时思考过程展示
|
|
105
|
+
- 支持上下文压缩、检查点续跑(会话中途断线可 resume)
|
|
106
|
+
- 成本熔断:超预算自动止损(`FH_BUDGET_USD`)
|
|
151
107
|
|
|
152
|
-
###
|
|
108
|
+
### 3.2 代码补全(Web / VS Code)
|
|
153
109
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
110
|
+
- 多候选补全(按置信度 Top3)
|
|
111
|
+
- temperature 分层(quick 0 / full 0.3)
|
|
112
|
+
- 跨文件上下文(import 关联 + 工作区实时文档)
|
|
113
|
+
- 接受补全后自动 lint(语法错误实时波浪线提示)
|
|
158
114
|
|
|
159
|
-
###
|
|
115
|
+
### 3.3 全自动软件工程(SWE)
|
|
160
116
|
|
|
161
117
|
```bash
|
|
162
|
-
|
|
163
|
-
fhcode skill-market search "code review"
|
|
164
|
-
fhcode skill-market install code-review
|
|
165
|
-
# 安装插件(打包 skills+hooks+MCP)
|
|
166
|
-
fhcode plugin install ./my-plugin
|
|
118
|
+
fhcode swe "给项目添加一个 markdown 转 HTML 的 CLI 工具"
|
|
167
119
|
```
|
|
168
120
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
```bash
|
|
172
|
-
fhcode sessions # 找到会话 id
|
|
173
|
-
fhcode resume <id> # 中断后续跑
|
|
174
|
-
fhcode diff <id> # 查看改动
|
|
175
|
-
fhcode rollback <id> --yes # 回滚(破坏性)
|
|
176
|
-
```
|
|
121
|
+
流程:读取仓库结构 → 规划 → 实现 → 构建/测试验证 → 失败自动自愈重试 → 输出报告。验证支持测试(`--verifier test`)与文件级(`--verifier file`)两种模式。
|
|
177
122
|
|
|
178
|
-
### 4
|
|
123
|
+
### 3.4 SWE 评测(harness)
|
|
179
124
|
|
|
180
125
|
```bash
|
|
181
|
-
|
|
182
|
-
|
|
126
|
+
# 运行 mock 管道(无网络也可见证)
|
|
127
|
+
fhcode harness --split lite --limit 1 --mode mock --verifier file --report bench/run-xxx.md
|
|
128
|
+
|
|
129
|
+
# 使用官方测试验证器
|
|
130
|
+
fhcode harness --split lite --limit 1 --verifier test --test-command "npm run test"
|
|
183
131
|
```
|
|
184
132
|
|
|
185
|
-
|
|
133
|
+
差分语义:修复前确认用例原本失败 → 修复后 FAIL_TO_PASS 全过 → PASS_TO_PASS 回归不破坏既有功能。
|
|
186
134
|
|
|
187
|
-
|
|
135
|
+
### 3.5 团队协作
|
|
188
136
|
|
|
189
137
|
```bash
|
|
190
|
-
fhcode
|
|
138
|
+
fhcode team "让两个 agent 分别实现前端和后端"
|
|
191
139
|
```
|
|
192
|
-
- TUI:顶部 sticky header 显示 模式/runId/迭代/成本/状态;内容区滚动;滚轮可回看
|
|
193
|
-
- 输入需求回车执行;`exit`/`quit`/Ctrl+D 退出
|
|
194
|
-
- 支持 `/plan` `/grill` `/goal` 斜杠技能
|
|
195
140
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
## 六、VSCode 扩展
|
|
199
|
-
|
|
200
|
-
在 `vscode-extension/` 目录打包(`npx @vscode/vsce package`)或 F5 调试加载:
|
|
201
|
-
|
|
202
|
-
| 命令 | 说明 |
|
|
203
|
-
|------|------|
|
|
204
|
-
| `fhcode: 运行任务(附带选区上下文)` | 选中代码自动注入 `<selection>` 上下文 |
|
|
205
|
-
| `fhcode: 内联评审当前文件` | `review --json` → 编辑器内联诊断(红/黄/蓝) |
|
|
206
|
-
| `fhcode: 就地查看工作区 diff` | 原生 diff 编辑器 HEAD↔工作区 |
|
|
207
|
-
| `fhcode: 查看最近任务输出` | 聚焦 Output Channel |
|
|
208
|
-
|
|
209
|
-
配置:`fhcode.binaryPath` / `fhcode.offline` / `fhcode.reviewOnSave`(保存自动评审,默认开)。
|
|
210
|
-
|
|
211
|
-
---
|
|
141
|
+
- 多 agent 消息总线协作
|
|
142
|
+
- 协作总览面板:任务状态漏斗 + 成员负载分布
|
|
212
143
|
|
|
213
|
-
|
|
144
|
+
### 3.6 自我迭代(统一经验库)
|
|
214
145
|
|
|
215
146
|
```bash
|
|
216
|
-
fhcode
|
|
217
|
-
#
|
|
147
|
+
fhcode self-improve # 查看学习沉淀(反思 + 经验库 + 成功率)
|
|
148
|
+
fhcode self-evolve status # 运维视图:失败记录/技能/共享经验库
|
|
149
|
+
fhcode experiences # 浏览经验库内容
|
|
218
150
|
```
|
|
219
151
|
|
|
220
|
-
|
|
152
|
+
- 失败、解决、技能沉淀自动写入共享经验库 `~/.feihong-code/experiences/experiences.jsonl`
|
|
153
|
+
- orchestrator 在后续任务自动检索注入经验,越用越强
|
|
221
154
|
|
|
222
|
-
|
|
155
|
+
### 3.7 语音编程
|
|
223
156
|
|
|
224
|
-
|
|
225
|
-
TOKEN=$(echo $FH_WEB_TOKEN)
|
|
226
|
-
# 提交任务
|
|
227
|
-
curl -X POST http://localhost:8080/api/tasks \
|
|
228
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
229
|
-
-d '{"goal":"写一个 hello.ts"}'
|
|
230
|
-
# 查询
|
|
231
|
-
curl http://localhost:8080/api/tasks -H "Authorization: Bearer $TOKEN"
|
|
232
|
-
curl http://localhost:8080/api/tasks/<id> -H "Authorization: Bearer $TOKEN"
|
|
233
|
-
# 注册 webhook(任务状态回调,可被 CI 调度)
|
|
234
|
-
curl -X POST http://localhost:8080/api/webhook \
|
|
235
|
-
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
236
|
-
-d '{"url":"https://your-ci.example.com/hook"}'
|
|
237
|
-
```
|
|
157
|
+
支持口头指令 → 编辑器/终端动作:新建/打开文件、复制/粘贴/剪切、替换、取消注释、切换终端/侧边栏/全屏、解释代码等。适合现场调试场景(如「打开终端」「上下反了」等口语化指令)。
|
|
238
158
|
|
|
239
159
|
---
|
|
240
160
|
|
|
241
|
-
##
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
161
|
+
## 四、配置
|
|
162
|
+
|
|
163
|
+
### 4.1 环境变量(.env)
|
|
164
|
+
|
|
165
|
+
| 变量 | 说明 | 默认 |
|
|
166
|
+
|------|------|------|
|
|
167
|
+
| `FH_HOME` | 数据目录 | `~/.feihong-code` |
|
|
168
|
+
| `FH_LOG_DIR` | 会话日志目录 | `~/.feihong-code/sessions` |
|
|
169
|
+
| `FH_PROVIDERS` | 模型供应商 JSON 数组(baseURL/apiKey/tags/costPer1k) | 空 |
|
|
170
|
+
| `FH_MODEL_STRATEGY` | 路由策略:cost / capability / latency | cost |
|
|
171
|
+
| `FH_BUDGET_USD` | 单任务预算上限(美元) | 0.5 |
|
|
172
|
+
| `FH_SANDBOX_MODE` | 沙箱模式:read-only / workspace-write / danger-full-access / container | workspace-write |
|
|
173
|
+
| `FH_SHELL_ALLOW` | Shell 白名单(逗号分隔) | git,npm,pnpm,node,ls,cat |
|
|
174
|
+
| `FH_REQUIRE_APPROVAL` | 危险操作是否需审批 | true |
|
|
175
|
+
| `FH_NETWORK_DENY` / `FH_NETWORK_ALLOW` | 网络域名黑白名单 | 空 |
|
|
176
|
+
| `FH_HOOKS` | hooks 配置(确定性控制) | 空 |
|
|
177
|
+
| `FH_MCP_SERVERS` | MCP 服务器配置 | 空 |
|
|
178
|
+
|
|
179
|
+
### 4.2 沙箱模式速查
|
|
180
|
+
|
|
181
|
+
| 模式 | 适用场景 |
|
|
182
|
+
|------|---------|
|
|
183
|
+
| `read-only` | 只读勘察、审计场景 |
|
|
184
|
+
| `workspace-write` | 默认;日常开发 |
|
|
185
|
+
| `danger-full-access` | 需要全权限的自动化脚本 |
|
|
186
|
+
| `container` | 执行不可信代码(Docker 断网隔离) |
|
|
252
187
|
|
|
253
188
|
---
|
|
254
189
|
|
|
255
|
-
##
|
|
256
|
-
|
|
257
|
-
```bash
|
|
258
|
-
# 沙箱模式
|
|
259
|
-
export FH_SANDBOX_MODE=workspace-write # 默认
|
|
260
|
-
export FH_SANDBOX_MODE=read-only # 只读勘察(禁写禁执行)
|
|
261
|
-
export FH_SANDBOX_MODE=danger-full-access # 全权限(危险命令仍拦截)
|
|
262
|
-
export FH_SANDBOX_MODE=container # Docker 容器内执行 shell
|
|
263
|
-
export FH_SANDBOX_IMAGE=node:22-alpine # 容器镜像
|
|
264
|
-
|
|
265
|
-
# 网络域名规则
|
|
266
|
-
export FH_NETWORK_DENY=evil.example.com
|
|
267
|
-
# export FH_NETWORK_ALLOW=api.example.com
|
|
268
|
-
|
|
269
|
-
# 确定性 hooks(PreToolUse 非零退出拦截)
|
|
270
|
-
export FH_HOOKS='[{"event":"PreToolUse","command":"node scripts/guard.js","tools":["run_shell"]}]'
|
|
271
|
-
```
|
|
190
|
+
## 五、常见问题(FAQ)
|
|
272
191
|
|
|
273
|
-
|
|
192
|
+
**Q1:`fhcode --version` 显示的不是 7.6.0?**
|
|
193
|
+
全局缓存旧包,先 `npm uninstall -g feihong-code` 再重装;源码方式先 `npm run build` 重新构建。
|
|
274
194
|
|
|
275
|
-
|
|
195
|
+
**Q2:没有模型 API Key 怎么办?**
|
|
196
|
+
使用 Ollama 本地模型(`FH_PROVIDERS` 配置 type 为 `ollama`),或使用内置 Mock 模式离线体验。
|
|
276
197
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
npm run build && npm run eval
|
|
198
|
+
**Q3:任务执行到一半断了?**
|
|
199
|
+
`fhcode sessions` 找到会话 ID,`fhcode resume <id>` 续跑;checkpoint 会自动保存进度。
|
|
280
200
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
node scripts/eval.mjs --baseline bench/eval-baseline.json
|
|
201
|
+
**Q4:改了文件想撤销?**
|
|
202
|
+
`fhcode diff <id>` 查看改动,`fhcode rollback <id>` 一键回滚(基于 git)。
|
|
284
203
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
node scripts/eval-swebench.mjs --split lite --limit 5 --run --report report.md
|
|
288
|
-
FH_SWEBENCH_DATA_URL=https://mirror.example/swebench.json node scripts/eval-swebench.mjs --limit 3
|
|
289
|
-
```
|
|
204
|
+
**Q5:如何保证 AI 不乱改文件 / 不执行危险命令?**
|
|
205
|
+
默认 `workspace-write` 模式:仅工作区可写、Shell 白名单 + 审批;网络域名规则可拦截目标站点;`FH_REQUIRE_APPROVAL=true` 时危险操作需确认。
|
|
290
206
|
|
|
291
|
-
|
|
207
|
+
**Q6:经验库会不会无限膨胀?**
|
|
208
|
+
不会。统一经验库用稳定 id + upsert 合并:同一模式重复出现只累加 `sessionCount` 并更新成功率,不新增冗余条目。
|
|
292
209
|
|
|
293
|
-
|
|
210
|
+
**Q7:SWE 跑分准吗?**
|
|
211
|
+
诚实口径:自建任务集真实模型跑分 5/5 全过;mock 管道可离线复现;官方 SWE-bench(Python)受网络/环境限制尚未产出,详见 `docs/SWE_BENCH_REPORT.md`。
|
|
294
212
|
|
|
295
|
-
|
|
296
|
-
|------|------|
|
|
297
|
-
| 未配置模型却想用真实模式 | `FH_PROVIDERS` 或 `FH_MODEL_NAME` 配置后自动进入真实模式 |
|
|
298
|
-
| 任务超预算中止 | 调高 `FH_BUDGET_USD` 或角色策略 `maxCostUsd`,用 `resume` 续跑 |
|
|
299
|
-
| 配额拒绝(QUOTA_EXCEEDED) | 调整 `FH_TENANT_BUDGET_USD` 或 policy 的 tenantDailyBudgetUsd |
|
|
300
|
-
| review 输出为空 | 确认路径为文件或目录且含受支持扩展名(ts/js/tsx/jsx/json/md/py/go/java) |
|
|
301
|
-
| 技能市场拉取失败 | 检查网络或设 `FH_SWEBENCH_DATA_URL`/`--repo` 镜像源 |
|
|
302
|
-
| 中文/英文切换 | `fhcode --lang en` 或 `FHCODE_LANG=en` |
|
|
213
|
+
**更多故障排查**:见 `docs/常见问题与故障排查.md`、错误码 `docs/error-codes.md`。
|
|
303
214
|
|
|
304
215
|
---
|
|
305
216
|
|
|
306
|
-
##
|
|
217
|
+
## 六、企业部署
|
|
307
218
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
# 日志目录:~/.feihong-code/sessions/<runId>.jsonl(事件日志)
|
|
313
|
-
# 检查点:~/.feihong-code/sessions/<runId>.session.json
|
|
314
|
-
```
|
|
219
|
+
- 私有化部署:Docker 镜像 + `FH_HOME` 数据卷挂载,内网隔离
|
|
220
|
+
- 安全治理:RBAC(whoami/policy)、审计哈希链(audit --verify)、多租户(tenants)、SBOM(npm run security)
|
|
221
|
+
- 合规材料:安全白皮书(SOC2/ISO27001 自评估)`docs/SECURITY_WHITEPAPER.md`、数据处理协议 DPA `docs/DPA.md`
|
|
222
|
+
- 详细部署:`docs/部署说明书.md`、`docs/Deployment_Guide_EN.md`
|
|
315
223
|
|
|
316
224
|
---
|
|
317
225
|
|
|
318
|
-
|
|
226
|
+
*晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹*
|
|
227
|
+
*2026-08-28 · 使用说明书 v7.6.0*
|