Codex-DSH-Orchestrator 让 Codex 把有明确范围的任务交给 DeepSeek…
32.2/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/Fly2Kiana/Codex-DSH-Orchestrator.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 6 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/30) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-agentlink(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/7 14:41:05
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 54 处,展示前 51 条)
- 读取本地文件src/bridge-service.ts:746
const canonical = await realpath(requestedCwd).catch((error: unknown) => { - 读取本地文件src/bridge-service.ts:749
const cwdStat = await stat(canonical); - 读取本地文件src/bridge-service.ts:785
const canonical = await realpath(resolve(advertised)).catch(() => undefined); - 读取本地文件src/bridge-service.ts:790
const cwdStat = await stat(canonical).catch(() => undefined); - 读取本地文件src/bridge-service.ts:873
const expectedCwd = await realpath(resolve(input.expectedCwd)).catch((error: unknown) => { - 读取本地文件src/bridge-service.ts:876
const cwd = await realpath(resolve(session.cwd)).catch((error: unknown) => { - 读取本地文件src/codex-skill-install.ts:44
const details = await lstat(path); - 读取本地文件src/codex-skill-install.ts:52
const details = await lstat(current).catch((error: NodeJS.ErrnoException) => { - 读取本地文件src/codex-skill-install.ts:73
const details = await lstat(targetPath).catch((error: NodeJS.ErrnoException) => { - 读取本地文件src/codex-skill-install.ts:92
readFile(sourcePath, "utf8"), - 写入本地文件src/event-ledger.ts:851
await appendFile(this.logPath(taskId), `${JSON.stringify(record)}\n`, { encoding: "utf8", mode: 0o600 }); - 写入本地文件src/event-ledger.ts:852
await chmod(this.logPath(taskId), 0o600); - 读取本地文件src/event-ledger.ts:1039
raw = await readFile(this.logPath(taskId), "utf8"); - 写入本地文件src/event-ledger.ts:1098
await mkdir(this.ledgersDir, { recursive: true, mode: 0o700 }); - 写入本地文件src/event-ledger.ts:1099
await chmod(this.ledgersDir, 0o700); - 写入本地文件src/event-ledger.ts:1100
await mkdir(join(this.ledgersDir, taskId), { recursive: true, mode: 0o700 }); - 写入本地文件src/event-ledger.ts:1101
await chmod(join(this.ledgersDir, taskId), 0o700); - 发起网络请求src/gateway-connection.ts:231
const response = await this.#fetch(new URL(`/api/${endpoint}`, peer.origin), { - 发起网络请求src/gateway-connection.ts:332
const response = await this.#fetch(url, { - 读取本地文件src/lock-doctor.ts:59
const stats = await lstat(path); - 读取本地文件src/lock-doctor.ts:74
directory = await opendir(path); - 读取本地文件src/lock-doctor.ts:157
directory = await opendir(ledgersPath); - 读取本地文件src/setup-claude-code.ts:227
return readFile(canonicalClaudeCodeSkillSourcePath(), "utf8"); - 读取本地文件src/setup-claude-code.ts:239
details = await lstat(parent); - 读取本地文件src/setup-claude-code.ts:367
canonical = await realpath(candidate); - 读取本地文件src/setup-claude-code.ts:371
if (!(await stat(canonical)).isDirectory()) { - 读取本地文件src/setup-claude-code.ts:485
const entryPath = await realpath(fileURLToPath(new URL("./index.js", import.meta.url))); - 读取本地文件src/setup-codex.ts:297
const entryPath = await realpath(fileURLToPath(new URL("./index.js", import.meta.url))); - 读取本地文件src/setup-engine.ts:94
const details = await lstat(path).catch((error: NodeJS.ErrnoException) => { - 删除本地文件src/setup-engine.ts:133
await unlink(backupPath).catch(() => undefined); - 写入本地文件src/setup-engine.ts:161
await mkdir(dirname(options.path), { recursive: true, mode: 0o700 }); - 写入本地文件src/setup-engine.ts:180
await rename(temporary.path, options.path); - 删除本地文件src/setup-engine.ts:201
await unlink(temporary.path).catch(() => undefined); - 执行外部命令来自配置/变量src/startup-authorization.ts:43
const child = spawn(caller.executable, caller.args ?? [], { - 删除本地文件src/task-store.ts:117
await unlink(this.pathFor(resolution.task.taskId)); - 写入本地文件src/task-store.ts:151
await writeFile(temp, `${JSON.stringify(record, null, 2)}\n`, { encoding: "utf8", mode: 0o600, flag: "wx" }); - 删除本地文件src/task-store.ts:153
await unlink(temp).catch(() => undefined); - 删除本地文件src/task-store.ts:156
await unlink(temp).catch(() => undefined); - 读取本地文件src/task-store.ts:166
raw = await readFile(this.pathFor(taskId), "utf8"); - 读取本地文件src/task-store.ts:181
names = await readdir(this.tasksDir); - 读取本地文件src/task-store.ts:191
taskIds.map(async (taskId) => parseRecord(await readFile(this.pathFor(taskId), "utf8"), taskId)), - 写入本地文件src/task-store.ts:196
await mkdir(this.tasksDir, { recursive: true, mode: 0o700 }); - 写入本地文件src/task-store.ts:197
await chmod(this.tasksDir, 0o700); - 写入本地文件src/workspace-claim.ts:154
await writeFile(this.pathFor(claim.taskId), `${JSON.stringify(claim, null, 2)}\n`, { - 写入本地文件src/workspace-claim.ts:159
await chmod(this.pathFor(claim.taskId), 0o600); - 删除本地文件src/workspace-claim.ts:171
await unlink(this.pathFor(taskId)); - 写入本地文件src/workspace-claim.ts:189
await mkdir(this.claimsDir, { recursive: true, mode: 0o700 }); - 写入本地文件src/workspace-claim.ts:190
await chmod(this.claimsDir, 0o700); - 读取本地文件src/workspace-claim.ts:197
names = await readdir(this.claimsDir); - 读取本地文件src/workspace-claim.ts:207
taskIds.map(async (taskId) => parseClaim(await readFile(this.pathFor(taskId), "utf8"), taskId, this.pathFor(taskId))), - 读取本地文件src/workspace-claim.ts:213
return parseClaim(await readFile(this.pathFor(taskId), "utf8"), taskId, this.pathFor(taskId));
扫描于 2026/11/4(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 转交实现与调研任务
- 管控DSH会话
- MCP桥接调用
以 Codex 为先的编排层,兼调用侧 MCP 桥接,用于与 DeepSeek Harness(DSH)做有边界的协作。
README
由 DeepSeek 最新模型翻译生成Codex-DSH-Orchestrator
Codex-DSH-Orchestrator 让 Codex 把有明确范围的任务交给 DeepSeek Harness(DSH),观察进度、继续同一会话并审阅结果。Codex 负责规划与最终验收,DSH 承担实现、代码搜索、重构和测试。
项目边界
connect-only MCP 注册名为 dsh_agentlink,连接由用户管理的 DSH Host。Desktop 启动、登录、权限和模型凭据由用户负责,审批需要人工确认。它不是 DSH Cordis bundle,请勿使用 dsh plugin --profile ... add ... 安装。
本项目独立维护,派生自 dsh-Agentlink,保留上游 MIT 许可及 NOTICE 署名。DeepSeek、OpenAI 和上游维护者不参与本项目维护。
快速上手
准备 Node.js 22+、npm、Git、Codex 和对应平台的官方 DeepSeek Harness Desktop。仓库放在固定工具目录,因为 setup 会记录绝对路径。
展开完整文档(README 剩余 1 节)
Codex-DSH-Orchestrator Codex-DSH-Orchestrator 让 Codex 把有明确范围的任务交给 DeepSeek Harness(DSH),观察进度、继续同一会话并审阅结果。Codex 负责规划与最终验收,DSH 承担实现、代码搜索、重构和测试。 项目边界 connect-only MCP 注册名为 dsh_agentlink,连接由用户管理的 DSH Host。Desktop 启动、登录、权限和模型凭据由用户负责,审批需要人工确认。它不是 DSH Cordis bundle,请勿使用 dsh plugin --profile ... add ... 安装。 本项目独立维护,派生自 dsh-Agentlink,保留上游 MIT 许可及 NOTICE 署名。DeepSeek、OpenAI 和上游维护者不参与本项目维护。 快速上手 准备 Node.js 22+、npm、Git、Codex 和对应平台的官方 DeepSeek Harness Desktop。仓库放在固定工具目录,因为 setup 会记录绝对路径。 | Host 路径 | setup 选项 | | Windows 或 macOS 官方 Desktop | --gateway --desktop-auto --no-preset | | 已知 origin 的官方 Gateway | --gateway --host <origin> --no-preset | | 旧 rc.6 Web Host 或 Windows 社区 Desktop | 参见旧版配置 | 本源码快照版本为 0.1.0-alpha.6,包含 Windows 和 macOS 官方 Desktop 支持。Windows 与 Apple Silicon Mac 均已完成继承当前模型的只读任务及同会话 follow-up。源码通过了 Ubuntu、Windows、macOS 与 Node 22/24/26 的全部九项 CI,以及公开 CodeQL 和维护者作者检查。验证记录列出实测版本和仍待验证的能力;已发布标签及版本包以 Releases 记录为准。 推荐:复制给 Agent 的安装 Prompt 从 https://github.com/Fly2Kiana/Codex-DSH-Orchestrator 安装到我批准的固定工具目录。 核对 Node.js 22+、npm、Git 和选定的源码版本,执行 npm ci、npm run check。 官方 Desktop 先预览: npm run setup -- --yes --gateway --desktop-auto --no-preset --dry-run 报告 MCP、Skill 目标及冲突。跨项目使用时选择一个用户级 Skill 位置;只在仓库使用时保留 .agents/skills/codex-dsh-orchestrator。 已装在旧全局位置的 Skill 原地更新。使用 --replace 或 --replace-skill 前先问我。 只安装审阅后的目标,保留备份;部分成功时报告实际状态。 准备阶段保持我的应用和任务运行。授权交接前,说明哪些应用将启动或重启,等我批准空窗。 启动授权只经私有进程管道传递,不打印、不保存,也不要向我索要 provider API key。 我重启后,核对 MCP 和 Skill 加载,再做仅连接验收。 模型调用另行审批。分别报告安装、连接和真实任务结果。 手动配置与验收 每台电脑使用独立 clone: git clone https://github.com/Fly2Kiana/Codex-DSH-Orchestrator.git cd Codex-DSH-Orchestrator npm ci npm run check Windows 和 macOS 官方 Desktop 使用同一组参数,先预览: npm run setup -- --yes --gateway --desktop-auto --no-preset --dry-run 默认 Skill 位置是当前 checkout 的 .agents/skills/codex-dsh-orchestrator/。如需在任何项目中调用,在预览和安装命令中都加上 --skill-path "$HOME/.agents/skills/codex-dsh-orchestrator"。已有的 ~/.codex/skills 安装可以继续使用原位置,显式指定该位置更新,避免出现同名双份 Skill。目录规则参见 Codex Skill 官方文档。 确认目标后,去掉 --dry-run 正式安装: npm run setup -- --yes --gateway --desktop-auto --no-preset setup 注册 bridge,为审批保留 approval_mode = "prompt",并复制 SKILL.md 和 agents/openai.yaml。MCP 与 Skill 内容冲突分别需要 --replace、--replace-skill;先检查冲突再替换。--no-skill 跳过 Skill 安装。替换成功时会产生备份;若只完成其中一部分,先核对状态再重试。 官方 Gateway 通过私有内存管道把 Desktop 启动授权交给新启动的 Codex。这一步会启动 Desktop 和 Codex,执行前需要先正常退出两个应用。请先结束当前工作,再按 Win/Mac 启动步骤操作。使用期间保持该终端运行。 受控启动后,通过 /mcp 或设置确认 dsh_agentlink,用 /skills 或 $codex-dsh-orchestrator 确认 Skill。随后仅调用 dsh_host_status 检查连接,不创建任务、不调用模型。该调用会按需交换授权、建立 Gateway API Peer;doctor 则有意将这一步报告为 not_probed。 换机与回滚 换电脑请重新 clone。单个 linked worktree 的 .git 指向原始 clone,不能直接当作独立安装复制。 将 DSH_BRIDGE_HOME 放在可靠的本地磁盘。遵守同一协作锁协议的兼容进程可以共用;独立管理或不兼容的 build 使用不同 home。新 home 的 mapping、cursor 和 claim 从头开始,DSH 对话历史仍由 Host 保留。 升级时保留旧 checkout、配置和已安装 Skill 的备份。回滚前先检查后续配置改动,只恢复目标 MCP 与 Skill,再在约定空窗重启调用方。锁恢复及 Windows 文件权限限制见已知问题。 给 AI Agents 读取聚焦的安装、验证文档和所需的非敏感配置,保留无关 MCP、Skill。准备工作不包含替换安装、关闭应用或调用模型的授权。 报告源码版本、构建结果、MCP/Skill 安装位置、调用方重载和连接结果。公开报告不包含凭据、真实会话标识及个人路径。应用空窗、DSH 审批和发布由用户批准。 使用方式 在已加载 bridge 和 Skill 的项目中说: 请委派给 DSH 完成这个有明确范围的任务,按当前项目状态交接,并由 Codex 审阅结果。 可用 $codex-dsh-orchestrator 显式调用,也可使用自然语言委派。Skill 根据进度、Git 状态、重点文件、测试和限制组织 compact handoff,让 DSH 先读重点文件。Bridge 不会自动取得此前的调用方对话。 同一已知任务使用 dsh_followup。跨 Codex 对话接续时,先由仅元数据 dsh_find_sessions 找到精确 canonical 工作区内唯一 mapped、idle root,再以新鲜 title/cwd/update 前置条件执行 dsh_attach_session。标题或措辞相似不足以决定复用。保留上下文能减少重复读取,也可能增加输入 token;Host 没有文档化用量遥测时,provider cache 证据保持 not_exposed。 模型路由 委派和 follow-up 共用显式启用、保留兼容的模型路由。 | 请求 | 行为 | | 省略路由或使用 inherit | 验证当前会话路由,不写入模型选择 | | flash / pro | 在当前账号/API Key provider 内选择目录实际提供的官方模型 | | reasoningEffort | 要求目录明确支持该等级 | | 低复杂度视觉任务 | visualIntent="required"、complexity="low",有可信图片能力证据时才选择官方 Flash Vision | | 高复杂度视觉任务 | 由用户在 official-flash-vision 与 modlens-pro 中选择 | Flash 兼容 deepseek-flash 与旧 deepseek-v4-flash;Pro 使用 deepseek-v4-pro。Pro 不可用时拒绝继续,账号与 API Key provider 保持分离。选择后 bridge 会重读目录验证。选择保存为全局默认值时,委派和 follow-up 返回 modelRouting.persistsAsDshDefault=true;即使验证失败、尚未发出 prompt,这个副作用也可能已经发生。 官方 rc.3 会话目录省略图片模态信息,因此仅凭 Vision 名称不能启用原生视觉。ModLens Flash 只在获批视觉路由耗尽符合条件的有界重试后尝试一次;无效输入、模型缺失、权限和配置错误不触发备用切换。prompt 写入不自动重试。省略视觉策略字段时,显式旧式 modlens-flash 仍保留兼容。 自动测试已覆盖路由策略;当前原生视觉、ModLens 及备用 provider 执行仍待真实验证。具体能力限制和旧 Code Mode 交接见 Gateway 说明。 MCP 工具 | 工具 | 用途 | | dsh_host_status | 连接状态和能力 | | dsh_find_sessions | 有界 root 会话元数据发现 | | dsh_attach_session | 以新鲜前置条件接管精确空闲 root | | dsh_delegate | 创建 root 并排入初始 prompt | | dsh_followup / dsh_continue | 在同一 root 排队或 steer | | dsh_status | 执行、待交互项、最终回复与 claim | | dsh_tail | 有界事件摘要和后续 cursor | | dsh_wait / dsh_observe | 单次最多 30 秒的有界观察 | | dsh_cancel | 取消当前 turn 或已观察到的队列项 | | dsh_list | 映射任务列表 | | dsh_answer_question | 回答类型化待答问题 | | dsh_resolve_approval | 经人工批准的 allow_once 或拒绝 | | dsh_release_workspace | 释放协作 claim,保留 DSH 会话 | 操作前保留最新 cursor/revision。单次等待结束后继续观察,直到真实终态或需要人工处理。Workspace claim 协调 bridge 用户,不执行 DSH 文件系统权限限制。 调用方支持 Codex 使用上述 canonical Skill 与 setup。Claude Code 保留项目级安装器: npm run setup:claude -- --yes --project /absolute/path/to/project 该安装器配置 legacy 集成,新官方 Gateway 尚无近期 Claude Code 真实验收。ZCode、OpenCode、Workbuddy 和 Claude Desktop 暂缓,见延期路线图。 项目组成 - src/:共享 MCP runtime 与 setup。 - skill/codex-dsh-orchestrator/:canonical Codex Skill,修改此源文件而非安装副本。 - skill/codex-dsh/、skill/claude-code-dsh/:兼容 Skill。 - test/:模拟 Host、协议、持久化与安装回归。 - 项目总览、架构、验证、手动配置、发布清单、贡献及安全。 相关项目 | 项目 | 关系 | | DeepSeek Harness / 源码 | 官方 Desktop 与 Host runtime | | DSH Desktop | 社区客户端,保留 Windows legacy 自动发现 | | ModLens | 可选视觉插件。本项目不维护 ModLens,也不与其存在隶属关系 | | Model Context Protocol | 调用方与 bridge 之间的协议 | | dsh-Agentlink | 上游 MIT 源码与兼容沿革 | 许可证 MIT。升级共享 bridge home 前请阅读已知问题。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Fly2Kiana/Codex-DSH-Orchestrator
Codex-DSH-Orchestrator 让 Codex 把有明确范围的任务交给 DeepSeek…
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
智能体运行框架路由HarnessRouter/harnessrouter
智能体 harness 的统一接口。
★ 3,984已汉化DSH
71.3
这是你的仓库?认领条目