前言¶
DeepSeek Harness(DSH)通过插件机制扩展能力。dsh-llm-codex 是一个社区维护的插件,旨在将 Codex CLI 注册为 DSH 的 LLM 提供者。它不依赖 DeepSeek 官方发布,而是通过挂载层介入,主要解决需要在 DSH 中直接调用本地 Codex 或使用 OpenAI 兼容接口的需求。
它是什么¶
这是一个 Codex 路由 插件:
* 核心逻辑:优先使用本地安装的 Codex CLI 发起请求;如果本地 CLI 不可用或配置了回退,则使用 OpenAI 兼容的 API。
* 定位:它将 Codex 暴露为文本生成路由,而非完整的智能体(Agent)。它不执行 DSH 的工具调用,也不将 Codex 的内部工具调用回传给 DSH。
* 维护者:zhangzhangco。
核心功能¶
- LLM 提供者注册:默认注册名为
codex-local的提供者。 - 本地优先:通过
codex exec命令在本地执行请求,复用机器上已存在的 Codex 登录状态(无需 API Key)。 - OpenAI 兼容回退:支持配置 OpenAI 兼容的接口作为备选方案。
- 模型目录:从 Codex 的缓存文件
$CODEX_HOME/models_cache.json中读取模型列表,并同步其上下文窗口和推理级别信息。 - 沙箱支持:支持 Codex 自身的沙箱模式(只读、工作区写入、完全访问),通过
dsh.bundle.patch挂载。
安装与启用¶
该插件通过 Git 仓库安装,并挂载到 web 配置文件中。执行以下命令即可完成安装:
dsh plugin --profile web add git+ssh://git@github.com/zhangzhangco/dsh-llm-codex.git
安装后,重启 web 配置文件,Codex 路由将出现在模型选择器中。
配置与沙箱¶
插件配置通过 cordis.patch.yml 挂载,关键参数如下:
- insert:
- id: llm-codex
name: dsh-llm-codex
config:
provider: codex-local
sandbox: read-only
transport: auto
fallback:
baseURL: ''
apiKeyEnv: CODEX_FALLBACK_API_KEY
沙箱模式说明¶
插件的 sandbox 参数控制的是 Codex 自身的沙箱,与 DSH 的权限管理是独立的。
- read-only(默认):只读模式,拒绝所有文件写入。
- workspace-write:允许在会话工作区写入文件。
- danger-full-access:完全访问模式,不使用 Codex 沙箱。
注意事项:
* macOS 限制:read-only 和 workspace-write 模式需要 macOS 的 Seatbelt(通过 sandbox-exec),否则会失败。
* 嵌套沙箱问题:如果主机本身已经运行在沙箱环境中(例如 Docker 容器或系统级沙箱),将无法再创建新的嵌套沙箱,此时所有沙箱化模式都会拒绝写入,只能使用 danger-full-access。
启用回退接口¶
若要启用 OpenAI 兼容的回退接口,需在配置中指定 baseURL 和环境变量名:
fallback:
baseURL: https://api.openai.com/v1
apiKeyEnv: OPENAI_API_KEY
插件会优先读取凭证存储中的变量值,若未找到则读取进程环境变量。
适用场景与注意¶
- 适用场景:当你需要在 DSH 中使用 Codex CLI 的能力,或者需要使用一个 OpenAI 兼容的本地/远程端点作为模型提供者时,此插件提供了便捷的路由层。
- 注意:
- 插件是故意标记为
private: true的 npm 包,不会发布到 npm,仅通过 GitHub 分发。 - 它使用 Codex 的沙箱边界,因此请根据宿主机的环境(特别是 macOS 或容器环境)谨慎选择
sandbox级别。 - 安装前请检查源码与许可证(MIT)。
- 插件是故意标记为