feihong-code 0.2.2 → 0.5.1

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 (152) hide show
  1. package/.github/FUNDING.yml +4 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +37 -37
  3. package/.github/ISSUE_TEMPLATE/config.yml +14 -14
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +28 -28
  5. package/.github/PULL_REQUEST_TEMPLATE.md +46 -46
  6. package/.github/SECURITY.md +67 -67
  7. package/.github/dependabot.yml +16 -0
  8. package/.github/workflows/ci.yml +1 -1
  9. package/AGENT-GUIDE.md +382 -237
  10. package/CHANGELOG.md +405 -73
  11. package/CODE_OF_CONDUCT.md +56 -56
  12. package/CONTRIBUTING.md +68 -68
  13. package/LICENSE +22 -22
  14. package/README.md +31 -25
  15. package/README.self-evolve.md +274 -0
  16. package/dist/agent/code-review.js +2 -0
  17. package/dist/agent/code-review.js.map +1 -1
  18. package/dist/agent/code-writer.js +70 -17
  19. package/dist/agent/code-writer.js.map +1 -1
  20. package/dist/agent/context-compactor.js +13 -4
  21. package/dist/agent/context-compactor.js.map +1 -1
  22. package/dist/agent/experience.js +262 -62
  23. package/dist/agent/experience.js.map +1 -1
  24. package/dist/agent/orchestrator.js +148 -68
  25. package/dist/agent/orchestrator.js.map +1 -1
  26. package/dist/agent/quality-gate.js +10 -4
  27. package/dist/agent/quality-gate.js.map +1 -1
  28. package/dist/agent/repo-context.js +181 -0
  29. package/dist/agent/repo-context.js.map +1 -0
  30. package/dist/agent/repo-reader.js +92 -99
  31. package/dist/agent/repo-reader.js.map +1 -1
  32. package/dist/agent/self-heal.js +38 -48
  33. package/dist/agent/self-heal.js.map +1 -1
  34. package/dist/agent/self-improver.js +65 -61
  35. package/dist/agent/self-improver.js.map +1 -1
  36. package/dist/agent/subagent-summary.js +31 -0
  37. package/dist/agent/subagent-summary.js.map +1 -0
  38. package/dist/agent/subagent.js +52 -2
  39. package/dist/agent/subagent.js.map +1 -1
  40. package/dist/agent/symbol-index.js +160 -0
  41. package/dist/agent/symbol-index.js.map +1 -0
  42. package/dist/agent/team.js +193 -0
  43. package/dist/agent/team.js.map +1 -0
  44. package/dist/cli/commands.js +124 -143
  45. package/dist/cli/commands.js.map +1 -1
  46. package/dist/cli/index.js +113 -106
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/repl.js +82 -7
  49. package/dist/cli/repl.js.map +1 -1
  50. package/dist/cli/run.js +601 -95
  51. package/dist/cli/run.js.map +1 -1
  52. package/dist/cli/tui.js +145 -0
  53. package/dist/cli/tui.js.map +1 -0
  54. package/dist/cli/version.js +1 -1
  55. package/dist/enterprise/audit.js +75 -12
  56. package/dist/enterprise/audit.js.map +1 -1
  57. package/dist/enterprise/index.js +14 -11
  58. package/dist/enterprise/index.js.map +1 -1
  59. package/dist/enterprise/policy.js +22 -10
  60. package/dist/enterprise/policy.js.map +1 -1
  61. package/dist/harness/executor.js +127 -0
  62. package/dist/harness/executor.js.map +1 -0
  63. package/dist/harness/harness.js +87 -0
  64. package/dist/harness/harness.js.map +1 -0
  65. package/dist/harness/index.js +31 -0
  66. package/dist/harness/index.js.map +1 -0
  67. package/dist/harness/loader.js +138 -0
  68. package/dist/harness/loader.js.map +1 -0
  69. package/dist/harness/reporter.js +34 -0
  70. package/dist/harness/reporter.js.map +1 -0
  71. package/dist/harness/types.js +10 -0
  72. package/dist/harness/types.js.map +1 -0
  73. package/dist/harness/verifier.js +48 -0
  74. package/dist/harness/verifier.js.map +1 -0
  75. package/dist/hello.js +14 -0
  76. package/dist/hello.js.map +1 -0
  77. package/dist/memory/auto-summarize.js +208 -0
  78. package/dist/memory/auto-summarize.js.map +1 -0
  79. package/dist/memory/index.js +228 -0
  80. package/dist/memory/index.js.map +1 -0
  81. package/dist/models/model-router.js +23 -10
  82. package/dist/models/model-router.js.map +1 -1
  83. package/dist/plugins/plugin-loader.js +179 -0
  84. package/dist/plugins/plugin-loader.js.map +1 -0
  85. package/dist/runtime/event-log.js.map +1 -1
  86. package/dist/runtime/hooks.js +80 -0
  87. package/dist/runtime/hooks.js.map +1 -0
  88. package/dist/self-evolve/hook.js +60 -0
  89. package/dist/self-evolve/hook.js.map +1 -0
  90. package/dist/shared/config.js +35 -3
  91. package/dist/shared/config.js.map +1 -1
  92. package/dist/shared/i18n.js +535 -0
  93. package/dist/shared/i18n.js.map +1 -0
  94. package/dist/skills/grill.js +2 -1
  95. package/dist/skills/grill.js.map +1 -1
  96. package/dist/skills/self-heal.js +73 -0
  97. package/dist/skills/self-heal.js.map +1 -0
  98. package/dist/skills/skill-loader.js +131 -0
  99. package/dist/skills/skill-loader.js.map +1 -0
  100. package/dist/skills/skill-market.js +195 -0
  101. package/dist/skills/skill-market.js.map +1 -0
  102. package/dist/tools/analysis/code-analyzer.js +45 -18
  103. package/dist/tools/analysis/code-analyzer.js.map +1 -1
  104. package/dist/tools/index.js +5 -0
  105. package/dist/tools/index.js.map +1 -1
  106. package/dist/tools/mcp/index.js +84 -0
  107. package/dist/tools/mcp/index.js.map +1 -0
  108. package/dist/tools/mcp/mcp-client.js +172 -0
  109. package/dist/tools/mcp/mcp-client.js.map +1 -0
  110. package/dist/tools/sandbox.js +126 -0
  111. package/dist/tools/sandbox.js.map +1 -0
  112. package/dist/tools/shell/exec.js +25 -0
  113. package/dist/tools/shell/exec.js.map +1 -1
  114. package/dist/tools/shell/run-shell.tool.js +4 -1
  115. package/dist/tools/shell/run-shell.tool.js.map +1 -1
  116. package/dist/tools/skills/load-skill.tool.js +36 -0
  117. package/dist/tools/skills/load-skill.tool.js.map +1 -0
  118. package/dist/tools/tool.interface.js.map +1 -1
  119. package/dist/tools/tool.registry.js +37 -1
  120. package/dist/tools/tool.registry.js.map +1 -1
  121. package/dist/tools/web/web.tool.js +139 -0
  122. package/dist/tools/web/web.tool.js.map +1 -0
  123. package/dist/web/auth.js +42 -3
  124. package/dist/web/auth.js.map +1 -1
  125. package/dist/web/channels.js +171 -0
  126. package/dist/web/channels.js.map +1 -0
  127. package/dist/web/public/index.html +3253 -39
  128. package/dist/web/public/index.html.tmp +3117 -0
  129. package/dist/web/public/index_new.html +3196 -0
  130. package/dist/web/server.js +790 -11
  131. package/dist/web/server.js.map +1 -1
  132. package/dist/web/task-queue.js +352 -0
  133. package/dist/web/task-queue.js.map +1 -0
  134. package/dist/web/web-config.js +143 -0
  135. package/dist/web/web-config.js.map +1 -0
  136. package/docs/Deployment_Guide_EN.md +288 -0
  137. package/docs/Technical_Manual_EN.md +216 -0
  138. package/docs/User_Manual_EN.md +314 -0
  139. package/docs/self-evolve-implementation.md +165 -0
  140. package/docs/self-evolve.md +166 -0
  141. package/docs//344/272/247/345/223/201/345/274/200/345/217/221/346/226/207/346/241/243.md +614 -614
  142. package/docs//344/274/201/344/270/232/351/203/250/347/275/262/344/270/216/345/220/210/350/247/204.md +267 -267
  143. package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +318 -358
  144. package/docs//345/270/270/350/247/201/351/227/256/351/242/230/344/270/216/346/225/205/351/232/234/346/216/222/346/237/245.md +130 -130
  145. package/docs//346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +216 -303
  146. package/docs//346/236/266/346/236/204/344/270/216API.md +238 -238
  147. package/docs//347/224/250/346/210/267/346/211/213/345/206/214.md +196 -196
  148. package/docs//351/203/250/347/275/262/346/214/207/345/215/227.md +165 -165
  149. package/docs//351/203/250/347/275/262/350/257/264/346/230/216/344/271/246.md +288 -0
  150. package/docs//351/205/215/347/275/256/345/217/202/350/200/203.md +127 -127
  151. package/package.json +114 -109
  152. package/tool-schema.json +127 -127
