oh-my-dsh:在 DeepSeek Harness 上按席位编排多 Agent

前言

在 DeepSeek Harness(DSH)里做复杂任务时,常见做法是选一个官方模式、让同一个模型从头到尾扛读写、搜索、实现和评审。质量、速度和成本往往绑在一套路由上,也很难在机制上区分「只能读」和「可以改仓库」的 agent。

oh-my-dsh 把 oh-my-opencode-slim(omo-slim)的席位设计与路由思路移植到 DSH 原生接缝:会话、会话投影、工具运行时和 subagent。bundle 内自包含,不修改官方包。维护者为 Marshall-sng,在 SkillHub 目录中归类为工作流插件。

这是什么

oh-my-dsh 是一个面向 DSH 的 seat-based 多 agent 编排 bundle(package 名 oh-my-dsh,当前版本 0.1.0)。核心思路来自 omo-slim:把工作拆给最适合的专职 agent,而不是强迫单一模型包办一切。

席位定义在 bundle 自己的席位表里,通过 omo_dispatch 工具派发到隔离 lane,或由席位运行时应用到会话;官方预设选择器仍只展示自带的四种模式,席位不会出现在官方 preset 列表里。

八个席位与工具策略

每个席位有独立人格,并在执行层强制执行工具策略(不只靠 prompt):继承工具经 tools.restrict() 掩码,会话内注册的工具由 tools.guard() 按调用名复核;席位落地后新注册的工具同样会被拒绝。

席位 ID 角色 工具策略
orchestrator 规划、委派、汇总与验证 完整(文件、搜索、shell、再委派)
explorer 只读代码库侦察与外部调研 只读(无写/编辑/shell)
fixer 在明确规格内做有界实现 文件 + 搜索 + shell
oracle 架构、风险、调试策略与评审 只读
designer UI/UX 实现与视觉打磨 文件 + 搜索 + shell
council 多模型共识综合 零工具(allow-list [])
councillor 单次独立、只读的议会投票 只读,不可再委派
observer 图像 / PDF / 图表等视觉分析 只读

只读席位在机制上无法写文件或派生子 lane;总管通过 omo_dispatch 委派,一次调用对应一条隔离 lane,含席位人格、工具策略与模型路由。独立 lane 可并行,父会话通过完成通知拿到 lane 的最终答复。议会(Council)同理:多个 councillor 在不同模型上回答同一问题,再由零工具的 council 席位综合结论。

按 lane 的模型路由与配置

每条 dispatch 可单独指定 provider / model;未指定时使用该席位的 dispatch 默认模型;两者都没有时,lane 继承父会话当前路由。优先级(从高到低)为:

  1. omo_dispatch 调用参数中的完整 provider + model;
  2. 用户级覆盖文件 <DSH_HOME>/omo/seat-models.json(每席位可设为:用席位默认、强制继承父路由、或固定某条路由);
  3. 席位表内默认,或用户席位在 <DSH_HOME>/omo/presets.json 中的定义;
  4. 父会话当前路由。

覆盖文件在每次 dispatch 时重新读取(保存只影响下一次 dispatch,不影响已在跑的 lane),原子写入并带跨进程锁。Composer 行里的 Agent 芯片可切换会话席位,并通过 Model 按钮经 Remote omoSeatModels 编辑上述配置,无需手改 JSON。

按 lane 路由需要至少在 profile 中注册两条 provider 路由,且对发起 dispatch 的会话可用。议会至少需要两种不同模型;不足时会退化为单模型共识。

Skills 与命令

从 omo-slim 移植了 12 个 skill,包括 deepwork、codemap、verification-planning、reflect、ai-estimates、deanchor、step-back、simplify、worktrees、clonedeps、loop-engineering 以及元 skill oh-my-dsh。各 omo 席位挂载 skill-filesystem 与 tool-skill,在 skill 目录中可见并按需加载。

常用入口:

  • 工具 omo_dispatch — 将指定席位派发到一条 lane。
  • 斜杠命令 /preset [<seat-id>] — 列出 omo 席位与官方模式,或切换当前会话席位。

安装与启用

环境要求(来自 README):

  • DSH 桌面 0.2.1-rc.2 或更新;CLI 侧主机 0.2.0-rc.2 亦可。
  • bundle 声明的 peer 由宿主解析:@deepseek-ai/cordis、@deepseek-ai/dsh-llm、@deepseek-ai/dsh-tools、@deepseek-ai/dsh-subagent、@deepseek-ai/dsh-atomic-write、@deepseek-ai/dsh-typert-protocol、zod。
  • package.json 中 engines.dsh 为 >=0.2.0-rc.2 <0.3.0。
  • Model 编辑器需要 bundle 客户端(Agent 芯片)已挂载。

安装方式(原文命令,勿自行拼接 dsh plugin add):

plugin_manager → action: install_bundle → target: <absolute path to this directory>

也可在桌面 GUI 的 Plugins 页面安装。patch 会加入三行:command-preset(/preset)、omo-dispatch(席位表、omo_dispatch、omoSeats 投影与席位运行时)、omo-model-settings(omoSeatModels Remote);并覆盖宿主 subagent-model-selection-settings,使官方 subagent 工具暴露路由参数。

安装后新建会话,在 Composer 行打开 Agent 芯片并选择席位即可。从官方模式选择器切回官方模式会解除该会话上的 omo 层;切换席位不会改变会话模型(仍由官方模型选择器决定)。

典型用法

  1. 安装 bundle 并重启 DSH(新增 presets.json 用户席位需重启 bundle 才能加载;席位模型偏好无需重启,下次 dispatch 生效)。
  2. 新建会话,在 Agent 芯片选 orchestrator 或其它席位。
  3. 需要子任务时,由总管(或你直接作为会话 agent)调用 omo_dispatch,指定 seat 与可选的 provider / model。
  4. 只读侦察用 explorer,实现用 fixer;多模型决策可走 council + councillor 组合。
  5. 用 /preset 查看或切换席位;用 Agent 芯片的 Model 按钮为各席位设置 dispatch 默认路由。

用户自定义席位写在 <DSH_HOME>/omo/presets.json,与内置表共用 /preset 与芯片界面。

适用场景与注意

适合需要在 DSH 内做分工明确的多 agent 工作流:规划与实现分离、只读评审与写操作隔离、多模型议会、按 lane 选不同模型以平衡成本与质量。

务必知晓的限制:

  • 席位不是官方 preset;官方选择器不会列出它们。
  • 模型编辑器只影响未来的 lane dispatch。
  • 插件以当前 DSH 进程权限运行;安装前请阅读 GitHub 仓库 源码与 MIT 许可证。本项目为 omo-slim 的衍生改编,席位人格、路由哲学与 12 个 skill 源自原项目,DSH 侧集成为本 bundle 原创。

DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

oh-my-dsh 在 DSH 上落地了 omo-slim 的席位编排:八类专职 agent、执行层工具策略、omo_dispatch 与 /preset、分层模型路由与 Agent 芯片配置面。若你已在用 DSH 做较重的编码或评审流程,可从安装 bundle、新会话选席位开始试用。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye