# deepseek-codex_harness **Repository Path**: upw/deepseek-codex_harness ## Basic Information - **Project Name**: deepseek-codex_harness - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-29 - **Last Updated**: 2026-09-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DSH Codex Harness 独立插件 这个仓库可以单独克隆、编译和打包。安装包通过 DSH 的 Profile 插件机制替换 `agent-loop`,让 Web 等 Profile 使用 Codex App Server 驱动 Agent。它自带 Codex CLI 依赖和从 DSH MIT 源码提取的 AgentFactory 生命周期代码,构建时无需再拉取完整 DSH 或 Codex 源码。 **适配目标:官方 `@deepseek-ai/dsh@0.2.0-rc.2`,Node 22.19+ 或 24+。** 插件当前版本为 `0.2.0-rc.2.4`,内含 `@openai/codex@0.159.2` 依赖。2026-09-30 核对官方 npm 时,DSH 的 `latest` 与 `next` 标签均指向 `0.2.0-rc.2`;它仍是 RC 预发布版。插件的 DSH 组件声明为精确版本的可选 peer,由运行中的 DSH 提供共享实例,避免 Profile 安装第二份作用域和工具注册模块。后续新版本需要重新适配和验证。仓库提交 `40ec7ef` 保存了已验证的 `0.1.3-alpha.2` 版本。 ## 构建和安装 在本仓库根目录运行: ```powershell npm ci --ignore-scripts --registry=https://registry.npmjs.org npm test npm run pack:plugin ``` 在已经安装官方 DSH `0.2.0-rc.2` 的电脑上运行: ```powershell dsh plugin --profile web add .\dist\dsh-codex-harness-plugin-0.2.0-rc.2.4.tgz dsh --profile web --dump-config dsh --profile web --no-open ``` `--dump-config` 中原有的 `agent-loop` 应为 `disabled: true`,并出现 `name: dsh-codex-harness-plugin` 的 `codex-agent-loop` 条目。插件只替换 Agent 循环;Web Profile 中原有的模型设置、工具和其他插件仍由 DSH 管理。若使用另一个 Profile,把安装命令中的 `web` 换成该 Profile 名称。`npm run pack:plugin` 生成的 tarball 可以拷贝到另一台电脑直接安装;目标电脑需要已有兼容的 DSH。 ### 官方 Windows 桌面版 先启动一次桌面客户端以初始化 `desktop` Profile,再从系统托盘完全退出客户端。在 PowerShell 中运行桌面客户端自带的 `dsh.cmd`;其安装位置可通过客户端菜单“管理 dsh 命令”查找,也可以先安装到 PATH 后使用 `dsh`: ```powershell dsh plugin --profile desktop add E:\codex\dsh-codex-harness-plugin\dist\dsh-codex-harness-plugin-0.2.0-rc.2.4.tgz dsh plugin --profile desktop list ``` 重新打开客户端后,在“插件”页面确认插件已启用。桌面版使用自己的 `desktop` Profile,必须使用客户端自带的命令管理;全局 npm 安装的 DSH 无法修改它。若安装旧版,退出客户端后直接用新 `.tgz` 路径执行 `add` 即可升级。若先在 GUI 中卸载成功,就无需再次执行命令行 `remove`;重复卸载会得到 `ERR_PNPM_CANNOT_REMOVE_MISSING_DEPS`。 ## 升级 Codex 插件通过官方 `@openai/codex` npm 包中的原生可执行文件启动 Codex App Server,没有复制 Codex 源码或依赖全局安装的 `codex` 命令。Windows 上直接启动原生进程,避免 npm 命令入口再拉起一个可见的控制台窗口。要拉取 npm 的最新正式版并验证兼容性,在本仓库运行: ```powershell npm run update:codex ``` 此命令将解析 `@openai/codex@latest`,把确切版本写入 `package.json` 和 `package-lock.json`,然后运行测试、重新生成 `dist` 安装包。测试失败时需要先适配 App Server 协议;现有 DSH 安装与已发布的 `.tgz` 不会自动改变。发布更新时请为插件使用新版本号、提交依赖变更,并把新安装包上传到新的发行版。 ## 模型路由 选择 DSH 模型时,插件默认通过 DSH 的 LLM adapter 把 Codex 的 Responses 请求转换为所选协议。`openai-completions` 和 `anthropic-messages` 路由支持文本、命名函数工具,以及把 Responses 的自由文本 `custom` 工具包装成带 `input` 字符串的函数工具。DSH 适配器无法严格执行 custom 工具的 grammar 约束;图片、音频、文件和提供商专有工具尚未覆盖。Codex 子进程只收到本机临时网关令牌,DSH 模型密钥留在宿主进程。 官方 `0.2.0-rc.2` 没有向插件公开直接解析 Responses 端点和凭据的接口。若网关本身支持 OpenAI Responses,可在 Profile 的 `cordis.patch.yml` 中为所选 DSH provider 明确配置直连路由: ```yaml - id: codex-agent-loop config: agents: [] responsesRoutes: - provider: my-9router baseURL: http://127.0.0.1:3000/v1 apiKeyEnv: NINEROUTER_API_KEY ``` `provider` 必须与 DSH 中选中的 provider id 一致;`baseURL` 填到 `/v1`,插件会请求其 `/responses`。在启动 DSH 的进程环境中设置 `NINEROUTER_API_KEY`,不要把密钥值写进 patch。配置 `codex-agent-loop` 时,`agents` 和其他已有选项需要一并保留,因为 DSH 的同 id 配置 patch 会整体替换配置。设置了 `responsesRoutes` 后,该 provider 的 Responses 流和 Codex 原生工具定义由本机网关透明转发;`stop` 序列仍需走 DSH adapter 的转换路线。 也可以让 Codex 使用自己的账号和配置:在 Agent 配置中选 `provider: codex-harness` 或指定 `codexModel`。这种模式不使用 DSH 的模型设置。 ## 验证范围 本仓库的模型网关测试覆盖凭据隔离、Responses 透传、Chat 转换和函数工具转换。端到端测试通过真实 Cordis Loader 启动本插件和 Codex App Server,覆盖 Profile patch 加载、DSH 工具、Web 工具、原生命令、取消、超时、恢复和进程清理。`@openai/codex@0.159.2` 的 19 项测试已通过;此外,已用官方桌面版打包的配置加载器核验 `agent-loop` 被禁用、`codex-agent-loop` 被挂载。桌面 GUI 的实际会话仍需安装后再验证。 插件不随包安装 PDF、联网搜索等其他 DSH 插件。它会把当前 DSH Profile 中已经可用的工具暴露给 Codex;这些工具仍按 DSH 的权限和会话记录执行。 `src/base` 的 AgentFactory、收件箱和提示词投影来自 DeepSeek Harness `0.2.0-rc.2` 源码(提交 `639ed015397290b3745d163aafe02ffee4aa3f84`),经适配以替换 driver,授权见 [LICENSE](LICENSE)。原始工程改动的备份提交为 `2c4a547fbb`。