feihong-code 7.5.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +36 -22
  2. package/.github/ISSUE_TEMPLATE/config.yml +10 -13
  3. package/.github/ISSUE_TEMPLATE/feature_request.md +38 -13
  4. package/.github/PULL_REQUEST_TEMPLATE.md +65 -30
  5. package/.github/workflows/ci.yml +193 -180
  6. package/.github/workflows/release.yml +203 -200
  7. package/.github/workflows/swebench-real.yml +84 -0
  8. package/CHANGELOG.md +117 -94
  9. package/CONTRIBUTING.md +61 -5
  10. package/README.md +636 -609
  11. package/README.self-evolve.md +279 -274
  12. package/dist/agent/change-manager.js +1 -1
  13. package/dist/agent/code-rag.js +1 -1
  14. package/dist/agent/code-review.js +1 -1
  15. package/dist/agent/code-writer.js +1 -1
  16. package/dist/agent/completion-postprocess.js +1 -1
  17. package/dist/agent/context-compactor.js +11 -0
  18. package/dist/agent/context-compactor.js.map +1 -1
  19. package/dist/agent/custom-agent.js +52 -52
  20. package/dist/agent/design-to-code.js +40 -40
  21. package/dist/agent/experience.js +1 -1
  22. package/dist/agent/layered-memory.js +1 -1
  23. package/dist/agent/lint.js +1 -1
  24. package/dist/agent/multi-agent.js +44 -44
  25. package/dist/agent/orchestrator.js +93 -18
  26. package/dist/agent/orchestrator.js.map +1 -1
  27. package/dist/agent/parallel-orchestrator.js +1 -1
  28. package/dist/agent/planner.js +8 -3
  29. package/dist/agent/planner.js.map +1 -1
  30. package/dist/agent/prompts.js +2 -2
  31. package/dist/agent/quality-gate.js +1 -1
  32. package/dist/agent/repo-context.js +1 -1
  33. package/dist/agent/repo-reader.js +1 -1
  34. package/dist/agent/repo-underwriter.js +1 -1
  35. package/dist/agent/self-correction.js +1 -1
  36. package/dist/agent/self-heal.js +5 -0
  37. package/dist/agent/self-heal.js.map +1 -1
  38. package/dist/agent/self-improver.js +1 -1
  39. package/dist/agent/subagent-summary.js +1 -1
  40. package/dist/agent/subagent.js +1 -1
  41. package/dist/agent/swe-agent.js +1 -1
  42. package/dist/agent/swe-verifier.js +1 -1
  43. package/dist/agent/symbol-index.js +1 -1
  44. package/dist/agent/team.js +1 -1
  45. package/dist/agent/type-checker.js +1 -1
  46. package/dist/cli/commands.js +7 -0
  47. package/dist/cli/commands.js.map +1 -1
  48. package/dist/cli/index.js +57 -2
  49. package/dist/cli/index.js.map +1 -1
  50. package/dist/cli/repl.js +1 -1
  51. package/dist/cli/run.js +40 -3
  52. package/dist/cli/run.js.map +1 -1
  53. package/dist/cli/self-evolve-cli.js +168 -0
  54. package/dist/cli/tui-run.js +1 -1
  55. package/dist/cli/tui.js +1 -1
  56. package/dist/cli/version.js +3 -3
  57. package/dist/cli/version.js.map +1 -1
  58. package/dist/enterprise/audit.js +1 -1
  59. package/dist/enterprise/index.js +1 -1
  60. package/dist/enterprise/policy.js +1 -1
  61. package/dist/enterprise/quota.js +1 -1
  62. package/dist/enterprise/tenant.js +1 -1
  63. package/dist/harness/executor.js +1 -1
  64. package/dist/harness/index.js +1 -1
  65. package/dist/harness/loader.js +1 -1
  66. package/dist/harness/types.js +1 -1
  67. package/dist/harness/verifier.js +52 -12
  68. package/dist/harness/verifier.js.map +1 -1
  69. package/dist/hello.js +14 -0
  70. package/dist/hello.js.map +1 -0
  71. package/dist/integrations/feishu-bridge.js +348 -0
  72. package/dist/integrations/feishu-bridge.js.map +1 -0
  73. package/dist/integrations/github-mcp.js +137 -0
  74. package/dist/integrations/github-mcp.js.map +1 -0
  75. package/dist/integrations/wechat-bridge.js +499 -0
  76. package/dist/integrations/wechat-bridge.js.map +1 -0
  77. package/dist/integrations/yuanbao-bridge.js +326 -0
  78. package/dist/integrations/yuanbao-bridge.js.map +1 -0
  79. package/dist/lsp/lsp-client.js +1 -1
  80. package/dist/memory/honcho-store.js +231 -0
  81. package/dist/memory/honcho-store.js.map +1 -0
  82. package/dist/models/model-router.js +1 -1
  83. package/dist/models/model.dto.js +1 -1
  84. package/dist/models/providers/ollama.provider.js +1 -1
  85. package/dist/models/providers/openai-compatible.provider.js +1 -1
  86. package/dist/plugins/plugin-loader.js +1 -1
  87. package/dist/runtime/event-log.js +1 -1
  88. package/dist/runtime/git.js +1 -1
  89. package/dist/runtime/hooks.js +71 -4
  90. package/dist/runtime/hooks.js.map +1 -1
  91. package/dist/runtime/session-persist.js +1 -1
  92. package/dist/runtime/worktree.js +1 -1
  93. package/dist/self-evolve/hook.ts +80 -0
  94. package/dist/self-evolve/manager.d.ts +8 -0
  95. package/dist/self-evolve/manager.js +517 -401
  96. package/dist/self-evolve/self-heal-scheduler.js +160 -0
  97. package/dist/self-evolve/self-heal-scheduler.js.map +1 -0
  98. package/dist/shared/concurrency.js +1 -1
  99. package/dist/shared/config.js +4 -2
  100. package/dist/shared/config.js.map +1 -1
  101. package/dist/shared/errors.js +1 -1
  102. package/dist/shared/i18n.js +1 -1
  103. package/dist/shared/i18n.js.map +1 -1
  104. package/dist/shared/log-rotator.js +238 -0
  105. package/dist/shared/log-rotator.js.map +1 -0
  106. package/dist/shared/secure-store.js +12 -5
  107. package/dist/shared/secure-store.js.map +1 -1
  108. package/dist/shared/sqlite-store.js +512 -0
  109. package/dist/shared/sqlite-store.js.map +1 -0
  110. package/dist/shared/types.js +1 -1
  111. package/dist/skills/goal.js +1 -1
  112. package/dist/skills/grill.js +1 -1
  113. package/dist/skills/plan.js +1 -1
  114. package/dist/skills/pua-hooks.js +273 -0
  115. package/dist/skills/pua-hooks.js.map +1 -0
  116. package/dist/skills/self-heal.js +9 -3
  117. package/dist/skills/self-heal.js.map +1 -1
  118. package/dist/skills/skill-loader.js +1 -1
  119. package/dist/skills/skill-market.js +84 -8
  120. package/dist/skills/skill-market.js.map +1 -1
  121. package/dist/tools/analysis/code-analyzer.js +1 -1
  122. package/dist/tools/docker-sandbox.js +212 -0
  123. package/dist/tools/docker-sandbox.js.map +1 -0
  124. package/dist/tools/file/edit.tool.js +18 -3
  125. package/dist/tools/file/edit.tool.js.map +1 -1
  126. package/dist/tools/file/list.tool.js +1 -1
  127. package/dist/tools/file/read.tool.js +1 -1
  128. package/dist/tools/file/write.tool.js +1 -1
  129. package/dist/tools/generator/code-generator.js +1 -1
  130. package/dist/tools/generator/test-generator.js +1 -1
  131. package/dist/tools/index.js +1 -1
  132. package/dist/tools/mcp/index.js +1 -1
  133. package/dist/tools/mcp/mcp-client.js +1 -1
  134. package/dist/tools/safe-path.js +1 -1
  135. package/dist/tools/search/grep.tool.js +1 -1
  136. package/dist/tools/shell/exec.js +1 -1
  137. package/dist/tools/shell/run-shell.tool.js +1 -1
  138. package/dist/tools/skills/load-skill.tool.js +1 -1
  139. package/dist/tools/tool.registry.js +10 -1
  140. package/dist/tools/tool.registry.js.map +1 -1
  141. package/dist/tools/verify/build-check.tool.js +1 -1
  142. package/dist/tools/verify/test-run.tool.js +1 -1
  143. package/dist/tools/web/web.tool.js +1 -1
  144. package/dist/voice/voice-programming.js +32 -6
  145. package/dist/voice/voice-programming.js.map +1 -1
  146. package/dist/web/auth.js +34 -2
  147. package/dist/web/auth.js.map +1 -1
  148. package/dist/web/channels.js +1 -1
  149. package/dist/web/public/css/style.css +1751 -1724
  150. package/dist/web/public/favicon.svg +11 -0
  151. package/dist/web/public/index.html +1246 -1242
  152. package/dist/web/public/js/api.js +558 -555
  153. package/dist/web/public/js/app.js +2233 -2210
  154. package/dist/web/public/js/mock-api.js +259 -234
  155. package/dist/web/public/js/monaco-editor.js +363 -363
  156. package/dist/web/public/js/ui.js +2217 -2251
  157. package/dist/web/public/js/utils.js +214 -214
  158. package/dist/web/public/manifest.json +59 -59
  159. package/dist/web/public/robots.txt +14 -0
  160. package/dist/web/public/service-worker.js +149 -173
  161. package/dist/web/public/vendor/monaco/vs/abap-D-t0cyap.js +1 -0
  162. package/dist/web/public/vendor/monaco/vs/apex-CcIm7xu6.js +1 -0
  163. package/dist/web/public/vendor/monaco/vs/assets/css.worker-URu8fCFR.js +97 -0
  164. package/dist/web/public/vendor/monaco/vs/assets/editor.worker-lj3bdIIn.js +30 -0
  165. package/dist/web/public/vendor/monaco/vs/assets/editorWebWorkerMain-CA_vMoUU.js +30 -0
  166. package/dist/web/public/vendor/monaco/vs/assets/html.worker-D1SL3iM8.js +474 -0
  167. package/dist/web/public/vendor/monaco/vs/assets/json.worker-CoJx_OPf.js +62 -0
  168. package/dist/web/public/vendor/monaco/vs/assets/ts.worker-BWKtMYOk.js +67722 -0
  169. package/dist/web/public/vendor/monaco/vs/azcli-BA0tQDCg.js +1 -0
  170. package/dist/web/public/vendor/monaco/vs/basic-languages/monaco.contribution.js +1 -0
  171. package/dist/web/public/vendor/monaco/vs/bat-C397hTD6.js +1 -0
  172. package/dist/web/public/vendor/monaco/vs/bicep-DF5aW17k.js +2 -0
  173. package/dist/web/public/vendor/monaco/vs/cameligo-plsz8qhj.js +1 -0
  174. package/dist/web/public/vendor/monaco/vs/clojure-Y2auQMzK.js +1 -0
  175. package/dist/web/public/vendor/monaco/vs/coffee-Bu45yuWE.js +1 -0
  176. package/dist/web/public/vendor/monaco/vs/cpp-CkKPQIni.js +1 -0
  177. package/dist/web/public/vendor/monaco/vs/csharp-CX28MZyh.js +1 -0
  178. package/dist/web/public/vendor/monaco/vs/csp-D8uWnyxW.js +1 -0
  179. package/dist/web/public/vendor/monaco/vs/css-CaeNmE3S.js +3 -0
  180. package/dist/web/public/vendor/monaco/vs/css.worker-CyhWkhHo.js +1 -0
  181. package/dist/web/public/vendor/monaco/vs/cssMode-CV6Ay48H.js +1 -0
  182. package/dist/web/public/vendor/monaco/vs/cypher-DVThT8BS.js +1 -0
  183. package/dist/web/public/vendor/monaco/vs/dart-CmGfCvrO.js +1 -0
  184. package/dist/web/public/vendor/monaco/vs/dockerfile-CZqqYdch.js +1 -0
  185. package/dist/web/public/vendor/monaco/vs/ecl-30fUercY.js +1 -0
  186. package/dist/web/public/vendor/monaco/vs/editor/editor.main.css +1 -0
  187. package/dist/web/public/vendor/monaco/vs/editor/editor.main.js +1 -0
  188. package/dist/web/public/vendor/monaco/vs/editor/editor.worker.js +1 -0
  189. package/dist/web/public/vendor/monaco/vs/editor-KLE6jdfb.js +831 -0
  190. package/dist/web/public/vendor/monaco/vs/editor.js +1 -0
  191. package/dist/web/public/vendor/monaco/vs/editorWorkerHost-fVE1cjcC.js +35 -0
  192. package/dist/web/public/vendor/monaco/vs/elixir-xjPaIfzF.js +1 -0
  193. package/dist/web/public/vendor/monaco/vs/flow9-DqtmStfK.js +1 -0
  194. package/dist/web/public/vendor/monaco/vs/freemarker2-FWreY7v7.js +3 -0
  195. package/dist/web/public/vendor/monaco/vs/fsharp-BOMdg4U1.js +1 -0
  196. package/dist/web/public/vendor/monaco/vs/go-D_hbi-Jt.js +1 -0
  197. package/dist/web/public/vendor/monaco/vs/graphql-CKUU4kLG.js +1 -0
  198. package/dist/web/public/vendor/monaco/vs/handlebars-CZi4pHCH.js +1 -0
  199. package/dist/web/public/vendor/monaco/vs/hcl-DTaboeZW.js +1 -0
  200. package/dist/web/public/vendor/monaco/vs/html-j_7ZTNRU.js +1 -0
  201. package/dist/web/public/vendor/monaco/vs/html.worker-CA3iAimZ.js +1 -0
  202. package/dist/web/public/vendor/monaco/vs/htmlMode-27by_KM4.js +1 -0
  203. package/dist/web/public/vendor/monaco/vs/index-049xrXrp.js +1 -0
  204. package/dist/web/public/vendor/monaco/vs/index-CBVt3dzv.js +5 -0
  205. package/dist/web/public/vendor/monaco/vs/index.js +1 -0
  206. package/dist/web/public/vendor/monaco/vs/ini-CsNwO04R.js +1 -0
  207. package/dist/web/public/vendor/monaco/vs/initialize-DL0l1TGY.js +1 -0
  208. package/dist/web/public/vendor/monaco/vs/java-CI4ZMsH9.js +1 -0
  209. package/dist/web/public/vendor/monaco/vs/javascript-DTJl4Jn1.js +1 -0
  210. package/dist/web/public/vendor/monaco/vs/json.worker-BizpAl9O.js +1 -0
  211. package/dist/web/public/vendor/monaco/vs/jsonMode-DLUiMUrI.js +1 -0
  212. package/dist/web/public/vendor/monaco/vs/julia-BwzEvaQw.js +1 -0
  213. package/dist/web/public/vendor/monaco/vs/kotlin-IUYPiTV8.js +1 -0
  214. package/dist/web/public/vendor/monaco/vs/language/css/css.worker.js +66 -0
  215. package/dist/web/public/vendor/monaco/vs/language/css/monaco.contribution.js +1 -0
  216. package/dist/web/public/vendor/monaco/vs/language/html/html.worker.js +443 -0
  217. package/dist/web/public/vendor/monaco/vs/language/html/monaco.contribution.js +1 -0
  218. package/dist/web/public/vendor/monaco/vs/language/json/json.worker.js +17 -0
  219. package/dist/web/public/vendor/monaco/vs/language/json/monaco.contribution.js +1 -0
  220. package/dist/web/public/vendor/monaco/vs/language/typescript/monaco.contribution.js +1 -0
  221. package/dist/web/public/vendor/monaco/vs/language/typescript/ts.worker.js +67693 -0
  222. package/dist/web/public/vendor/monaco/vs/less-C0eDYdqa.js +2 -0
  223. package/dist/web/public/vendor/monaco/vs/lexon-iON-Kj97.js +1 -0
  224. package/dist/web/public/vendor/monaco/vs/liquid-CLJYelW6.js +1 -0
  225. package/dist/web/public/vendor/monaco/vs/loader.js +1368 -0
  226. package/dist/web/public/vendor/monaco/vs/lspLanguageFeatures-BIkJOWLw.js +2 -0
  227. package/dist/web/public/vendor/monaco/vs/lua-DtygF91M.js +1 -0
  228. package/dist/web/public/vendor/monaco/vs/m3-CsR4AuFi.js +1 -0
  229. package/dist/web/public/vendor/monaco/vs/main-BEx-Fmlo.js +15 -0
  230. package/dist/web/public/vendor/monaco/vs/main-DsK8pnKg.js +3 -0
  231. package/dist/web/public/vendor/monaco/vs/markdown-C_rD0bIw.js +1 -0
  232. package/dist/web/public/vendor/monaco/vs/mdx-CpzZIPHF.js +1 -0
  233. package/dist/web/public/vendor/monaco/vs/mips-CiYP61RB.js +1 -0
  234. package/dist/web/public/vendor/monaco/vs/monaco.contribution-9cKT3C7t.js +1 -0
  235. package/dist/web/public/vendor/monaco/vs/monaco.contribution-BE88ZNGY.js +1 -0
  236. package/dist/web/public/vendor/monaco/vs/monaco.contribution-BPhsneLd.js +1 -0
  237. package/dist/web/public/vendor/monaco/vs/monaco.contribution-BgRy6xDf.js +1 -0
  238. package/dist/web/public/vendor/monaco/vs/msdax-C38-sJlp.js +1 -0
  239. package/dist/web/public/vendor/monaco/vs/mysql-CdtbpvbG.js +1 -0
  240. package/dist/web/public/vendor/monaco/vs/nls/lang/cs.d.ts +1 -0
  241. package/dist/web/public/vendor/monaco/vs/nls/lang/cs.js +9 -0
  242. package/dist/web/public/vendor/monaco/vs/nls/lang/de.d.ts +1 -0
  243. package/dist/web/public/vendor/monaco/vs/nls/lang/de.js +9 -0
  244. package/dist/web/public/vendor/monaco/vs/nls/lang/es.d.ts +1 -0
  245. package/dist/web/public/vendor/monaco/vs/nls/lang/es.js +9 -0
  246. package/dist/web/public/vendor/monaco/vs/nls/lang/fr.d.ts +1 -0
  247. package/dist/web/public/vendor/monaco/vs/nls/lang/fr.js +9 -0
  248. package/dist/web/public/vendor/monaco/vs/nls/lang/it.d.ts +1 -0
  249. package/dist/web/public/vendor/monaco/vs/nls/lang/it.js +9 -0
  250. package/dist/web/public/vendor/monaco/vs/nls/lang/ja.d.ts +1 -0
  251. package/dist/web/public/vendor/monaco/vs/nls/lang/ja.js +9 -0
  252. package/dist/web/public/vendor/monaco/vs/nls/lang/ko.d.ts +1 -0
  253. package/dist/web/public/vendor/monaco/vs/nls/lang/ko.js +9 -0
  254. package/dist/web/public/vendor/monaco/vs/nls/lang/pl.d.ts +1 -0
  255. package/dist/web/public/vendor/monaco/vs/nls/lang/pl.js +9 -0
  256. package/dist/web/public/vendor/monaco/vs/nls/lang/pt-br.d.ts +1 -0
  257. package/dist/web/public/vendor/monaco/vs/nls/lang/pt-br.js +9 -0
  258. package/dist/web/public/vendor/monaco/vs/nls/lang/ru.d.ts +1 -0
  259. package/dist/web/public/vendor/monaco/vs/nls/lang/ru.js +9 -0
  260. package/dist/web/public/vendor/monaco/vs/nls/lang/tr.d.ts +1 -0
  261. package/dist/web/public/vendor/monaco/vs/nls/lang/tr.js +9 -0
  262. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-cn.d.ts +1 -0
  263. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-cn.js +9 -0
  264. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-tw.d.ts +1 -0
  265. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-tw.js +9 -0
  266. package/dist/web/public/vendor/monaco/vs/nls.messages-loader.js +1 -0
  267. package/dist/web/public/vendor/monaco/vs/objective-c-CntZFaHX.js +1 -0
  268. package/dist/web/public/vendor/monaco/vs/pascal-r6kuqfl_.js +1 -0
  269. package/dist/web/public/vendor/monaco/vs/pascaligo-BiXoTmXh.js +1 -0
  270. package/dist/web/public/vendor/monaco/vs/perl-DABw_TcH.js +1 -0
  271. package/dist/web/public/vendor/monaco/vs/pgsql-me_jFXeX.js +1 -0
  272. package/dist/web/public/vendor/monaco/vs/php-D_kh-9LK.js +1 -0
  273. package/dist/web/public/vendor/monaco/vs/pla-VfZjczW0.js +1 -0
  274. package/dist/web/public/vendor/monaco/vs/postiats-BBSzz8Pk.js +1 -0
  275. package/dist/web/public/vendor/monaco/vs/powerquery-Dt-g_2cc.js +1 -0
  276. package/dist/web/public/vendor/monaco/vs/powershell-B-7ap1zc.js +1 -0
  277. package/dist/web/public/vendor/monaco/vs/protobuf-BmtuEB1A.js +2 -0
  278. package/dist/web/public/vendor/monaco/vs/pug-BRpRNeEb.js +1 -0
  279. package/dist/web/public/vendor/monaco/vs/python-CqWUUgfu.js +1 -0
  280. package/dist/web/public/vendor/monaco/vs/qsharp-BzsFaUU9.js +1 -0
  281. package/dist/web/public/vendor/monaco/vs/r-f8dDdrp4.js +1 -0
  282. package/dist/web/public/vendor/monaco/vs/razor-hok5y9Km.js +1 -0
  283. package/dist/web/public/vendor/monaco/vs/redis-fvZQY4PI.js +1 -0
  284. package/dist/web/public/vendor/monaco/vs/redshift-45Et0LQi.js +1 -0
  285. package/dist/web/public/vendor/monaco/vs/restructuredtext-C7UUFKFD.js +1 -0
  286. package/dist/web/public/vendor/monaco/vs/ruby-CZO8zYTz.js +1 -0
  287. package/dist/web/public/vendor/monaco/vs/rust-Bfetafyc.js +1 -0
  288. package/dist/web/public/vendor/monaco/vs/sb-3GYllVck.js +1 -0
  289. package/dist/web/public/vendor/monaco/vs/scala-foMgrKo1.js +1 -0
  290. package/dist/web/public/vendor/monaco/vs/scheme-CHdMtr7p.js +1 -0
  291. package/dist/web/public/vendor/monaco/vs/scss-C1cmLt9V.js +3 -0
  292. package/dist/web/public/vendor/monaco/vs/shell-ClXCKCEW.js +1 -0
  293. package/dist/web/public/vendor/monaco/vs/solidity-MZ6ExpPy.js +1 -0
  294. package/dist/web/public/vendor/monaco/vs/sophia-DWkuSsPQ.js +1 -0
  295. package/dist/web/public/vendor/monaco/vs/sparql-AUGFYSyk.js +1 -0
  296. package/dist/web/public/vendor/monaco/vs/sql-32GpJSV2.js +1 -0
  297. package/dist/web/public/vendor/monaco/vs/st-CuDFIVZ_.js +1 -0
  298. package/dist/web/public/vendor/monaco/vs/swift-t-PfMj7W.js +1 -0
  299. package/dist/web/public/vendor/monaco/vs/systemverilog-Ch4vA8Yt.js +1 -0
  300. package/dist/web/public/vendor/monaco/vs/tcl-D74tq1nH.js +1 -0
  301. package/dist/web/public/vendor/monaco/vs/toggleHighContrast-qGX7E9o7.js +61 -0
  302. package/dist/web/public/vendor/monaco/vs/ts.worker-2QLmBukE.js +1 -0
  303. package/dist/web/public/vendor/monaco/vs/tsMode-B0S_kp2q.js +11 -0
  304. package/dist/web/public/vendor/monaco/vs/twig-C6taOxMV.js +1 -0
  305. package/dist/web/public/vendor/monaco/vs/typescript-_2t_511t.js +1 -0
  306. package/dist/web/public/vendor/monaco/vs/typespec-8OfoLt6R.js +1 -0
  307. package/dist/web/public/vendor/monaco/vs/vb-Dyb2648j.js +1 -0
  308. package/dist/web/public/vendor/monaco/vs/wgsl-BhLXMOR0.js +298 -0
  309. package/dist/web/public/vendor/monaco/vs/workers-BBttULjf.js +1 -0
  310. package/dist/web/public/vendor/monaco/vs/xml-cZjNDqDT.js +1 -0
  311. package/dist/web/public/vendor/monaco/vs/yaml-A1fOIdH6.js +1 -0
  312. package/dist/web/server.js +151 -16
  313. package/dist/web/server.js.map +1 -1
  314. package/dist/web/task-queue.js +6 -21
  315. package/dist/web/task-queue.js.map +1 -1
  316. package/dist/web/web-config.js +143 -0
  317. package/dist/web/web-config.js.map +1 -0
  318. package/docs/API.md +827 -0
  319. package/docs/App/344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +1 -1
  320. package/docs/App/346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +1 -1
  321. package/docs/BENCHMARK_REPORT_en.md +386 -386
  322. package/docs/BENCHMARK_REPORT_zh.md +386 -386
  323. package/docs/DPA.md +65 -63
  324. 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
  325. package/docs/Deployment_Guide_EN.md +1 -1
  326. package/docs/PROJECT-ANALYSIS-AND-TEST.md +721 -0
  327. package/docs/SECURITY_WHITEPAPER.md +2 -2
  328. package/docs/SELF-EVOLVE-GUIDE.md +1 -1
  329. package/docs/SWE_BENCH_REPORT.md +73 -55
  330. package/docs/TECHNICAL-SPECIFICATION.md +746 -0
  331. package/docs/TECHNICAL_SPEC_en.md +292 -292
  332. package/docs/TECHNICAL_SPEC_zh.md +292 -292
  333. package/docs/Technical_Manual_EN.md +1 -1
  334. package/docs/UPDATE_NOTES_en.md +159 -159
  335. package/docs/UPDATE_NOTES_zh.md +159 -159
  336. package/docs/UPGRADE-v7.9.0.md +291 -0
  337. package/docs/UPGRADE-v8.0.0.md +237 -0
  338. package/docs/UPGRADE_7.2.0.md +309 -309
  339. package/docs/UPGRADE_GUIDE_7_5.md +86 -86
  340. package/docs/UPGRADE_GUIDE_7_6.md +153 -0
  341. package/docs/User_Manual_EN.md +1 -1
  342. package/docs/VOLTAGENT_SKILLS_CATALOG.md +95 -0
  343. package/docs/error-codes.md +1 -1
  344. package/docs/geo-feihong-code.html +391 -391
  345. package/docs//344/272/247/345/223/201/345/274/200/345/217/221/346/226/207/346/241/243.md +5 -3
  346. package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246-v8.0.0.md +922 -0
  347. package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +140 -231
  348. 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
  349. 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
  350. 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
  351. 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
  352. package/docs//345/256/211/345/205/250/347/231/275/347/232/256/344/271/246_v7.2.0.md +84 -82
  353. package/docs//346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +240 -149
  354. package/docs//351/203/250/347/275/262/350/257/264/346/230/216/344/271/246.md +2 -2
  355. package/electron/main.js +404 -404
  356. package/package.json +12 -5
  357. package/templates/skills/api-design/SKILL.md +1 -1
  358. package/templates/skills/code-review/SKILL.md +1 -1
  359. package/templates/skills/dependency-upgrade/SKILL.md +1 -1
  360. package/templates/skills/doc-gen/SKILL.md +1 -1
  361. package/templates/skills/git-flow/SKILL.md +1 -1
  362. package/templates/skills/onboarding/SKILL.md +1 -1
  363. package/templates/skills/performance/SKILL.md +1 -1
  364. package/templates/skills/refactor/SKILL.md +1 -1
  365. package/templates/skills/security-audit/SKILL.md +1 -1
  366. package/templates/skills/test-gen/SKILL.md +1 -1
  367. package/tool-schema.json +197 -197
