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.
Files changed (347) hide show
  1. package/.github/workflows/ci.yml +193 -180
  2. package/.github/workflows/release.yml +203 -200
  3. package/.github/workflows/swebench-real.yml +84 -0
  4. package/CHANGELOG.md +117 -94
  5. package/CONTRIBUTING.md +9 -2
  6. package/README.md +636 -609
  7. package/README.self-evolve.md +279 -274
  8. package/dist/agent/change-manager.js +1 -1
  9. package/dist/agent/code-rag.js +1 -1
  10. package/dist/agent/code-review.js +1 -1
  11. package/dist/agent/code-writer.js +1 -1
  12. package/dist/agent/completion-postprocess.js +1 -1
  13. package/dist/agent/context-compactor.js +11 -0
  14. package/dist/agent/context-compactor.js.map +1 -1
  15. package/dist/agent/custom-agent.js +52 -52
  16. package/dist/agent/design-to-code.js +40 -40
  17. package/dist/agent/experience.js +1 -1
  18. package/dist/agent/layered-memory.js +1 -1
  19. package/dist/agent/lint.js +1 -1
  20. package/dist/agent/multi-agent.js +44 -44
  21. package/dist/agent/orchestrator.js +93 -18
  22. package/dist/agent/orchestrator.js.map +1 -1
  23. package/dist/agent/parallel-orchestrator.js +1 -1
  24. package/dist/agent/planner.js +8 -3
  25. package/dist/agent/planner.js.map +1 -1
  26. package/dist/agent/prompts.js +2 -2
  27. package/dist/agent/quality-gate.js +1 -1
  28. package/dist/agent/repo-context.js +1 -1
  29. package/dist/agent/repo-reader.js +1 -1
  30. package/dist/agent/repo-underwriter.js +1 -1
  31. package/dist/agent/self-correction.js +1 -1
  32. package/dist/agent/self-heal.js +5 -0
  33. package/dist/agent/self-heal.js.map +1 -1
  34. package/dist/agent/self-improver.js +1 -1
  35. package/dist/agent/subagent-summary.js +1 -1
  36. package/dist/agent/subagent.js +1 -1
  37. package/dist/agent/swe-agent.js +1 -1
  38. package/dist/agent/swe-verifier.js +1 -1
  39. package/dist/agent/symbol-index.js +1 -1
  40. package/dist/agent/team.js +1 -1
  41. package/dist/agent/type-checker.js +1 -1
  42. package/dist/cli/commands.js +7 -0
  43. package/dist/cli/commands.js.map +1 -1
  44. package/dist/cli/index.js +57 -2
  45. package/dist/cli/index.js.map +1 -1
  46. package/dist/cli/repl.js +1 -1
  47. package/dist/cli/run.js +40 -3
  48. package/dist/cli/run.js.map +1 -1
  49. package/dist/cli/self-evolve-cli.js +168 -0
  50. package/dist/cli/tui-run.js +1 -1
  51. package/dist/cli/tui.js +1 -1
  52. package/dist/cli/version.js +3 -3
  53. package/dist/cli/version.js.map +1 -1
  54. package/dist/enterprise/audit.js +1 -1
  55. package/dist/enterprise/index.js +1 -1
  56. package/dist/enterprise/policy.js +1 -1
  57. package/dist/enterprise/quota.js +1 -1
  58. package/dist/enterprise/tenant.js +1 -1
  59. package/dist/harness/executor.js +1 -1
  60. package/dist/harness/index.js +1 -1
  61. package/dist/harness/loader.js +1 -1
  62. package/dist/harness/types.js +1 -1
  63. package/dist/harness/verifier.js +52 -12
  64. package/dist/harness/verifier.js.map +1 -1
  65. package/dist/hello.js +14 -0
  66. package/dist/hello.js.map +1 -0
  67. package/dist/integrations/feishu-bridge.js +348 -0
  68. package/dist/integrations/feishu-bridge.js.map +1 -0
  69. package/dist/integrations/github-mcp.js +137 -0
  70. package/dist/integrations/github-mcp.js.map +1 -0
  71. package/dist/integrations/wechat-bridge.js +499 -0
  72. package/dist/integrations/wechat-bridge.js.map +1 -0
  73. package/dist/integrations/yuanbao-bridge.js +326 -0
  74. package/dist/integrations/yuanbao-bridge.js.map +1 -0
  75. package/dist/lsp/lsp-client.js +1 -1
  76. package/dist/models/model-router.js +1 -1
  77. package/dist/models/model.dto.js +1 -1
  78. package/dist/models/providers/ollama.provider.js +1 -1
  79. package/dist/models/providers/openai-compatible.provider.js +1 -1
  80. package/dist/plugins/plugin-loader.js +1 -1
  81. package/dist/runtime/event-log.js +1 -1
  82. package/dist/runtime/git.js +1 -1
  83. package/dist/runtime/hooks.js +71 -4
  84. package/dist/runtime/hooks.js.map +1 -1
  85. package/dist/runtime/session-persist.js +1 -1
  86. package/dist/runtime/worktree.js +1 -1
  87. package/dist/self-evolve/hook.ts +80 -0
  88. package/dist/self-evolve/manager.d.ts +8 -0
  89. package/dist/self-evolve/manager.js +517 -401
  90. package/dist/self-evolve/self-heal-scheduler.js +160 -0
  91. package/dist/self-evolve/self-heal-scheduler.js.map +1 -0
  92. package/dist/shared/concurrency.js +1 -1
  93. package/dist/shared/config.js +4 -2
  94. package/dist/shared/config.js.map +1 -1
  95. package/dist/shared/errors.js +1 -1
  96. package/dist/shared/i18n.js +1 -1
  97. package/dist/shared/i18n.js.map +1 -1
  98. package/dist/shared/secure-store.js +12 -5
  99. package/dist/shared/secure-store.js.map +1 -1
  100. package/dist/shared/types.js +1 -1
  101. package/dist/skills/goal.js +1 -1
  102. package/dist/skills/grill.js +1 -1
  103. package/dist/skills/plan.js +1 -1
  104. package/dist/skills/pua-hooks.js +273 -0
  105. package/dist/skills/pua-hooks.js.map +1 -0
  106. package/dist/skills/self-heal.js +9 -3
  107. package/dist/skills/self-heal.js.map +1 -1
  108. package/dist/skills/skill-loader.js +1 -1
  109. package/dist/skills/skill-market.js +84 -8
  110. package/dist/skills/skill-market.js.map +1 -1
  111. package/dist/tools/analysis/code-analyzer.js +1 -1
  112. package/dist/tools/file/edit.tool.js +18 -3
  113. package/dist/tools/file/edit.tool.js.map +1 -1
  114. package/dist/tools/file/list.tool.js +1 -1
  115. package/dist/tools/file/read.tool.js +1 -1
  116. package/dist/tools/file/write.tool.js +1 -1
  117. package/dist/tools/generator/code-generator.js +1 -1
  118. package/dist/tools/generator/test-generator.js +1 -1
  119. package/dist/tools/index.js +1 -1
  120. package/dist/tools/mcp/index.js +1 -1
  121. package/dist/tools/mcp/mcp-client.js +1 -1
  122. package/dist/tools/safe-path.js +1 -1
  123. package/dist/tools/search/grep.tool.js +1 -1
  124. package/dist/tools/shell/exec.js +1 -1
  125. package/dist/tools/shell/run-shell.tool.js +1 -1
  126. package/dist/tools/skills/load-skill.tool.js +1 -1
  127. package/dist/tools/tool.registry.js +10 -1
  128. package/dist/tools/tool.registry.js.map +1 -1
  129. package/dist/tools/verify/build-check.tool.js +1 -1
  130. package/dist/tools/verify/test-run.tool.js +1 -1
  131. package/dist/tools/web/web.tool.js +1 -1
  132. package/dist/voice/voice-programming.js +32 -6
  133. package/dist/voice/voice-programming.js.map +1 -1
  134. package/dist/web/auth.js +34 -2
  135. package/dist/web/auth.js.map +1 -1
  136. package/dist/web/channels.js +1 -1
  137. package/dist/web/public/css/style.css +1751 -1724
  138. package/dist/web/public/index.html +1243 -1242
  139. package/dist/web/public/js/api.js +558 -555
  140. package/dist/web/public/js/app.js +2233 -2210
  141. package/dist/web/public/js/mock-api.js +259 -234
  142. package/dist/web/public/js/monaco-editor.js +363 -363
  143. package/dist/web/public/js/ui.js +2217 -2251
  144. package/dist/web/public/js/utils.js +214 -214
  145. package/dist/web/public/manifest.json +59 -59
  146. package/dist/web/public/service-worker.js +149 -173
  147. package/dist/web/public/vendor/monaco/vs/abap-D-t0cyap.js +1 -0
  148. package/dist/web/public/vendor/monaco/vs/apex-CcIm7xu6.js +1 -0
  149. package/dist/web/public/vendor/monaco/vs/assets/css.worker-URu8fCFR.js +97 -0
  150. package/dist/web/public/vendor/monaco/vs/assets/editor.worker-lj3bdIIn.js +30 -0
  151. package/dist/web/public/vendor/monaco/vs/assets/editorWebWorkerMain-CA_vMoUU.js +30 -0
  152. package/dist/web/public/vendor/monaco/vs/assets/html.worker-D1SL3iM8.js +474 -0
  153. package/dist/web/public/vendor/monaco/vs/assets/json.worker-CoJx_OPf.js +62 -0
  154. package/dist/web/public/vendor/monaco/vs/assets/ts.worker-BWKtMYOk.js +67722 -0
  155. package/dist/web/public/vendor/monaco/vs/azcli-BA0tQDCg.js +1 -0
  156. package/dist/web/public/vendor/monaco/vs/basic-languages/monaco.contribution.js +1 -0
  157. package/dist/web/public/vendor/monaco/vs/bat-C397hTD6.js +1 -0
  158. package/dist/web/public/vendor/monaco/vs/bicep-DF5aW17k.js +2 -0
  159. package/dist/web/public/vendor/monaco/vs/cameligo-plsz8qhj.js +1 -0
  160. package/dist/web/public/vendor/monaco/vs/clojure-Y2auQMzK.js +1 -0
  161. package/dist/web/public/vendor/monaco/vs/coffee-Bu45yuWE.js +1 -0
  162. package/dist/web/public/vendor/monaco/vs/cpp-CkKPQIni.js +1 -0
  163. package/dist/web/public/vendor/monaco/vs/csharp-CX28MZyh.js +1 -0
  164. package/dist/web/public/vendor/monaco/vs/csp-D8uWnyxW.js +1 -0
  165. package/dist/web/public/vendor/monaco/vs/css-CaeNmE3S.js +3 -0
  166. package/dist/web/public/vendor/monaco/vs/css.worker-CyhWkhHo.js +1 -0
  167. package/dist/web/public/vendor/monaco/vs/cssMode-CV6Ay48H.js +1 -0
  168. package/dist/web/public/vendor/monaco/vs/cypher-DVThT8BS.js +1 -0
  169. package/dist/web/public/vendor/monaco/vs/dart-CmGfCvrO.js +1 -0
  170. package/dist/web/public/vendor/monaco/vs/dockerfile-CZqqYdch.js +1 -0
  171. package/dist/web/public/vendor/monaco/vs/ecl-30fUercY.js +1 -0
  172. package/dist/web/public/vendor/monaco/vs/editor/editor.main.css +1 -0
  173. package/dist/web/public/vendor/monaco/vs/editor/editor.main.js +1 -0
  174. package/dist/web/public/vendor/monaco/vs/editor/editor.worker.js +1 -0
  175. package/dist/web/public/vendor/monaco/vs/editor-KLE6jdfb.js +831 -0
  176. package/dist/web/public/vendor/monaco/vs/editor.js +1 -0
  177. package/dist/web/public/vendor/monaco/vs/editorWorkerHost-fVE1cjcC.js +35 -0
  178. package/dist/web/public/vendor/monaco/vs/elixir-xjPaIfzF.js +1 -0
  179. package/dist/web/public/vendor/monaco/vs/flow9-DqtmStfK.js +1 -0
  180. package/dist/web/public/vendor/monaco/vs/freemarker2-FWreY7v7.js +3 -0
  181. package/dist/web/public/vendor/monaco/vs/fsharp-BOMdg4U1.js +1 -0
  182. package/dist/web/public/vendor/monaco/vs/go-D_hbi-Jt.js +1 -0
  183. package/dist/web/public/vendor/monaco/vs/graphql-CKUU4kLG.js +1 -0
  184. package/dist/web/public/vendor/monaco/vs/handlebars-CZi4pHCH.js +1 -0
  185. package/dist/web/public/vendor/monaco/vs/hcl-DTaboeZW.js +1 -0
  186. package/dist/web/public/vendor/monaco/vs/html-j_7ZTNRU.js +1 -0
  187. package/dist/web/public/vendor/monaco/vs/html.worker-CA3iAimZ.js +1 -0
  188. package/dist/web/public/vendor/monaco/vs/htmlMode-27by_KM4.js +1 -0
  189. package/dist/web/public/vendor/monaco/vs/index-049xrXrp.js +1 -0
  190. package/dist/web/public/vendor/monaco/vs/index-CBVt3dzv.js +5 -0
  191. package/dist/web/public/vendor/monaco/vs/index.js +1 -0
  192. package/dist/web/public/vendor/monaco/vs/ini-CsNwO04R.js +1 -0
  193. package/dist/web/public/vendor/monaco/vs/initialize-DL0l1TGY.js +1 -0
  194. package/dist/web/public/vendor/monaco/vs/java-CI4ZMsH9.js +1 -0
  195. package/dist/web/public/vendor/monaco/vs/javascript-DTJl4Jn1.js +1 -0
  196. package/dist/web/public/vendor/monaco/vs/json.worker-BizpAl9O.js +1 -0
  197. package/dist/web/public/vendor/monaco/vs/jsonMode-DLUiMUrI.js +1 -0
  198. package/dist/web/public/vendor/monaco/vs/julia-BwzEvaQw.js +1 -0
  199. package/dist/web/public/vendor/monaco/vs/kotlin-IUYPiTV8.js +1 -0
  200. package/dist/web/public/vendor/monaco/vs/language/css/css.worker.js +66 -0
  201. package/dist/web/public/vendor/monaco/vs/language/css/monaco.contribution.js +1 -0
  202. package/dist/web/public/vendor/monaco/vs/language/html/html.worker.js +443 -0
  203. package/dist/web/public/vendor/monaco/vs/language/html/monaco.contribution.js +1 -0
  204. package/dist/web/public/vendor/monaco/vs/language/json/json.worker.js +17 -0
  205. package/dist/web/public/vendor/monaco/vs/language/json/monaco.contribution.js +1 -0
  206. package/dist/web/public/vendor/monaco/vs/language/typescript/monaco.contribution.js +1 -0
  207. package/dist/web/public/vendor/monaco/vs/language/typescript/ts.worker.js +67693 -0
  208. package/dist/web/public/vendor/monaco/vs/less-C0eDYdqa.js +2 -0
  209. package/dist/web/public/vendor/monaco/vs/lexon-iON-Kj97.js +1 -0
  210. package/dist/web/public/vendor/monaco/vs/liquid-CLJYelW6.js +1 -0
  211. package/dist/web/public/vendor/monaco/vs/loader.js +1368 -0
  212. package/dist/web/public/vendor/monaco/vs/lspLanguageFeatures-BIkJOWLw.js +2 -0
  213. package/dist/web/public/vendor/monaco/vs/lua-DtygF91M.js +1 -0
  214. package/dist/web/public/vendor/monaco/vs/m3-CsR4AuFi.js +1 -0
  215. package/dist/web/public/vendor/monaco/vs/main-BEx-Fmlo.js +15 -0
  216. package/dist/web/public/vendor/monaco/vs/main-DsK8pnKg.js +3 -0
  217. package/dist/web/public/vendor/monaco/vs/markdown-C_rD0bIw.js +1 -0
  218. package/dist/web/public/vendor/monaco/vs/mdx-CpzZIPHF.js +1 -0
  219. package/dist/web/public/vendor/monaco/vs/mips-CiYP61RB.js +1 -0
  220. package/dist/web/public/vendor/monaco/vs/monaco.contribution-9cKT3C7t.js +1 -0
  221. package/dist/web/public/vendor/monaco/vs/monaco.contribution-BE88ZNGY.js +1 -0
  222. package/dist/web/public/vendor/monaco/vs/monaco.contribution-BPhsneLd.js +1 -0
  223. package/dist/web/public/vendor/monaco/vs/monaco.contribution-BgRy6xDf.js +1 -0
  224. package/dist/web/public/vendor/monaco/vs/msdax-C38-sJlp.js +1 -0
  225. package/dist/web/public/vendor/monaco/vs/mysql-CdtbpvbG.js +1 -0
  226. package/dist/web/public/vendor/monaco/vs/nls/lang/cs.d.ts +1 -0
  227. package/dist/web/public/vendor/monaco/vs/nls/lang/cs.js +9 -0
  228. package/dist/web/public/vendor/monaco/vs/nls/lang/de.d.ts +1 -0
  229. package/dist/web/public/vendor/monaco/vs/nls/lang/de.js +9 -0
  230. package/dist/web/public/vendor/monaco/vs/nls/lang/es.d.ts +1 -0
  231. package/dist/web/public/vendor/monaco/vs/nls/lang/es.js +9 -0
  232. package/dist/web/public/vendor/monaco/vs/nls/lang/fr.d.ts +1 -0
  233. package/dist/web/public/vendor/monaco/vs/nls/lang/fr.js +9 -0
  234. package/dist/web/public/vendor/monaco/vs/nls/lang/it.d.ts +1 -0
  235. package/dist/web/public/vendor/monaco/vs/nls/lang/it.js +9 -0
  236. package/dist/web/public/vendor/monaco/vs/nls/lang/ja.d.ts +1 -0
  237. package/dist/web/public/vendor/monaco/vs/nls/lang/ja.js +9 -0
  238. package/dist/web/public/vendor/monaco/vs/nls/lang/ko.d.ts +1 -0
  239. package/dist/web/public/vendor/monaco/vs/nls/lang/ko.js +9 -0
  240. package/dist/web/public/vendor/monaco/vs/nls/lang/pl.d.ts +1 -0
  241. package/dist/web/public/vendor/monaco/vs/nls/lang/pl.js +9 -0
  242. package/dist/web/public/vendor/monaco/vs/nls/lang/pt-br.d.ts +1 -0
  243. package/dist/web/public/vendor/monaco/vs/nls/lang/pt-br.js +9 -0
  244. package/dist/web/public/vendor/monaco/vs/nls/lang/ru.d.ts +1 -0
  245. package/dist/web/public/vendor/monaco/vs/nls/lang/ru.js +9 -0
  246. package/dist/web/public/vendor/monaco/vs/nls/lang/tr.d.ts +1 -0
  247. package/dist/web/public/vendor/monaco/vs/nls/lang/tr.js +9 -0
  248. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-cn.d.ts +1 -0
  249. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-cn.js +9 -0
  250. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-tw.d.ts +1 -0
  251. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-tw.js +9 -0
  252. package/dist/web/public/vendor/monaco/vs/nls.messages-loader.js +1 -0
  253. package/dist/web/public/vendor/monaco/vs/objective-c-CntZFaHX.js +1 -0
  254. package/dist/web/public/vendor/monaco/vs/pascal-r6kuqfl_.js +1 -0
  255. package/dist/web/public/vendor/monaco/vs/pascaligo-BiXoTmXh.js +1 -0
  256. package/dist/web/public/vendor/monaco/vs/perl-DABw_TcH.js +1 -0
  257. package/dist/web/public/vendor/monaco/vs/pgsql-me_jFXeX.js +1 -0
  258. package/dist/web/public/vendor/monaco/vs/php-D_kh-9LK.js +1 -0
  259. package/dist/web/public/vendor/monaco/vs/pla-VfZjczW0.js +1 -0
  260. package/dist/web/public/vendor/monaco/vs/postiats-BBSzz8Pk.js +1 -0
  261. package/dist/web/public/vendor/monaco/vs/powerquery-Dt-g_2cc.js +1 -0
  262. package/dist/web/public/vendor/monaco/vs/powershell-B-7ap1zc.js +1 -0
  263. package/dist/web/public/vendor/monaco/vs/protobuf-BmtuEB1A.js +2 -0
  264. package/dist/web/public/vendor/monaco/vs/pug-BRpRNeEb.js +1 -0
  265. package/dist/web/public/vendor/monaco/vs/python-CqWUUgfu.js +1 -0
  266. package/dist/web/public/vendor/monaco/vs/qsharp-BzsFaUU9.js +1 -0
  267. package/dist/web/public/vendor/monaco/vs/r-f8dDdrp4.js +1 -0
  268. package/dist/web/public/vendor/monaco/vs/razor-hok5y9Km.js +1 -0
  269. package/dist/web/public/vendor/monaco/vs/redis-fvZQY4PI.js +1 -0
  270. package/dist/web/public/vendor/monaco/vs/redshift-45Et0LQi.js +1 -0
  271. package/dist/web/public/vendor/monaco/vs/restructuredtext-C7UUFKFD.js +1 -0
  272. package/dist/web/public/vendor/monaco/vs/ruby-CZO8zYTz.js +1 -0
  273. package/dist/web/public/vendor/monaco/vs/rust-Bfetafyc.js +1 -0
  274. package/dist/web/public/vendor/monaco/vs/sb-3GYllVck.js +1 -0
  275. package/dist/web/public/vendor/monaco/vs/scala-foMgrKo1.js +1 -0
  276. package/dist/web/public/vendor/monaco/vs/scheme-CHdMtr7p.js +1 -0
  277. package/dist/web/public/vendor/monaco/vs/scss-C1cmLt9V.js +3 -0
  278. package/dist/web/public/vendor/monaco/vs/shell-ClXCKCEW.js +1 -0
  279. package/dist/web/public/vendor/monaco/vs/solidity-MZ6ExpPy.js +1 -0
  280. package/dist/web/public/vendor/monaco/vs/sophia-DWkuSsPQ.js +1 -0
  281. package/dist/web/public/vendor/monaco/vs/sparql-AUGFYSyk.js +1 -0
  282. package/dist/web/public/vendor/monaco/vs/sql-32GpJSV2.js +1 -0
  283. package/dist/web/public/vendor/monaco/vs/st-CuDFIVZ_.js +1 -0
  284. package/dist/web/public/vendor/monaco/vs/swift-t-PfMj7W.js +1 -0
  285. package/dist/web/public/vendor/monaco/vs/systemverilog-Ch4vA8Yt.js +1 -0
  286. package/dist/web/public/vendor/monaco/vs/tcl-D74tq1nH.js +1 -0
  287. package/dist/web/public/vendor/monaco/vs/toggleHighContrast-qGX7E9o7.js +61 -0
  288. package/dist/web/public/vendor/monaco/vs/ts.worker-2QLmBukE.js +1 -0
  289. package/dist/web/public/vendor/monaco/vs/tsMode-B0S_kp2q.js +11 -0
  290. package/dist/web/public/vendor/monaco/vs/twig-C6taOxMV.js +1 -0
  291. package/dist/web/public/vendor/monaco/vs/typescript-_2t_511t.js +1 -0
  292. package/dist/web/public/vendor/monaco/vs/typespec-8OfoLt6R.js +1 -0
  293. package/dist/web/public/vendor/monaco/vs/vb-Dyb2648j.js +1 -0
  294. package/dist/web/public/vendor/monaco/vs/wgsl-BhLXMOR0.js +298 -0
  295. package/dist/web/public/vendor/monaco/vs/workers-BBttULjf.js +1 -0
  296. package/dist/web/public/vendor/monaco/vs/xml-cZjNDqDT.js +1 -0
  297. package/dist/web/public/vendor/monaco/vs/yaml-A1fOIdH6.js +1 -0
  298. package/dist/web/server.js +81 -16
  299. package/dist/web/server.js.map +1 -1
  300. package/dist/web/task-queue.js +6 -21
  301. package/dist/web/task-queue.js.map +1 -1
  302. package/dist/web/web-config.js +143 -0
  303. package/dist/web/web-config.js.map +1 -0
  304. package/docs/App/344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +1 -1
  305. package/docs/App/346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +1 -1
  306. package/docs/BENCHMARK_REPORT_en.md +386 -386
  307. package/docs/BENCHMARK_REPORT_zh.md +386 -386
  308. package/docs/DPA.md +65 -63
  309. 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
  310. package/docs/Deployment_Guide_EN.md +1 -1
  311. package/docs/SECURITY_WHITEPAPER.md +2 -2
  312. package/docs/SELF-EVOLVE-GUIDE.md +1 -1
  313. package/docs/SWE_BENCH_REPORT.md +73 -55
  314. package/docs/TECHNICAL_SPEC_en.md +292 -292
  315. package/docs/TECHNICAL_SPEC_zh.md +292 -292
  316. package/docs/Technical_Manual_EN.md +1 -1
  317. package/docs/UPDATE_NOTES_en.md +159 -159
  318. package/docs/UPDATE_NOTES_zh.md +159 -159
  319. package/docs/UPGRADE_7.2.0.md +309 -309
  320. package/docs/UPGRADE_GUIDE_7_5.md +86 -86
  321. package/docs/UPGRADE_GUIDE_7_6.md +153 -0
  322. package/docs/User_Manual_EN.md +1 -1
  323. package/docs/VOLTAGENT_SKILLS_CATALOG.md +95 -0
  324. package/docs/error-codes.md +1 -1
  325. package/docs/geo-feihong-code.html +391 -391
  326. package/docs//344/272/247/345/223/201/345/274/200/345/217/221/346/226/207/346/241/243.md +5 -3
  327. package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +140 -231
  328. 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
  329. 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
  330. 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
  331. 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
  332. package/docs//345/256/211/345/205/250/347/231/275/347/232/256/344/271/246_v7.2.0.md +84 -82
  333. package/docs//346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +240 -149
  334. package/docs//351/203/250/347/275/262/350/257/264/346/230/216/344/271/246.md +2 -2
  335. package/electron/main.js +404 -404
  336. package/package.json +12 -5
  337. package/templates/skills/api-design/SKILL.md +1 -1
  338. package/templates/skills/code-review/SKILL.md +1 -1
  339. package/templates/skills/dependency-upgrade/SKILL.md +1 -1
  340. package/templates/skills/doc-gen/SKILL.md +1 -1
  341. package/templates/skills/git-flow/SKILL.md +1 -1
  342. package/templates/skills/onboarding/SKILL.md +1 -1
  343. package/templates/skills/performance/SKILL.md +1 -1
  344. package/templates/skills/refactor/SKILL.md +1 -1
  345. package/templates/skills/security-audit/SKILL.md +1 -1
  346. package/templates/skills/test-gen/SKILL.md +1 -1
  347. package/tool-schema.json +197 -197
