feihong-code 0.2.3 → 0.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.
- package/.github/FUNDING.yml +4 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +37 -37
- package/.github/ISSUE_TEMPLATE/config.yml +14 -14
- package/.github/ISSUE_TEMPLATE/feature_request.md +28 -28
- package/.github/PULL_REQUEST_TEMPLATE.md +46 -46
- package/.github/SECURITY.md +67 -67
- package/.github/dependabot.yml +16 -0
- package/.github/workflows/ci.yml +1 -1
- package/AGENT-GUIDE.md +382 -237
- package/CHANGELOG.md +392 -0
- package/CODE_OF_CONDUCT.md +56 -56
- package/CONTRIBUTING.md +68 -68
- package/LICENSE +22 -22
- package/README.md +586 -522
- package/README.self-evolve.md +274 -0
- package/dist/agent/code-review.js +2 -0
- package/dist/agent/code-review.js.map +1 -1
- package/dist/agent/code-writer.js +74 -18
- package/dist/agent/code-writer.js.map +1 -1
- package/dist/agent/context-compactor.js +13 -4
- package/dist/agent/context-compactor.js.map +1 -1
- package/dist/agent/experience.js +319 -84
- package/dist/agent/experience.js.map +1 -1
- package/dist/agent/orchestrator.js +233 -71
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/planner.js +30 -7
- package/dist/agent/planner.js.map +1 -1
- package/dist/agent/prompts.js +9 -0
- package/dist/agent/prompts.js.map +1 -1
- package/dist/agent/quality-gate.js +10 -4
- package/dist/agent/quality-gate.js.map +1 -1
- package/dist/agent/repo-context.js +181 -0
- package/dist/agent/repo-context.js.map +1 -0
- package/dist/agent/repo-reader.js +92 -99
- package/dist/agent/repo-reader.js.map +1 -1
- package/dist/agent/self-heal.js +80 -60
- package/dist/agent/self-heal.js.map +1 -1
- package/dist/agent/self-improver.js +65 -61
- package/dist/agent/self-improver.js.map +1 -1
- package/dist/agent/subagent-summary.js +31 -0
- package/dist/agent/subagent-summary.js.map +1 -0
- package/dist/agent/subagent.js +52 -2
- package/dist/agent/subagent.js.map +1 -1
- package/dist/agent/symbol-index.js +160 -0
- package/dist/agent/symbol-index.js.map +1 -0
- package/dist/agent/team.js +193 -0
- package/dist/agent/team.js.map +1 -0
- package/dist/cli/commands.js +124 -143
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/index.js +113 -106
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/repl.js +82 -7
- package/dist/cli/repl.js.map +1 -1
- package/dist/cli/run.js +600 -95
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/tui.js +145 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/cli/version.js +1 -1
- package/dist/enterprise/audit.js +145 -23
- package/dist/enterprise/audit.js.map +1 -1
- package/dist/enterprise/index.js +14 -11
- package/dist/enterprise/index.js.map +1 -1
- package/dist/enterprise/policy.js +22 -10
- package/dist/enterprise/policy.js.map +1 -1
- package/dist/harness/executor.js +127 -0
- package/dist/harness/executor.js.map +1 -0
- package/dist/harness/harness.js +87 -0
- package/dist/harness/harness.js.map +1 -0
- package/dist/harness/index.js +31 -0
- package/dist/harness/index.js.map +1 -0
- package/dist/harness/loader.js +138 -0
- package/dist/harness/loader.js.map +1 -0
- package/dist/harness/reporter.js +34 -0
- package/dist/harness/reporter.js.map +1 -0
- package/dist/harness/types.js +10 -0
- package/dist/harness/types.js.map +1 -0
- package/dist/harness/verifier.js +48 -0
- package/dist/harness/verifier.js.map +1 -0
- package/dist/hello.js +14 -0
- package/dist/hello.js.map +1 -0
- package/dist/memory/auto-summarize.js +208 -0
- package/dist/memory/auto-summarize.js.map +1 -0
- package/dist/memory/index.js +228 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/models/model-router.js +100 -27
- package/dist/models/model-router.js.map +1 -1
- package/dist/models/model.dto.js +25 -3
- package/dist/models/model.dto.js.map +1 -1
- package/dist/models/providers/ollama.provider.js +12 -0
- package/dist/models/providers/ollama.provider.js.map +1 -1
- package/dist/models/providers/openai-compatible.provider.js +14 -1
- package/dist/models/providers/openai-compatible.provider.js.map +1 -1
- package/dist/plugins/plugin-loader.js +179 -0
- package/dist/plugins/plugin-loader.js.map +1 -0
- package/dist/runtime/event-log.js.map +1 -1
- package/dist/runtime/hooks.js +80 -0
- package/dist/runtime/hooks.js.map +1 -0
- package/dist/self-evolve/hook.js +60 -0
- package/dist/self-evolve/hook.js.map +1 -0
- package/dist/self-evolve/hook.ts +80 -0
- package/dist/self-evolve/manager.d.ts +8 -0
- package/dist/self-evolve/manager.js +401 -0
- package/dist/shared/config.js +35 -3
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/errors.js +6 -2
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/i18n.js +535 -0
- package/dist/shared/i18n.js.map +1 -0
- package/dist/shared/secure-store.js +117 -0
- package/dist/shared/secure-store.js.map +1 -0
- package/dist/skills/grill.js +2 -1
- package/dist/skills/grill.js.map +1 -1
- package/dist/skills/self-heal.js +73 -0
- package/dist/skills/self-heal.js.map +1 -0
- package/dist/skills/skill-loader.js +131 -0
- package/dist/skills/skill-loader.js.map +1 -0
- package/dist/skills/skill-market.js +195 -0
- package/dist/skills/skill-market.js.map +1 -0
- package/dist/tools/analysis/code-analyzer.js +45 -18
- package/dist/tools/analysis/code-analyzer.js.map +1 -1
- package/dist/tools/index.js +5 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp/index.js +84 -0
- package/dist/tools/mcp/index.js.map +1 -0
- package/dist/tools/mcp/mcp-client.js +194 -0
- package/dist/tools/mcp/mcp-client.js.map +1 -0
- package/dist/tools/sandbox.js +126 -0
- package/dist/tools/sandbox.js.map +1 -0
- package/dist/tools/shell/exec.js +72 -3
- package/dist/tools/shell/exec.js.map +1 -1
- package/dist/tools/shell/run-shell.tool.js +37 -7
- package/dist/tools/shell/run-shell.tool.js.map +1 -1
- package/dist/tools/skills/load-skill.tool.js +36 -0
- package/dist/tools/skills/load-skill.tool.js.map +1 -0
- package/dist/tools/tool.interface.js.map +1 -1
- package/dist/tools/tool.registry.js +69 -1
- package/dist/tools/tool.registry.js.map +1 -1
- package/dist/tools/web/web.tool.js +139 -0
- package/dist/tools/web/web.tool.js.map +1 -0
- package/dist/web/auth.js +178 -3
- package/dist/web/auth.js.map +1 -1
- package/dist/web/channels.js +171 -0
- package/dist/web/channels.js.map +1 -0
- package/dist/web/public/css/style.css +1546 -0
- package/dist/web/public/index.html +804 -37
- package/dist/web/public/js/api.js +309 -0
- package/dist/web/public/js/app.js +1472 -0
- package/dist/web/public/js/ui.js +832 -0
- package/dist/web/public/js/utils.js +170 -0
- package/dist/web/server.js +937 -11
- package/dist/web/server.js.map +1 -1
- package/dist/web/task-queue.js +470 -0
- package/dist/web/task-queue.js.map +1 -0
- package/dist/web/web-config.js +143 -0
- package/dist/web/web-config.js.map +1 -0
- package/docs/App/344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +299 -0
- package/docs/App/346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +554 -0
- package/docs/Deployment_Guide_EN.md +288 -0
- package/docs/SELF-EVOLVE-GUIDE.md +313 -0
- package/docs/Technical_Manual_EN.md +216 -0
- package/docs/User_Manual_EN.md +314 -0
- package/docs/error-codes.md +198 -0
- package/docs/screenshots/cli-demo.png +0 -0
- package/docs/screenshots/feature-comparison.png +0 -0
- package/docs/screenshots/web-console.png +0 -0
- package/docs/self-evolve-implementation.md +165 -0
- package/docs/self-evolve.md +166 -0
- package/docs//344/272/247/345/223/201/345/274/200/345/217/221/346/226/207/346/241/243.md +614 -614
- 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
- package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +318 -358
- 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
- package/docs//346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +216 -303
- package/docs//346/236/266/346/236/204/344/270/216API.md +238 -238
- package/docs//347/224/250/346/210/267/346/211/213/345/206/214.md +196 -196
- package/docs//351/203/250/347/275/262/346/214/207/345/215/227.md +165 -165
- package/docs//351/203/250/347/275/262/350/257/264/346/230/216/344/271/246.md +288 -0
- package/docs//351/205/215/347/275/256/345/217/202/350/200/203.md +127 -127
- package/docs//351/241/265/351/235/242/345/212/237/350/203/275/345/244/215/347/233/230/344/270/216/345/206/222/347/203/237/346/265/213/350/257/225/346/212/245/345/221/212.html +117 -0
- package/package.json +108 -109
- package/tool-schema.json +117 -46
|
@@ -1,130 +1,130 @@
|
|
|
1
|
-
# 飞虹 Code 常见问题与故障排查(FAQ)
|
|
2
|
-
|
|
3
|
-
> 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Q1. 离线模式和真实模式如何切换?
|
|
8
|
-
|
|
9
|
-
- 未配置 `FH_PROVIDERS`(或设为 `[]`/`FH_OFFLINE=true`)→ **离线**(内置 Mock 闭环,零成本)。
|
|
10
|
-
- 配置非空 `FH_PROVIDERS` → **真实模型**。
|
|
11
|
-
- 临时离线:`FH_OFFLINE=true fhcode "..."`。
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Q2. 真实并行(`--parallel`)子任务失败,提示 HTTP 429?
|
|
16
|
-
|
|
17
|
-
**原因**:`--parallel` 会**并发**调用 API。免费套餐(如 Agnes free tier)对并发请求有严格限流,触发 `429 Too Many Requests`。
|
|
18
|
-
|
|
19
|
-
**解决**:
|
|
20
|
-
1. 升级 API 套餐(Token Plan)提高并发额度;
|
|
21
|
-
2. 改用单命令模式顺序执行大目标:`fhcode "实现A并且添加B"`(单命令串行,不易触发);
|
|
22
|
-
3. 用 `FH_OFFLINE=true fhcode --parallel "..."` 验证并行机制(不耗额度)。
|
|
23
|
-
|
|
24
|
-
> 代码路径本身正确:真实 `ModelRouter` 已接入,worktree 创建/清理正常,限流被优雅捕获(不崩溃、清理照常)。
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Q3. 没配 `FH_HOME` 会崩溃吗?
|
|
29
|
-
|
|
30
|
-
不会。自 v0.1.0 起 `FH_HOME` 可缺省,默认 `~/.feihong-code`(Windows 为 `%USERPROFILE%/.feihong-code`)。仅当显式设置错误路径时才可能异常。
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Q4. `git worktree` 残留 / 清理失败?
|
|
35
|
-
|
|
36
|
-
正常结束后 worktree 会被强制清理(含 Windows 上 git 顺序移除缺陷的鲁棒兜底)。
|
|
37
|
-
|
|
38
|
-
若发现残留:
|
|
39
|
-
```bash
|
|
40
|
-
git worktree list # 查看
|
|
41
|
-
git worktree prune # 清理元数据
|
|
42
|
-
# 手动删除遗留的临时目录(通常在 %TEMP%/fhcode-wt-*)
|
|
43
|
-
```
|
|
44
|
-
子代理产品本就不进入主仓库,残留目录可直接删除。
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## Q5. shell 命令被拒("已拒绝执行(需审批)")?
|
|
49
|
-
|
|
50
|
-
- `run_shell` 要求命令首词命中 `FH_SHELL_ALLOW` 白名单。
|
|
51
|
-
- 非交互 CLI 下,命中白名单自动通过;未命中则拒绝。
|
|
52
|
-
- 检查 `.env` 的 `FH_SHELL_ALLOW` 是否包含你的命令(如 `git,npm,node,ls,cat`)。
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## Q6. 密钥会泄露吗?
|
|
57
|
-
|
|
58
|
-
- `.env` 已被 `.gitignore` 排除,且 `package.json` 的 `files` 白名单确保 `npm publish` 不含 `.env`。
|
|
59
|
-
- 日志中 `apikey/secret/token/...` 值一律 `[REDACTED]`。
|
|
60
|
-
- 我(助手)全程不回显完整 API key。
|
|
61
|
-
- 建议 `.env` 权限 `chmod 600 .env`。
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## Q7. 构建失败(tsc 报错)?
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
rm -rf dist node_modules
|
|
69
|
-
npm install
|
|
70
|
-
npm run typecheck # 先看类型错误
|
|
71
|
-
npm run build
|
|
72
|
-
```
|
|
73
|
-
确保 Node >= 18 且 `npm install` 已成功(需要联网拉取 zod/typescript)。
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## Q8. 模型不调用工具,直接给文字?
|
|
78
|
-
|
|
79
|
-
- 编排器默认带 `['code-gen']` 标签筛选 provider,确认 `FH_PROVIDERS` 中模型 `tags` 含 `code-gen`。
|
|
80
|
-
- 温度固定 `0`,模型仍可能选择不调用工具(取决于模型能力)。
|
|
81
|
-
- 若需强制工具使用,可在需求中明确"请使用 list_dir / read_file 等工具"。
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
## Q9. Node 版本要求?
|
|
86
|
-
|
|
87
|
-
`engines.node >= 18`。低于 18 可能出现语法/API 不兼容(如 `structuredClone`、`fetch` 全局)。
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## Q10. REPL 无法交互(自动化环境)?
|
|
92
|
-
|
|
93
|
-
REPL 依赖标准输入交互。在 CI / 自动化脚本中请使用**单命令模式**或**离线模式**,而非 REPL。
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
## Q11. 真实模式会改我的文件吗?
|
|
98
|
-
|
|
99
|
-
会。`cwd = 当前目录`,`write_file`/`edit_file` 会直接修改当前工作区文件(受沙箱限制在 cwd 内)。建议:
|
|
100
|
-
- 从干净目录或专用仓库运行;
|
|
101
|
-
- 大改前先用 `/plan`、`/grill` 只读评估;
|
|
102
|
-
- 多模块任务用 `--parallel`(worktree 隔离,不污染主目录)。
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## Q12. 成本怎么算?会超额吗?
|
|
107
|
-
|
|
108
|
-
每次调用按 `costPer1k` × tokens 估算,任务结束打印总成本。超过 `FH_BUDGET_USD` 仅**告警**不阻断。离线模式成本恒为 0。
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## Q13.(企业)任务启动即报 `QUOTA_EXCEEDED`,怎么回事?
|
|
113
|
-
|
|
114
|
-
说明**租户当日成本已超预算**。触发链:任务启动前 `assertQuota()` 会按 `FH_TENANT_BUDGET_USD`(缺省取角色上限)统计当日已用成本,超限即 fail-fast 拒绝新任务(HTTP 429 语义)。可用 `fhcode whoami` 查看「已用/预算」,或调高 `FH_TENANT_BUDGET_USD` / 次日再跑。注意这是**硬上限**,不会静默放行。
|
|
115
|
-
|
|
116
|
-
## Q14.(企业)`audit verify` 报链断裂(brokenAt),是日志被改了吗?
|
|
117
|
-
|
|
118
|
-
哈希链校验规则:每条记录 `hash = sha256(prevHash | seq | ts | tenant | ... | resource | decision)`,且 `prevHash` 必须衔接上一条、`seq` 连续。若某条被增删改,`audit verify` 会定位首个断点 `brokenAt` 行号。常见原因:手工编辑了 `audit-YYYY-MM.jsonl`、文件被截断、或拷贝时丢了行。建议从该断点之后重建或归档受损月份日志。
|
|
119
|
-
|
|
120
|
-
## Q15.(企业)多租户之间会串数据吗?
|
|
121
|
-
|
|
122
|
-
不会。每个租户数据落在独立的物理目录 `<FH_HOME>/tenants/<tenantId>/{sessions,audit,goals}`,且 `FH_TENANT` 值受正则 `^[A-Za-z0-9._-]{1,64}$` 强校验,禁止 `../` 等穿越字符。未设 `FH_TENANT` 时走默认租户(兼容旧 `<FH_HOME>/sessions`)。CI 中 `beta` 租户断言读不到 `acme` 租户会话,即验证此隔离。
|
|
123
|
-
|
|
124
|
-
## Q16.(企业)如何完全关闭企业能力(退回社区版)?
|
|
125
|
-
|
|
126
|
-
设 `FH_ENTERPRISE=false`,则 RBAC / 审计 / 多租户隔离全部不注入,运行行为与 M3 社区版完全一致,零额外开销。这是单开关、向后兼容设计。
|
|
127
|
-
|
|
128
|
-
---
|
|
129
|
-
|
|
130
|
-
© 2026 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|
|
1
|
+
# 飞虹 Code 常见问题与故障排查(FAQ)
|
|
2
|
+
|
|
3
|
+
> 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Q1. 离线模式和真实模式如何切换?
|
|
8
|
+
|
|
9
|
+
- 未配置 `FH_PROVIDERS`(或设为 `[]`/`FH_OFFLINE=true`)→ **离线**(内置 Mock 闭环,零成本)。
|
|
10
|
+
- 配置非空 `FH_PROVIDERS` → **真实模型**。
|
|
11
|
+
- 临时离线:`FH_OFFLINE=true fhcode "..."`。
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Q2. 真实并行(`--parallel`)子任务失败,提示 HTTP 429?
|
|
16
|
+
|
|
17
|
+
**原因**:`--parallel` 会**并发**调用 API。免费套餐(如 Agnes free tier)对并发请求有严格限流,触发 `429 Too Many Requests`。
|
|
18
|
+
|
|
19
|
+
**解决**:
|
|
20
|
+
1. 升级 API 套餐(Token Plan)提高并发额度;
|
|
21
|
+
2. 改用单命令模式顺序执行大目标:`fhcode "实现A并且添加B"`(单命令串行,不易触发);
|
|
22
|
+
3. 用 `FH_OFFLINE=true fhcode --parallel "..."` 验证并行机制(不耗额度)。
|
|
23
|
+
|
|
24
|
+
> 代码路径本身正确:真实 `ModelRouter` 已接入,worktree 创建/清理正常,限流被优雅捕获(不崩溃、清理照常)。
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Q3. 没配 `FH_HOME` 会崩溃吗?
|
|
29
|
+
|
|
30
|
+
不会。自 v0.1.0 起 `FH_HOME` 可缺省,默认 `~/.feihong-code`(Windows 为 `%USERPROFILE%/.feihong-code`)。仅当显式设置错误路径时才可能异常。
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Q4. `git worktree` 残留 / 清理失败?
|
|
35
|
+
|
|
36
|
+
正常结束后 worktree 会被强制清理(含 Windows 上 git 顺序移除缺陷的鲁棒兜底)。
|
|
37
|
+
|
|
38
|
+
若发现残留:
|
|
39
|
+
```bash
|
|
40
|
+
git worktree list # 查看
|
|
41
|
+
git worktree prune # 清理元数据
|
|
42
|
+
# 手动删除遗留的临时目录(通常在 %TEMP%/fhcode-wt-*)
|
|
43
|
+
```
|
|
44
|
+
子代理产品本就不进入主仓库,残留目录可直接删除。
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Q5. shell 命令被拒("已拒绝执行(需审批)")?
|
|
49
|
+
|
|
50
|
+
- `run_shell` 要求命令首词命中 `FH_SHELL_ALLOW` 白名单。
|
|
51
|
+
- 非交互 CLI 下,命中白名单自动通过;未命中则拒绝。
|
|
52
|
+
- 检查 `.env` 的 `FH_SHELL_ALLOW` 是否包含你的命令(如 `git,npm,node,ls,cat`)。
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Q6. 密钥会泄露吗?
|
|
57
|
+
|
|
58
|
+
- `.env` 已被 `.gitignore` 排除,且 `package.json` 的 `files` 白名单确保 `npm publish` 不含 `.env`。
|
|
59
|
+
- 日志中 `apikey/secret/token/...` 值一律 `[REDACTED]`。
|
|
60
|
+
- 我(助手)全程不回显完整 API key。
|
|
61
|
+
- 建议 `.env` 权限 `chmod 600 .env`。
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Q7. 构建失败(tsc 报错)?
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
rm -rf dist node_modules
|
|
69
|
+
npm install
|
|
70
|
+
npm run typecheck # 先看类型错误
|
|
71
|
+
npm run build
|
|
72
|
+
```
|
|
73
|
+
确保 Node >= 18 且 `npm install` 已成功(需要联网拉取 zod/typescript)。
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Q8. 模型不调用工具,直接给文字?
|
|
78
|
+
|
|
79
|
+
- 编排器默认带 `['code-gen']` 标签筛选 provider,确认 `FH_PROVIDERS` 中模型 `tags` 含 `code-gen`。
|
|
80
|
+
- 温度固定 `0`,模型仍可能选择不调用工具(取决于模型能力)。
|
|
81
|
+
- 若需强制工具使用,可在需求中明确"请使用 list_dir / read_file 等工具"。
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Q9. Node 版本要求?
|
|
86
|
+
|
|
87
|
+
`engines.node >= 18`。低于 18 可能出现语法/API 不兼容(如 `structuredClone`、`fetch` 全局)。
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Q10. REPL 无法交互(自动化环境)?
|
|
92
|
+
|
|
93
|
+
REPL 依赖标准输入交互。在 CI / 自动化脚本中请使用**单命令模式**或**离线模式**,而非 REPL。
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Q11. 真实模式会改我的文件吗?
|
|
98
|
+
|
|
99
|
+
会。`cwd = 当前目录`,`write_file`/`edit_file` 会直接修改当前工作区文件(受沙箱限制在 cwd 内)。建议:
|
|
100
|
+
- 从干净目录或专用仓库运行;
|
|
101
|
+
- 大改前先用 `/plan`、`/grill` 只读评估;
|
|
102
|
+
- 多模块任务用 `--parallel`(worktree 隔离,不污染主目录)。
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Q12. 成本怎么算?会超额吗?
|
|
107
|
+
|
|
108
|
+
每次调用按 `costPer1k` × tokens 估算,任务结束打印总成本。超过 `FH_BUDGET_USD` 仅**告警**不阻断。离线模式成本恒为 0。
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Q13.(企业)任务启动即报 `QUOTA_EXCEEDED`,怎么回事?
|
|
113
|
+
|
|
114
|
+
说明**租户当日成本已超预算**。触发链:任务启动前 `assertQuota()` 会按 `FH_TENANT_BUDGET_USD`(缺省取角色上限)统计当日已用成本,超限即 fail-fast 拒绝新任务(HTTP 429 语义)。可用 `fhcode whoami` 查看「已用/预算」,或调高 `FH_TENANT_BUDGET_USD` / 次日再跑。注意这是**硬上限**,不会静默放行。
|
|
115
|
+
|
|
116
|
+
## Q14.(企业)`audit verify` 报链断裂(brokenAt),是日志被改了吗?
|
|
117
|
+
|
|
118
|
+
哈希链校验规则:每条记录 `hash = sha256(prevHash | seq | ts | tenant | ... | resource | decision)`,且 `prevHash` 必须衔接上一条、`seq` 连续。若某条被增删改,`audit verify` 会定位首个断点 `brokenAt` 行号。常见原因:手工编辑了 `audit-YYYY-MM.jsonl`、文件被截断、或拷贝时丢了行。建议从该断点之后重建或归档受损月份日志。
|
|
119
|
+
|
|
120
|
+
## Q15.(企业)多租户之间会串数据吗?
|
|
121
|
+
|
|
122
|
+
不会。每个租户数据落在独立的物理目录 `<FH_HOME>/tenants/<tenantId>/{sessions,audit,goals}`,且 `FH_TENANT` 值受正则 `^[A-Za-z0-9._-]{1,64}$` 强校验,禁止 `../` 等穿越字符。未设 `FH_TENANT` 时走默认租户(兼容旧 `<FH_HOME>/sessions`)。CI 中 `beta` 租户断言读不到 `acme` 租户会话,即验证此隔离。
|
|
123
|
+
|
|
124
|
+
## Q16.(企业)如何完全关闭企业能力(退回社区版)?
|
|
125
|
+
|
|
126
|
+
设 `FH_ENTERPRISE=false`,则 RBAC / 审计 / 多租户隔离全部不注入,运行行为与 M3 社区版完全一致,零额外开销。这是单开关、向后兼容设计。
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
© 2026 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|