DeepSeek Harness 的 opencode + omo(oh-my-openagent)预设
38/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add royenheart/dsh-plugin-opencode-omo该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-sandbox@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-session@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 启用omo角色编排
README
由 DeepSeek 最新模型翻译生成@royenheart/dsh-plugin-opencode-omo
一个 DeepSeek Harness 插件,为 web 配置档添加 opencode-omo 智能体预设(模式)。该模式复刻 opencode + omo 插件(oh-my-openagent)的行为,且只作用于这个模式——其他预设(standard/…)仍走 dsh 默认循环、沙箱文件系统,不加载 omo 钩子。
该模式提供什么
- opencode + omo 系统提示词——真实的 opencode default.txt 人格(语气、风格、主动性、约定、代码风格、任务指引)+ omo 的 Sisyphus 编排者身份,作为完整系统提示词声明:该模式下 dsh 的 harness 身份与运行时上下文快照会被抑制。循环垫片还会在最前面加上 opencode 的实时环境块(精确的模型 id、工作目录、工作区根目录、git、平台、日期,每一步重新计算)。
展开完整文档(README 剩余 1 节)
@royenheart/dsh-plugin-opencode-omo
一个 DeepSeek Harness 插件,为 web 配置档添加 opencode-omo 智能体预设(模式)。该模式复刻 opencode + omo 插件(oh-my-openagent)的行为,且只作用于这个模式——其他预设(standard/…)仍走 dsh 默认循环、沙箱文件系统,不加载 omo 钩子。
该模式提供什么
- opencode + omo 系统提示词——真实的 opencode default.txt 人格(语气、风格、主动性、约定、代码风格、任务指引)+ omo 的 Sisyphus 编排者身份,作为完整系统提示词声明:该模式下 dsh 的 harness 身份与运行时上下文快照会被抑制。循环垫片还会在最前面加上 opencode 的实时环境块(精确的模型 id、工作目录、工作区根目录、git、平台、日期,每一步重新计算)。
- 输入框里的 omo 角色选择器——放在 dsh 现有的 conversation.input.left 工具行槽位(access/plan 芯片之后),提供 primary/all 角色:sisyphus、hephaestus(Deep Agent)、prometheus(Plan Builder)、atlas(Plan Executor)和 sisyphus-junior。选中某个角色会替换会话的完整系统提示词,并应用该角色配置的模型。专家角色(athena、athena-junior、council-member、metis、momus、oracle、librarian、explore、multimodal-looker)通过 task(subagent_type=...) 调用,不出现在输入框选择器里。
- dsh 设置面板里的全局「Role Settings」(settings.section):每个角色一个主模型下拉框(跟随当前 / omo 默认 / 固定),位于居中的「Primary model」标签下;dsh 风格的圆形「+」按钮在角色框下方展开备用模型列表(可重复添加,取消/关闭不添加任何内容),持久化在 opencode-omo 设置条目里。请求失败时,循环垫片会先沿角色的备用链依次尝试,再交给 harness 的重试策略。
- opencode 工具链(完整)——持久化 bash、read/write/edit/read_image、apply_patch、glob/grep、todo_write、skill、web_fetch/web_search、LSP 导航接口(lsp_goto_definition / lsp_find_references / lsp_hover / lsp_go_to_implementation;原始 lsp 隐藏)、exit_plan_mode(plan)、ask_user_question。tool-surface.mjs 用 opencode 的 tool/.txt 文本覆盖模型可见的描述/参数,并把 read/edit/write/web_search 垫成 opencode 的参数名(web_search.query → dsh queries)。
- omo task() 接口 —— task-shim.mjs 注册 omo 风格的 task(category/subagent_type/load_skills/run_in_background/task_id) 调用,映射到 dsh 命名子代理 + 通用委派。
- omo 多角色子代理 —— oracle(写工具受限的顾问;保留 shell,不是沙箱)、librarian(外部文档/代码搜索)、explore(代码库 grep)、metis(前置规划)、momus(计划评审)、multimodal-looker(媒体),外加通用 subagent/subagent_fork + workflow/ralph。委派出的子代理保留 dsh 的 send_message 回传通道(harness 会把这条指令追加到每个可续接子代理);主接口仍把它藏在 task()/background_output 后面。
- omo 上下文注入 —— AGENTS.md/CLAUDE.md 向上查找 + skills/ + omo 的 rules-injector(.omo/rules、.cursor/rules、.github/instructions、copilot-instructions.md)。
- omo 钩子 —— comment-checker(拒绝 write/edit 上的 AI 味注释)、hashline(读取打标 N#HH|content + hashline_edit 过期引用防护)。
- 按模式隔离的执行后端 —— 本地文件系统(dsh-fs-local)+ 持久 PTY shell,与其他模式的沙箱 fs/shell 隔离。
- 原生接缝循环 shim —— 没有 dsh 侧的驱动接缝。driver.mjs 是普通预设插件,用的是现成接缝:动态的 ctx.systemPrompt.section({ complete: true }) 每次组装时重算 opencode 的环境块和选中的 omo 角色提示词;system-prompt/assemble 应用 opencode 的模型工具门控,请求目录和提示词生成的工具表都走同一套隐藏名/模型族/角色过滤;agent/inbox/claimed、agent/pre-step、agent/request、agent/request-error 提供 ultrawork 检测、maxSteps、角色模型路由和回退重试。其他预设从构造上就不受影响。
目录结构
cordis.patch.yml # bundle patch: host row + official agent-preset declaration
patches/ # dsh-side patch(es) still required for the complete surface
install.py # idempotent install/uninstall (manifest + missing runtime/LSP links)
src/ # host + client plugin halves (role registry, settings, picker UI)
lib/ # built host/client bundles (npm run build)
scripts/build.sh # architecture check + typecheck + tsdown build
presets/opencode-omo/
agent.cordis.yml # the composition (tools, roles, hooks, LSP)
preset.yml # display metadata
persona.md # opencode default.txt + omo Sisyphus persona
roles/.md # subagent personas (also main-role prompts)
roles/prompts/.md # primary-role complete prompts (hephaestus/prometheus/atlas/…)
skills/ # omo shared skills
driver.mjs # native-seam loop shim (prompt/route/fallback/maxSteps/ultrawork)
delegation-restrictions.mjs # 单个工具的能力/角色限制表 patch-parser.mjs # 供执行与权限共用的 apply_patch 解析器 background-state.mjs # 封闭的后台激活生命周期 rules.mjs # rules-injector comment-checker.mjs # comment-checker 钩子 apply-patch.mjs # apply_patch 工具 hashline.mjs # omo hashline 读取标记 + hashline_edit lsp-optional.mjs # 安装后启用 LSP 三件套;否则自动禁用
安装
lib/ 在本地生成,不提交到仓库。install.py 总是先构建仓库自己的工具链(工具链缺失,或 package-lock.json 比已安装的 lock 新时,执行 npm ci,然后执行 npm run build);npm、构建、产物或必需的 harness 链接缺失时,它会报出可操作的错误并退出:
python3 install.py install --profile web # 安装(幂等)
python3 install.py uninstall --profile web # 卸载
install.py 把包软链到 ~/.dsh/profiles/<profile>/node_modules/,仅在运行时包缺失时做镜像,确保并重新指向 LSP 链接(拒绝真实目录),并修改配置档的 package.json(增删依赖项 + bundle 条目)。bundle 补丁同时声明 host 行和官方 @deepseek-ai/dsh-agent-preset 行,因此不需要单独的用户预设根副本。
手动替代方案 —— 这个包是 dsh bundle:它声明 dsh.bundle.patch 并随包提供预设。dsh plugin 会从已安装的包自动同步 dsh.profile.bundles:
dsh plugin --profile web add link:/path/to/dsh-plugin-opencode-omo
bundle 补丁为 opencode-omo 声明官方 @deepseek-ai/dsh-agent-preset 行,因此不再发布 $DSH_HOME/.agent-presets 副本。重启 dsh,在模式选择器里选 opencode-omo。
从 0.2.1 之前的行 id 升级。 已有配置档用的是 opencode-omo-roles 设置项;rc.2 的旧版导入器会把这条未知项保留在 $DSH_HOME/settings.yaml.imported。启动时,host 行会为每个配置档读取一次该备份,把其中的角色/会话映射合并进当前的 opencode-omo 项,因此旧的角色模型和回退配置不会被悄悄重置。由预发布版 9ad557c 的 home 全局标记迁移过的配置档可能会再导入一次,因为该标记没有配置档身份;升级后请检查合并后的角色。
可选的 LSP 服务器。 预设为 lsp_ 导航工具预配置了 typescript-language-server。install.py 会检查 PATH,缺失时给出警告;随后可选的 LSP 模块会在没有服务商的情况下挂载,模式仍能加载(LSP 查询会优雅失败,而不是阻塞整个预设)。安装它即可启用 LSP:
npm install -g typescript-language-server typescript
然后重启 dsh。
web_fetch 服务商。 该预设启用 dsh 原生的 web_fetch 工具(fetch: true)。官方 0.2.1 已在基础 bundle 中注册 @deepseek-ai/dsh-web-fetch-http,因此本插件不会再插入第二条 fetch 记录(否则会抛出 WEB_DUPLICATE_PROVIDER)。web_search 继续使用现有的 DeepSeek 搜索服务商(DEEPSEEK_API_KEY)。其他预设保持 fetch: false,工具面不变。
dsh 侧必需的改动
要获得完整的 opencode 工具面,仍需打一个补丁:
patches/0001-agent-pre-step-assistant-prefill.patch(已 rebase 到 dsh-v0.2.1-rc.2)新增 PreStepDecision.assistantPrefill,即仅属于请求的 assistant 尾部。循环会把它记录到 request/header,只追加到提出该请求的那一次请求上,并在 token 压力中计入它的开销;它永远不会成为会话的 assistant/message,因此 transcript、compaction 和统计都保持干净。
按 patches/README.md 中的说明,把补丁应用到 dsh 检出目录;install.py 不会修改 harness 检出目录。不打补丁时,预设仍能加载,并使用下面的回退方案。
为什么仍然需要这个补丁。 opencode 在达到步数上限的那一步,把 MAX_STEPS_PROMPT 作为 assistant 角色的续写追加进去。官方 0.2.1 的 PreStepDecision 仍是 reject | { kind: 'enter', messages, startsRequestSeries? },而 agent/request 无法修改请求消息,所以没有任何官方扩展点能表达仅属于请求的 assistant 尾部。上游请求见:discussion #2407。
插件会探测运行时能力(ctx.agentLoop.supportsAssistantPrefill)。在打过补丁的宿主上,上限提示文本作为 assistant 尾部,不添加系统提示词段落。在原版宿主上,它保持相同的文本和触发条件,但作为系统提示词段落(见下面的回退表);这只是保证可用,并非完整的 opencode 工具面。
未打补丁宿主上的回退方案
| 工具面 | opencode / 打过补丁的 harness | 本插件在原版 0.2.1 宿主上 |
| MAX_STEPS_PROMPT 的角色 | 请求末尾的 assistant 角色续写 | 该步骤的系统提示词段落 |
| 会话 transcript / 统计 / compaction | 仅属于请求(header),不是会话消息 | 同样不是会话消息(系统段落会重新组装) |
| 模型停止 / 收尾的严格程度 | 针对 assistant 尾部调优 | 可能对系统提醒反应更弱或更强 |
| token 位置 | 该请求上额外的 assistant token | 该请求上额外的 system token |
| 可重建的请求 | 记录在 request/header | 从实时提示词组装重建 |
回退方案在运行时选择;即使宿主无需补丁也能运行,补丁也不会被丢弃。
服务商可见的 format/toolChoice 仍是未打补丁的提案;omo 的常规路径不使用它。
其余部分都运行在未修改的 dsh 接缝上:预设由官方 @deepseek-ai/dsh-agent-preset 行中,角色选择器占用现有的 conversation.input.left 槽位,角色设置使用官方设置表单 Remote。
基准实验(等价性验证)
运行脚本与复现说明见 tests/benches/;报告写入 docs/exps/。科学方法论(配对设计、McNemar/bootstrap/TOST、A/A 噪声基线、trace 对齐、缓存与延迟协议)记录在 docs/exps/2026-08-16-scientific-bench-methodology.md。设计要点:
- 运行隔离端口的 dsh(opencode-omo 模式,隔离 $DSH_HOME),以及本机已安装的 opencode + oh-my-openagent(隔离 XDG_CONFIG_HOME)。
- 两者都使用 deepseek-official/deepseek-v4-pro(dpsk v4 pro);API key 来自 DEEPSEEK_API_KEY 环境变量。脚本不硬编码任何机器路径或密钥。
- 分层基准:L1 HumanEval、L2 MBPP、L3 SWE-bench-verified-mini(抽样),对比 pass@1、CoT/推理暴露、工具调用链(read/edit/write/bash/test/subagents),以及最终补丁/答案。
- 性能:bench_metrics.mjs 统一两侧的 token 用量(含 cacheRead)与工具时间戳;eval_perf.mjs / eval_swe_perf.mjs 离线产出缓存命中率、TTFT、步骤耗时与逐工具耗时(见报告 §5)。
- MBPP 修复:MBPP 行没有 entry_point;脚本从第一条 assert fn(...) 或参考 def fn 推断函数名。旧实现硬编码 Function name: undefined,正是 MBPP 行为分歧的根因(见报告 §0 与 §6.4)。
- 原始基准数据下载到 tests/benches/.data/,不纳入版本管理;fetch-benches.sh 复现下载,setup-homes.sh 复现两个隔离 home。
最新结果(dpsk v4 pro;L1 30×3,修正后 L2 5×2,旧版 L3 样本)
| level | dsh pass@1 | opencode+omo pass@1 | per-item agreement |
| HumanEval (30 tasks × 3 repeats) | 1.00 | 1.00 | 1.00 |
| MBPP (corrected entry_point, 5 tasks × 2 repeats) | 1.00 | 1.00 | 1.00 |
| SWE-bench-verified-mini sample (sphinx-doc__sphinx-10323) | same patch | same patch | byte-identical git diff |
完整报告:docs/exps/2026-08-15-opencode-omo-equivalence-bench.md;原始记录在 tests/benches/.runs/ 下。
版本基线
当前组合:opencode-1.17.11+omo-5.0.0-beta.31。
alignment.json 是机器可读的注册表; presets/opencode-omo/roles/prompts/variants/MANIFEST.md 记录提示词来源。
| Upstream | Version | Commit | Used for |
| opencode | 1.17.11 | 67aec221 | tool descriptions, persona, plan/build/MAX_STEPS text |
| oh-my-openagent | 5.0.0-beta.31 | 62ed7952 | Sisyphus family, Atlas, Hephaestus, Oracle/Metis/Momus prompts |
| oh-my-openagent | 4.19.0 | 14083b89 | librarian / explore / multimodal-looker prompts |
| dsh | 0.2.1-rc.2 | 687f282 | host peer target |
explore 和 multimodal-looker 在两个 omo 版本里完全一致;librarian 继续留在 v4.19.0,等 context7 专用的 v5 差异适配到这套 harness 之后再升级。npm run check:alignment 会校验当前启用的组合。
未来的对齐 harness
跟踪:#17。
- 来源追溯:每种组合一份清单,外加内容哈希。
- 确定性契约:用脚本化的目录渲染提示词和工具,再与上游的段落和名称比对。
- 录制轨迹:每个 pin 录制一次真实的 opencode+omo 轨迹,之后只回放本插件,比对归一化后的事件。
对齐状态(对照声明的基线)
- 已对齐:opencode 默认人格(完整系统提示词 + 实时环境块,其中的服务商/模型与请求走同一条组装期路由 —— 会话实时模型选择,或角色主模型/回退(步内回退重试复用那次组装,同时请求路由继续推进);工作区根目录现在按 git 根目录推导);opencode 工具族 + gpt apply_patch/edit-write 工具门控,在模型可见 schema 和执行两侧同时生效(tools/pre-execute 拒绝镜像);opencode maxSteps + 原样照抄的 MAX_STEPS_PROMPT;原样照抄的 opencode plan.txt / plan-mode.txt,带动态 ${planInfo} 和 plan→build 的 BUILD_SWITCH 提醒;omo 角色目录/显示名;sisyphus/hephaestus/atlas/sisyphus-junior + 专家子代理;comment-checker/hashline/rules-injector 钩子;生成的 Sisyphus 路由段落;抽取出的 omo Sisyphus 模型族模板(GPT-5.5/GPT-5.4/claude-opus-4-7/claude-opus-4-8/claude-fable-5/gemini/kimi-k3/kimi-k2-7/kimi-k2-6/glm-5-2,未知模型族走动态 Sisyphus 回退)加上 hephaestus 的 GPT 变体、全部 8 个 atlas 变体,以及专家模型变体(oracle/metis/momus);omo 默认的按角色 PRIMARY 模型解析(按服务商范围排序)和从主模型之后才开始的回退链;omo 角色采样默认值(sisyphus/hephaestus 的 GPT effort 为 medium,atlas 温度 0.1);omo 风格的可重试错误门控,先判断再推进回退;角色设置里的推理强度选择器;ultrawork 关键词覆盖;/start-work、/remove-ai-slops、/refactor、/stop-continuation、/handoff、/hyperplan、/team-mode 命令;composer 角色选择器 + 全局的按角色模型/回退设置;omo 技能以 user-dsh 发布,这样第三方 skills-manager 就能管理它们。omo rules-injector 的文本现在并入完整系统提示词(driver.mjs + rules.mjs),不再被 suppressRuntimeContext() 丢弃;已批准的方案持久化在 .opencode/plans/<created>-<session>.md;专家子代理人格现在会加载抽取出的参考提示词文件(oracle/librarian/explore/metis/momus/multimodal-looker)。
- MCP:独立插件 dsh-plugin-mcp-support 从自身的 bundle-row 配置或持久化的 mcp-support 设置命名空间挂载原生 @deepseek-ai/dsh-mcp-client 服务器。
- 结构化输出:独立插件 dsh-plugin-structured-output 在原生接缝上提供 opencode 风格的 /json-schema + StructuredOutput 校验(dsh 侧没有 format 字段)。是否可见按预设逐个开启,入口在 Settings → 结构化输出工具(Structured output);默认不启用任何模式。
- 部分实现:抽取出来的家族模板保留了动态段落,但内容由 dsh 原生数据填充,而不是 omo 的 builder 输出;结构化输出靠工具强制,而不是 tool_choice: required;钩子是正则/简化版移植;AGENTS.md 注入走 dsh 原生方式;子代理继承会话模型,因为 dsh 的子级 header/descriptor 不携带子代理角色 id(primary-role 采样默认值会生效)。
- 本仓库只有一处 dsh 侧补丁。 patches/0001-agent-pre-step-assistant-prefill.patch 恢复 opencode 的 request-only assistant ceiling 文本;原版宿主仍走 system-section 回退。format/toolChoice 仍是提案;独立的结构化输出插件覆盖了常见路径。
剩余差距
1. maxSteps 角色(补丁接缝 + 原版回退):patches/0001 在打过补丁的宿主上给出 assistant 角色的请求尾部。原版 0.2.1 宿主拿到的仍是同样的 MAX_STEPS_PROMPT 文本和触发条件,只是作为 system-prompt 段落,所以模型对角色处理可能不同。上游追踪见 discussion #2407。
2. dsh 侧(提案,中等优先级):GenerateOptions.format / toolChoice。omo 的常规路径不用它们;独立的结构化输出插件覆盖了常见路径。
3. 子代理按角色采样无法可靠解析角色 id(dsh 的子级 header/descriptor 不携带它);primary-role 采样默认值会生效,子代理继承会话模型。
4. 计划文件:dsh 本身不持久化它们;插件在 exit_plan_mode 批准后写入 .opencode/plans/*。一等公民的计划文件接缝仍是可选的改进项。
5. team-mode TUI、comment-checker 命令行和 hashline diff 增强器仍属于非 LLM/编辑体验上的差异。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
royenheart/dsh-plugin-opencode-omo
DeepSeek Harness 的 opencode + omo(oh-my-openagent)预设
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 426,451已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,777已汉化MCP
71.8
破甲一键通z91772524-ai/pojia-next
🌐 官网国内推荐从这里进:
★ 1,045已汉化DSH
71.7
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
主动编码智能体deepseek-ai/dsh-superagent-prototype
研究原型,仅供参考,不是 DeepSeek 官方产品。…
★ 15,535已汉化DSH
71.6
破甲工作流画布Minglink/dsh-jailbreak-workflow
在画布上编排破甲研究流程并编译成提示词交给模型执行
★ 559已汉化DSH
70.8
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。