@@ -1,152 +1,152 @@
1
- # 飞虹 Code 全面复盘:6 项重点核查与优化方案(v7.2.0)
2
-
3
- **晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹**
4
- **复核日期**:2026-08-27
5
- **复核方式**:不凭记忆/不粉饰,逐项读取代码 + 实测证据后判定。
6
-
7
- > 本报告针对外部评估提出的 6 项重点问题逐条复核,区分「✅ 已修复(评估数据过时)/ ⚠️ 部分属实 / ❌ 真差距」,并给出可落地优化方案。本轮已完成的部分修复见各条目"本轮动作"。
8
-
9
- ---
10
-
11
- ## 总览
12
-
13
- | # | 外部指控 | 复核判定 | 真差距 | 本轮动作 |
14
- |---|---|---|---|---|
15
- | ① | SWE Agent 245 行框架,无 SWE-bench 集成 | ⚠️ 部分不实 | 跑分未公开到 README | ✅ README 已公开 80% 跑分 |
16
- | ② | 无 LSP 集成(OpenCode 编译器级) | ⚠️ 部分不实 | 是自建语义层,非真实 LSP 服务器对接 | 已在 P0-2 修复,标注量级差 |
17
- | ③ | O1 扩展 300 行薄壳,无实时 inline 补全 | ⚠️ 部分不实 | 薄壳属实(设计使然);补全已实现但无 CI 验证 | 报告澄清 + 验证路径 |
18
- | ④ | 生态规模不足(WorkBuddy 7 万+ Skills) | ❌ 属实 | 自有生态刚起步 | 生态 roadmap(本报告) |
19
- | ⑤ | Docker 沙箱缺失 | ⚠️ 部分不实 | container 档执行层未实测/未探测 | ✅ doctor 增加 docker 探测 |
20
- | ⑥ | 合规认证空白(SOC2/ISO27001) | ❌ 属实 | 无认证、无安全文档 | ✅ 合规准备清单文档 |
21
-
22
- ---
23
-
24
- ## ① SWE Agent:245 行框架?无 SWE-bench 集成?
25
-
26
- **实测证据**:
27
- - SWE 三件套实际位置与行数(`src/agent/`):
28
- - `swe-agent.ts` **219 行**、`swe-planner.ts` **180 行**、`swe-verifier.ts` **135 行**,**合计 534 行**(外部评估"245 行"严重低估)
29
- - **SWE-bench 集成真实存在**:
30
- - harness 闭环(loader→executor→verifier→reporter)mock **2/2 = 100%**(`_swe-smoke.mjs`)
31
- - 真实模型驱动 Orchestrator 生成率 **3/3 = 100%**(`_swe-real.mjs`)
32
- - **测试通过率 80%(4/5)**:自建 SWE-bench 格式任务集(problem_statement + FAIL_TO_PASS)+ 真实模型 agnes-2.5-flash + **预定义测试 node --test 真实断言**(`_swe-bench-real.mjs`)
33
- - 失败项 swe-js-004 为执行层失败(iterations=0),非实现错误
34
-
35
- **判定**:⚠️ **部分不实**。"245 行框架、无集成"不成立;但**"无公开跑分"部分属实**——跑分此前仅在内部报告,未进入 README 官网。
36
-
37
- **优化方案(已完成)**:✅ README 新增「SWE-bench 真实跑分」小节,诚实口径公开 80%(4/5)+ 复现脚本 + 行业参考,并明确"非官方 Verified 声明"。
38
-
39
- **剩余建议**:官方 SWE-bench Verified 500 任务需 Docker+pytest 环境,建议在 CI 中跑通后作为正式对标成绩(见 ⑤)。
40
-
41
- ---
42
-
43
- ## ② LSP 集成:无编译器级代码理解?
44
-
45
- **实测证据**:
46
- - `src/lsp/lsp-service.ts` **185 行**,已实现并接入 Web API(`/api/lsp/*`):
47
- - `graph`:全仓库代码图谱(462 文件 / 14848 符号 / 1230 边,实测)
48
- - `symbols`:文件符号列表(对标 LSP documentSymbol)
49
- - `diagnostics`:文件级语义诊断(对标 publishDiagnostics)
50
- - `definition` / `hover` / `search`:定义定位、签名信息、跨文件符号搜索
51
- - P0-2 完成时 LSP 冒烟 **9/9 通过**(`_lsp-smoke.mjs`)
52
-
53
- **判定**:⚠️ **部分不实**。"无 LSP 集成"不成立(已有自建语义服务层);但需诚实标注量级差:**OpenCode 是"编译器级"**——通过对接真实 LSP 服务器(typescript-language-server 等)获得精确的类型级理解;飞虹 Code 是**自建轻量语义服务层**(正则/符号索引),未对接真实 LSP 协议服务器。
54
-
55
- **优化方案**:
56
- - P0:补齐 `textDocument/hover` 的类型级信息(当前为符号级)
57
- - P1:可选对接 `typescript-language-server`,把自建层作为 fallback,达到编译器级(对标 OpenCode)
58
- - P1:Web 编辑器接入 `/api/lsp/diagnostics` 做编辑时错误波浪线
59
-
60
- ---
61
-
62
- ## ③ O1 扩展 300 行薄壳,无实时 inline 补全?
63
-
64
- **实测证据**:
65
- - `vscode-extension/extension.js` **306 行**(api-client.js 88 行)——"300 行薄壳"**属实**,但这是**设计使然**(注释明确"逻辑下沉 agent 端,扩展只做 UI 与协议桥接"),且薄壳内部**已实现实时 inline 补全**:
66
- - L99-134:`inlineProvider.provideInlineCompletionItems` → 调 `/api/completion` → 包装为 `InlineCompletionItem`
67
- - L291-295:`vscode.languages.registerInlineCompletionItemProvider({ pattern: '**' }, inlineProvider)` **已注册**
68
- - `api-client.js` 已封装 `completion(params)` → `POST /api/completion`
69
- - 客户端后处理(stripCodeFences / dedupeAgainstSuffix / trimTrailingPartialLine)已实现
70
- - **Tab 接受**:VS Code 1.70+ 内建 inline completion Tab 接受,无需扩展代码
71
- - Web 端 ghost text 补全(P1-1)也已实现(防抖 350ms + Tab 接受)
72
-
73
- **判定**:⚠️ **部分不实**。"无实时 inline 补全"**不成立**(VS Code 扩展 + Web 端均已实现);"300 行薄壳"属实但为合理架构。
74
-
75
- **优化方案**:
76
- - P0:给 `vscode-extension` 增加**无 VS Code 环境的逻辑单测**(postProcessCompletion 等纯函数),杜绝"无验证"
77
- - P1:补全质量提升——服务端 completion-engine 增加多候选排序、跨文件上下文(已有部分)
78
- - P2:扩展增加状态栏补全开关状态同步、Ctrl+Space 手动触发(VS Code 内建,可配置快捷键)
79
-
80
- ---
81
-
82
- ## ④ 生态规模不足(WorkBuddy 7 万+ Skills)
83
-
84
- **实测证据**:
85
- - 系统运行环境内置 **105 个 Skill**(doubao-academic-* / lark-* / seed-* 等,为豆包平台资产,**非飞虹 Code 自有生态**)
86
- - 飞虹 Code 自有生态:`src/plugins/`(manager 390 行 + plugin-loader 142 行)已支持全局/项目级第三方插件加载与真实执行(P2-2 修复),`fhcode skill-market` / `fhcode plugin` 命令存在
87
- - **但**:无官方插件市场、无 Skill 模板库、第三方插件为 0
88
-
89
- **判定**:❌ **属实**。与 WorkBuddy 7 万+ Skills 相比,生态差距是真实的、最大的长期差距。
90
-
91
- **优化方案**(roadmap):
92
- - P0:**Skill 模板库**——内置 10 个官方 Skill 模板(code-review / git-flow / api-design 等),`fhcode skill new <name>` 脚手架生成
93
- - P1:**本地插件市场种子**——`skill-market` 增加本地种子源(10+ 插件),支持 `fhcode plugin install <market-id>`
94
- - P2:**生态门户**——GEO 推广页 + 文档站开放第三方提交入口(GitHub PR 模板)
95
- - P3:**数量规模**——开放 SDK 文档(PluginAPI 已就绪)+ 社区激励
96
-
97
- ---
98
-
99
- ## ⑤ Docker 沙箱缺失:无容器隔离档位?
100
-
101
- **实测证据**:
102
- - `src/tools/sandbox.ts` **已实现 container 档**(SandboxMode 含 `container`,判定逻辑 L118-128)
103
- - `src/tools/shell/exec.ts` **已实现容器执行层** `runCommandInContainer`(docker run --rm -v cwd:/workspace -w /workspace + FH_SANDBOX_IMAGE 可配,默认 node:22-alpine)
104
- - P2-3 沙箱判定层实测 **12/12 通过**(read-only 禁写禁执行 / container 放行+网络规则 / danger 黑名单仍生效)
105
- - `FH_SANDBOX_MODE=container` 配置已存在 .env.example
106
-
107
- **判定**:⚠️ **部分不实**。"无容器隔离档位"**不成立**(代码 + 判定层实测俱在);真差距是:
108
- 1. **执行层未在真实容器实测**(本机无 docker)
109
- 2. **环境无探测**:`fhcode doctor` 此前不检查 docker,container 模式是否可用无人知晓
110
- 3. 文档未说明容器模式启用步骤
111
-
112
- **优化方案(本轮已完成 2/3)**:
113
- - ✅ **doctor 增加 docker 探测**:`runDoctor` 新增第 6 项检查(Docker 沙箱 container 档),container 模式下 docker 不可用则告警
114
- - ✅ i18n zh/en 补齐 `doctor.docker`
115
- - 剩余:有 docker 环境实测 `runCommandInContainer` 一次真实容器执行(写文件验证挂载隔离);文档补"container 模式启用步骤"
116
-
117
- ---
118
-
119
- ## ⑥ 合规认证空白(缺 SOC2/ISO27001)
120
-
121
- **实测证据**:
122
- - 文档中 SOC2/ISO27001 仅出现在 BENCHMARK_REPORT 的"差距"栏,**无任何认证/证书/安全文档**——指控属实
123
- - 技术控制面已具备:RBAC、审计日志(`fhcode audit`)、私有化部署、沙箱三档——是合规的**技术基础**
124
-
125
- **判定**:❌ **属实**。政企采购确实常因缺证书卡流程。
126
-
127
- **优化方案(本轮已完成)**:
128
- - ✅ 新建《合规认证准备清单_v7.2.0.md》:现状核查表 + 政企采购卡点分析 + 技术侧 8 项先行项(依赖扫描 CI / SBOM / 审计完备 / 脱敏 / 密钥管理 / 安全白皮书 / 数据留存 / DPA)+ 组织侧 4 项(SOC2/ISO27001/等保/渗透)
129
- - **诚实声明**:认证必须第三方审计,产品不得自封;技术控制面 + 文档 + 供应链证据可在 1-2 迭代补齐(这是政企最卡的部分)
130
- - 后续:安全 CI(npm audit + osv-scanner)落地、SBOM 生成、安全白皮书
131
-
132
- ---
133
-
134
- ## 优先级建议(下一迭代)
135
-
136
- | 优先级 | 项 | 价值 |
137
- |---|---|---|
138
- | P0 | 官方 SWE-bench Verified 实测(需 Docker 环境) | 对外硬指标从"自建 80%"升级为"官方成绩" |
139
- | P0 | 安全 CI(npm audit + osv-scanner)+ SBOM | 供应链安全证据,政企准入 |
140
- | P0 | 生态 Skill 模板库(10 个官方模板) | 生态从 0→1 的第一步 |
141
- | P1 | LSP 对接真实服务器(typescript-language-server) | 编译器级代码理解(对标 OpenCode) |
142
- | P1 | 扩展补全纯函数单测 + 质量优化 | 杜绝"无验证"、提升补全质量 |
143
- | P1 | 安全白皮书 + DPA 文档 | 政企售前材料 |
144
- | P2 | 生态门户(第三方提交入口) | 规模化起点 |
145
-
146
- ## 结论
147
-
148
- 外部评估的 6 项指控中:**③ 项为"部分不实"**(① ② ③ ⑤,均已有实现,属评估数据过时或口径偏差),**2 项"属实"**(④ 生态、⑥ 合规),**0 项完全成立**。本轮已完成:README 跑分公开(①)、doctor docker 探测(⑤)、合规准备清单(⑥)。真正的长期差距集中在**生态规模(④)与合规认证(⑥)**,以及**官方 SWE-bench 实测(① 的升级项)与编译器级 LSP(② 的升级项)**。
149
-
150
- ---
151
-
152
- *飞扬企源研发中心 · 2026-08-27*
1
+ # 飞虹 Code 全面复盘:6 项重点核查与优化方案(v7.2.0)
2
+
3
+ **晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹**
4
+ **复核日期**:2026-08-27
5
+ **复核方式**:不凭记忆/不粉饰,逐项读取代码 + 实测证据后判定。
6
+
7
+ > 本报告针对外部评估提出的 6 项重点问题逐条复核,区分「✅ 已修复(评估数据过时)/ ⚠️ 部分属实 / ❌ 真差距」,并给出可落地优化方案。本轮已完成的部分修复见各条目"本轮动作"。
8
+
9
+ ---
10
+
11
+ ## 总览
12
+
13
+ | # | 外部指控 | 复核判定 | 真差距 | 本轮动作 |
14
+ |---|---|---|---|---|
15
+ | ① | SWE Agent 245 行框架,无 SWE-bench 集成 | ⚠️ 部分不实 | 跑分未公开到 README | ✅ README 已公开 80% 跑分 |
16
+ | ② | 无 LSP 集成(OpenCode 编译器级) | ⚠️ 部分不实 | 是自建语义层,非真实 LSP 服务器对接 | 已在 P0-2 修复,标注量级差 |
17
+ | ③ | O1 扩展 300 行薄壳,无实时 inline 补全 | ⚠️ 部分不实 | 薄壳属实(设计使然);补全已实现但无 CI 验证 | 报告澄清 + 验证路径 |
18
+ | ④ | 生态规模不足(WorkBuddy 7 万+ Skills) | ❌ 属实 | 自有生态刚起步 | 生态 roadmap(本报告) |
19
+ | ⑤ | Docker 沙箱缺失 | ⚠️ 部分不实 | container 档执行层未实测/未探测 | ✅ doctor 增加 docker 探测 |
20
+ | ⑥ | 合规认证空白(SOC2/ISO27001) | ❌ 属实 | 无认证、无安全文档 | ✅ 合规准备清单文档 |
21
+
22
+ ---
23
+
24
+ ## ① SWE Agent:245 行框架?无 SWE-bench 集成?
25
+
26
+ **实测证据**:
27
+ - SWE 三件套实际位置与行数(`src/agent/`):
28
+ - `swe-agent.ts` **219 行**、`swe-planner.ts` **180 行**、`swe-verifier.ts` **135 行**,**合计 534 行**(外部评估"245 行"严重低估)
29
+ - **SWE-bench 集成真实存在**:
30
+ - harness 闭环(loader→executor→verifier→reporter)mock **2/2 = 100%**(`_swe-smoke.mjs`)
31
+ - 真实模型驱动 Orchestrator 生成率 **3/3 = 100%**(`_swe-real.mjs`)
32
+ - **测试通过率 80%(4/5)**:自建 SWE-bench 格式任务集(problem_statement + FAIL_TO_PASS)+ 真实模型 agnes-2.5-flash + **预定义测试 node --test 真实断言**(`_swe-bench-real.mjs`)
33
+ - 失败项 swe-js-004 为执行层失败(iterations=0),非实现错误
34
+
35
+ **判定**:⚠️ **部分不实**。"245 行框架、无集成"不成立;但**"无公开跑分"部分属实**——跑分此前仅在内部报告,未进入 README 官网。
36
+
37
+ **优化方案(已完成)**:✅ README 新增「SWE-bench 真实跑分」小节,诚实口径公开 80%(4/5)+ 复现脚本 + 行业参考,并明确"非官方 Verified 声明"。
38
+
39
+ **剩余建议**:官方 SWE-bench Verified 500 任务需 Docker+pytest 环境,建议在 CI 中跑通后作为正式对标成绩(见 ⑤)。
40
+
41
+ ---
42
+
43
+ ## ② LSP 集成:无编译器级代码理解?
44
+
45
+ **实测证据**:
46
+ - `src/lsp/lsp-service.ts` **185 行**,已实现并接入 Web API(`/api/lsp/*`):
47
+ - `graph`:全仓库代码图谱(462 文件 / 14848 符号 / 1230 边,实测)
48
+ - `symbols`:文件符号列表(对标 LSP documentSymbol)
49
+ - `diagnostics`:文件级语义诊断(对标 publishDiagnostics)
50
+ - `definition` / `hover` / `search`:定义定位、签名信息、跨文件符号搜索
51
+ - P0-2 完成时 LSP 冒烟 **9/9 通过**(`_lsp-smoke.mjs`)
52
+
53
+ **判定**:⚠️ **部分不实**。"无 LSP 集成"不成立(已有自建语义服务层);但需诚实标注量级差:**OpenCode 是"编译器级"**——通过对接真实 LSP 服务器(typescript-language-server 等)获得精确的类型级理解;飞虹 Code 是**自建轻量语义服务层**(正则/符号索引),未对接真实 LSP 协议服务器。
54
+
55
+ **优化方案**:
56
+ - P0:补齐 `textDocument/hover` 的类型级信息(当前为符号级)
57
+ - P1:可选对接 `typescript-language-server`,把自建层作为 fallback,达到编译器级(对标 OpenCode)
58
+ - P1:Web 编辑器接入 `/api/lsp/diagnostics` 做编辑时错误波浪线
59
+
60
+ ---
61
+
62
+ ## ③ O1 扩展 300 行薄壳,无实时 inline 补全?
63
+
64
+ **实测证据**:
65
+ - `vscode-extension/extension.js` **306 行**(api-client.js 88 行)——"300 行薄壳"**属实**,但这是**设计使然**(注释明确"逻辑下沉 agent 端,扩展只做 UI 与协议桥接"),且薄壳内部**已实现实时 inline 补全**:
66
+ - L99-134:`inlineProvider.provideInlineCompletionItems` → 调 `/api/completion` → 包装为 `InlineCompletionItem`
67
+ - L291-295:`vscode.languages.registerInlineCompletionItemProvider({ pattern: '**' }, inlineProvider)` **已注册**
68
+ - `api-client.js` 已封装 `completion(params)` → `POST /api/completion`
69
+ - 客户端后处理(stripCodeFences / dedupeAgainstSuffix / trimTrailingPartialLine)已实现
70
+ - **Tab 接受**:VS Code 1.70+ 内建 inline completion Tab 接受,无需扩展代码
71
+ - Web 端 ghost text 补全(P1-1)也已实现(防抖 350ms + Tab 接受)
72
+
73
+ **判定**:⚠️ **部分不实**。"无实时 inline 补全"**不成立**(VS Code 扩展 + Web 端均已实现);"300 行薄壳"属实但为合理架构。
74
+
75
+ **优化方案**:
76
+ - P0:给 `vscode-extension` 增加**无 VS Code 环境的逻辑单测**(postProcessCompletion 等纯函数),杜绝"无验证"
77
+ - P1:补全质量提升——服务端 completion-engine 增加多候选排序、跨文件上下文(已有部分)
78
+ - P2:扩展增加状态栏补全开关状态同步、Ctrl+Space 手动触发(VS Code 内建,可配置快捷键)
79
+
80
+ ---
81
+
82
+ ## ④ 生态规模不足(WorkBuddy 7 万+ Skills)
83
+
84
+ **实测证据**:
85
+ - 系统运行环境内置 **105 个 Skill**(doubao-academic-* / lark-* / seed-* 等,为豆包平台资产,**非飞虹 Code 自有生态**)
86
+ - 飞虹 Code 自有生态:`src/plugins/`(manager 390 行 + plugin-loader 142 行)已支持全局/项目级第三方插件加载与真实执行(P2-2 修复),`fhcode skill-market` / `fhcode plugin` 命令存在
87
+ - **但**:无官方插件市场、无 Skill 模板库、第三方插件为 0
88
+
89
+ **判定**:❌ **属实**。与 WorkBuddy 7 万+ Skills 相比,生态差距是真实的、最大的长期差距。
90
+
91
+ **优化方案**(roadmap):
92
+ - P0:**Skill 模板库**——内置 10 个官方 Skill 模板(code-review / git-flow / api-design 等),`fhcode skill new <name>` 脚手架生成
93
+ - P1:**本地插件市场种子**——`skill-market` 增加本地种子源(10+ 插件),支持 `fhcode plugin install <market-id>`
94
+ - P2:**生态门户**——GEO 推广页 + 文档站开放第三方提交入口(GitHub PR 模板)
95
+ - P3:**数量规模**——开放 SDK 文档(PluginAPI 已就绪)+ 社区激励
96
+
97
+ ---
98
+
99
+ ## ⑤ Docker 沙箱缺失:无容器隔离档位?
100
+
101
+ **实测证据**:
102
+ - `src/tools/sandbox.ts` **已实现 container 档**(SandboxMode 含 `container`,判定逻辑 L118-128)
103
+ - `src/tools/shell/exec.ts` **已实现容器执行层** `runCommandInContainer`(docker run --rm -v cwd:/workspace -w /workspace + FH_SANDBOX_IMAGE 可配,默认 node:22-alpine)
104
+ - P2-3 沙箱判定层实测 **12/12 通过**(read-only 禁写禁执行 / container 放行+网络规则 / danger 黑名单仍生效)
105
+ - `FH_SANDBOX_MODE=container` 配置已存在 .env.example
106
+
107
+ **判定**:⚠️ **部分不实**。"无容器隔离档位"**不成立**(代码 + 判定层实测俱在);真差距是:
108
+ 1. **执行层未在真实容器实测**(本机无 docker)
109
+ 2. **环境无探测**:`fhcode doctor` 此前不检查 docker,container 模式是否可用无人知晓
110
+ 3. 文档未说明容器模式启用步骤
111
+
112
+ **优化方案(本轮已完成 2/3)**:
113
+ - ✅ **doctor 增加 docker 探测**:`runDoctor` 新增第 6 项检查(Docker 沙箱 container 档),container 模式下 docker 不可用则告警
114
+ - ✅ i18n zh/en 补齐 `doctor.docker`
115
+ - 剩余:有 docker 环境实测 `runCommandInContainer` 一次真实容器执行(写文件验证挂载隔离);文档补"container 模式启用步骤"
116
+
117
+ ---
118
+
119
+ ## ⑥ 合规认证空白(缺 SOC2/ISO27001)
120
+
121
+ **实测证据**:
122
+ - 文档中 SOC2/ISO27001 仅出现在 BENCHMARK_REPORT 的"差距"栏,**无任何认证/证书/安全文档**——指控属实
123
+ - 技术控制面已具备:RBAC、审计日志(`fhcode audit`)、私有化部署、沙箱三档——是合规的**技术基础**
124
+
125
+ **判定**:❌ **属实**。政企采购确实常因缺证书卡流程。
126
+
127
+ **优化方案(本轮已完成)**:
128
+ - ✅ 新建《合规认证准备清单_v7.2.0.md》:现状核查表 + 政企采购卡点分析 + 技术侧 8 项先行项(依赖扫描 CI / SBOM / 审计完备 / 脱敏 / 密钥管理 / 安全白皮书 / 数据留存 / DPA)+ 组织侧 4 项(SOC2/ISO27001/等保/渗透)
129
+ - **诚实声明**:认证必须第三方审计,产品不得自封;技术控制面 + 文档 + 供应链证据可在 1-2 迭代补齐(这是政企最卡的部分)
130
+ - 后续:安全 CI(npm audit + osv-scanner)落地、SBOM 生成、安全白皮书
131
+
132
+ ---
133
+
134
+ ## 优先级建议(下一迭代)
135
+
136
+ | 优先级 | 项 | 价值 |
137
+ |---|---|---|
138
+ | P0 | 官方 SWE-bench Verified 实测(需 Docker 环境) | 对外硬指标从"自建 80%"升级为"官方成绩" |
139
+ | P0 | 安全 CI(npm audit + osv-scanner)+ SBOM | 供应链安全证据,政企准入 |
140
+ | P0 | 生态 Skill 模板库(10 个官方模板) | 生态从 0→1 的第一步 |
141
+ | P1 | LSP 对接真实服务器(typescript-language-server) | 编译器级代码理解(对标 OpenCode) |
142
+ | P1 | 扩展补全纯函数单测 + 质量优化 | 杜绝"无验证"、提升补全质量 |
143
+ | P1 | 安全白皮书 + DPA 文档 | 政企售前材料 |
144
+ | P2 | 生态门户(第三方提交入口) | 规模化起点 |
145
+
146
+ ## 结论
147
+
148
+ 外部评估的 6 项指控中:**③ 项为"部分不实"**(① ② ③ ⑤,均已有实现,属评估数据过时或口径偏差),**2 项"属实"**(④ 生态、⑥ 合规),**0 项完全成立**。本轮已完成:README 跑分公开(①)、doctor docker 探测(⑤)、合规准备清单(⑥)。真正的长期差距集中在**生态规模(④)与合规认证(⑥)**,以及**官方 SWE-bench 实测(① 的升级项)与编译器级 LSP(② 的升级项)**。
149
+
150
+ ---
151
+
152
+ *飞扬企源研发中心 · 2026-08-27*