@@ -1,127 +1,127 @@
1
- # 飞虹 Code 配置参考
2
-
3
- > 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
4
-
5
- 所有配置通过**环境变量**提供,启动时集中校验(fail-fast)。`.env` 文件会被自动加载(仅注入未设置的键),但**切勿提交 `.env`**。
6
-
7
- ---
8
-
9
- ## 1. 环境变量总览
10
-
11
- | 变量 | 必填 | 说明 | 默认 |
12
- | --- | --- | --- | --- |
13
- | `FH_HOME` | 否 | 应用主目录(目标/日志根) | `~/.feihong-code` |
14
- | `FH_LOG_DIR` | 否 | 会话事件日志目录 | `~/.feihong-code/sessions` |
15
- | `FH_PROVIDERS` | 否* | 模型供应商 JSON 数组;为空则离线 | `[]` |
16
- | `FH_MODEL_STRATEGY` | 否 | 路由策略 | `cost` |
17
- | `FH_BUDGET_USD` | 否 | 单任务预算(美元,超限仅告警) | `0.5` |
18
- | `FH_SHELL_ALLOW` | 否 | shell 白名单(逗号分隔) | 空 |
19
- | `FH_REQUIRE_APPROVAL` | 否 | 危险操作是否需审批 | `true` |
20
- | `FH_OFFLINE` | 否 | 设为 `true` 强制离线 | 未设 |
21
- | `FH_ENTERPRISE` | 否 | 企业模式开关;`false` 退回社区版无感行为 | `true` |
22
- | `FH_TENANT` | 否 | 租户 ID(正则 `^[A-Za-z0-9._-]{1,64}$`),触发多租户物理目录隔离 | 未设(默认租户) |
23
- | `FH_USER` | 否 | 当前用户标识(写入审计与租户上下文) | 未设 |
24
- | `FH_ROLE` | 否 | 角色:`viewer` / `developer` / `operator` / `admin` | `developer` |
25
- | `FH_TENANT_BUDGET_USD` | 否 | 租户当日成本预算(USD),超限拒绝新任务(fail-fast) | 未设(取策略角色上限) |
26
- | `FH_POLICY` | 否 | 策略覆盖 JSON(仅能加严:黑名单取并集),优先级高于内置与文件策略 | 未设 |
27
-
28
- > *`FH_PROVIDERS` 缺省或 `[]` → 自动离线(Mock 闭环);非空 → 真实模式。
29
-
30
- ---
31
-
32
- ## 2. FH_PROVIDERS 结构
33
-
34
- JSON 数组,每项一个供应商:
35
-
36
- | 字段 | 类型 | 必填 | 说明 |
37
- | --- | --- | --- | --- |
38
- | `id` | string | ✅ | 唯一标识(用于日志/路由) |
39
- | `type` | `"openai-compatible"` \| `"ollama"` | ✅ | 供应商类型 |
40
- | `baseURL` | string | ✅ | API 基地址(不含末尾斜杠会被规范化) |
41
- | `apiKey` | string | 否 | OpenAI 兼容网关的 Bearer Token;Ollama 留空 |
42
- | `model` | string | 否 | 模型名(openai-compatible 必填;Ollama 指定本地模型) |
43
- | `tags` | `CapabilityTag[]` | ✅ | 能力标签,用于路由筛选 |
44
- | `costPer1k` | number | 否 | 每千 token 成本(USD),用于成本计量与 `cost` 策略 |
45
-
46
- ### CapabilityTag 枚举
47
-
48
- `code-gen` · `reasoning` · `long-context` · `vision` · `cheap` · `local`
49
-
50
- 编排器调用时默认带 `['code-gen']` 标签筛选;路由按策略对命中供应商打分选优。
51
-
52
- ---
53
-
54
- ## 3. 路由策略(FH_MODEL_STRATEGY)
55
-
56
- | 策略 | 选优逻辑 |
57
- | --- | --- |
58
- | `cost` | 优先 `costPer1k` 最低(默认,省钱) |
59
- | `capability` | 优先 `reasoning` + `code-gen` 标签命中 |
60
- | `latency` | 优先 `local`(Ollama 等本地模型) |
61
-
62
- 多供应商时按策略排序,调用失败时**自动 fallback** 到下一个。
63
-
64
- ---
65
-
66
- ## 4. 供应商示例
67
-
68
- ### 4.1 OpenAI 兼容(Agnes,已验证)
69
-
70
- ```json
71
- [{"id":"agnes","type":"openai-compatible","baseURL":"https://api.agnes-ai.cn/v1","apiKey":"<key>","model":"agnes-2.5-flash","tags":["code-gen"],"costPer1k":0.001}]
72
- ```
73
-
74
- ### 4.2 DeepSeek
75
-
76
- ```json
77
- [{"id":"deepseek","type":"openai-compatible","baseURL":"https://api.deepseek.com/v1","apiKey":"sk-xxx","model":"deepseek-chat","tags":["code-gen","cheap"],"costPer1k":0.0001}]
78
- ```
79
-
80
- ### 4.3 通义千问(DashScope 兼容模式)
81
-
82
- ```json
83
- [{"id":"qwen","type":"openai-compatible","baseURL":"https://dashscope.aliyuncs.com/compatible-mode/v1","apiKey":"sk-xxx","model":"qwen-plus","tags":["code-gen","long-context"],"costPer1k":0.0002}]
84
- ```
85
-
86
- ### 4.4 Ollama(本地,零成本)
87
-
88
- ```json
89
- [{"id":"ollama","type":"ollama","baseURL":"http://localhost:11434","apiKey":"","model":"qwen2.5-coder:7b","tags":["code-gen","local"],"costPer1k":0}]
90
- ```
91
-
92
- ### 4.5 多供应商(路由 + fallback)
93
-
94
- ```json
95
- [
96
- {"id":"deepseek","type":"openai-compatible","baseURL":"https://api.deepseek.com/v1","apiKey":"sk-xxx","model":"deepseek-chat","tags":["code-gen","cheap"],"costPer1k":0.0001},
97
- {"id":"ollama","type":"ollama","baseURL":"http://localhost:11434","apiKey":"","model":"qwen2.5-coder:7b","tags":["code-gen","local"],"costPer1k":0}
98
- ]
99
- ```
100
-
101
- ---
102
-
103
- ## 5. 成本计量
104
-
105
- - 每次 `chat` 返回 `usage`(prompt/completion/total tokens),按 `costPer1k` 估算 `costUsd`。
106
- - 累加进任务总成本,打印在结果中。
107
- - 超过 `FH_BUDGET_USD` 仅**告警日志**,不阻断(避免半途中断)。
108
- - 离线模式成本为 `0`。
109
-
110
- ---
111
-
112
- ## 6. 安全配置建议
113
-
114
- 1. `FH_SHELL_ALLOW` 遵循**最小权限**:只放确实需要的命令(如 `git,npm,node`)。
115
- 2. 保持 `FH_REQUIRE_APPROVAL=true`;仅在完全可信的隔离环境才设 `false`。
116
- 3. `.env` 权限设为仅本人可读:`chmod 600 .env`。
117
- 4. 不要把 `.env` 提交到 Git(已被 `.gitignore` 排除)。
118
- 5. 日志目录(`FH_LOG_DIR`)可能含任务上下文,按敏感数据处理。
119
- 6. **企业模式(M4)**:`FH_ENTERPRISE` 默认开启;若仅作社区使用,设 `false` 即完全关闭 RBAC / 审计 / 租户隔离,行为与 M3 一致。
120
- 7. **租户隔离(M4)**:生产部署务必为每个客户/团队设置独立 `FH_TENANT`;租户 ID 仅允许 `A-Za-z0-9._-`(1–64 位),任何非常规字符都会被拒绝以防目录穿越。
121
- 8. **日预算(M4)**:`FH_TENANT_BUDGET_USD` 是硬上限,超限时新任务直接返回 `QUOTA_EXCEEDED`(HTTP 429 语义),不会静默放行;单任务 `maxCostUsd` 由策略角色上限控制,达上限即熔断并给出结论。
122
- 9. **策略覆盖(M4)**:通过 `FH_POLICY` 或 `<FH_HOME>/policy.json`、`<租户>/policy.json` 注入的覆盖只能**加严**不能放宽——危险命令/敏感路径黑名单取并集,角色权限取交集,确保安全基线不被削弱。
123
- 10. **审计留存(M4)**:`audit-YYYY-MM.jsonl` 为防篡改哈希链,建议只读挂载或异地备份;`audit verify` 可周期性巡检完整性。
124
-
125
- ---
126
-
127
- © 2026 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
1
+ # 飞虹 Code 配置参考
2
+
3
+ > 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
4
+
5
+ 所有配置通过**环境变量**提供,启动时集中校验(fail-fast)。`.env` 文件会被自动加载(仅注入未设置的键),但**切勿提交 `.env`**。
6
+
7
+ ---
8
+
9
+ ## 1. 环境变量总览
10
+
11
+ | 变量 | 必填 | 说明 | 默认 |
12
+ | --- | --- | --- | --- |
13
+ | `FH_HOME` | 否 | 应用主目录(目标/日志根) | `~/.feihong-code` |
14
+ | `FH_LOG_DIR` | 否 | 会话事件日志目录 | `~/.feihong-code/sessions` |
15
+ | `FH_PROVIDERS` | 否* | 模型供应商 JSON 数组;为空则离线 | `[]` |
16
+ | `FH_MODEL_STRATEGY` | 否 | 路由策略 | `cost` |
17
+ | `FH_BUDGET_USD` | 否 | 单任务预算(美元,超限仅告警) | `0.5` |
18
+ | `FH_SHELL_ALLOW` | 否 | shell 白名单(逗号分隔) | 空 |
19
+ | `FH_REQUIRE_APPROVAL` | 否 | 危险操作是否需审批 | `true` |
20
+ | `FH_OFFLINE` | 否 | 设为 `true` 强制离线 | 未设 |
21
+ | `FH_ENTERPRISE` | 否 | 企业模式开关;`false` 退回社区版无感行为 | `true` |
22
+ | `FH_TENANT` | 否 | 租户 ID(正则 `^[A-Za-z0-9._-]{1,64}$`),触发多租户物理目录隔离 | 未设(默认租户) |
23
+ | `FH_USER` | 否 | 当前用户标识(写入审计与租户上下文) | 未设 |
24
+ | `FH_ROLE` | 否 | 角色:`viewer` / `developer` / `operator` / `admin` | `developer` |
25
+ | `FH_TENANT_BUDGET_USD` | 否 | 租户当日成本预算(USD),超限拒绝新任务(fail-fast) | 未设(取策略角色上限) |
26
+ | `FH_POLICY` | 否 | 策略覆盖 JSON(仅能加严:黑名单取并集),优先级高于内置与文件策略 | 未设 |
27
+
28
+ > *`FH_PROVIDERS` 缺省或 `[]` → 自动离线(Mock 闭环);非空 → 真实模式。
29
+
30
+ ---
31
+
32
+ ## 2. FH_PROVIDERS 结构
33
+
34
+ JSON 数组,每项一个供应商:
35
+
36
+ | 字段 | 类型 | 必填 | 说明 |
37
+ | --- | --- | --- | --- |
38
+ | `id` | string | ✅ | 唯一标识(用于日志/路由) |
39
+ | `type` | `"openai-compatible"` \| `"ollama"` | ✅ | 供应商类型 |
40
+ | `baseURL` | string | ✅ | API 基地址(不含末尾斜杠会被规范化) |
41
+ | `apiKey` | string | 否 | OpenAI 兼容网关的 Bearer Token;Ollama 留空 |
42
+ | `model` | string | 否 | 模型名(openai-compatible 必填;Ollama 指定本地模型) |
43
+ | `tags` | `CapabilityTag[]` | ✅ | 能力标签,用于路由筛选 |
44
+ | `costPer1k` | number | 否 | 每千 token 成本(USD),用于成本计量与 `cost` 策略 |
45
+
46
+ ### CapabilityTag 枚举
47
+
48
+ `code-gen` · `reasoning` · `long-context` · `vision` · `cheap` · `local`
49
+
50
+ 编排器调用时默认带 `['code-gen']` 标签筛选;路由按策略对命中供应商打分选优。
51
+
52
+ ---
53
+
54
+ ## 3. 路由策略(FH_MODEL_STRATEGY)
55
+
56
+ | 策略 | 选优逻辑 |
57
+ | --- | --- |
58
+ | `cost` | 优先 `costPer1k` 最低(默认,省钱) |
59
+ | `capability` | 优先 `reasoning` + `code-gen` 标签命中 |
60
+ | `latency` | 优先 `local`(Ollama 等本地模型) |
61
+
62
+ 多供应商时按策略排序,调用失败时**自动 fallback** 到下一个。
63
+
64
+ ---
65
+
66
+ ## 4. 供应商示例
67
+
68
+ ### 4.1 OpenAI 兼容(Agnes,已验证)
69
+
70
+ ```json
71
+ [{"id":"agnes","type":"openai-compatible","baseURL":"https://api.agnes-ai.cn/v1","apiKey":"<key>","model":"agnes-2.5-flash","tags":["code-gen"],"costPer1k":0.001}]
72
+ ```
73
+
74
+ ### 4.2 DeepSeek
75
+
76
+ ```json
77
+ [{"id":"deepseek","type":"openai-compatible","baseURL":"https://api.deepseek.com/v1","apiKey":"sk-xxx","model":"deepseek-chat","tags":["code-gen","cheap"],"costPer1k":0.0001}]
78
+ ```
79
+
80
+ ### 4.3 通义千问(DashScope 兼容模式)
81
+
82
+ ```json
83
+ [{"id":"qwen","type":"openai-compatible","baseURL":"https://dashscope.aliyuncs.com/compatible-mode/v1","apiKey":"sk-xxx","model":"qwen-plus","tags":["code-gen","long-context"],"costPer1k":0.0002}]
84
+ ```
85
+
86
+ ### 4.4 Ollama(本地,零成本)
87
+
88
+ ```json
89
+ [{"id":"ollama","type":"ollama","baseURL":"http://localhost:11434","apiKey":"","model":"qwen2.5-coder:7b","tags":["code-gen","local"],"costPer1k":0}]
90
+ ```
91
+
92
+ ### 4.5 多供应商(路由 + fallback)
93
+
94
+ ```json
95
+ [
96
+ {"id":"deepseek","type":"openai-compatible","baseURL":"https://api.deepseek.com/v1","apiKey":"sk-xxx","model":"deepseek-chat","tags":["code-gen","cheap"],"costPer1k":0.0001},
97
+ {"id":"ollama","type":"ollama","baseURL":"http://localhost:11434","apiKey":"","model":"qwen2.5-coder:7b","tags":["code-gen","local"],"costPer1k":0}
98
+ ]
99
+ ```
100
+
101
+ ---
102
+
103
+ ## 5. 成本计量
104
+
105
+ - 每次 `chat` 返回 `usage`(prompt/completion/total tokens),按 `costPer1k` 估算 `costUsd`。
106
+ - 累加进任务总成本,打印在结果中。
107
+ - 超过 `FH_BUDGET_USD` 仅**告警日志**,不阻断(避免半途中断)。
108
+ - 离线模式成本为 `0`。
109
+
110
+ ---
111
+
112
+ ## 6. 安全配置建议
113
+
114
+ 1. `FH_SHELL_ALLOW` 遵循**最小权限**:只放确实需要的命令(如 `git,npm,node`)。
115
+ 2. 保持 `FH_REQUIRE_APPROVAL=true`;仅在完全可信的隔离环境才设 `false`。
116
+ 3. `.env` 权限设为仅本人可读:`chmod 600 .env`。
117
+ 4. 不要把 `.env` 提交到 Git(已被 `.gitignore` 排除)。
118
+ 5. 日志目录(`FH_LOG_DIR`)可能含任务上下文,按敏感数据处理。
119
+ 6. **企业模式(M4)**:`FH_ENTERPRISE` 默认开启;若仅作社区使用,设 `false` 即完全关闭 RBAC / 审计 / 租户隔离,行为与 M3 一致。
120
+ 7. **租户隔离(M4)**:生产部署务必为每个客户/团队设置独立 `FH_TENANT`;租户 ID 仅允许 `A-Za-z0-9._-`(1–64 位),任何非常规字符都会被拒绝以防目录穿越。
121
+ 8. **日预算(M4)**:`FH_TENANT_BUDGET_USD` 是硬上限,超限时新任务直接返回 `QUOTA_EXCEEDED`(HTTP 429 语义),不会静默放行;单任务 `maxCostUsd` 由策略角色上限控制,达上限即熔断并给出结论。
122
+ 9. **策略覆盖(M4)**:通过 `FH_POLICY` 或 `<FH_HOME>/policy.json`、`<租户>/policy.json` 注入的覆盖只能**加严**不能放宽——危险命令/敏感路径黑名单取并集,角色权限取交集,确保安全基线不被削弱。
123
+ 10. **审计留存(M4)**:`audit-YYYY-MM.jsonl` 为防篡改哈希链,建议只读挂载或异地备份;`audit verify` 可周期性巡检完整性。
124
+
125
+ ---
126
+
127
+ © 2026 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
package/package.json CHANGED
@@ -1,109 +1,114 @@
1
- {
2
- "name": "feihong-code",
3
- "version": "0.2.2",
4
- "description": "fhcode(飞虹 Code)— 终端 AI 编程智能体,对标 Muse Code / Cursor CLI:多模型路由(DeepSeek/通义/Ollama/OpenAI)、企业级 RBAC 审计、全自动 SWE Agent、支持离线私有化",
5
- "bin": {
6
- "fhcode": "dist/cli/index.js"
7
- },
8
- "main": "dist/cli/index.js",
9
- "files": [
10
- "dist",
11
- "README.md",
12
- "CHANGELOG.md",
13
- "LICENSE",
14
- "CONTRIBUTING.md",
15
- "CODE_OF_CONDUCT.md",
16
- "AGENT-GUIDE.md",
17
- "tool-schema.json",
18
- "docs",
19
- ".github"
20
- ],
21
- "scripts": {
22
- "build": "tsc && node scripts/copy-web.cjs",
23
- "start": "node dist/cli/index.js",
24
- "dev": "tsx src/cli/index.ts",
25
- "typecheck": "tsc --noEmit",
26
- "verify:m4": "node scripts/verify-m4.mjs",
27
- "test": "tsx --test tests/unit/*.test.ts",
28
- "verify": "npm run typecheck && npm run build && npm run verify:m4",
29
- "prepublishOnly": "npm run build"
30
- },
31
- "keywords": [
32
- "ai",
33
- "agent",
34
- "ai-agent",
35
- "coding",
36
- "cli",
37
- "llm",
38
- "large-language-model",
39
- "muse-code",
40
- "autonomous-agent",
41
- "swe-agent",
42
- "software-engineering",
43
- "deepseek",
44
- "ollama",
45
- "openai",
46
- "typescript",
47
- "rbac",
48
- "enterprise",
49
- "multi-tenant",
50
- "code-generation",
51
- "test-generation",
52
- "terminal",
53
- "developer-tools",
54
- "productivity",
55
- "agentic",
56
- "vibe-coding",
57
- "code-review",
58
- "refactor",
59
- "automation",
60
- "mcp",
61
- "tool-use",
62
- "claude",
63
- "copilot",
64
- "chatgpt",
65
- "devops",
66
- "agent-framework",
67
- "ai-tools",
68
- "coding-assistant",
69
- "self-improving",
70
- "offline-ai",
71
- "ai-coding",
72
- "command-line",
73
- "software-development",
74
- "llm-agent",
75
- "nodejs-cli",
76
- "code-assistant",
77
- "agentic-ai"
78
- ],
79
- "author": "吴赐虹 (晋江市飞虹智科技企业管理有限公司) <wch887292@gmail.com>",
80
- "license": "MIT",
81
- "repository": {
82
- "type": "git",
83
- "url": "https://gitcode.com/gcw_YuRlTP0G/feihong-code.git"
84
- },
85
- "homepage": "https://www.klai.top",
86
- "bugs": {
87
- "url": "https://gitcode.com/gcw_YuRlTP0G/feihong-code/issues"
88
- },
89
- "engines": {
90
- "node": ">=18.0.0"
91
- },
92
- "funding": {
93
- "type": "company",
94
- "url": "https://www.klai.top"
95
- },
96
- "devDependencies": {
97
- "@types/express": "^4.17.21",
98
- "@types/node": "^26.2.0",
99
- "tsx": "^4.19.2",
100
- "typescript": "^5.6.3"
101
- },
102
- "dependencies": {
103
- "express": "^4.21.2",
104
- "zod": "^4.4.3"
105
- },
106
- "publishConfig": {
107
- "registry": "https://registry.npmjs.org/"
108
- }
109
- }
1
+ {
2
+ "name": "feihong-code",
3
+ "version": "0.5.1",
4
+ "description": "fhcode(飞虹 Code)— 终端 AI 编程智能体,对标 Muse Code / Cursor CLI:多模型路由(DeepSeek/通义/Ollama/OpenAI)、企业级 RBAC 审计、全自动 SWE Agent、支持离线私有化",
5
+ "bin": {
6
+ "fhcode": "dist/cli/index.js"
7
+ },
8
+ "main": "dist/cli/index.js",
9
+ "files": [
10
+ "dist",
11
+ "README.md",
12
+ "CHANGELOG.md",
13
+ "LICENSE",
14
+ "CONTRIBUTING.md",
15
+ "CODE_OF_CONDUCT.md",
16
+ "AGENT-GUIDE.md",
17
+ "tool-schema.json",
18
+ "docs",
19
+ ".github"
20
+ ],
21
+ "scripts": {
22
+ "build": "tsc && node scripts/copy-web.cjs",
23
+ "start": "node dist/cli/index.js",
24
+ "dev": "tsx src/cli/index.ts",
25
+ "typecheck": "tsc --noEmit",
26
+ "verify:m4": "node scripts/verify-m4.mjs",
27
+ "verify:m6": "node scripts/verify-m6.mjs",
28
+ "verify:m7": "node scripts/verify-m7.mjs",
29
+ "verify:m8": "node scripts/verify-m8.mjs",
30
+ "verify:m9": "node scripts/verify-m9.mjs",
31
+ "eval": "node scripts/eval.mjs",
32
+ "test": "tsx --test tests/unit/*.test.ts",
33
+ "verify": "npm run typecheck && npm run build && npm run verify:m4 && npm run verify:m6 && npm run verify:m7 && npm run verify:m8 && npm run verify:m9",
34
+ "prepublishOnly": "npm run build"
35
+ },
36
+ "keywords": [
37
+ "ai",
38
+ "agent",
39
+ "ai-agent",
40
+ "coding",
41
+ "cli",
42
+ "llm",
43
+ "large-language-model",
44
+ "muse-code",
45
+ "autonomous-agent",
46
+ "swe-agent",
47
+ "software-engineering",
48
+ "deepseek",
49
+ "ollama",
50
+ "openai",
51
+ "typescript",
52
+ "rbac",
53
+ "enterprise",
54
+ "multi-tenant",
55
+ "code-generation",
56
+ "test-generation",
57
+ "terminal",
58
+ "developer-tools",
59
+ "productivity",
60
+ "agentic",
61
+ "vibe-coding",
62
+ "code-review",
63
+ "refactor",
64
+ "automation",
65
+ "mcp",
66
+ "tool-use",
67
+ "claude",
68
+ "copilot",
69
+ "chatgpt",
70
+ "devops",
71
+ "agent-framework",
72
+ "ai-tools",
73
+ "coding-assistant",
74
+ "self-improving",
75
+ "offline-ai",
76
+ "ai-coding",
77
+ "command-line",
78
+ "software-development",
79
+ "llm-agent",
80
+ "nodejs-cli",
81
+ "code-assistant",
82
+ "agentic-ai"
83
+ ],
84
+ "author": "吴赐虹 (晋江市飞虹智科技企业管理有限公司) <wch887292@gmail.com>",
85
+ "license": "MIT",
86
+ "repository": {
87
+ "type": "git",
88
+ "url": "https://github.com/wch887292/feihong-code.git"
89
+ },
90
+ "homepage": "https://www.klai.top",
91
+ "bugs": {
92
+ "url": "https://github.com/wch887292/feihong-code/issues"
93
+ },
94
+ "engines": {
95
+ "node": ">=18.0.0"
96
+ },
97
+ "funding": {
98
+ "type": "company",
99
+ "url": "https://www.klai.top"
100
+ },
101
+ "devDependencies": {
102
+ "@types/express": "^5.0.6",
103
+ "@types/node": "^26.2.0",
104
+ "tsx": "^4.19.2",
105
+ "typescript": "^5.6.3"
106
+ },
107
+ "dependencies": {
108
+ "express": "^4.21.2",
109
+ "zod": "^4.4.3"
110
+ },
111
+ "publishConfig": {
112
+ "registry": "https://registry.npmjs.org/"
113
+ }
114
+ }