ouroboros/integrations/dsh-plugin

5.6kStars559Forks59Issues14Watchers

Launch the Ouroboros Python engine via uvx to provide DSH with specification-driven AI workflows as MCP tools (Interview→Seed→Execute→Evaluate→Evolution loop), requiring no installation or additional code.

Language
Python
License
MIT
Branch
main
agent-osagentic-aiai-agentai-coding-agentclaude-codeclicodexcoding-agent

Install

$ dsh plugin --profile web add github:Q00/ouroboros/integrations/dsh-plugin

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

一句话定位

这个 bundle 把 Ouroboros——一套"先把需求问清楚再动代码"的 Python AI 工作流引擎——以 MCP 工具的形式挂进 DeepSeek Harness,让你在 dsh 对话框里说 ooo interviewooo autoooo qa 时不用手动切换窗口。

核心能力

  • 在 dsh 对话里直接调用 30 多个 Ouroboros 工具(采访、Seed、执行、评估、进化、QA、撤销、回滚等),模型根据工具描述自动选择
  • 运行完整的 采访 → Seed → 执行 → 评估 闭环(auto 工具一次跑完同步返回,30 分钟超时)
  • 在既有 dsh 项目里用 Socratic 采访压低需求模糊度,达到阈值才允许生成 Seed 规范
  • 用进化循环(演化、回滚、世代追踪)反复打磨 Seed,直到评估器放行
  • 提供异常分支工具:取消执行、取消后台任务、查询任务状态、查询投影事件、查询仪表盘
  • 软失败启动:本机若没装 uv 或 Ouroboros 还没配置,dsh 仍能正常起来,只是 Ouroboros 工具不显示,其它插件不受影响

技术实现

  • 语言: 整个 bundle 是纯配置(YAML + JSON),没有任何自定义插件代码;背后的 Ouroboros 是 Python
  • 关键依赖: @deepseek-ai/dsh-mcp-client(MCP stdio 客户端)、uvx(随用随取的 Python 运行时)、ouroboros-ai[mcp](MCP 2.0 协议的服务端包)
  • 架构模式: 通过 Cordis 补丁(dsh.bundle.patch)插入一行 mcp-ouroboros,由 dsh 的 MCP 客户端用 stdio 协议拉起 ouroboros mcp serve,子进程再把 30 多个工具暴露给上层 agent
  • 入口文件: integrations/dsh-plugin/cordis.patch.yml(逻辑入口),integrations/dsh-plugin/package.json(声明 dsh.bundle.patch 路径)

适用场景

想让 DSH 不再"上来就写代码"的人:在用 dsh 做正经需求时,先让 Ouroboros 把模糊想法拆成可验收的 Seed,再交给执行器,最后让评估器打分迭代。也适合需要在 dsh 里同时跑调研、设计、评审多道工序、又不想离开 dsh 窗口的开发者。

前置依赖与兼容性

依赖最低版本说明
Python>= 3.12uvx 在隔离环境里自动拉取,无需手动 pip install
uv (uvx)最新稳定版需在 PATH 上;首次启动时它会自己下载 Ouroboros 及其依赖
dsh未声明具体版本bundle 自身不约束;父仓库通过 dsh-mcp-client 加载
Node.js>= 22仅在你想用 OUROBOROS_LLM_BACKEND=dsh 并从源码构建 dsh 时需要
Agent runtime可执行一个 CLI 运行时claude-clicodexopencode 任一;告诉 Ouroboros 由谁执行 ooo auto
操作系统跨平台无原生模块,不强绑 Linux/macOS/Windows

安装方式

dsh plugin --profile web add github:Q00/ouroboros/integrations/dsh-plugin

配置项

本 bundle 没有 DSHP 风格的"配置页",所有可选参数都通过环境变量注入,dsh 子进程只允许这几项透传:

