Factory Droid 接国产模型:settings.json 配不墨 Router,不登录也能跑
Factory Droid CLI 1.0.0 接不墨 Router:customModels 一段配置,未登录 Factory 账号,对话、工具调用、流式实测通过,附 npm 安装坑。

可以。Factory Droid 支持自定义模型(BYOK):在 ~/.factory/settings.json 的 customModels 里写上 Router 地址和模型 ID,再用 -m custom:<模型 ID> 指定即可。 本次在没有登录 Factory 账号的干净环境里,跑通了对话、文件工具调用和流式输出。
核验日期:2026-10-30。实测版本 droid 1.0.0(Linux x64),用 droid exec 非交互模式,模型 deepseek/deepseek-flash。交互界面的 /model 菜单本次没有测。
先准备一个 Router Key
登录 不墨 Router,在 API Key 页面 创建一个 Key,并给钱包充值。这个 Key 只在 Router 有效。
安装 Droid
npm install -g droid --registry=https://registry.npmjs.org
droid --version
这里有个坑:要指定 npm 官方源。 本机默认用 npmmirror,平台二进制包 @factory/cli-linux-x64 在镜像上还停在 0.0.1,于是可选依赖装不上,npm 也不报错,最后 droid 变成一个指向自己的软链接,运行时提示「符号链接的层数过多」。换官方源就正常。镜像同步后可能不再出现,遇到同样的报错再对照这一条。
配置 settings.json
编辑 ~/.factory/settings.json:
{
"customModels": [
{
"model": "deepseek/deepseek-flash",
"displayName": "DeepSeek Flash (不墨 Router)",
"baseUrl": "https://router.bumo.cc/v1",
"apiKey": "${ROUTER_KEY}",
"provider": "generic-chat-completion-api",
"maxOutputTokens": 8192
}
]
}
然后把 Key 放进环境变量,不要写进配置文件:
export ROUTER_KEY=sk-... # 换成你的 Router Key
| 字段 | 填什么 | 说明 |
|---|---|---|
model |
完整模型 ID | 如 deepseek/deepseek-flash,不要省略前缀 |
baseUrl |
https://router.bumo.cc/v1 |
停在 /v1 |
provider |
generic-chat-completion-api |
第三方 OpenAI 兼容接口都选它 |
apiKey |
${ROUTER_KEY} |
支持环境变量引用 |
provider 不要填 openai。Factory 文档写明它走 Responses API,只用于 OpenAI 官方接口。
想多接几个模型,就在 customModels 里再加几项,只改 model 和 displayName。
运行
droid exec -m custom:deepseek/deepseek-flash "用一句话介绍这个项目"
# 允许低风险操作,比如读写文件
droid exec --auto low -m custom:deepseek/deepseek-flash "读取 README.md 并总结"
不加 -m 时默认是 Factory 自己的模型,请求不会走 Router。
实测结果
| 项 | 怎么测 | 结果 |
|---|---|---|
| 对话 | Reply with exactly: READY |
输出 READY |
| 工具调用 | --auto low,让它读取含随机 token 的 probe.txt |
输出的 token 与文件一致 |
| 流式 | -o stream-json,让它数到 300 |
正常结束,末尾是 300,734 个输出 token |
| 换模型 | kimi/kimi-k3、glm/glm-5.3、qwen/qwen3.8-flash |
三个都输出 READY |
| 确认走 Router | 把 Key 换成无效值 | 返回 401 Invalid or missing API key |
测试时用了独立的 HOME 目录,没有执行过任何登录。
常见问题
| 现象 | 先查 |
|---|---|
符号链接的层数过多 |
按上文改用 npm 官方源重装 |
| 401 | ROUTER_KEY 是否在当前 shell 生效,是否复制完整 |
| 模型找不到 | -m 要带 custom: 前缀,后面的 ID 与 model 字段一致 |
| 工具不执行 | 非交互模式默认权限较低,按需加 --auto low |
Router 当前可用的模型 ID 可以直接看 https://router.bumo.cc/v1/models。
边界
本次只验证了 Linux x64 上的 droid exec:一次对话、一次文件读取和一段长输出。没有覆盖交互界面、长上下文、图片输入和 mission 多 Agent 模式。Factory 文档说明个人自定义模型只存在本地,不会出现在它的网页和移动端。本文不承诺具体价格,实际计费以 Router 页面和用量记录为准。