@@ -0,0 +1,922 @@
1
+ # 飞虹 Code 详细使用说明书
2
+
3
+ **文档版本**:v8.0.0
4
+ **发布日期**:2026-09-03
5
+ **适用版本**:飞虹 Code v8.0.0
6
+ **开发团队**:晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心
7
+ **负责人**:吴赐虹
8
+
9
+ ---
10
+
11
+ ## 目录
12
+
13
+ 1. [产品概述](#一产品概述)
14
+ 2. [快速开始](#二快速开始)
15
+ 3. [环境配置](#三环境配置)
16
+ 4. [CLI 命令行使用](#四cli-命令行使用)
17
+ 5. [Web 控制台](#五web-控制台)
18
+ 6. [移动端 APP](#六移动端-app)
19
+ 7. [核心能力详解](#七核心能力详解)
20
+ 8. [v8.0 新功能](#八v80-新功能)
21
+ 9. [多平台桥接](#九多平台桥接)
22
+ 10. [部署方式](#十部署方式)
23
+ 11. [常见问题与故障排查](#十一常见问题与故障排查)
24
+ 12. [版本历史与升级](#十二版本历史与升级)
25
+
26
+ ---
27
+
28
+ ## 一、产品概述
29
+
30
+ 飞虹 Code(feihong-code)是一款**终端 AI 编程智能体**,对标 Muse Code / Cursor CLI / Claude Code,具备多模型路由、企业级 RBAC 审计、全自动 SWE Agent、离线私有化部署等能力。
31
+
32
+ ### 1.1 核心定位
33
+
34
+ | 维度 | 说明 |
35
+ |------|------|
36
+ | 产品形态 | CLI 终端 + Web 控制台 + Electron 桌面端 + Android APP |
37
+ | 技术栈 | TypeScript + Node.js + Express + Electron + Capacitor + SQLite |
38
+ | 模型支持 | DeepSeek / 通义 / Ollama / OpenAI / Agnes / 自定义 OpenAI 兼容 |
39
+ | 核心能力 | 多 Agent 协作、持久记忆、自演化技能、自动化调度、Docker 沙盒 |
40
+ | 部署方式 | 本地离线 / Docker / 服务器 / 移动端 |
41
+
42
+ ### 1.2 版本能力矩阵(v8.0.0)
43
+
44
+ | 能力模块 | 说明 | 状态 |
45
+ |----------|------|------|
46
+ | 多模型路由 | 多提供商自动切换、流式输出、视觉模型 | ✅ |
47
+ | 全自动 SWE Agent | 需求→规划→编码→验证→修复闭环 | ✅ |
48
+ | 多 Agent 协作 | Solo / Multi / Event-Driven / Custom Agent | ✅ |
49
+ | 持久记忆系统 | 短期记忆 + 长期 MEMORY.md + 自动摘要 | ✅ |
50
+ | Honcho 语义记忆 | 用户建模 + 事实记忆 + 跨会话检索 | ✅ v8.0 |
51
+ | 自演化技能 | 自动提炼可复用技能 + agentskills.io 兼容 | ✅ |
52
+ | 自动化调度 | 自然语言定时任务(每天/每周/间隔/单次) | ✅ |
53
+ | Docker 沙盒执行 | 容器隔离 + 禁网 + 资源限制 + 危险命令拦截 | ✅ v8.0 |
54
+ | SQLite 数据存储 | 10 张表统一存储 + 模型 Key 加密 | ✅ v8.0 |
55
+ | 免密网络层 | 5 节点环形轮转 + Ring Failover,开箱即用 | ✅ |
56
+ | 多平台桥接 | 微信 / 飞书 / 元宝(配置后启用) | ✅ |
57
+ | 企业级审计 | RBAC 权限 + 操作日志 + 密钥脱敏 | ✅ |
58
+ | 移动端 APP | 对话 + 游戏中心 + 创作 + 文生图/视频 | ✅ |
59
+
60
+ ---
61
+
62
+ ## 二、快速开始
63
+
64
+ ### 2.1 环境要求
65
+
66
+ | 组件 | 最低要求 | 推荐版本 |
67
+ |------|----------|----------|
68
+ | Node.js | v18+ | **v22.23.2**(内置 node:sqlite) |
69
+ | npm | v9+ | v10+ |
70
+ | 操作系统 | Windows 10 / macOS 12 / Linux | Windows 11 |
71
+ | 内存 | 4GB | 8GB+ |
72
+ | 磁盘 | 500MB | 2GB+ |
73
+ | Docker(可选) | Docker 20+ | Docker 29.7.2(沙盒功能需要) |
74
+
75
+ ### 2.2 安装
76
+
77
+ #### 方式一:npm 全局安装
78
+
79
+ ```bash
80
+ npm install -g feihong-code
81
+ fhcode --version
82
+ ```
83
+
84
+ #### 方式二:源码安装
85
+
86
+ ```bash
87
+ git clone <仓库地址> feihong-code
88
+ cd feihong-code
89
+ npm install
90
+ npm run build
91
+ node dist/cli/index.js --version
92
+ ```
93
+
94
+ #### 方式三:Windows 一键启动
95
+
96
+ 双击项目根目录的 `一键启动Web控制台.bat`,自动启动 Web 控制台。
97
+
98
+ ### 2.3 首次使用(3 步上手)
99
+
100
+ **第 1 步:启动 Web 控制台**
101
+
102
+ ```bash
103
+ # Windows PowerShell
104
+ $env:FH_WEB_PORT="8080"
105
+ node dist/cli/index.js serve
106
+
107
+ # 或使用一键脚本
108
+ .\一键启动Web控制台.bat
109
+ ```
110
+
111
+ 启动后终端会显示自动生成的访问令牌(`FH_WEB_TOKEN`),浏览器打开 `http://localhost:8080`。
112
+
113
+ **第 2 步:配置模型**
114
+
115
+ 在 Web 控制台 → 设置 → 模型配置中,添加你的大模型:
116
+
117
+ | 字段 | 示例 |
118
+ |------|------|
119
+ | 模型名称 | Agnes-2.5-Flash |
120
+ | API 地址 | https://api.agnes-ai.cn/v1 |
121
+ | API Key | sk-xxxxxxxxxxxxxxxx |
122
+ | 模型 ID | agnes-2.5-flash |
123
+ | 上下文窗口 | 128000 |
124
+
125
+ 也可以通过环境变量配置:
126
+
127
+ ```bash
128
+ $env:FH_PROVIDERS='[{"id":"agnes","name":"Agnes","apiBase":"https://api.agnes-ai.cn/v1","apiKey":"sk-xxx","model":"agnes-2.5-flash"}]'
129
+ ```
130
+
131
+ **第 3 步:开始对话**
132
+
133
+ 在 Web 控制台输入你的需求,例如:
134
+
135
+ > 帮我写一个 Python 脚本,读取当前目录下所有 .txt 文件并统计词频
136
+
137
+ 飞虹 Code 会自动规划、编码、验证并给出结果。
138
+
139
+ ---
140
+
141
+ ## 三、环境配置
142
+
143
+ ### 3.1 核心环境变量
144
+
145
+ | 变量名 | 默认值 | 说明 |
146
+ |--------|--------|------|
147
+ | `FH_HOME` | `~/.feihong-code` | 数据根目录(任务/记忆/知识库/插件) |
148
+ | `FH_WEB_PORT` | `3000` | Web 控制台端口 |
149
+ | `FH_WEB_TOKEN` | 自动生成 | Web 控制台访问令牌(Bearer Token) |
150
+ | `FH_PROVIDERS` | 空 | 模型提供商 JSON 数组 |
151
+ | `FH_SECRET` | 自动生成 | 主密钥(用于加密敏感数据,>=16 字符) |
152
+ | `FH_LOG_DIR` | `$FH_HOME/logs` | 日志目录 |
153
+ | `FH_SHELL_ALLOW` | 空 | Shell 命令白名单(逗号分隔) |
154
+ | `FH_REQUIRE_APPROVAL` | `false` | 是否需要审批才能执行危险命令 |
155
+
156
+ ### 3.2 v8.0 新增环境变量
157
+
158
+ | 变量名 | 默认值 | 说明 |
159
+ |--------|--------|------|
160
+ | `FH_DB_PATH` | `$FH_HOME/feihong.db` | SQLite 数据库文件路径 |
161
+ | `FH_HONCHO_USER` | `default` | Honcho 当前用户 ID |
162
+ | `FH_HONCHO_URL` | 空 | 外部 Honcho 服务 URL(预留) |
163
+ | `FH_HONCHO_API_KEY` | 空 | 外部 Honcho API Key(预留) |
164
+ | `FH_SANDBOX_IMAGE` | `node:22-alpine` | Docker 沙盒镜像 |
165
+ | `FH_SANDBOX_NETWORK` | `false` | 沙盒是否启用网络 |
166
+ | `FH_SANDBOX_READONLY` | `true` | 沙盒工作区是否只读挂载 |
167
+ | `FH_SANDBOX_TIMEOUT` | `60000` | 沙盒执行超时(毫秒) |
168
+
169
+ ### 3.3 模型配置详解
170
+
171
+ 支持多种模型提供商,配置格式:
172
+
173
+ ```json
174
+ [
175
+ {
176
+ "id": "agnes",
177
+ "name": "Agnes-2.5-Flash",
178
+ "provider": "openai-compatible",
179
+ "apiBase": "https://api.agnes-ai.cn/v1",
180
+ "apiKey": "sk-xxxxxxxx",
181
+ "model": "agnes-2.5-flash",
182
+ "contextWindow": 128000,
183
+ "maxOutput": 8192,
184
+ "supportsStreaming": true,
185
+ "supportsVision": false
186
+ },
187
+ {
188
+ "id": "deepseek",
189
+ "name": "DeepSeek-V3",
190
+ "provider": "openai-compatible",
191
+ "apiBase": "https://api.deepseek.com/v1",
192
+ "apiKey": "sk-xxxxxxxx",
193
+ "model": "deepseek-chat",
194
+ "contextWindow": 64000
195
+ },
196
+ {
197
+ "id": "ollama-local",
198
+ "name": "本地 Ollama",
199
+ "provider": "openai-compatible",
200
+ "apiBase": "http://localhost:11434/v1",
201
+ "apiKey": "ollama",
202
+ "model": "qwen2.5:7b",
203
+ "contextWindow": 32768
204
+ }
205
+ ]
206
+ ```
207
+
208
+ **免密网络层**:即使不配置任何模型,飞虹 Code 内置了 5 家厂商的免费模型接口(环形轮转 + Ring Failover),开箱即用,无需注册任何 API Key。
209
+
210
+ ---
211
+
212
+ ## 四、CLI 命令行使用
213
+
214
+ ### 4.1 基本命令
215
+
216
+ ```bash
217
+ # 查看版本
218
+ fhcode --version
219
+
220
+ # 查看帮助
221
+ fhcode --help
222
+
223
+ # 单次对话(非交互式)
224
+ fhcode "帮我写一个快速排序的 Python 实现"
225
+
226
+ # 启动 REPL 交互式会话
227
+ fhcode
228
+
229
+ # 启动 Web 控制台
230
+ fhcode serve
231
+
232
+ # 指定端口启动
233
+ FH_WEB_PORT=9090 fhcode serve
234
+ ```
235
+
236
+ ### 4.2 REPL 模式命令
237
+
238
+ 进入 REPL 后(输入 `fhcode` 回车),支持以下斜杠命令:
239
+
240
+ | 命令 | 说明 |
241
+ |------|------|
242
+ | `/help` | 显示帮助 |
243
+ | `/clear` | 清空当前会话上下文 |
244
+ | `/memory` | 查看当前记忆状态 |
245
+ | `/skills` | 列出已安装技能 |
246
+ | `/models` | 列出已配置模型 |
247
+ | `/status` | 查看 Agent 状态 |
248
+ | `/exit` 或 `/quit` | 退出 REPL |
249
+
250
+ ### 4.3 常用场景示例
251
+
252
+ **代码生成**:
253
+ ```bash
254
+ fhcode "用 TypeScript 写一个带超时控制的 fetch 封装,支持重试"
255
+ ```
256
+
257
+ **代码审查**:
258
+ ```bash
259
+ fhcode "审查 src/utils/http.ts 的代码质量,指出潜在问题并给出修复建议"
260
+ ```
261
+
262
+ **项目重构**:
263
+ ```bash
264
+ fhcode "把 src/agent/ 目录下的回调风格代码改成 async/await,保持接口不变"
265
+ ```
266
+
267
+ **文档生成**:
268
+ ```bash
269
+ fhcode "为 src/web/server.ts 生成 API 文档,包含每个端点的请求/响应格式"
270
+ ```
271
+
272
+ ---
273
+
274
+ ## 五、Web 控制台
275
+
276
+ ### 5.1 启动与访问
277
+
278
+ ```bash
279
+ # 启动
280
+ $env:FH_WEB_PORT="8080"
281
+ node dist/cli/index.js serve
282
+
283
+ # 访问
284
+ # 浏览器打开 http://localhost:8080
285
+ # 首次访问需要输入终端显示的 FH_WEB_TOKEN
286
+ ```
287
+
288
+ ### 5.2 功能模块
289
+
290
+ | 模块 | 路径 | 说明 |
291
+ |------|------|------|
292
+ | 对话主页 | `/` | 主对话界面,支持多轮对话、流式输出 |
293
+ | 任务中心 | `/tasks` | 查看异步任务队列、进度、结果 |
294
+ | 模型配置 | `/models` | 添加/编辑/删除模型提供商 |
295
+ | 技能管理 | `/skills` | 查看/安装/管理技能包 |
296
+ | 记忆中心 | `/memory` | 查看 MEMORY.md / USER.md / 历史摘要 |
297
+ | 知识库 | `/knowledge` | 上传/管理知识库文档 |
298
+ | 插件管理 | `/plugins` | 安装/管理第三方插件 |
299
+ | 设置 | `/settings` | 系统设置、API 密钥、安全配置 |
300
+ | API 文档 | `/api/docs` | OpenAPI 风格接口文档 |
301
+
302
+ ### 5.3 核心 API 接口
303
+
304
+ #### 健康检查(公开)
305
+ ```
306
+ GET /api/health
307
+ ```
308
+ 响应:
309
+ ```json
310
+ {
311
+ "ok": true,
312
+ "product": "飞虹 Code",
313
+ "version": "8.0.0",
314
+ "storage": { "ok": true, "backend": "sqlite", "version": 1 },
315
+ "honcho": { "ok": true, "backend": "sqlite-local" },
316
+ "time": "2026-09-03T07:00:00.000Z"
317
+ }
318
+ ```
319
+
320
+ #### 对话接口(需认证)
321
+ ```
322
+ POST /api/chat
323
+ Authorization: Bearer <FH_WEB_TOKEN>
324
+ Content-Type: application/json
325
+
326
+ {
327
+ "message": "你的问题",
328
+ "modelId": "agnes",
329
+ "stream": true
330
+ }
331
+ ```
332
+
333
+ #### 任务接口
334
+ ```
335
+ GET /api/tasks # 任务列表
336
+ GET /api/tasks/:id # 任务详情
337
+ POST /api/tasks # 创建任务
338
+ DELETE /api/tasks/:id # 删除任务
339
+ ```
340
+
341
+ #### v8.0 新增接口
342
+ ```
343
+ GET /api/storage/stats # SQLite 存储统计
344
+ GET /api/honcho/context # Honcho 用户画像+记忆+上下文
345
+ POST /api/honcho/remember # 记录用户事实记忆
346
+ GET /api/honcho/recall?q=xxx # 关键词检索记忆
347
+ ```
348
+
349
+ ---
350
+
351
+ ## 六、移动端 APP
352
+
353
+ ### 6.1 安装
354
+
355
+ Android APK 位于 `artifacts/` 目录,安装到手机即可。也可通过 Android Studio 打开 `android/` 工程自行构建。
356
+
357
+ ### 6.2 功能模块
358
+
359
+ | 模块 | 说明 |
360
+ |------|------|
361
+ | 大模型对话 | 多轮对话、流式输出、支持图片/文件/截图/拍照上传 |
362
+ | 自定义模型 | 配置任意 OpenAI 兼容模型接口,支持视觉模型 |
363
+ | 游戏中心 | 12 款内置小游戏,直接打开即玩,适配手机屏幕 |
364
+ | 文生图 | 输入描述生成图片,支持自定义模型 |
365
+ | 文生视频 | 输入描述生成视频 |
366
+ | 图生视频 | 上传图片生成视频 |
367
+ | 技能中心 | 内置技能(内容摘要、中英互译、小红书文案等) |
368
+ | Hermes Agent | 持久记忆 + 自演化技能 + 自动化调度 |
369
+ | 免密网络层 | 5 节点环形轮转,无需配置 API Key 即可对话 |
370
+
371
+ ### 6.3 自定义模型配置
372
+
373
+ 在 APP → 设置 → 自定义模型中:
374
+
375
+ | 字段 | 示例 |
376
+ |------|------|
377
+ | 模型名称 | Agnes-2.5-Flash |
378
+ | API 地址 | https://api.agnes-ai.cn/v1 |
379
+ | API Key | sk-xxxxxxxx |
380
+ | 模型 ID | agnes-2.5-flash |
381
+
382
+ 视觉模型(图片理解)配置示例:
383
+ | 字段 | 示例 |
384
+ |------|------|
385
+ | 模型名称 | DeepSeek-OCR |
386
+ | API 地址 | https://api.siliconflow.cn/v1 |
387
+ | 模型 ID | deepseek-ai/DeepSeek-OCR |
388
+ | 支持视觉 | 开启 |
389
+
390
+ ---
391
+
392
+ ## 七、核心能力详解
393
+
394
+ ### 7.1 多 Agent 协作系统
395
+
396
+ 飞虹 Code 支持 4 种 Agent 模式:
397
+
398
+ | 模式 | 说明 | 适用场景 |
399
+ |------|------|----------|
400
+ | Solo Agent | 单 Agent 独立完成任务 | 简单需求、代码生成 |
401
+ | Multi Agent | 多 Agent 分工协作(规划/编码/审查/验证) | 复杂项目、全栈开发 |
402
+ | Event-Driven Agent | 事件驱动,响应外部事件 | 自动化流程、CI/CD |
403
+ | Custom Agent | 用户自定义 Agent 配置 | 特定领域、定制工作流 |
404
+
405
+ ### 7.2 持久记忆系统
406
+
407
+ | 记忆类型 | 存储位置 | 说明 |
408
+ |----------|----------|------|
409
+ | 短期记忆 | 运行时内存 + `$FH_HOME/memory/short/` | 当前会话上下文,自动压缩 |
410
+ | 长期记忆 | `$FH_HOME/memory/MEMORY.md` | 项目上下文、关键事实、历史任务摘要 |
411
+ | 用户画像 | `$FH_HOME/memory/USER.md` | 用户偏好、习惯、专业领域 |
412
+ | 自动摘要 | `$FH_HOME/memory/summaries/` | 每轮对话结束自动生成摘要 |
413
+ | Honcho 语义记忆 | SQLite `users` + `user_memory` 表 | 用户建模、事实记忆、跨会话检索 |
414
+
415
+ 记忆会自动注入到每次对话的上下文中,无需手动重复交代背景。
416
+
417
+ ### 7.3 自演化技能系统
418
+
419
+ - 从重复任务模式中自动提炼可复用技能
420
+ - 兼容 **agentskills.io** 开放标准
421
+ - 支持搜索、安装、删除、使用计数追踪
422
+ - 内置技能:内容摘要、中英互译、代码审查、小红书文案
423
+ - v7.9.1 新增 LLM 辅助技能提炼,提升提取准确率
424
+
425
+ ### 7.4 自动化调度
426
+
427
+ 自然语言设定定时任务,替代手写 cron:
428
+
429
+ | 自然语言 | 解析结果 |
430
+ |----------|----------|
431
+ | `每天 9:00` | daily,每天 09:00 执行 |
432
+ | `每周一 10:30` | weekly,每周一 10:30 执行 |
433
+ | `每隔 30 分钟` | interval,每 30 分钟执行 |
434
+ | `14:00` | once,今天 14:00 执行一次 |
435
+
436
+ 适用场景:定时备份、定时报表、定时巡检、定时推送。
437
+
438
+ ### 7.5 工具集
439
+
440
+ | 工具类别 | 包含工具 |
441
+ |----------|----------|
442
+ | 文件操作 | 读文件、写文件、编辑文件、搜索文件、目录列表 |
443
+ | Shell 执行 | 命令执行(白名单+审批+沙盒) |
444
+ | 网页搜索 | 免密搜索(Brave/Tavily/Firecrawl 环形轮转) |
445
+ | 浏览器自动化 | 页面导航、点击、输入、截图、元素提取 |
446
+ | 代码执行 | Python/Node/Shell 代码执行(Docker 沙盒) |
447
+ | TTS | 文本转语音 |
448
+ | 文生图 | 输入描述生成图片 |
449
+ | MCP | Model Context Protocol 外部工具接入 |
450
+
451
+ ---
452
+
453
+ ## 八、v8.0 新功能
454
+
455
+ ### 8.1 SQLite 数据存储
456
+
457
+ **是什么**:基于 Node.js 内置 `node:sqlite` 的统一数据存储层,零外部依赖。
458
+
459
+ **解决什么问题**:
460
+ - 原文件/JSON 存储在大规模数据时性能下降、查询困难
461
+ - 模型 API Key 明文存储有安全风险
462
+
463
+ **核心能力**:
464
+ - 10 张表统一管理:kv / tasks / models / agents / skills / memory / memory_history / users / user_memory / knowledge
465
+ - 模型 API Key 自动 AES-256-GCM 加密落盘
466
+ - 版本化迁移(SCHEMA_VERSION),启动自动建表
467
+ - WAL 日志模式 + 外键约束
468
+
469
+ **如何使用**:
470
+ ```bash
471
+ # 无需额外配置,启动后自动创建 $FH_HOME/feihong.db
472
+ # 查看存储统计
473
+ curl -H "Authorization: Bearer $FH_WEB_TOKEN" http://localhost:8080/api/storage/stats
474
+ ```
475
+
476
+ **环境变量**:
477
+ - `FH_DB_PATH`:自定义数据库文件路径
478
+
479
+ ### 8.2 Docker 沙盒执行
480
+
481
+ **是什么**:在 Docker 容器中隔离执行代码和命令,降低安全风险。
482
+
483
+ **解决什么问题**:
484
+ - 直接在宿主机执行 AI 生成的代码有安全风险
485
+ - 不同项目依赖冲突
486
+
487
+ **安全机制**:
488
+ | 机制 | 默认值 | 说明 |
489
+ |------|--------|------|
490
+ | 网络隔离 | 禁用 | `--network none`,容器内无法访问网络 |
491
+ | 只读挂载 | 启用 | 工作区只读挂载,防止容器修改宿主机文件 |
492
+ | 内存限制 | 512MB | `-m 512m` |
493
+ | CPU 限制 | 1 核 | `--cpus 1` |
494
+ | 危险命令拦截 | 启用 | 拒绝 `rm -rf /`、`mkfs`、`dd 写块设备`、fork 炸弹 |
495
+ | 超时强杀 | 60秒 | 超时自动 `docker kill` |
496
+
497
+ **如何使用**:
498
+ ```bash
499
+ # 需要本机安装 Docker Desktop / Docker Engine
500
+ # 环境变量配置
501
+ $env:FH_SANDBOX_IMAGE="node:22-alpine"
502
+ $env:FH_SANDBOX_NETWORK="false"
503
+ $env:FH_SANDBOX_READONLY="true"
504
+
505
+ # 冒烟测试
506
+ node tests/smoke-v8.js --only=docker
507
+ ```
508
+
509
+ **国内镜像加速器配置**(解决 Docker Hub 无法访问):
510
+ 编辑 `C:\Users\<用户名>\.docker\daemon.json`(**必须无 BOM 的 UTF-8**):
511
+ ```json
512
+ {
513
+ "registry-mirrors": [
514
+ "https://docker.1ms.run",
515
+ "https://docker.m.daocloud.io",
516
+ "https://hub-mirror.c.163.com",
517
+ "https://mirror.baidubce.com"
518
+ ]
519
+ }
520
+ ```
521
+ > 注意:PowerShell 的 `Set-Content -Encoding UTF8` 会写入 BOM,导致 Docker 解析失败。请用 VS Code 保存为 "UTF-8 without BOM",或用 .NET `[System.IO.File]::WriteAllText` 写入。
522
+
523
+ ### 8.3 Honcho 云端记忆(本地部署)
524
+
525
+ **是什么**:对标 Honcho(GetZep)的语义记忆系统,实现用户建模、事实记忆、跨会话检索。
526
+
527
+ **解决什么问题**:
528
+ - 原文件记忆只能按文件读写,无法按用户/重要度/关键词检索
529
+ - 跨设备、跨会话的用户画像和偏好无法持久化
530
+
531
+ **核心能力**:
532
+ | 能力 | 说明 |
533
+ |------|------|
534
+ | 用户建模 | 姓名、偏好、特质画像,持久化存储 |
535
+ | 事实记忆 | 用户说过的关键事实,带重要度(0~1)排序 |
536
+ | 会话摘要 | 每轮对话自动摘要,跨会话检索 |
537
+ | 语义检索 | 关键词匹配 + 重要度排序 + 时间加权 |
538
+ | 记忆注入 | 自动生成个性化上下文提示词,注入每次对话 |
539
+ | 自动沉淀 | 从用户消息自动提取偏好类事实 |
540
+
541
+ **如何使用**:
542
+ ```bash
543
+ # 无需额外配置,启动后自动启用(SQLite 本地持久化)
544
+ # 查看用户画像和记忆
545
+ curl -H "Authorization: Bearer $FH_WEB_TOKEN" http://localhost:8080/api/honcho/context
546
+
547
+ # 记录用户事实
548
+ curl -X POST -H "Authorization: Bearer $FH_WEB_TOKEN" \
549
+ -H "Content-Type: application/json" \
550
+ -d '{"content":"用户偏好使用TypeScript","importance":0.9}' \
551
+ http://localhost:8080/api/honcho/remember
552
+
553
+ # 关键词检索记忆
554
+ curl -H "Authorization: Bearer $FH_WEB_TOKEN" \
555
+ "http://localhost:8080/api/honcho/recall?q=TypeScript"
556
+ ```
557
+
558
+ **环境变量**:
559
+ - `FH_HONCHO_USER`:当前用户 ID(默认 `default`)
560
+ - `FH_HONCHO_URL`:外部 Honcho 服务 URL(预留,配置后走远程模式)
561
+ - `FH_HONCHO_API_KEY`:外部 Honcho API Key(预留)
562
+
563
+ ---
564
+
565
+ ## 九、多平台桥接
566
+
567
+ 飞虹 Code 支持一套 Agent,多入口交互。
568
+
569
+ ### 9.1 微信桥接
570
+
571
+ 支持企业微信(wecom)和公众号(mp)两种模式。
572
+
573
+ ```bash
574
+ # 企业微信模式
575
+ $env:FH_WECHAT_MODE="wecom"
576
+ $env:FH_WECHAT_CORP_ID="wwxxxxxxxx"
577
+ $env:FH_WECHAT_AGENT_ID="1000002"
578
+ $env:FH_WECHAT_SECRET="xxxxxxxx"
579
+ $env:FH_WECHAT_TOKEN="xxxxxxxx"
580
+ $env:FH_WECHAT_AES_KEY="xxxxxxxx"
581
+
582
+ # 公众号模式
583
+ $env:FH_WECHAT_MODE="mp"
584
+ $env:FH_WECHAT_APP_ID="wxXXXXXXXX"
585
+ $env:FH_WECHAT_APP_SECRET="xxxxxxxx"
586
+ $env:FH_WECHAT_TOKEN="xxxxxxxx"
587
+ $env:FH_WECHAT_AES_KEY="xxxxxxxx"
588
+ ```
589
+
590
+ 回调地址:`https://<你的域名>/api/wechat/callback`
591
+
592
+ ### 9.2 飞书桥接
593
+
594
+ ```bash
595
+ $env:FH_FEISHU_ENABLED="true"
596
+ $env:FH_FEISHU_APP_ID="cli_xxxxxxxx"
597
+ $env:FH_FEISHU_APP_SECRET="xxxxxxxx"
598
+ $env:FH_FEISHU_VERIFICATION_TOKEN="xxxxxxxx"
599
+ $env:FH_FEISHU_ENCRYPT_KEY="xxxxxxxx"
600
+ ```
601
+
602
+ 事件订阅地址:`https://<你的域名>/api/feishu/callback`
603
+
604
+ ### 9.3 元宝桥接
605
+
606
+ ```bash
607
+ $env:FH_YUANBAO_ENABLED="true"
608
+ $env:FH_YUANBAO_APP_ID="xxxxxxxx"
609
+ $env:FH_YUANBAO_APP_SECRET="xxxxxxxx"
610
+ ```
611
+
612
+ ---
613
+
614
+ ## 十、部署方式
615
+
616
+ ### 10.1 本地开发部署
617
+
618
+ ```bash
619
+ git clone <仓库地址>
620
+ cd feihong-code
621
+ npm install
622
+ npm run build
623
+ $env:FH_WEB_PORT="8080"
624
+ node dist/cli/index.js serve
625
+ ```
626
+
627
+ ### 10.2 Docker 部署
628
+
629
+ ```dockerfile
630
+ # Dockerfile(项目根目录已提供)
631
+ FROM node:22-alpine
632
+ WORKDIR /app
633
+ COPY package*.json ./
634
+ RUN npm ci --production
635
+ COPY dist/ ./dist/
636
+ EXPOSE 8080
637
+ ENV FH_WEB_PORT=8080
638
+ CMD ["node", "dist/cli/index.js", "serve"]
639
+ ```
640
+
641
+ ```bash
642
+ # 构建镜像
643
+ docker build -t feihong-code:8.0.0 .
644
+
645
+ # 运行容器
646
+ docker run -d \
647
+ -p 8080:8080 \
648
+ -v ~/.feihong-code:/root/.feihong-code \
649
+ -e FH_WEB_TOKEN=your-secret-token \
650
+ --name feihong-code \
651
+ feihong-code:8.0.0
652
+ ```
653
+
654
+ ### 10.3 Docker Compose 部署
655
+
656
+ 项目根目录提供 `docker-compose.yml`:
657
+
658
+ ```bash
659
+ docker-compose up -d
660
+ ```
661
+
662
+ ### 10.4 服务器部署(Nginx 反向代理)
663
+
664
+ 项目提供 `nginx-fhcode.conf` 配置模板:
665
+
666
+ ```nginx
667
+ server {
668
+ listen 80;
669
+ server_name your-domain.com;
670
+
671
+ location / {
672
+ proxy_pass http://127.0.0.1:8080;
673
+ proxy_set_header Host $host;
674
+ proxy_set_header X-Real-IP $remote_addr;
675
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
676
+ proxy_set_header X-Forwarded-Proto $scheme;
677
+ proxy_http_version 1.1;
678
+ proxy_set_header Upgrade $http_upgrade;
679
+ proxy_set_header Connection "upgrade";
680
+ proxy_read_timeout 300s;
681
+ }
682
+ }
683
+ ```
684
+
685
+ ### 10.5 Electron 桌面端
686
+
687
+ ```bash
688
+ # 启动桌面端
689
+ npm run electron:dev
690
+
691
+ # 打包桌面端
692
+ npm run electron:build
693
+ ```
694
+
695
+ ### 10.6 Android APP 构建
696
+
697
+ ```bash
698
+ # 同步移动端资源到 Android 工程
699
+ npx cap sync android
700
+
701
+ # 构建 Release APK
702
+ cd android
703
+ .\gradlew.bat assembleRelease --no-daemon
704
+
705
+ # 产物位置
706
+ # android/app/build/outputs/apk/release/app-release.apk
707
+ ```
708
+
709
+ ---
710
+
711
+ ## 十一、常见问题与故障排查
712
+
713
+ ### 11.1 启动相关
714
+
715
+ **Q: 启动报错 `Error: listen EADDRINUSE: address already in use :::8080`**
716
+ A: 端口被占用。更换端口:`$env:FH_WEB_PORT="9090"; node dist/cli/index.js serve`
717
+
718
+ **Q: 启动后浏览器访问显示 401 Unauthorized**
719
+ A: 需要在请求头携带 `Authorization: Bearer <FH_WEB_TOKEN>`。Web 控制台首次访问会提示输入令牌,令牌在启动终端的输出中。
720
+
721
+ **Q: 启动时报 `node:sqlite` 相关错误**
722
+ A: 需要 Node.js v22+。检查版本:`node --version`。升级 Node.js 后重新 `npm run build`。
723
+
724
+ ### 11.2 模型相关
725
+
726
+ **Q: 对话没有回复,显示"已停止生成"**
727
+ A: 可能原因:
728
+ 1. API Key 错误或过期 → 检查模型配置
729
+ 2. API 地址无法访问 → 检查网络,或换用免密网络层
730
+ 3. 模型 ID 错误 → 确认模型 ID 与提供商一致
731
+ 4. 上下文超限 → 清空会话或换用更大上下文的模型
732
+
733
+ **Q: 如何不配置 API Key 就使用?**
734
+ A: 飞虹 Code 内置免密网络层(5 家厂商免费模型环形轮转),不配置 `FH_PROVIDERS` 时自动启用,开箱即用。
735
+
736
+ **Q: 图片上传后无法识别**
737
+ A: 需要配置支持视觉的模型(如 DeepSeek-OCR、GPT-4o 等),并在模型配置中开启"支持视觉"。
738
+
739
+ ### 11.3 Docker 沙盒相关
740
+
741
+ **Q: Docker 沙盒功能不可用**
742
+ A: 需要本机安装 Docker Desktop / Docker Engine。检查:`docker info`。Windows 用户需启动 Docker Desktop。
743
+
744
+ **Q: Docker Desktop 启动报错 `invalid character 'ï' looking for beginning of value`**
745
+ A: `daemon.json` 文件包含 UTF-8 BOM。用 VS Code 打开文件,右下角编码选择 "UTF-8 without BOM" 保存,或删除该文件让 Docker 自动重建。
746
+
747
+ **Q: 拉取镜像超时/失败(`failed to resolve reference`)**
748
+ A: Docker Hub 在国内无法直接访问。配置国内镜像加速器(见 §8.2),或手动通过加速器拉取:
749
+ ```bash
750
+ docker pull docker.1ms.run/library/node:22-alpine
751
+ docker tag docker.1ms.run/library/node:22-alpine node:22-alpine
752
+ ```
753
+
754
+ ### 11.4 数据存储相关
755
+
756
+ **Q: SQLite 数据库文件在哪里?**
757
+ A: 默认 `~/.feihong-code/feihong.db`(Windows: `C:\Users\<用户名>\.feihong-code\feihong.db`)。可通过 `FH_DB_PATH` 自定义。
758
+
759
+ **Q: 如何重置所有数据?**
760
+ A: 停止服务后删除 `~/.feihong-code/` 目录(包含任务、记忆、知识库、SQLite 数据库等全部数据)。**注意:不可恢复。**
761
+
762
+ **Q: 模型 API Key 是明文存储吗?**
763
+ A: 不是。SQLite 存储中模型 API Key 自动 AES-256-GCM 加密落盘,主密钥来自 `FH_SECRET` 环境变量或 `$FH_HOME/.secret`。
764
+
765
+ ### 11.5 移动端相关
766
+
767
+ **Q: APP 安装后闪退**
768
+ A: 检查 Android 版本(要求 Android 8.0+),或尝试卸载后重新安装最新版 APK。
769
+
770
+ **Q: 游戏画面超出屏幕/点击无反应**
771
+ A: v8.0 已优化游戏适配。如仍有问题,更新到最新版 APK,或在游戏内使用"适配屏幕"按钮。
772
+
773
+ **Q: APP 对话只有一轮就停止**
774
+ A: 检查模型配置是否支持多轮对话(上下文窗口),确认 API Key 有效,或换用免密网络层。
775
+
776
+ ### 11.6 性能相关
777
+
778
+ **Q: 响应速度慢**
779
+ A:
780
+ 1. 检查模型 API 延迟(换用更近的 API 端点)
781
+ 2. 减少上下文长度(清空历史或启用自动摘要)
782
+ 3. 换用更快的模型(如 Flash 系列)
783
+ 4. 检查本机资源占用(Docker/浏览器等)
784
+
785
+ **Q: 内存占用高**
786
+ A: 飞虹 Code 后端正常占用约 100-300MB。如过高,检查是否有大量任务堆积(`/api/tasks`),或重启服务。
787
+
788
+ ---
789
+
790
+ ## 十二、版本历史与升级
791
+
792
+ ### 12.1 版本历史
793
+
794
+ | 版本 | 发布日期 | 核心变更 |
795
+ |------|----------|----------|
796
+ | v7.2.0 | 2026-08-26 | 基础架构、多模型路由、Web 控制台 |
797
+ | v7.5.0 | 2026-08-27 | 企业级 RBAC、审计日志、安全加固 |
798
+ | v7.6.0 | 2026-08-28 | SWE Agent、多 Agent 协作、知识库 |
799
+ | v7.9.0 | 2026-09-03 | Hermes Agent 框架、免密网络层、移动端 APP |
800
+ | v7.9.1 | 2026-09-03 | LLM 技能提炼、集成测试、API 文档、日志轮转 |
801
+ | **v8.0.0** | **2026-09-03** | **SQLite 存储、Docker 沙盒、Honcho 语义记忆** |
802
+
803
+ ### 12.2 升级指南(v7.9.x → v8.0.0)
804
+
805
+ ```bash
806
+ # 1. 拉取最新代码
807
+ git pull
808
+
809
+ # 2. 重新编译
810
+ npm run build
811
+
812
+ # 3. 停止旧服务(找到进程并停止)
813
+ # Windows: 任务管理器结束 node 进程,或 Stop-Process -Name node
814
+
815
+ # 4. 启动新服务
816
+ $env:FH_WEB_PORT="8080"
817
+ node dist/cli/index.js serve
818
+
819
+ # 5. 验证升级
820
+ curl http://localhost:8080/api/health
821
+ # 应返回 version: "8.0.0", storage.ok: true, honcho.ok: true
822
+
823
+ # 6. 运行冒烟测试
824
+ node tests/smoke-v8.js
825
+ # 预期:25/25 通过
826
+ ```
827
+
828
+ **升级注意事项**:
829
+ - SQLite 数据库首次启动自动创建,无需手动迁移
830
+ - 原有文件存储(任务/记忆/知识库)保留,不影响使用
831
+ - Docker 沙盒功能需要本机安装 Docker,不安装不影响其它功能
832
+ - 如使用 Docker,建议配置国内镜像加速器(见 §8.2)
833
+
834
+ ### 12.3 相关文档
835
+
836
+ | 文档 | 位置 | 说明 |
837
+ |------|------|------|
838
+ | 升级说明书 | `docs/UPGRADE-v8.0.0.md` | v8.0.0 详细升级说明 |
839
+ | 技术说明书 | `docs/TECHNICAL-SPECIFICATION.md` | 架构设计、模块说明、技术选型 |
840
+ | 项目分析与测试 | `docs/PROJECT-ANALYSIS-AND-TEST.md` | 客观分析、测试用例、改进建议 |
841
+ | API 文档 | `docs/API.md` | OpenAPI 风格接口文档 |
842
+ | 部署指南 | `docs/部署指南.md` | 各种部署方式详解 |
843
+ | 贡献指南 | `CONTRIBUTING.md` | 开发协作规范 |
844
+ | 行为准则 | `CODE_OF_CONDUCT.md` | 社区行为准则 |
845
+ | 开源社区治理 | `GOVERNANCE.md` | 社区治理结构 |
846
+ | 社区指南 | `COMMUNITY.md` | 社区参与指南 |
847
+
848
+ ---
849
+
850
+ ## 附录 A:快速命令速查
851
+
852
+ ```bash
853
+ # 版本与帮助
854
+ fhcode --version
855
+ fhcode --help
856
+
857
+ # 单次对话
858
+ fhcode "你的需求"
859
+
860
+ # 交互式 REPL
861
+ fhcode
862
+
863
+ # Web 控制台
864
+ $env:FH_WEB_PORT="8080"; node dist/cli/index.js serve
865
+
866
+ # 编译
867
+ npm run build
868
+
869
+ # 冒烟测试
870
+ node tests/smoke-v8.js
871
+
872
+ # 集成测试
873
+ node tests/integration/api.test.js
874
+
875
+ # Docker 沙盒测试
876
+ node tests/smoke-v8.js --only=docker
877
+
878
+ # 健康检查
879
+ curl http://localhost:8080/api/health
880
+
881
+ # Android 构建
882
+ cd android; .\gradlew.bat assembleRelease --no-daemon
883
+ ```
884
+
885
+ ---
886
+
887
+ ## 附录 B:数据目录结构
888
+
889
+ ```
890
+ ~/.feihong-code/ # 数据根目录(FH_HOME)
891
+ ├── feihong.db # SQLite 数据库(v8.0)
892
+ ├── feihong.db-wal # SQLite WAL 日志
893
+ ├── feihong.db-shm # SQLite 共享内存
894
+ ├── .secret # 主密钥(自动生成)
895
+ ├── rsa_private.pem # RSA 私钥
896
+ ├── tasks/ # 任务队列文件
897
+ │ ├── <task-id>.json
898
+ │ └── ...
899
+ ├── memory/ # 记忆文件
900
+ │ ├── MEMORY.md
901
+ │ ├── USER.md
902
+ │ ├── short/
903
+ │ └── summaries/
904
+ ├── knowledge/ # 知识库文档
905
+ │ ├── <doc-id>.md
906
+ │ └── ...
907
+ ├── plugins/ # 插件
908
+ │ └── <plugin-name>/
909
+ ├── self-evolve/ # 自我进化数据
910
+ │ ├── failures/
911
+ │ ├── skills/
912
+ │ └── history/
913
+ ├── honcho/ # Honcho 数据目录
914
+ └── logs/ # 日志文件
915
+ └── <date>.log
916
+ ```
917
+
918
+ ---
919
+
920
+ *本文档随飞虹 Code 版本同步更新。如有疑问或建议,请通过 GitHub Issues 或社区渠道反馈。*
921
+
922
+ © 2026 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