配置类型说明默认值
OUROBOROS_AGENT_RUNTIME环境变量指定哪个 CLI 跑 ooo auto 的执行步骤(claude-clicodexopencode 等)不设,继承 ouroboros setup 的默认
OUROBOROS_LLM_BACKEND环境变量采访/Seed/QA 用什么 LLM;设为 dsh 时改走 DeepSeek Harness(需配合下面两项)不设,继承 ouroboros setup 的默认
OUROBOROS_DSH_CONFIG_PATH环境变量OUROBOROS_LLM_BACKEND=dsh 时必填,绝对路径,指向 dsh 的 Cordis 组合配置不设
OUROBOROS_DSH_CLI_PATH环境变量dsh-acp-demo 二进制不在 PATH 时给它指路PATH
ANTHROPIC_API_KEY环境变量透传给 Ouroboros 默认 LLM 后端不设即空
DEEPSEEK_API_KEY环境变量dsh 后端的回环凭证不设即空
toolCallTimeoutMspatch 参数ouroboros_auto 同步入参,30 分钟(1800000 毫秒)已写在补丁里

其余非凭证类变量(PATHHOMEOUROBOROS_* 选择器)dsh 会自动透传,无需在这里声明。

常见问题

Q: 必须装 Python 吗?

A: 系统级 Python 不需要。bundle 用 uvx 在隔离环境里下载并运行 Python 3.12+ 与 Ouroboros,只要机器上有 uv(从 https://astral.sh/uv 一行安装命令搞定)即可。

Q: 安装后看不到 mcp__ouroboros__* 工具怎么办?

A: 先确认 uv --version 能跑;再确认你是否设过 OUROBOROS_AGENT_RUNTIME,或者跑过 ouroboros setup。记住启动失败是软失败(failOnStartupError: false),dsh 不会因为这个插件崩,只是工具列表里少了它。

Q: 跟单独装 Ouroboros 比,这个 bundle 缺了什么?

A: 没有 SKU 上的差异——bundle 本质就是一行 cordis.patch.yml,真正的 Ouroboros 包还是从 PyPI 用 uvx 拉。换句话说,你既可以在 dsh 里聊,也可以在终端单独跑 ooo,两边共享同一份配置。

Q: 如何把 OpenAI/Google 的 key 也传进去?

A: 在自家 profile 的 cordis.patch.yml 里复制 mcp-ouroboros 整段 config,在 env 里追加 OPENAI_API_KEY (或 GOOGLE_API_KEY 等);注意 dsh 后来的 layer 是覆盖整段而非深合并,所以不要只 patch 一行,得带 config 块一起重写。

Q: 网络断了/uv 抽风了,工具列表还在,调用却一直失败?

A: 这是预期行为:该 bundle 没有自动重连逻辑(reconnect loop 只在 dsh 主仓库 main 分支里),你需要修复根因后手动重启 dsh 或重载插件。

上手难度

进阶 — 不需要写代码,但要把 uv、环境变量、Ouroboros 的 agent runtime 选择这层概念搞明白才能顺畅启用,普通用户需要看一遍 README 才能用上。

已知问题与限制

  • OUROBOROS_LLM_BACKEND=dsh 不是单变量切换:必须从源码构建 dsh(pnpm install && pnpm run build,Node.js >= 22),发布版 @deepseek-ai/dsh-acp-demodsh-tool-bash peer 依赖链上仍冲突;还必须提供绝对路径的 Cordis 组合文件(OUROBOROS_DSH_CONFIG_PATH),相对路径会被拒绝
  • MCP 子进程不能托管 in-process 的 Claude SDK,所以 OUROBOROS_AGENT_RUNTIME 必须是一个可执行 CLI(不能填 claude 这种 SDK 名),除非你想 ouroboros auto 那步调用就报错
  • 子进程环境做了凭证剥离:只有 ANTHROPIC_API_KEYDEEPSEEK_API_KEY 在白名单,其它 *_KEY 都不会自动透传给 Ouroboros
  • 重连不是默认行为:已发布的 dsh 0.0.1-rc.1 没有 reconnect 循环,只有最新的 main 分支有带指数退避和重试上限的版本;安装完若崩溃,需手动重载插件或重启 dsh
  • bundle 不发布独立版本号或 release,跟着父 Ouroboros 仓库的 main 分支走,意味着用 dsh plugin add 时拿到的始终是上游 main