本文档专为 AI Agent 设计,提供快速上手所需的环境、配置、工具契约与最佳实践。
晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹 版本:8.4.3 | 2026-09-14
飞虹 Code(fhcode) 是一款运行在终端的 AI 编程智能体,支持:
- 自然语言 → 代码闭环:描述需求,自动规划、编写、验证
- 多模型路由:DeepSeek / 通义 / Ollama(本地)/ OpenAI 兼容
- 企业级安全:RBAC、审计链、多租户、配额熔断
- 全自动软件工程:
swe命令可自主完成仓库级开发任务
GitHub:github.com/wch887292/feihong-code(已上线)
# 必需
Node.js >= 22.5.0(推荐 22 LTS 或 24)
npm >= 9
# 可选但推荐
git(--parallel 模式需要 worktree)
tsx(开发模式)验证环境:
node --version # 应 >= 22.5.0
npm --version # 应 >= 9.0.0git clone https://github.com/wch887292/feihong-code.git
cd feihong-code
npm install
npm run buildnpm install -g feihong-code
fhcode --version # 验证安装FH_PROVIDERS(JSON 数组,最高优先级)fhcode.config.json(项目配置文件)- 单环境变量
FH_MODEL_*(快速接入)
export FH_MODEL_NAME=qwen3:8b
export FH_MODEL_TYPE=ollama
export FH_MODEL_BASE_URL=http://localhost:11434
export FH_MODEL_TAGS=code-gen,reasoning,localexport FH_PROVIDERS='[{"name":"deepseek","type":"openai-compatible","baseUrl":"https://api.deepseek.com/v1","apiKey":"sk-...","tags":["code-gen","reasoning"],"priority":1}]'export FH_OFFLINE=true
# 或使用空 providers
export FH_PROVIDERS='[]'export FH_SANDBOX_MODE=read-only # 只读勘察(禁写禁执行)
export FH_SANDBOX_MODE=workspace-write # 工作区可写(默认,shell 受白名单+审批)
export FH_SANDBOX_MODE=danger-full-access # 全权限(危险命令黑名单仍生效)
# 网络域名规则(作用于 run_shell 命令中的 http(s) 目标)
export FH_NETWORK_DENY=evil.example.com # 命中即拦截(任意模式生效)
# export FH_NETWORK_ALLOW=api.example.com # 配置后未命中即拦截export FH_MCP_SERVERS='[{"name":"github","command":"npx","args":["-y","github-mcp-server"]}]'
# 远程工具以 <serverName>_<tool> 前缀注册(如 github_list_issues),沙箱/守卫同样生效在仓库根或任意目录放置 AGENTS.md(或 CLAUDE.md / .atomcode.md),
任务启动时自动发现并注入 system prompt(限 8KB),无需任何配置。
# FH_HOOKS:JSON 数组。PreToolUse 非零退出会拦截工具调用;PostToolUse/PostEdit 只记录
export FH_HOOKS='[
{"event":"PreToolUse","command":"node scripts/guard.js","tools":["run_shell"]},
{"event":"PostEdit","command":"npx eslint --fix {path}","paths":["src/"]}
]'
# 占位符: {cwd} {tool} {path} {runId} {ok}带 paths frontmatter 的规则只在操作相关文件时按需注入(JIT,省 token):
---
paths: ["src/**", "tests/**"]
---
src 与 tests 目录规则:改动必须附带单元测试。无 paths 的正文作为全局指令常驻注入。
# 安装插件(本地目录或 git URL;清单 plugin.json 打包 skills + hooks + MCP)
fhcode plugin install ./my-plugin
fhcode plugin install git@github.com:user/my-plugin.git
fhcode plugin list # 列出已安装插件插件目录结构:plugin.json(必含 name/version)+ 可选 skills/<name>/SKILL.md、hooks、mcp 配置。安装后自动生效(技能入索引、hooks/MCP 叠加)。
内置 web_search(默认 DuckDuckGo,FH_SEARCH_ENDPOINT 可换端点)与 web_fetch 工具,
目标域名受沙箱网络规则约束(FH_NETWORK_ALLOW/DENY)。
# 启动 Web 控制台(含 /api/tasks 任务队列,服务端静默执行)
fhcode serve --port 8080
# 提交任务(Bearer 鉴权)
curl -X POST http://localhost:8080/api/tasks \
-H "Authorization: Bearer $FH_WEB_TOKEN" -H "Content-Type: application/json" \
-d '{"goal":"写一个 hello.ts"}'
# 查询: GET /api/tasks 列表 · GET /api/tasks/:id 单任务并发上限默认 2,可用 FH_TASK_CONCURRENCY 调整。
跨进程持久化(P6-4):任务默认落盘 ~/.feihong-code/tasks/(可用 FH_TASK_PERSIST_DIR 覆盖),
服务重启自动恢复队列——queued 重新入队执行、running 僵尸标记 failed(防崩溃遗留)。
# 目标自动拆解为任务清单,多 agent 并发认领执行,消息总线汇报
fhcode team "实现登录模块 并且 添加用户管理 并且 写集成测试"内置消息总线(TeamBus)与共享任务清单(TaskBoard,原子认领防重复),逐任务结果摘要回传。
# 任务状态 webhook(CI/外部系统编排): FH_TASK_WEBHOOK_URL 或 POST /api/webhook {"url":"..."}
# 消息渠道推送(任务状态变化通知)
export FH_CHANNEL_TELEGRAM_BOT_TOKEN=bot:xxx
export FH_CHANNEL_TELEGRAM_CHAT_ID=12345
export FH_CHANNEL_WECOM_KEY=key1,key2 # 企业微信群机器人(可多个)export FH_SANDBOX_MODE=container # shell 在容器内执行(docker run 挂载工作区)
export FH_SANDBOX_IMAGE=node:22-alpine # 容器镜像(默认)- 符号索引:
symbol-index.ts自动提取函数/类/接口符号并缓存(FH_HOME/symbol-index.json),供 /grill 与 swe 聚焦 - VSCode 扩展:
vscode-extension/目录,fhcode.run/fhcode.diff命令,配置fhcode.binaryPath/fhcode.offline
# 搜索市场技能(默认 agentskills.io;--repo 或 FH_SKILL_MARKET 换源)
fhcode skill-market search "code review"
# 安装到 ~/.feihong-code/skills/(安装后任务中自动发现,渐进式披露)
fhcode skill-market install code-review
# 列出本地已安装技能
fhcode skill-market list市场源协议:站点暴露 /.well-known/agent-skills/index.json(agentskills.io discovery 规范),
支持 SKILL.md 直下与 tar.gz 归档(sha256 digest 校验防篡改,路径穿越防护)。
# 在 vscode-extension/ 目录打包或 F5 调试加载
# fhcode: 运行任务(附带选区上下文)——选中代码自动作为 <selection> 上下文注入目标
# fhcode: 就地查看工作区 diff——VSCode 原生 diff 编辑器展示 HEAD ↔ 工作区
# fhcode: 查看最近任务输出配置:fhcode.binaryPath(CLI 路径,默认 PATH 中的 fhcode)、fhcode.offline。
diff 面板通过 git show HEAD:<path> 提供左侧内容,需 git 仓库。
# 基础用法
fhcode "实现一个 HTTP 服务器,监听 3000 端口"
# 带约束
fhcode --max-iterations 10 --yes "修复 src/auth.ts 中的 token 验证 bug"
# 流式输出(P0-1:任务过程实时可见)
fhcode --stream "重构 src/calc.ts 的 add 函数"# 自动拆分目标,worktree 隔离执行
fhcode --parallel "实现登录模块 并且 添加用户管理 并且 写集成测试"M10 第一性原理拆解(默认开启):--parallel 不再只按「并且 / 同时」等连词切分,
而是从任务本质出发——识别每个片段所属的领域(实现/修复/重构/测试/文档/配置/接口/安全…)与
目标文件域,拆成彼此独立的目标单元;无依赖的单元同一波次并行,文件域耦合的单元自动串行。
启动时会打印当前拆解模式:
[飞虹 Code] 任务拆解: 第一性原理(领域本质 + DAG 分波次并行)
并发控制:并行子代理默认上限 3,可用环境变量调整(设为 1 即退化为串行):
export FH_PARALLEL_CONCURRENCY=5 # 提高并发(额度充足时)
export FH_PARALLEL_CONCURRENCY=1 # 退化为串行(API 限流时)关闭第一性原理(回退到旧连词规则拆分):
export FH_FIRST_PRINCIPLES=0# 读取整个仓库 → 规划 → 实现 → 验证 → 报告
fhcode swe "修复 src/calc.ts 的 add 函数 bug,让 tests/calc.test.ts 通过" \
--repo /path/to/project \
--max-tasks 3 \
--max-iterations 5M10 分波次并行(SWE):swe 规划时先用第一性原理拆出多个独立实现单元
(不同领域/不同文件域),并按依赖做拓扑分波次调度——同一波次内的子任务并行实现,
波次之间串行等待前置完成(勘察 → 并行实现 → 测试 → 全量验证)。报告会显示调度波次数
与每个任务所在波次([wN])。
SWE 并发上限(默认 2,防止同一仓库并行冲突与 API 限流):
export FH_SWE_CONCURRENCY=3 # 提高 SWE 波内并行数
export FH_SWE_CONCURRENCY=1 # 退化为串行(保守模式)FH_SWE_CONCURRENCY 同时作为 --parallel 的兜底并发值(FH_PARALLEL_CONCURRENCY 未设置时)。
# 生成实现计划
fhcode /plan "实现登录并且添加支付"
# 红队审查(安全审计)
fhcode /grill src/
# 目标跟踪
fhcode /goal内置 /plan /grill /goal 已迁入打包技能 skills/<name>/SKILL.md(open agent skills 兼容):
- 模型侧:技能索引(name+description)常驻 system prompt,正文由
load_skill工具按需加载(渐进式披露) - 自定义技能:在仓库
.agents/skills/<name>/SKILL.md或用户级~/.feihong-code/skills/<name>/SKILL.md放一个带 frontmatter 的 SKILL.md 即自动发现
---
name: my-skill
description: 何时触发该技能
---
技能指令正文npm run build && npm run eval # 本地 mock 跑分(完成率/工具效率/自愈率)
npm run build && npm run eval -- --json # 结构化输出(横向对比用)swe / --parallel 的子任务自动带 ['code-gen','cheap'] 标签路由:
低成本 provider(FH_PROVIDERS 中带 "cheap" 标签)优先承担子任务,主任务仍走 code-gen。
未配置 cheap 标签时自动回退全部 provider,无感。
| 类别 | 工具 | 说明 |
|---|---|---|
| 文件 | write_file |
写入/覆盖文件 |
| 文件 | edit_file |
插入/删除/替换文本 |
| 文件 | read_file |
读取文件内容 |
| 文件 | list_files |
列出目录内容 |
| 搜索 | grep |
正则搜索 |
| Shell | run_shell |
执行命令 |
| 验证 | build_check |
检查编译 |
| 验证 | run_tests |
运行测试 |
所有工具调用遵循 JSON Schema:
{
"tool_calls": [
{
"type": "function",
"function": {
"name": "write_file",
"arguments": "{\"path\":\"src/main.ts\",\"content\":\"export const x = 1;\"}"
}
}
]
}{
"tool_call_id": "call_abc123",
"output": "已写入 src/main.ts(25 字节)",
"error": null
}| 错误码 | 含义 | 处理建议 |
|---|---|---|
FH_4001 |
配额超限 | 等待重置或申请配额 |
FH_4003 |
权限拒绝 | 检查 RBAC 策略 |
FH_5001 |
模型调用失败 | 检查 provider 配置 |
FH_5002 |
上下文压缩失败 | 使用 /plan 重新规划 |
FH_6001 |
文件路径越权 | 检查沙箱规则 |
# 查看详细日志
export FH_LOG_LEVEL=debug
fhcode "你的任务"
# 查看会话历史
fhcode sessions
# 恢复上次会话
fhcode resume <session-id>export FH_ENTERPRISE=true
export FH_TENANT=my-org
export FH_USER=agent-sa
export FH_ROLE=developer
export FH_WEB_TOKEN=<web-console-token># 启动服务
fhcode serve --port 8080
# 访问
# http://localhost:8080# 全量验证
npm run verify
# 单项验证
npm run verify:m4 # 企业能力
npm test # 单元测试
node scripts/verify-m9.mjs # SWE 能力- GitHub Issues:提交 bug 或功能请求
- 文档:详见
docs/目录 - 署名:晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