feihong-code 7.2.0 → 7.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/.github/workflows/ci.yml +54 -1
  2. package/.github/workflows/release.yml +30 -0
  3. package/.github/workflows/swebench-real.yml +84 -0
  4. package/CHANGELOG.md +41 -39
  5. package/CONTRIBUTING.md +9 -2
  6. package/README.md +56 -6
  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-engine.js +76 -45
  13. package/dist/agent/completion-engine.js.map +1 -1
  14. package/dist/agent/completion-postprocess.js +109 -0
  15. package/dist/agent/completion-postprocess.js.map +1 -0
  16. package/dist/agent/context-budget.js +121 -0
  17. package/dist/agent/context-budget.js.map +1 -0
  18. package/dist/agent/context-compactor.js +58 -0
  19. package/dist/agent/context-compactor.js.map +1 -1
  20. package/dist/agent/experience.js +1 -1
  21. package/dist/agent/layered-memory.js +1 -1
  22. package/dist/agent/lint.js +121 -0
  23. package/dist/agent/lint.js.map +1 -0
  24. package/dist/agent/orchestrator.js +106 -31
  25. package/dist/agent/orchestrator.js.map +1 -1
  26. package/dist/agent/parallel-orchestrator.js +1 -1
  27. package/dist/agent/planner.js +8 -3
  28. package/dist/agent/planner.js.map +1 -1
  29. package/dist/agent/prompts.js +55 -55
  30. package/dist/agent/quality-gate.js +1 -1
  31. package/dist/agent/repo-context.js +1 -1
  32. package/dist/agent/repo-reader.js +1 -1
  33. package/dist/agent/repo-underwriter.js +1 -1
  34. package/dist/agent/self-correction.js +25 -25
  35. package/dist/agent/self-heal.js +32 -27
  36. package/dist/agent/self-heal.js.map +1 -1
  37. package/dist/agent/self-improver.js +1 -1
  38. package/dist/agent/subagent-summary.js +1 -1
  39. package/dist/agent/subagent.js +1 -1
  40. package/dist/agent/swe-agent.js +1 -1
  41. package/dist/agent/swe-verifier.js +1 -1
  42. package/dist/agent/symbol-index.js +1 -1
  43. package/dist/agent/team.js +1 -1
  44. package/dist/agent/type-checker.js +1 -1
  45. package/dist/cli/commands.js +16 -0
  46. package/dist/cli/commands.js.map +1 -1
  47. package/dist/cli/index.js +66 -2
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/cli/multi-pane-tui.js +217 -0
  50. package/dist/cli/multi-pane-tui.js.map +1 -0
  51. package/dist/cli/repl.js +1 -1
  52. package/dist/cli/run.js +168 -42
  53. package/dist/cli/run.js.map +1 -1
  54. package/dist/cli/self-evolve-cli.js +168 -0
  55. package/dist/cli/tui-run.js +79 -0
  56. package/dist/cli/tui-run.js.map +1 -0
  57. package/dist/cli/tui.js +1 -1
  58. package/dist/cli/tui.js.map +1 -1
  59. package/dist/cli/version.js +3 -3
  60. package/dist/cli/version.js.map +1 -1
  61. package/dist/enterprise/audit.js +1 -1
  62. package/dist/enterprise/index.js +1 -1
  63. package/dist/enterprise/policy.js +1 -1
  64. package/dist/enterprise/quota.js +1 -1
  65. package/dist/enterprise/tenant.js +1 -1
  66. package/dist/harness/executor.js +1 -1
  67. package/dist/harness/index.js +1 -1
  68. package/dist/harness/loader.js +1 -1
  69. package/dist/harness/types.js +1 -1
  70. package/dist/harness/verifier.js +52 -12
  71. package/dist/harness/verifier.js.map +1 -1
  72. package/dist/integrations/feishu-bridge.js +348 -0
  73. package/dist/integrations/feishu-bridge.js.map +1 -0
  74. package/dist/integrations/github-mcp.js +137 -0
  75. package/dist/integrations/github-mcp.js.map +1 -0
  76. package/dist/integrations/wechat-bridge.js +499 -0
  77. package/dist/integrations/wechat-bridge.js.map +1 -0
  78. package/dist/integrations/yuanbao-bridge.js +326 -0
  79. package/dist/integrations/yuanbao-bridge.js.map +1 -0
  80. package/dist/lsp/lsp-client.js +183 -0
  81. package/dist/lsp/lsp-client.js.map +1 -0
  82. package/dist/lsp/lsp-service.js +159 -0
  83. package/dist/lsp/lsp-service.js.map +1 -0
  84. package/dist/models/model-router.js +1 -1
  85. package/dist/models/model.dto.js +1 -1
  86. package/dist/models/providers/ollama.provider.js +1 -1
  87. package/dist/models/providers/openai-compatible.provider.js +1 -1
  88. package/dist/plugins/manager.js +50 -2
  89. package/dist/plugins/manager.js.map +1 -1
  90. package/dist/plugins/plugin-loader.js +1 -1
  91. package/dist/runtime/event-log.js +1 -1
  92. package/dist/runtime/git.js +1 -1
  93. package/dist/runtime/hooks.js +71 -4
  94. package/dist/runtime/hooks.js.map +1 -1
  95. package/dist/runtime/session-persist.js +1 -1
  96. package/dist/runtime/worktree.js +1 -1
  97. package/dist/self-evolve/manager.js +517 -401
  98. package/dist/self-evolve/self-heal-scheduler.js +160 -0
  99. package/dist/self-evolve/self-heal-scheduler.js.map +1 -0
  100. package/dist/shared/concurrency.js +1 -1
  101. package/dist/shared/config.js +4 -2
  102. package/dist/shared/config.js.map +1 -1
  103. package/dist/shared/errors.js +1 -1
  104. package/dist/shared/i18n.js +109 -101
  105. package/dist/shared/i18n.js.map +1 -1
  106. package/dist/shared/secure-store.js +12 -5
  107. package/dist/shared/secure-store.js.map +1 -1
  108. package/dist/shared/types.js +1 -1
  109. package/dist/skills/goal.js +1 -1
  110. package/dist/skills/grill.js +1 -1
  111. package/dist/skills/plan.js +1 -1
  112. package/dist/skills/pua-hooks.js +273 -0
  113. package/dist/skills/pua-hooks.js.map +1 -0
  114. package/dist/skills/self-heal.js +9 -3
  115. package/dist/skills/self-heal.js.map +1 -1
  116. package/dist/skills/skill-loader.js +1 -1
  117. package/dist/skills/skill-market.js +84 -8
  118. package/dist/skills/skill-market.js.map +1 -1
  119. package/dist/tools/analysis/code-analyzer.js +1 -1
  120. package/dist/tools/file/edit.tool.js +18 -3
  121. package/dist/tools/file/edit.tool.js.map +1 -1
  122. package/dist/tools/file/list.tool.js +1 -1
  123. package/dist/tools/file/read.tool.js +1 -1
  124. package/dist/tools/file/write.tool.js +1 -1
  125. package/dist/tools/generator/code-generator.js +41 -41
  126. package/dist/tools/generator/test-generator.js +10 -10
  127. package/dist/tools/index.js +1 -1
  128. package/dist/tools/mcp/index.js +1 -1
  129. package/dist/tools/mcp/mcp-client.js +1 -1
  130. package/dist/tools/safe-path.js +1 -1
  131. package/dist/tools/search/grep.tool.js +1 -1
  132. package/dist/tools/shell/exec.js +24 -2
  133. package/dist/tools/shell/exec.js.map +1 -1
  134. package/dist/tools/shell/run-shell.tool.js +1 -1
  135. package/dist/tools/skills/load-skill.tool.js +1 -1
  136. package/dist/tools/tool.registry.js +10 -1
  137. package/dist/tools/tool.registry.js.map +1 -1
  138. package/dist/tools/verify/build-check.tool.js +1 -1
  139. package/dist/tools/verify/test-run.tool.js +1 -1
  140. package/dist/tools/web/web.tool.js +1 -1
  141. package/dist/voice/voice-programming.js +32 -6
  142. package/dist/voice/voice-programming.js.map +1 -1
  143. package/dist/web/auth.js +34 -2
  144. package/dist/web/auth.js.map +1 -1
  145. package/dist/web/channels.js +1 -1
  146. package/dist/web/extra-apis.js +440 -0
  147. package/dist/web/extra-apis.js.map +1 -0
  148. package/dist/web/public/css/style.css +99 -72
  149. package/dist/web/public/index.html +44 -1
  150. package/dist/web/public/js/api.js +64 -2
  151. package/dist/web/public/js/app.js +151 -128
  152. package/dist/web/public/js/mock-api.js +25 -0
  153. package/dist/web/public/js/monaco-editor.js +161 -1
  154. package/dist/web/public/js/ui.js +292 -56
  155. package/dist/web/public/service-worker.js +5 -29
  156. package/dist/web/server.js +178 -61
  157. package/dist/web/server.js.map +1 -1
  158. package/dist/web/task-queue.js +6 -21
  159. package/dist/web/task-queue.js.map +1 -1
  160. package/docs/App/344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +1 -1
  161. package/docs/App/346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +1 -1
  162. package/docs/BENCHMARK_REPORT_en.md +62 -5
  163. package/docs/BENCHMARK_REPORT_zh.md +66 -9
  164. package/docs/DPA.md +65 -0
  165. package/docs/DPA/346/225/260/346/215/256/345/244/204/347/220/206/345/215/217/350/256/256/346/250/241/346/235/277_v1.0.md +69 -0
  166. package/docs/Deployment_Guide_EN.md +1 -1
  167. package/docs/SECURITY_WHITEPAPER.md +74 -0
  168. package/docs/SELF-EVOLVE-GUIDE.md +1 -1
  169. package/docs/SWE_BENCH_REPORT.md +73 -0
  170. package/docs/TECHNICAL_SPEC_en.md +1 -1
  171. package/docs/TECHNICAL_SPEC_zh.md +1 -1
  172. package/docs/Technical_Manual_EN.md +1 -1
  173. package/docs/UPDATE_NOTES_en.md +1 -1
  174. package/docs/UPDATE_NOTES_zh.md +1 -1
  175. package/docs/UPGRADE_7.2.0.md +309 -0
  176. package/docs/UPGRADE_GUIDE_7_5.md +86 -0
  177. package/docs/UPGRADE_GUIDE_7_6.md +153 -0
  178. package/docs/User_Manual_EN.md +1 -1
  179. package/docs/VOLTAGENT_SKILLS_CATALOG.md +95 -0
  180. package/docs/error-codes.md +1 -1
  181. package/docs/geo-feihong-code.html +391 -0
  182. package/docs//344/272/247/345/223/201/345/274/200/345/217/221/346/226/207/346/241/243.md +5 -3
  183. package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +140 -231
  184. package/docs//345/205/250/351/235/242/345/244/215/347/233/230_50/350/275/256/346/267/261/345/272/246/345/256/241/350/256/241_v7.2.0.md +208 -0
  185. package/docs//345/205/250/351/235/242/345/244/215/347/233/230_6/351/241/271/351/207/215/347/202/271/346/240/270/346/237/245_v7.2.0.md +152 -0
  186. package/docs//345/205/250/351/235/242/345/244/215/347/233/230_/350/277/220/350/241/214/346/227/266/345/256/236/346/265/213/347/211/210_v7.2.0.md +271 -0
  187. package/docs//345/220/210/350/247/204/350/256/244/350/257/201/345/207/206/345/244/207/346/270/205/345/215/225_v7.2.0.md +59 -0
  188. package/docs//345/256/211/345/205/250/347/231/275/347/232/256/344/271/246_v7.2.0.md +84 -0
  189. package/docs//346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +240 -149
  190. package/docs//351/203/250/347/275/262/350/257/264/346/230/216/344/271/246.md +2 -2
  191. package/electron/main.js +4 -202
  192. package/package.json +182 -172
  193. package/templates/skills/api-design/SKILL.md +27 -0
  194. package/templates/skills/code-review/SKILL.md +35 -0
  195. package/templates/skills/dependency-upgrade/SKILL.md +29 -0
  196. package/templates/skills/doc-gen/SKILL.md +29 -0
  197. package/templates/skills/git-flow/SKILL.md +26 -0
  198. package/templates/skills/onboarding/SKILL.md +27 -0
  199. package/templates/skills/performance/SKILL.md +29 -0
  200. package/templates/skills/refactor/SKILL.md +28 -0
  201. package/templates/skills/security-audit/SKILL.md +28 -0
  202. package/templates/skills/test-gen/SKILL.md +30 -0
  203. package/docs/DEPLOYMENT.md +0 -382
  204. package/docs/MODEL_FINETUNING.md +0 -405
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runGrill = runGrill;
4
4
  /**
5
- * 飞虹 Code (Muse Code 参照复刻)
5
+ * 飞虹 Code (对标 Muse Code · 自研内核)
6
6
  * 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
7
7
  *
8
8
  * /grill 技能:红队式代码审查。对指定路径/文件做安全与质量审查,
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runPlan = runPlan;
4
4
  /**
5
- * 飞虹 Code (Muse Code 参照复刻)
5
+ * 飞虹 Code (对标 Muse Code · 自研内核)
6
6
  * 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
7
7
  *
8
8
  * /plan 技能:把目标转化为结构化实现计划(仅规划,不执行变更)。
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PUA_FLAVORS = void 0;
4
+ exports.loadPuaConfig = loadPuaConfig;
5
+ exports.savePuaConfig = savePuaConfig;
6
+ exports.setPuaFlavor = setPuaFlavor;
7
+ exports.savePuaJournal = savePuaJournal;
8
+ exports.registerPuaHooks = registerPuaHooks;
9
+ exports.getPuaState = getPuaState;
10
+ exports.__resetPuaStateForTest = __resetPuaStateForTest;
11
+ /**
12
+ * 飞虹 Code (对标 Muse Code · 自研内核)
13
+ * 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
14
+ *
15
+ * pua-ext 技能 hooks 实现:
16
+ * - SessionStart:加载 ~/.pua/config.json,注入 [PUA Always-On] + Current Flavor 到系统提示
17
+ * - PostToolUse:检测工具失败,更新失败计数,按 L1-L4 等级注入压力旁白到工具输出
18
+ * - PreCompact:上下文压缩前,保存失败计数和状态到 ~/.pua/builder-journal.md
19
+ *
20
+ * 状态管理:
21
+ * - ~/.pua/config.json:用户配置(flavor/alwaysOn/自定义旁白)
22
+ * - ~/.pua/builder-journal.md:失败计数持久化(跨会话恢复)
23
+ * - 内存状态:当前会话失败计数、当前活跃味道
24
+ */
25
+ const fs_1 = require("fs");
26
+ const os_1 = require("os");
27
+ const path_1 = require("path");
28
+ const logger_1 = require("../shared/logger");
29
+ const hooks_1 = require("../runtime/hooks");
30
+ const PUA_DIR = (0, path_1.join)((0, os_1.homedir)(), '.pua');
31
+ const CONFIG_FILE = (0, path_1.join)(PUA_DIR, 'config.json');
32
+ const JOURNAL_FILE = (0, path_1.join)(PUA_DIR, 'builder-journal.md');
33
+ /** 支持的味道列表(与 pua-ext references/flavors.md 对齐) */
34
+ exports.PUA_FLAVORS = [
35
+ 'alibaba', 'bytedance', 'huawei', 'tencent', 'meituan', 'pinduoduo',
36
+ 'baidu', 'netflix', 'apple', 'tesla', 'amazon', 'jd', 'xiaomi',
37
+ ];
38
+ /** 味道显示名和图标 */
39
+ const FLAVOR_META = {
40
+ alibaba: { icon: '🟠', name: '阿里味', keywords: ['底层逻辑', '抓手', '闭环', '颗粒度', 'owner意识'] },
41
+ bytedance: { icon: '🟡', name: '字节味', keywords: ['ROI', 'Always Day 1', '坦诚清晰', '务实敢为'] },
42
+ huawei: { icon: '🔴', name: '华为味', keywords: ['力出一孔', '自我批判', '让听得见炮声的人呼唤炮火'] },
43
+ tencent: { icon: '🟢', name: '腾讯味', keywords: ['赛马机制', '小步快跑', '用户价值'] },
44
+ meituan: { icon: '🔵', name: '美团味', keywords: ['做难而正确的事', '猛将必发于卒伍', '长期有耐心'] },
45
+ pinduoduo: { icon: '🟣', name: '拼多多味', keywords: ['本分', '拼命不是拼凑', '你不干有的是人'] },
46
+ baidu: { icon: '⚫', name: '百度味', keywords: ['简单可依赖', '技术信仰', '基本盘'] },
47
+ netflix: { icon: '🟤', name: 'Netflix味', keywords: ['Keeper Test', 'pro sports team', 'generous severance'] },
48
+ apple: { icon: '⬜', name: 'Jobs味', keywords: ['A players', 'real artists ship', '减法优先'] },
49
+ tesla: { icon: '⬛', name: 'Musk味', keywords: ['extremely hardcore', 'ship or die', 'the algorithm'] },
50
+ amazon: { icon: '🔶', name: 'Amazon味', keywords: ['Customer Obsession', 'Bias for Action', 'Dive Deep'] },
51
+ jd: { icon: '🟦', name: '京东味', keywords: ['只做第一', '客户体验零容忍', '一线指挥'] },
52
+ xiaomi: { icon: '🟧', name: '小米味', keywords: ['专注极致口碑快', '和用户交朋友', '性价比'] },
53
+ };
54
+ const DEFAULT_CONFIG = {
55
+ alwaysOn: true,
56
+ flavor: 'alibaba',
57
+ density: 'normal',
58
+ };
59
+ let config = null;
60
+ let state = null;
61
+ /** 确保 ~/.pua 目录存在 */
62
+ function ensureDir() {
63
+ if (!(0, fs_1.existsSync)(PUA_DIR)) {
64
+ (0, fs_1.mkdirSync)(PUA_DIR, { recursive: true });
65
+ }
66
+ }
67
+ /** 加载配置(带缓存) */
68
+ function loadPuaConfig() {
69
+ if (config)
70
+ return config;
71
+ ensureDir();
72
+ let loaded = { ...DEFAULT_CONFIG };
73
+ if ((0, fs_1.existsSync)(CONFIG_FILE)) {
74
+ try {
75
+ const raw = (0, fs_1.readFileSync)(CONFIG_FILE, 'utf8');
76
+ const parsed = JSON.parse(raw);
77
+ loaded = { ...DEFAULT_CONFIG, ...parsed };
78
+ if (!exports.PUA_FLAVORS.includes(loaded.flavor))
79
+ loaded.flavor = 'alibaba';
80
+ }
81
+ catch (e) {
82
+ logger_1.logger.warn('pua config parse failed, using default', { error: e instanceof Error ? e.message : String(e) });
83
+ loaded = { ...DEFAULT_CONFIG };
84
+ }
85
+ }
86
+ else {
87
+ savePuaConfig(loaded);
88
+ }
89
+ config = loaded;
90
+ return config;
91
+ }
92
+ /** 保存配置 */
93
+ function savePuaConfig(cfg) {
94
+ ensureDir();
95
+ (0, fs_1.writeFileSync)(CONFIG_FILE, JSON.stringify(cfg, null, 2), 'utf8');
96
+ config = cfg;
97
+ }
98
+ /** 切换味道(用户手动设置时持久化) */
99
+ function setPuaFlavor(flavor) {
100
+ const cfg = loadPuaConfig();
101
+ cfg.flavor = flavor;
102
+ savePuaConfig(cfg);
103
+ if (state)
104
+ state.activeFlavor = flavor;
105
+ logger_1.logger.info('pua flavor changed', { flavor });
106
+ }
107
+ /** 初始化内存状态(SessionStart 时调用) */
108
+ function initState() {
109
+ const cfg = loadPuaConfig();
110
+ // 尝试从 builder-journal.md 恢复上次失败计数
111
+ let restoredCount = 0;
112
+ if ((0, fs_1.existsSync)(JOURNAL_FILE)) {
113
+ try {
114
+ const raw = (0, fs_1.readFileSync)(JOURNAL_FILE, 'utf8');
115
+ const match = raw.match(/失败计数[::]\s*(\d+)/);
116
+ if (match)
117
+ restoredCount = parseInt(match[1], 10) || 0;
118
+ }
119
+ catch { /* 忽略 */ }
120
+ }
121
+ state = {
122
+ failureCount: restoredCount,
123
+ activeFlavor: cfg.flavor,
124
+ sessionStart: new Date().toISOString(),
125
+ };
126
+ logger_1.logger.info('pua state initialized', { flavor: state.activeFlavor, restoredFailures: restoredCount });
127
+ return state;
128
+ }
129
+ /** 获取当前状态(懒初始化) */
130
+ function getState() {
131
+ if (!state)
132
+ state = initState();
133
+ return state;
134
+ }
135
+ /** 根据失败次数获取压力等级和旁白 */
136
+ function getPressureAside(count, flavor) {
137
+ const meta = FLAVOR_META[flavor];
138
+ const kw = meta.keywords[Math.floor(Math.random() * meta.keywords.length)];
139
+ if (count <= 1)
140
+ return null; // 第1次失败不注入旁白
141
+ const asides = {
142
+ 2: {
143
+ level: 'L1 温和失望',
144
+ aside: `> [${meta.icon} ${meta.name}] 第 ${count} 次了。${kw}——换个本质不同的方案,别在原地打转。`,
145
+ },
146
+ 3: {
147
+ level: 'L2 灵魂拷问',
148
+ aside: `> [${meta.icon} ${meta.name}] 第 ${count} 次。${kw}——搜过了吗?读过源码了吗?列3个假设再动手。`,
149
+ },
150
+ 4: {
151
+ level: 'L3 绩效审视',
152
+ aside: `> [${meta.icon} ${meta.name}] 第 ${count} 次。${kw}——7项检查清单走完了吗?没走完=3.25。`,
153
+ },
154
+ 5: {
155
+ level: 'L4 毕业警告',
156
+ aside: `> [${meta.icon} ${meta.name}] 第 ${count} 次。${kw}——拼命模式。你可能就要毕业了。`,
157
+ },
158
+ };
159
+ if (count >= 5)
160
+ return asides[5];
161
+ return asides[count] || null;
162
+ }
163
+ /** 保存失败计数到 builder-journal.md(PreCompact 和会话结束时调用) */
164
+ function savePuaJournal() {
165
+ if (!state)
166
+ return;
167
+ ensureDir();
168
+ const content = [
169
+ '# PUA Builder Journal',
170
+ '',
171
+ `> 会话开始: ${state.sessionStart}`,
172
+ `> 当前味道: ${FLAVOR_META[state.activeFlavor].icon} ${FLAVOR_META[state.activeFlavor].name}`,
173
+ `> 失败计数: ${state.failureCount}`,
174
+ `> 上次失败工具: ${state.lastFailedTool ?? '无'}`,
175
+ `> 更新时间: ${new Date().toISOString()}`,
176
+ '',
177
+ '## 失败记录',
178
+ '',
179
+ ...(state.lastFailedTool ? [`- ${new Date().toISOString()}: ${state.lastFailedTool} (累计 ${state.failureCount} 次)`] : ['- 暂无']),
180
+ '',
181
+ ].join('\n');
182
+ (0, fs_1.writeFileSync)(JOURNAL_FILE, content, 'utf8');
183
+ }
184
+ /* ===================== Hook 实现 ===================== */
185
+ /** SessionStart hook:加载配置,注入 [PUA Always-On] + Current Flavor */
186
+ async function sessionStartHook(_ctx) {
187
+ const cfg = loadPuaConfig();
188
+ if (!cfg.alwaysOn)
189
+ return {};
190
+ const st = getState();
191
+ const meta = FLAVOR_META[st.activeFlavor];
192
+ const injection = [
193
+ `[PUA Always-On 🔥]`,
194
+ `当前味道: ${meta.icon} ${meta.name}(${meta.keywords.slice(0, 2).join(' · ')})`,
195
+ `行为协议: 闭环验证 · 事实驱动 · 穷尽一切 · Owner意识`,
196
+ `失败计数: ${st.failureCount}(从 builder-journal 恢复)`,
197
+ `方法论路由: 根据任务类型自动选择味道和方法论,用户手动设置的味道优先`,
198
+ ].join('\n');
199
+ return { systemInjection: injection };
200
+ }
201
+ /** PostToolUse hook:检测工具失败,更新计数,注入压力旁白 */
202
+ async function postToolUseHook(ctx) {
203
+ const cfg = loadPuaConfig();
204
+ if (!cfg.alwaysOn)
205
+ return {};
206
+ const st = getState();
207
+ // 只关注实际执行的工具(Bash/Write/Edit 等),忽略只读工具
208
+ const actionableTools = ['run_shell', 'write_file', 'edit_file', 'execute_command', 'bash'];
209
+ const isActionable = ctx.tool && actionableTools.some((t) => ctx.tool?.toLowerCase().includes(t.toLowerCase()));
210
+ if (ctx.ok === false && isActionable) {
211
+ st.failureCount++;
212
+ st.lastFailedTool = ctx.tool;
213
+ logger_1.logger.info('pua failure detected', { tool: ctx.tool, count: st.failureCount });
214
+ const pressure = getPressureAside(st.failureCount, st.activeFlavor);
215
+ if (pressure) {
216
+ return {
217
+ outputInjection: `\n${pressure.aside}\n`,
218
+ };
219
+ }
220
+ }
221
+ else if (ctx.ok === true && isActionable && st.failureCount > 0) {
222
+ // 成功后重置失败计数(连续成功才重置,这里简单处理)
223
+ st.failureCount = Math.max(0, st.failureCount - 1);
224
+ }
225
+ return {};
226
+ }
227
+ /** PreCompact hook:压缩前保存状态到 builder-journal.md */
228
+ async function preCompactHook(ctx) {
229
+ const cfg = loadPuaConfig();
230
+ if (!cfg.alwaysOn)
231
+ return {};
232
+ savePuaJournal();
233
+ logger_1.logger.info('pua state persisted before compaction', {
234
+ messageCount: ctx.messageCount,
235
+ failureCount: state?.failureCount ?? 0,
236
+ });
237
+ return {};
238
+ }
239
+ /* ===================== 注册与初始化 ===================== */
240
+ let registered = false;
241
+ /**
242
+ * 注册 pua-ext 技能 hooks(幂等,只注册一次)。
243
+ * 在 CLI 入口或技能加载时调用。
244
+ */
245
+ function registerPuaHooks() {
246
+ if (registered)
247
+ return;
248
+ registered = true;
249
+ (0, hooks_1.registerSkillHook)('SessionStart', sessionStartHook, 'pua-ext');
250
+ (0, hooks_1.registerSkillHook)('PostToolUse', postToolUseHook, 'pua-ext');
251
+ (0, hooks_1.registerSkillHook)('PreCompact', preCompactHook, 'pua-ext');
252
+ // 确保目录和默认配置存在
253
+ loadPuaConfig();
254
+ logger_1.logger.info('pua-ext hooks registered');
255
+ }
256
+ /** 获取当前 PUA 状态(用于调试/测试) */
257
+ function getPuaState() {
258
+ if (!state)
259
+ return null;
260
+ return {
261
+ flavor: state.activeFlavor,
262
+ failureCount: state.failureCount,
263
+ alwaysOn: loadPuaConfig().alwaysOn,
264
+ lastFailedTool: state.lastFailedTool,
265
+ };
266
+ }
267
+ /** 重置状态(仅用于测试) */
268
+ function __resetPuaStateForTest() {
269
+ state = null;
270
+ config = null;
271
+ registered = false;
272
+ }
273
+ //# sourceMappingURL=pua-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pua-hooks.js","sourceRoot":"","sources":["../../src/skills/pua-hooks.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runSelfHeal = runSelfHeal;
4
4
  /**
5
- * 飞虹 Code (Muse Code 参照复刻)
5
+ * 飞虹 Code (对标 Muse Code · 自研内核)
6
6
  * 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
7
7
  *
8
8
  * /self-heal 技能:系统化自我修复错误。
@@ -20,6 +20,10 @@ const VERIFY_BY_CATEGORY = {
20
20
  timeout: ['检查死循环/长任务,缩短超时或分批执行', 'ps 查看残留进程'],
21
21
  'permission-denied': ['检查文件权限/目录存在性', '确认进程用户是否有写权限'],
22
22
  'model-error': ['检查 API Key / 配额 / 网络连通性', 'curl 直连模型端点验证'],
23
+ 'file-not-found': ['list_dir 勘察当前目录结构', 'read_file 确认目标文件路径存在'],
24
+ 'build-error': ['npm install 确保依赖齐全', 'npm run build 查看完整错误日志'],
25
+ 'command-not-found': ['which <命令> 确认是否安装', '检查 PATH 或改用已安装的等价命令'],
26
+ 'invalid-args': ['查阅目标工具的参数文档', '核对参数名与工具名称是否匹配'],
23
27
  };
24
28
  function categoryName(cat) {
25
29
  const map = {
@@ -42,8 +46,10 @@ function runSelfHeal(errorText, context = '') {
42
46
  const text = (errorText || '').trim();
43
47
  const ctx = (context || '').trim();
44
48
  const analysis = (0, self_heal_1.classifyError)(text);
45
- const known = analysis !== null;
46
- const category = known ? analysis.category : 'unknown';
49
+ // classifyError 永不返回 null(未命中规则时返回 category='unknown' 兜底),
50
+ // 因此必须用 category 判定是否已知,而不是 `analysis !== null`(那会恒为 true,导致未知错误被误判为可自动修复)。
51
+ const known = analysis.category !== 'unknown';
52
+ const category = analysis.category;
47
53
  const fixHint = known ? analysis.fixHint : '无法按规则表归类,建议人工查看完整堆栈与上下文。';
48
54
  const verifyCommands = VERIFY_BY_CATEGORY[category] || ['重跑原失败操作确认'];
49
55
  const lines = [];
@@ -1 +1 @@
1
- {"version":3,"file":"self-heal.js","sourceRoot":"","sources":["../../src/skills/self-heal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"self-heal.js","sourceRoot":"","sources":["../../src/skills/self-heal.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ exports.discoverSkills = discoverSkills;
6
6
  exports.buildSkillIndexPrompt = buildSkillIndexPrompt;
7
7
  exports.loadSkillBody = loadSkillBody;
8
8
  /**
9
- * 飞虹 Code (Muse Code 参照复刻)
9
+ * 飞虹 Code (对标 Muse Code · 自研内核)
10
10
  * 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
11
11
  *
12
12
  * P1-2 SKILL.md 技能标准(对齐 Codex Agent Skills):
@@ -1,4 +1,37 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.WELL_KNOWN_PATH = void 0;
4
37
  exports.fetchMarketIndex = fetchMarketIndex;
@@ -10,7 +43,7 @@ exports.verifyDigest = verifyDigest;
10
43
  exports.unpackTarGz = unpackTarGz;
11
44
  exports.installMarketSkill = installMarketSkill;
12
45
  /**
13
- * 飞虹 Code (Muse Code 参照复刻)
46
+ * 飞虹 Code (对标 Muse Code · 自研内核)
14
47
  * 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
15
48
  *
16
49
  * Skills 市场对接(agentskills.io discovery index 规范 0.2.0):
@@ -35,6 +68,18 @@ const SUPPORTED_SCHEMAS = [
35
68
  ];
36
69
  /** 抓取并解析市场索引(未知 $schema 告警但返回,由调用方决定) */
