CLI 后端插件让 OpenClaw 可以将本地 AI CLI 作为文本推理后端来调用。该后端会在模型引用中显示为一个提供方前缀:Documentation Index
Fetch the complete documentation index at: https://openclaw.zhcndoc.com/llms.txt
Use this file to discover all available pages before exploring further.
如果上游服务提供了标准的 HTTP 模型 API,请改为编写一个 提供方插件。如果上游运行时拥有完整的 agent 会话、工具事件、压缩或后台任务状态,请使用一个 agent harness。
插件负责什么
一个 CLI 后端插件有三个契约:| 契约 | 文件 | 作用 |
|---|---|---|
| 包入口 | package.json | 指向 OpenClaw 的插件运行时模块 |
| 清单所有权 | openclaw.plugin.json | 在运行时加载之前声明后端 id |
| 运行时注册 | index.ts | 使用命令默认值调用 api.registerCliBackend(...) |
api.registerCliBackend(...) 时开始。
最小后端插件
创建包元数据
package.json
./src/index.ts,请添加指向已构建 JavaScript 对应文件的 openclaw.runtimeExtensions。参见 入口点。声明后端所有权
openclaw.plugin.json
cliBackends 是运行时所有权列表。它使 OpenClaw 能在配置或模型选择提到 acme-cli/... 时自动加载该插件。setup.cliBackends 是面向描述信息优先的安装界面。当模型发现、引导或状态应该在不加载插件运行时的情况下识别该后端时,请添加它。仅当这些静态描述信息足以完成安装时,才使用 requiresRuntime: false。配置结构
CliBackendConfig 描述了 OpenClaw 应该如何启动并解析 CLI:
| 字段 | 用途 |
|---|---|
command | 二进制名称或绝对命令路径 |
args | 新会话运行的基础 argv |
resumeArgs | 恢复会话时的替代 argv;支持 {sessionId} |
output / resumeOutput | 解析器:json、jsonl 或 text |
input | 提示词传输方式:arg 或 stdin |
modelArg | 模型 id 前使用的标志 |
modelAliases | 将 OpenClaw 模型 id 映射到 CLI 原生 id |
sessionArg / sessionArgs | 传递会话 id 的方式 |
sessionMode | always、existing 或 none |
sessionIdFields | OpenClaw 从 CLI 输出中读取的 JSON 字段 |
systemPromptArg / systemPromptFileArg | 系统提示词传输方式 |
systemPromptWhen | first、always 或 never |
imageArg / imageMode | 图像路径支持 |
serialize | 保持同一后端运行按顺序执行 |
reliability.watchdog | 无输出超时调优 |
高级后端钩子
CliBackendPlugin 还可以定义:
| 钩子 | 用途 |
|---|---|
normalizeConfig(config, context) | 在合并后重写旧版用户配置 |
resolveExecutionArgs(ctx) | 添加请求范围内的标志,例如思考力度 |
prepareExecution(ctx) | 启动前创建临时认证或配置桥接 |
transformSystemPrompt(ctx) | 应用最终的 CLI 特定系统提示词转换 |
textTransforms | 双向提示词/输出替换 |
defaultAuthProfileId | 优先使用特定的 OpenClaw 认证配置文件 |
authEpochMode | 决定认证变更如何使已存储的 CLI 会话失效 |
nativeToolMode | 声明 CLI 是否具有始终开启的原生工具 |
bundleMcp / bundleMcpMode | 启用 OpenClaw 的回环 MCP 工具桥接 |
MCP 工具桥接
CLI 后端默认不会接收 OpenClaw 工具。如果 CLI 能够消费 MCP 配置,请显式启用:| 模式 | 用途 |
|---|---|
claude-config-file | 接受 MCP 配置文件的 CLI |
codex-config-overrides | 接受通过 argv 传入配置覆盖项的 CLI |
gemini-system-settings | 从其系统设置目录读取 MCP 设置的 CLI |
nativeToolMode: "always-on",这样当调用方要求不使用原生工具时,OpenClaw 可以安全失败。
用户配置
用户可以覆盖任意后端默认值:PATH 中时覆盖 command。
验证
对于打包插件,请围绕 builder 和 setup 注册添加一个有针对性的测试,然后运行该插件的目标测试任务:清单
package.json 包含 openclaw.extensions 以及发布包的构建后运行时条目openclaw.plugin.json 声明了 cliBackends 和有意设置的 activation.onStartup当 setup/model 发现应在冷启动时看到后端时,
setup.cliBackends 已存在api.registerCliBackend(...) 使用与 manifest 相同的后端 idagents.defaults.cliBackends.<id> 下的用户覆盖仍然优先生效Session、system prompt、image 和 output parser 设置与真实 CLI 合约一致
有针对性的测试以及至少一个实时 CLI 冒烟测试证明了后端路径
相关内容
- CLI backends - 用户配置和运行时行为
- Building plugins - 包和 manifest 基础
- Plugin SDK overview - 注册 API 参考
- Plugin manifest -
cliBackends和 setup 描述符 - Agent harness - 完整的外部 agent 运行时