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,200 +1,203 @@
1
- # 飞虹 Code 发布工作流
2
- # 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
3
- #
4
- # 触发条件:
5
- # 1. 推送 v* 标签(如 v1.0.0)→ 自动发布 npm 包 + Docker 镜像 + GitHub Release
6
- # 2. 手动触发(workflow_dispatch)→ 可指定版本号
7
- #
8
- # 所需 Secrets:
9
- # - NPM_TOKEN: npm 发布令牌
10
- # - DOCKERHUB_USERNAME: Docker Hub 用户名
11
- # - DOCKERHUB_TOKEN: Docker Hub 访问令牌
12
- # - GH_TOKEN: GitHub Token(自动注入,无需手动配置)
13
-
14
- name: Release
15
-
16
- on:
17
- push:
18
- tags:
19
- - 'v*'
20
- workflow_dispatch:
21
- inputs:
22
- version:
23
- description: '发布版本号(如 1.0.0)'
24
- required: true
25
- default: 'patch'
26
-
27
- env:
28
- NODE_VERSION: '20'
29
- IMAGE_NAME: feihong-code
30
-
31
- jobs:
32
- # ---------- 1. 版本号准备 ----------
33
- version:
34
- name: 准备版本号
35
- runs-on: ubuntu-latest
36
- outputs:
37
- version: ${{ steps.get_version.outputs.version }}
38
- tag: ${{ steps.get_version.outputs.tag }}
39
- steps:
40
- - uses: actions/checkout@v4
41
- with:
42
- fetch-depth: 0
43
- - name: 获取版本号
44
- id: get_version
45
- run: |
46
- if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
47
- VERSION=${GITHUB_REF_NAME#v}
48
- else
49
- if [[ "${{ github.event.inputs.version }}" == "patch" ]]; then
50
- VERSION=$(npm version patch --no-git-tag-version | sed 's/v//')
51
- elif [[ "${{ github.event.inputs.version }}" == "minor" ]]; then
52
- VERSION=$(npm version minor --no-git-tag-version | sed 's/v//')
53
- elif [[ "${{ github.event.inputs.version }}" == "major" ]]; then
54
- VERSION=$(npm version major --no-git-tag-version | sed 's/v//')
55
- else
56
- VERSION=${{ github.event.inputs.version }}
57
- fi
58
- fi
59
- echo "version=$VERSION" >> $GITHUB_OUTPUT
60
- echo "tag=v$VERSION" >> $GITHUB_OUTPUT
61
- echo "发布版本: v$VERSION"
62
-
63
- # ---------- 2. 构建与测试(复用 CI 逻辑) ----------
64
- build:
65
- name: 构建与测试
66
- needs: version
67
- runs-on: ubuntu-latest
68
- steps:
69
- - uses: actions/checkout@v4
70
- - uses: actions/setup-node@v4
71
- with:
72
- node-version: ${{ env.NODE_VERSION }}
73
- registry-url: 'https://registry.npmjs.org'
74
- - run: npm install
75
- - name: 类型检查
76
- run: npm run typecheck
77
- - name: 编译构建
78
- run: npm run build
79
- - name: 前端资源打包
80
- run: node scripts/copy-web.cjs
81
- - name: CLI 可用性验证
82
- run: node dist/cli/index.js --version
83
- - name: P7-5 安全 CI(npm audit + CycloneDX SBOM)
84
- run: npm run security || (echo "⚠️ npm audit 网络不可达按跳过处理" && exit 0)
85
- - name: P7-5 综合冒烟门禁(本地回归)
86
- run: |
87
- node dist/cli/index.js serve --port 8099 > /tmp/fh-serve.log 2>&1 &
88
- SERVER_PID=$!
89
- READY=0
90
- for i in $(seq 1 40); do
91
- if curl -sf http://127.0.0.1:8099/api/health >/dev/null 2>&1; then READY=1; break; fi
92
- sleep 1
93
- done
94
- if [ "$READY" != "1" ]; then
95
- echo "❌ 测试服务 40s 内未就绪,serve 日志:"
96
- cat /tmp/fh-serve.log || true
97
- kill $SERVER_PID 2>/dev/null || true
98
- exit 1
99
- fi
100
- node scripts/_smoke-full.mjs
101
- EXIT_CODE=$?
102
- kill $SERVER_PID 2>/dev/null || true
103
- exit $EXIT_CODE
104
- - name: P7-1 SWE-bench harness 链路冒烟(mock)
105
- run: node dist/cli/index.js harness lite --limit 1 --mode mock || echo "⚠️ harness 需网络拉取数据集,失败不阻断(真实跑分见 docs/SWE_BENCH_REPORT.md)"
106
- - name: 上传构建产物
107
- uses: actions/upload-artifact@v4
108
- with:
109
- name: dist-${{ needs.version.outputs.version }}
110
- path: dist/
111
- retention-days: 30
112
-
113
- # ---------- 3. 发布 npm 包 ----------
114
- npm-publish:
115
- name: 发布 npm 包
116
- needs: [version, build]
117
- runs-on: ubuntu-latest
118
- if: github.event_name == 'push' || github.event.inputs.version != 'patch'
119
- steps:
120
- - uses: actions/checkout@v4
121
- - uses: actions/setup-node@v4
122
- with:
123
- node-version: ${{ env.NODE_VERSION }}
124
- registry-url: 'https://registry.npmjs.org'
125
- - name: 下载构建产物
126
- uses: actions/download-artifact@v4
127
- with:
128
- name: dist-${{ needs.version.outputs.version }}
129
- path: dist/
130
- - name: 安装依赖(prepack build 需要)
131
- run: npm ci
132
- - name: 设置版本号
133
- run: npm version ${{ needs.version.outputs.version }} --no-git-tag-version --allow-same-version
134
- - name: 发布到 npm
135
- run: npm publish --access public
136
- env:
137
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
138
-
139
- # ---------- 4. 构建并推送 Docker 镜像 ----------
140
- docker-publish:
141
- name: 发布 Docker 镜像
142
- needs: [version, build]
143
- runs-on: ubuntu-latest
144
- if: github.event_name == 'push' || github.event.inputs.version != 'patch'
145
- steps:
146
- - uses: actions/checkout@v4
147
- - name: 设置 Docker Buildx
148
- uses: docker/setup-buildx-action@v3
149
- - name: 登录 Docker Hub
150
- uses: docker/login-action@v3
151
- with:
152
- username: ${{ secrets.DOCKERHUB_USERNAME }}
153
- password: ${{ secrets.DOCKERHUB_TOKEN }}
154
- - name: 构建并推送镜像
155
- uses: docker/build-push-action@v5
156
- with:
157
- context: .
158
- push: true
159
- tags: |
160
- ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ needs.version.outputs.version }}
161
- ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest
162
- cache-from: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:buildcache
163
- cache-to: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:buildcache,mode=max
164
-
165
- # ---------- 5. 创建 GitHub Release ----------
166
- github-release:
167
- name: 创建 GitHub Release
168
- needs: [version, build, npm-publish, docker-publish]
169
- runs-on: ubuntu-latest
170
- if: github.event_name == 'push'
171
- steps:
172
- - uses: actions/checkout@v4
173
- with:
174
- fetch-depth: 0
175
- - name: 生成变更日志
176
- id: changelog
177
- run: |
178
- echo "## 飞虹 Code v${{ needs.version.outputs.version }}" > RELEASE_NOTES.md
179
- echo "" >> RELEASE_NOTES.md
180
- echo "### 发布说明" >> RELEASE_NOTES.md
181
- echo "" >> RELEASE_NOTES.md
182
- git log --pretty=format:"- %s (%h)" $(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo HEAD^)..HEAD >> RELEASE_NOTES.md 2>/dev/null || echo "- 首次发布" >> RELEASE_NOTES.md
183
- echo "" >> RELEASE_NOTES.md
184
- echo "### 安装方式" >> RELEASE_NOTES.md
185
- echo "" >> RELEASE_NOTES.md
186
- echo "\`\`\`bash" >> RELEASE_NOTES.md
187
- echo "npm install -g feihong-code" >> RELEASE_NOTES.md
188
- echo "# 或" >> RELEASE_NOTES.md
189
- echo "docker pull ${{ secrets.DOCKERHUB_USERNAME }}/feihong-code:latest" >> RELEASE_NOTES.md
190
- echo "\`\`\`" >> RELEASE_NOTES.md
191
- - name: 创建 Release
192
- uses: softprops/action-gh-release@v1
193
- with:
194
- tag_name: ${{ needs.version.outputs.tag }}
195
- name: 飞虹 Code ${{ needs.version.outputs.tag }}
196
- body_path: RELEASE_NOTES.md
197
- draft: false
198
- prerelease: false
199
- env:
200
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1
+ # 飞虹 Code 发布工作流
2
+ # 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
3
+ #
4
+ # 触发条件:
5
+ # 1. 推送 v* 标签(如 v1.0.0)→ 自动发布 npm 包 + Docker 镜像 + GitHub Release
6
+ # 2. 手动触发(workflow_dispatch)→ 可指定版本号
7
+ #
8
+ # 所需 Secrets:
9
+ # - NPM_TOKEN: npm 发布令牌
10
+ # - DOCKERHUB_USERNAME: Docker Hub 用户名
11
+ # - DOCKERHUB_TOKEN: Docker Hub 访问令牌
12
+ # - GH_TOKEN: GitHub Token(自动注入,无需手动配置)
13
+
14
+ name: Release
15
+
16
+ on:
17
+ push:
18
+ tags:
19
+ - 'v*'
20
+ workflow_dispatch:
21
+ inputs:
22
+ version:
23
+ description: '发布版本号(如 1.0.0)'
24
+ required: true
25
+ default: 'patch'
26
+
27
+ permissions:
28
+ contents: write
29
+
30
+ env:
31
+ NODE_VERSION: '20'
32
+ IMAGE_NAME: feihong-code
33
+
34
+ jobs:
35
+ # ---------- 1. 版本号准备 ----------
36
+ version:
37
+ name: 准备版本号
38
+ runs-on: ubuntu-latest
39
+ outputs:
40
+ version: ${{ steps.get_version.outputs.version }}
41
+ tag: ${{ steps.get_version.outputs.tag }}
42
+ steps:
43
+ - uses: actions/checkout@v4
44
+ with:
45
+ fetch-depth: 0
46
+ - name: 获取版本号
47
+ id: get_version
48
+ run: |
49
+ if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
50
+ VERSION=${GITHUB_REF_NAME#v}
51
+ else
52
+ if [[ "${{ github.event.inputs.version }}" == "patch" ]]; then
53
+ VERSION=$(npm version patch --no-git-tag-version | sed 's/v//')
54
+ elif [[ "${{ github.event.inputs.version }}" == "minor" ]]; then
55
+ VERSION=$(npm version minor --no-git-tag-version | sed 's/v//')
56
+ elif [[ "${{ github.event.inputs.version }}" == "major" ]]; then
57
+ VERSION=$(npm version major --no-git-tag-version | sed 's/v//')
58
+ else
59
+ VERSION=${{ github.event.inputs.version }}
60
+ fi
61
+ fi
62
+ echo "version=$VERSION" >> $GITHUB_OUTPUT
63
+ echo "tag=v$VERSION" >> $GITHUB_OUTPUT
64
+ echo "发布版本: v$VERSION"
65
+
66
+ # ---------- 2. 构建与测试(复用 CI 逻辑) ----------
67
+ build:
68
+ name: 构建与测试
69
+ needs: version
70
+ runs-on: ubuntu-latest
71
+ steps:
72
+ - uses: actions/checkout@v4
73
+ - uses: actions/setup-node@v4
74
+ with:
75
+ node-version: ${{ env.NODE_VERSION }}
76
+ registry-url: 'https://registry.npmjs.org'
77
+ - run: npm install
78
+ - name: 类型检查
79
+ run: npm run typecheck
80
+ - name: 编译构建
81
+ run: npm run build
82
+ - name: 前端资源打包
83
+ run: node scripts/copy-web.cjs
84
+ - name: CLI 可用性验证
85
+ run: node dist/cli/index.js --version
86
+ - name: P7-5 安全 CI(npm audit + CycloneDX SBOM)
87
+ run: npm run security || (echo "⚠️ npm audit 网络不可达按跳过处理" && exit 0)
88
+ - name: P7-5 综合冒烟门禁(本地回归)
89
+ run: |
90
+ node dist/cli/index.js serve --port 8099 > /tmp/fh-serve.log 2>&1 &
91
+ SERVER_PID=$!
92
+ READY=0
93
+ for i in $(seq 1 40); do
94
+ if curl -sf http://127.0.0.1:8099/api/health >/dev/null 2>&1; then READY=1; break; fi
95
+ sleep 1
96
+ done
97
+ if [ "$READY" != "1" ]; then
98
+ echo "❌ 测试服务 40s 内未就绪,serve 日志:"
99
+ cat /tmp/fh-serve.log || true
100
+ kill $SERVER_PID 2>/dev/null || true
101
+ exit 1
102
+ fi
103
+ node scripts/_smoke-full.mjs
104
+ EXIT_CODE=$?
105
+ kill $SERVER_PID 2>/dev/null || true
106
+ exit $EXIT_CODE
107
+ - name: P7-1 SWE-bench harness 链路冒烟(mock)
108
+ run: node dist/cli/index.js harness lite --limit 1 --mode mock || echo "⚠️ harness 需网络拉取数据集,失败不阻断(真实跑分见 docs/SWE_BENCH_REPORT.md)"
109
+ - name: 上传构建产物
110
+ uses: actions/upload-artifact@v4
111
+ with:
112
+ name: dist-${{ needs.version.outputs.version }}
113
+ path: dist/
114
+ retention-days: 30
115
+
116
+ # ---------- 3. 发布 npm 包 ----------
117
+ npm-publish:
118
+ name: 发布 npm
119
+ needs: [version, build]
120
+ runs-on: ubuntu-latest
121
+ if: github.event_name == 'push' || github.event.inputs.version != 'patch'
122
+ steps:
123
+ - uses: actions/checkout@v4
124
+ - uses: actions/setup-node@v4
125
+ with:
126
+ node-version: ${{ env.NODE_VERSION }}
127
+ registry-url: 'https://registry.npmjs.org'
128
+ - name: 下载构建产物
129
+ uses: actions/download-artifact@v4
130
+ with:
131
+ name: dist-${{ needs.version.outputs.version }}
132
+ path: dist/
133
+ - name: 安装依赖(prepack build 需要)
134
+ run: npm ci
135
+ - name: 设置版本号
136
+ run: npm version ${{ needs.version.outputs.version }} --no-git-tag-version --allow-same-version
137
+ - name: 发布到 npm
138
+ run: npm publish --access public
139
+ env:
140
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
141
+
142
+ # ---------- 4. 构建并推送 Docker 镜像 ----------
143
+ docker-publish:
144
+ name: 发布 Docker 镜像
145
+ needs: [version, build]
146
+ runs-on: ubuntu-latest
147
+ if: github.event_name == 'push' || github.event.inputs.version != 'patch'
148
+ steps:
149
+ - uses: actions/checkout@v4
150
+ - name: 设置 Docker Buildx
151
+ uses: docker/setup-buildx-action@v3
152
+ - name: 登录 Docker Hub
153
+ uses: docker/login-action@v3
154
+ with:
155
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
156
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
157
+ - name: 构建并推送镜像
158
+ uses: docker/build-push-action@v5
159
+ with:
160
+ context: .
161
+ push: true
162
+ tags: |
163
+ ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ needs.version.outputs.version }}
164
+ ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest
165
+ cache-from: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:buildcache
166
+ cache-to: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:buildcache,mode=max
167
+
168
+ # ---------- 5. 创建 GitHub Release ----------
169
+ github-release:
170
+ name: 创建 GitHub Release
171
+ needs: [version, build, npm-publish, docker-publish]
172
+ runs-on: ubuntu-latest
173
+ if: github.event_name == 'push'
174
+ steps:
175
+ - uses: actions/checkout@v4
176
+ with:
177
+ fetch-depth: 0
178
+ - name: 生成变更日志
179
+ id: changelog
180
+ run: |
181
+ echo "## 飞虹 Code v${{ needs.version.outputs.version }}" > RELEASE_NOTES.md
182
+ echo "" >> RELEASE_NOTES.md
183
+ echo "### 发布说明" >> RELEASE_NOTES.md
184
+ echo "" >> RELEASE_NOTES.md
185
+ git log --pretty=format:"- %s (%h)" $(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo HEAD^)..HEAD >> RELEASE_NOTES.md 2>/dev/null || echo "- 首次发布" >> RELEASE_NOTES.md
186
+ echo "" >> RELEASE_NOTES.md
187
+ echo "### 安装方式" >> RELEASE_NOTES.md
188
+ echo "" >> RELEASE_NOTES.md
189
+ echo "\`\`\`bash" >> RELEASE_NOTES.md
190
+ echo "npm install -g feihong-code" >> RELEASE_NOTES.md
191
+ echo "# 或" >> RELEASE_NOTES.md
192
+ echo "docker pull ${{ secrets.DOCKERHUB_USERNAME }}/feihong-code:latest" >> RELEASE_NOTES.md
193
+ echo "\`\`\`" >> RELEASE_NOTES.md
194
+ - name: 创建 Release
195
+ uses: softprops/action-gh-release@v1
196
+ with:
197
+ tag_name: ${{ needs.version.outputs.tag }}
198
+ name: 飞虹 Code ${{ needs.version.outputs.tag }}
199
+ body_path: RELEASE_NOTES.md
200
+ draft: false
201
+ prerelease: false
202
+ env:
203
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,84 @@
1
+ name: SWE-bench 真实模型跑分
2
+
3
+ # 在 GitHub 托管 runner 上运行(具备正常 GitHub 克隆 + Docker 能力),
4
+ # 用真实模型(agnes-2.5-flash)生成 patch 并做真实测试验证。
5
+ # 注意:本 workflow 需在仓库 Settings → Secrets 配置 AGNES_API_KEY。
6
+ on:
7
+ workflow_dispatch:
8
+ inputs:
9
+ limit:
10
+ description: '实例数上限'
11
+ required: false
12
+ default: '2'
13
+ instances:
14
+ description: '实例清单路径'
15
+ required: false
16
+ default: 'bench/swe-bench-verified-sample.json'
17
+ # 可选:定时跑(UTC 18:00)
18
+ # schedule:
19
+ # - cron: '0 18 * * *'
20
+
21
+ jobs:
22
+ real-run:
23
+ runs-on: ubuntu-latest
24
+ timeout-minutes: 360
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+
28
+ - uses: actions/setup-node@v4
29
+ with:
30
+ node-version: '22'
31
+
32
+ - uses: actions/setup-python@v5
33
+ with:
34
+ python-version: '3.11'
35
+
36
+ - name: 安装 swebench(验证用)
37
+ run: pip install --quiet swebench
38
+
39
+ - name: 克隆实例仓库到 base_commit
40
+ run: |
41
+ python - <<'PY'
42
+ import json, subprocess, os
43
+ insts = json.load(open("${{ inputs.instances }}"))
44
+ os.makedirs("bench/real/work", exist_ok=True)
45
+ for i in insts[:int("${{ inputs.limit }}")]:
46
+ owner, name = i["repo"].split("/")
47
+ d = "bench/real/work/" + name
48
+ if not os.path.exists(d):
49
+ subprocess.run(["git", "clone", "https://github.com/%s/%s.git" % (owner, name), d], check=True)
50
+ subprocess.run(["git", "-C", d, "checkout", "-q", i["base_commit"]], check=True)
51
+ print("仓库就绪")
52
+ PY
53
+
54
+ - name: 真实模型生成 patch
55
+ env:
56
+ AGNES_API_KEY: ${{ secrets.AGNES_API_KEY }}
57
+ run: node scripts/swebench-real.mjs --instances "${{ inputs.instances }}" --limit "${{ inputs.limit }}"
58
+
59
+ - name: 真实测试验证(env-reconstructed)
60
+ run: python bench/real/verify.py --instances "${{ inputs.instances }}" --limit "${{ inputs.limit }}"
61
+
62
+ - name: 上传结果
63
+ if: always()
64
+ uses: actions/upload-artifact@v4
65
+ with:
66
+ name: swebench-real-results
67
+ path: |
68
+ bench/real/patches/
69
+ bench/real/runs/
70
+ bench/real/summary.json
71
+ bench/real/verify_summary.json
72
+
73
+ - name: 输出汇总
74
+ if: always()
75
+ run: |
76
+ echo "## SWE-bench 真实跑分汇总" >> "$GITHUB_STEP_SUMMARY"
77
+ python - <<'PY'
78
+ import json
79
+ try:
80
+ s = json.load(open("bench/real/verify_summary.json"))
81
+ print("resolved: %d / %d" % (s.get("resolved",0), s.get("total",0)), file=open("$GITHUB_STEP_SUMMARY","a"))
82
+ except Exception as e:
83
+ print("无验证结果: %s" % e, file=open("$GITHUB_STEP_SUMMARY","a"))
84
+ PY