fx 编程代理
一个可在终端运行或嵌入应用的轻量级原生编程代理。
按维度查看评分与理由
工作流将默认权限限制为 contents:read,部分操作固定 action 提交,并验证下载制品的来源、状态、大小和提交关系;许可证与第三方归属路径、声音素材署名也很清楚,因此依赖安全和来源归属得分较高。但这些主要是构建基础设施证据,不能证明代理运行时采用最小权限。README 仅链接权限文档,没有展示工具调用确认规则、文件或命令影响范围、模型提供商的数据流、OAuth/API 密钥存储与清除方式。代理可操作代码且支持 MCP、技能和子代理,但所给文件未说明外部副作用控制或恢复机制,故确认、透明度、敏感数据和外部影响仅薄弱得分,回滚为零。未发现红线行为。
README 中的安装、构建、Zig 版本和测试命令与工作流使用方式总体一致;工作流覆盖多个架构、启动性能、内存、WASM/native 桥接和制品身份检查。依赖版本既有明确固定项,也有仅按主版本引用的 actions,以及安装脚本和远程下载,因此依赖可用性并非充分保证。PGSO 测试证明其辅助管线会拒绝缺参、陈旧输出、错误运行时版本及不完整证据,并记录失败阶段和错误;但没有提供核心交互代理的错误消息实现,所以未给满分。
README 明确覆盖交互式 shell、脚本化 ask、ACP、JavaScript/WASM 嵌入、浏览器和框架示例,并支持网关、订阅账户、本地及 OpenAI 兼容端点,受众与场景说明充分。命令、环境变量、配置优先级和网关专用路由条件使触发方式较精确。实验状态和 WASM 实验性提示构成一定边界,但未在所给材料中完整列出不支持的操作、模型差异或 MCP/子代理限制。CI 显示 Linux/macOS、多架构和多运行时适配,但 Windows、终端要求及完整兼容矩阵未展示。
README 的安装、入门、提供商、主题、嵌入、源码构建、安全和许可证结构清晰,命令与配置命名基本一致,并给出多种可复制示例。安装说明简洁但 curl 管道安装未在材料中解释校验、卸载或版本锁定;FAQ 未提供。已明确整体及 WASM SDK 为实验性,但具体已知问题有限。完整 Apache-2.0 文本、版权声明和第三方通知路径支持满分许可证评价。存在 release 徽章但没有所给修订的变更日志或兼容承诺。维护路径包括 Vercel Labs 标识、安全联系和贡献文档引用,但发布者注册身份未知,且材料未说明具体维护人或支持承诺。
界面强调保留终端滚动区,提供交互、一次性和嵌入输出路径;基准工作流设置延迟、内存、容量和二进制大小检查,表明重视实际可用性和资源成本。模型无关、原生小型二进制与多宿主形态相对普通终端代理具有可辨识的增量价值。不过没有提供基准结果、任务质量证据、成本数字或完整输出样例,且产品标记为实验性,因此三个准则均未达到充分验证的满分。
主要能力声明可对应到具体命令、配置片段、构建步骤和工作流检查;README、许可证、测试及 CI 在 Zig 版本、ReleaseSafe 构建、运行时表面和归属上相互印证。工作流还保留 JSON、日志、样本及提交身份制品,有利于追踪。但所给材料不含核心代理实现、外部文档内容、发布产物结果或实际基准数据,许多“tiny”“any model”“complete manual”等宣传性主张只能部分核对。事实、示例和实验警告大体区分清楚,但没有系统标注哪些结论是测量结果或推断。
- 产品明确标记为实验性;在真实代码库使用前,应另行核查权限确认、命令执行范围、文件修改策略及失败恢复流程。
- 登录方式涉及 OAuth 或 API 密钥,但所给材料未说明凭据存储、加密、日志脱敏、撤销或删除策略。
- 一行 curl 管道安装依赖远程脚本;应在部署前审阅并固定安装脚本或发布制品,同时验证完整性。
- 模型请求可能经 Vercel AI Gateway、OpenAI、xAI、OpenRouter 或其他自定义端点传输;应依据所选提供商单独确认数据保留和隐私边界。
- 未展示代理核心源码、权限手册内容或实际基准结果;本评估不能证明运行时安全性、任务正确性或性能声明。
这个 Agent 能做什么,适合哪些场景?
fx 是一个用 Zig 编写的实验性编程代理 CLI,以小型原生二进制文件交付,并采用 Apache-2.0 许可证。它提供交互式 Shell 和一次性的 `fx ask` 命令,输出直接内联显示并保留终端回滚记录。模型层支持 Vercel AI Gateway、ChatGPT 与 Grok 订阅,也能连接 Ollama、OpenRouter 等兼容 OpenAI Chat Completions 的端点。除独立 CLI 外,项目还提供 `fx acp`、基于 WebAssembly 的 `createFxAgent()` 与 `createFxTerminal()`,以及 npm 包 `libfx`。宿主应用可以接管网络传输、会话存储、配置、权限处理和终端 I/O,因此它适合需要嵌入代理核心的团队,但 WebAssembly SDK 和整个项目目前均标为实验性。
用户从项目目录启动 fx 后,可在交互式 Shell 中提交编程请求,并通过 /help 查看可用交互命令;脚本则可用 fx ask "explain the changes in this repository" 发起一次性请求。fx 将请求交给当前配置的模型来源,包括 Vercel AI Gateway、通过 fx login codex 连接的 ChatGPT 订阅、Grok 订阅,或命名的 OpenAI Chat Completions 兼容连接,并在终端中以内联方式呈现结果。连接配置保存在 ~/.fx/settings.json,可用 fx provider、FX_PROVIDER 和 FX_MODEL 选择提供方及模型。作为嵌入组件时,fx acp 可连接编辑器和其他 Agent Client Protocol 客户端;createFxAgent() 通过 fx-core.wasm 嵌入代理核心,createFxTerminal() 通过 fx-term.wasm 嵌入交互终端。它还支持技能、MCP 服务器和子代理扩展,但这些扩展并非基本运行的必需条件。
- 希望在项目目录中通过接近 Unix Shell 的界面处理编程请求、同时保留终端历史记录的开发者。
- 需要在脚本或自动化流程中用
fx ask发起一次性仓库解释请求的工程团队。 - 已有 Ollama 或 OpenRouter 等 OpenAI 兼容端点,希望复用现有模型基础设施的团队。
- 需要通过 ACP 将原生代理接入编辑器或其他 Agent Client Protocol 客户端的工具开发者。
- 希望利用
libfx、createFxAgent()或createFxTerminal()将代理能力嵌入 Node.js、浏览器、Next.js 或 Nuxt 应用的产品团队。
这个 Agent 有哪些优点和局限?
- 同一代理提供交互式 Shell、脚本友好的
fx ask、ACP 接口以及 WebAssembly 嵌入表面,不局限于单一使用方式。 - 模型来源可在 Vercel AI Gateway、ChatGPT、Grok 和自定义 OpenAI 兼容端点之间选择,也明确涵盖 Ollama 与 OpenRouter。
- Zig 实现可构建为原生二进制或 WebAssembly;嵌入方还可自行提供传输、存储、权限和终端 I/O。
- 内联输出保留终端回滚记录,更贴近 Unix Shell,而不是全屏终端 IDE。
- 项目明确标为实验性,并提示用户自行承担使用风险,不适合默认视为稳定的生产基础设施。
- WebAssembly SDK 同样处于实验阶段,采用
libfx的应用需要接受接口或行为变化风险。 - 从源码构建要求 Zig 0.16.0+,会给尚未使用 Zig 的团队增加工具链成本。
- 远程模型路径需要相应订阅、OAuth 登录或 API key;所给材料未说明价格、配额、网络故障处理或离线保证。
- 自定义连接明确面向 OpenAI Chat Completions 兼容端点,其他 API 协议是否可直接使用没有证据。
如何安装或部署这个 Agent?
安装预构建版本:
curl -fsSL https://fx.sh/setup.sh | bash若从源码构建,需要 Zig 0.16.0 或更高版本:
git clone https://github.com/vercel-labs/fx.git
cd fx
zig build -Doptimize=ReleaseSafe
./zig-out/bin/fx可用 zig build test 运行测试。预构建安装脚本支持的具体操作系统、CPU 架构和其他系统依赖在所给材料中没有列明。
如何使用这个 Agent?
先选择一种认证或连接方式:使用 fx login 登录 Vercel AI Gateway;使用 fx login codex 通过 OpenAI Codex OAuth 连接 ChatGPT 订阅;使用 fx login grok 连接 Grok 订阅;或运行 fx setup 配置 AI Gateway API key。
在项目中启动交互模式:
cd your_project
fx进入后运行 /help 浏览交互命令。一次性调用示例:
fx ask "explain the changes in this repository"若使用自定义 OpenAI Chat Completions 兼容服务,先在 ~/.fx/settings.json 中添加命名连接,然后选择它:
fx provider local也可以仅为单次请求指定提供方和模型:
FX_PROVIDER=openrouter FX_MODEL=openai/gpt-4.1 fx ask "review this change"常见问题
使用 fx 是否需要付费?
它是否锁定某一家模型提供商?
FX_PROVIDER 和 FX_MODEL 为单次调用选择连接。运行时会使用哪些权限?
可以完全嵌入自己的应用吗?
libfx 使用 createFxAgent() 和 createFxTerminal(),也能通过 ACP 接入客户端;不过 WebAssembly SDK 目前是实验性的。