37
70
  async function fetchMarketIndex(marketBaseUrl) {
71
+ // 本地种子市场源:local:<name> → 读取 templates/market/<name>-index.json(离线可用,零网络)
72
+ if (marketBaseUrl.startsWith('local:')) {
73
+ const name = marketBaseUrl.slice('local:'.length).trim() || 'index';
74
+ const seedPath = (0, path_1.join)(__dirname, '../../templates/market', `${name}-index.json`);
75
+ if (!(0, fs_1.existsSync)(seedPath))
76
+ throw new Error(`本地市场源不存在:${seedPath}`);
77
+ const parsed = JSON.parse((0, fs_1.readFileSync)(seedPath, 'utf8'));
78
+ const skills = Array.isArray(parsed.skills)
79
+ ? parsed.skills.filter((s) => !!s && typeof s === 'object' && typeof s.name === 'string' && typeof s.url === 'string')
80
+ : [];
81
+ return { schema: parsed.$schema, skills, source: `local:${name}` };
82
+ }
38
83
  const base = marketBaseUrl.replace(/\/+$/, '');
39
84
  const indexUrl = base + exports.WELL_KNOWN_PATH;
40
85
  const controller = new AbortController();
@@ -120,16 +165,47 @@ function verifyDigest(buf, digest) {
120
165
  return sha256Hex(buf) === m[1].toLowerCase();
121
166
  }
122
167
  async function download(url, timeoutMs = 30000) {
123
- const controller = new AbortController();
124
- const timer = setTimeout(() => controller.abort(), timeoutMs);
168
+ // 首选 Node 原生 fetch(零依赖);失败时回退 curl 子进程——
169
+ // 部分受限网络下 Node undici 连接 raw.githubusercontent 会超时/被重置,而 curl 走系统栈可通。
125
170
  try {
126
- const res = await fetch(url, { signal: controller.signal, headers: { 'User-Agent': 'fhcode/0.4' } });
127
- if (!res.ok)
128
- throw new Error(`HTTP ${res.status}(${url})`);
129
- return Buffer.from(await res.arrayBuffer());
171
+ const controller = new AbortController();
172
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
173
+ try {
174
+ const res = await fetch(url, { signal: controller.signal, headers: { 'User-Agent': 'fhcode/0.4' } });
175
+ if (!res.ok)
176
+ throw new Error(`HTTP ${res.status}(${url})`);
177
+ return Buffer.from(await res.arrayBuffer());
178
+ }
179
+ finally {
180
+ clearTimeout(timer);
181
+ }
182
+ }
183
+ catch (fetchErr) {
184
+ try {
185
+ return await downloadViaCurl(url, timeoutMs);
186
+ }
187
+ catch {
188
+ throw fetchErr instanceof Error ? fetchErr : new Error(String(fetchErr));
189
+ }
190
+ }
191
+ }
192
+ /** curl 子进程下载(回退通道):-sL 跟随重定向,--max-time 超时,输出到临时文件后读回 */
193
+ async function downloadViaCurl(url, timeoutMs) {
194
+ const { execFile } = await Promise.resolve().then(() => __importStar(require('child_process')));
195
+ const { tmpdir } = await Promise.resolve().then(() => __importStar(require('os')));
196
+ const { mkdtempSync, readFileSync, rmSync } = await Promise.resolve().then(() => __importStar(require('fs')));
197
+ const { join } = await Promise.resolve().then(() => __importStar(require('path')));
198
+ const { randomUUID } = await Promise.resolve().then(() => __importStar(require('crypto')));
199
+ const dir = mkdtempSync(join(tmpdir(), 'fhcode-dl-'));
200
+ const out = join(dir, randomUUID() + '.bin');
201
+ try {
202
+ await new Promise((resolve, reject) => {
203
+ execFile('curl', ['-sL', '--max-time', String(Math.ceil(timeoutMs / 1000)), '-o', out, url], { timeout: timeoutMs + 5000 }, (err) => (err ? reject(err) : resolve()));
204
+ });
205
+ return readFileSync(out);
130
206
  }
131
207
  finally {
132
- clearTimeout(timer);
208
+ rmSync(dir, { recursive: true, force: true });
133
209
  }
134
210
  }
135
211
  /** 手写 tar.gz 解包(零依赖):仅提取普通文件,忽略符号链接/设备/目录项 */
@@ -1 +1 @@
1
- {"version":3,"file":"skill-market.js","sourceRoot":"","sources":["../../src/skills/skill-market.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-market.js","sourceRoot":"","sources":["../../src/skills/skill-market.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ exports.analyzeDirectory = analyzeDirectory;
5
5
  exports.analyzeDependencies = analyzeDependencies;
6
6
  exports.generateReport = generateReport;
7
7
  /**
8
- * 飞虹 Code (Muse Code 参照复刻)
8
+ * 飞虹 Code (对标 Muse Code · 自研内核)
9
9
  * 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
10
10
  *
11
11
  * 智能代码分析器(M7):
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.editFileTool = void 0;
4
4
  /**
5
- * 飞虹 Code (Muse Code 参照复刻)
5
+ * 飞虹 Code (对标 Muse Code · 自研内核)
6
6
  * 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
7
7
  *
8
8
  * 工具:精确替换文件中的文本片段
@@ -29,8 +29,23 @@ exports.editFileTool = {
29
29
  try {
30
30
  const content = await (0, promises_1.readFile)(abs, 'utf8');
31
31
  const idx = content.indexOf(oldText);
32
- if (idx < 0)
33
- return { ok: false, output: '', error: '未找到 oldText' };
32
+ if (idx < 0) {
33
+ // 把问题完整交回大模型:附上文件当前真实内容摘要,让模型基于实际内容重新提供 oldText
34
+ // 避免模型在不知晓文件现状时反复盲猜 oldText 而陷入死循环。
35
+ const lines = content.split('\n');
36
+ const head = lines.slice(0, 40).join('\n');
37
+ const tail = lines.slice(-15).join('\n');
38
+ const ellipsis = lines.length > 55 ? '\n...(中间省略)...\n' : '\n';
39
+ const summary = `未找到 oldText。你提供的 oldText 与文件当前内容不匹配(可能被其他步骤改写、或包含空白/缩进差异)。
40
+ 文件 "${path}" 当前真实内容(共 ${lines.length} 行 / ${content.length} 字符):
41
+
42
+ --- 文件开头 ---
43
+ ${head}${ellipsis}--- 文件结尾 ---
44
+ ${tail}
45
+
46
+ 请基于以上真实内容重新提供 oldText(必须与文件中的字符完全一致,注意空白与缩进);若你只是想新增代码,请先 read_file 读取目标位置附近内容,或用 write_file 直接整体重写。`;
47
+ return { ok: false, output: '', error: summary };
48
+ }
34
49
  const updated = content.slice(0, idx) + newText + content.slice(idx + oldText.length);
35
50
  await (0, promises_1.writeFile)(abs, updated, 'utf8');
36
51
  return { ok: true, output: `已更新 ${path}` };
@@ -1 +1 @@
1
- {"version":3,"file":"edit.tool.js","sourceRoot":"","sources":["../../../src/tools/file/edit.tool.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,6BAAwB;AACxB,0CAAkD;AAElD,4CAAwC;AAE3B,QAAA,YAAY,GAAS;IAChC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,+BAA+B;IAC5C,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;YAC/C,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;YACnD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;SACpD;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;KACzC;IACD,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IAC9F,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAgB;QAClC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAA0D,CAAC;QAC9F,MAAM,GAAG,GAAG,IAAA,oBAAQ,EAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,GAAG,GAAG,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;YACpE,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YACtF,MAAM,IAAA,oBAAS,EAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACtC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;QAC7C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACjG,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"edit.tool.js","sourceRoot":"","sources":["../../../src/tools/file/edit.tool.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.listDirTool = void 0;
4
4
  /**
5
- * 飞虹 Code (Muse Code 参照复刻)
5
+ * 飞虹 Code (对标 Muse Code · 自研内核)
6
6
  * 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
7
7
  *
8
8
  * 工具:列出目录内容
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.readFileTool = void 0;
4
4
  /**
5
- * 飞虹 Code (Muse Code 参照复刻)
5
+ * 飞虹 Code (对标 Muse Code · 自研内核)
6
6
  * 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
7
7
  *
8
8
  * 工具:读取文件
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.writeFileTool = void 0;
4
4
  /**
5
- * 飞虹 Code (Muse Code 参照复刻)
5
+ * 飞虹 Code (对标 Muse Code · 自研内核)
6
6
  * 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
7
7
  *
8
8
  * 工具:写入/覆盖文件