DeepSeek Harness Hub
← 返回列表

chiro2001/dsh-oc

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
⚠ 装前注意

DeepSeek Harnessdsh的 OpenCode TUI 前端:使用官方 OpenCode 终端界面,

基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/9/11 · 已提供中文文档

DeepSeek Harness × OpenCode TUI 前端:把 dsh 的 Agent、会话、工具接入官方 opencode 终端。OpenCode TUI frontend for the DeepSeek Harness (dsh): agents, sessions and tools in the official opencode terminal.

综合分
36.4
GitHub 分
36.4
用户评分
★ Stars
7
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add chiro2001/dsh-oc
未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包@chiro2001/dsh-oc(未发布到 npm,仅可源码安装)
Node 引擎要求 >=22 · 基线 Node 22.19 满足
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

未发布到 npm registry,仅可从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/18 09:27:32

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-cmdline@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-tools@deepseek-ai/dsh-user-approval@deepseek-ai/dsh-user-questions
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-oc

DeepSeek Harness(dsh)的 OpenCode TUI 前端:使用官方 OpenCode 终端界面,
由 dsh 提供 Agent、会话、工具、模型、权限和提问能力。

CI
e2e

工作方式

- 界面:官方 opencode attach TUI,只负责终端渲染、键盘交互和生命周期。
- 后端:dsh 负责 Agent、Session、工具、模型、权限和用户提问。
- 桥接:dsh-oc 在 dsh 进程内提供 OpenCode 兼容的 HTTP/SSE bridge,并启动官方 TUI。

dsh (Node) ── dsh-oc bundle ── oc-bridge (HTTP/SSE) =0.1.5-rc.2、官方 opencode 1.18.18。
main 当前指向 GitHub prerelease v0.2.0-rc.4,
不是无标记的稳定版;npm registry 暂未发布,安装和更新走 GitHub 源。

安装并启动

使用 main 发布线(当前为 prerelease)
bash
dsh plugin --profile oc add chiro2001/dsh-oc
dsh --profile oc

这里的 profile 名称是 oc,不是 dsh-oc。更新同一来源时重复执行上面的安装命令即可。

固定版本与开发线

需要固定当前 prerelease 时使用 tag;验证集成线时显式选择 develop:
bash
dsh plugin --profile oc add 'github:chiro2001/dsh-oc#v0.2.0-rc.4'
dsh plugin --profile oc add 'github:chiro2001/dsh-oc#develop'

固定某个 tag 或完整 commit SHA 时使用相应 GitHub spec。npm 包名是
@chiro2001/dsh-oc,但目前未发布到 npm registry。

本地开发可用 dsh plugin --profile oc add . 链接工作树;修改 TypeScript 后执行
pnpm build 即可让 profile 使用新构建。

安装后也可使用 dsh-oc 简写。将 profile 的 bin 目录加入 PATH:
bash
export PATH="$HOME/.dsh/profiles/oc/node_modules/.bin:$PATH"
dsh-oc                        # 等价于 dsh --profile oc
dsh-oc --mini                 # 等价于 dsh --profile oc --mini
dsh-oc --version              # 同时输出 dsh-oc 与 dsh 的版本

pnpm 提示缺少 @deepseek-ai/cordis 等 peer 属于预期警告;这些依赖由 dsh 宿主在
运行时提供。

5 分钟上手

启动后可以直接输入普通任务,例如“只回复 OK”。常用的控制命令如下:

| 输入 | 作用 |
|---|---|
| !,再输入 shell 命令 | 在完整 OpenCode TUI 中执行用户指定的 shell 命令 |
| /preset | 列出可用的 dsh agent preset |
| /preset minimal | 切换到 minimal preset,不触发模型回合 |
| /goal  | 创建或查看 goal,状态会同步到侧栏 |
| /help | 在 TUI 中显示能力摘要 |

! shell mode

在完整 TUI 输入框输入 !,再输入例如 printf DSH_OC_SHELL_OK 并回车。命令经
dsh-oc 以当前 OS 用户身份启动精确的 shell 子进程(POSIX 仅使用绝对路径的
$SHELL -c,否则回退 /bin/sh;Windows 使用 ComSpec,缺失时回退
cmd.exe)。! 本身就是用户授权边界;它不经过 dsh 的模型工具、approval 或
sandbox waterfall。TUI 显示一张 shell tool card、输出和退出结果,但不会触发模型
回复;命令完成后会以明确标注“用户手动执行”的非唤醒 context 注入下一次真实 prompt,
让模型能看到命令和输出。注入本身不会开启新的 turn,session 被清理时不会迟到注入。
stdout/stderr 各自最多保留 1 MiB;超过后继续 drain 子进程,但在卡片中追加截断标记,
不会因为输出超过阈值而 kill 命令。发送给模型的 context 有独立预算:命令最多 16 KiB、
stdout/stderr 各最多 64 KiB、完整文本最多约 144 KiB,并带明确截断标记。
命令和输出会发送给当前配置的模型,可能包含 token、密码或个人数据;使用 ! 前请
确认不会泄露敏感信息。

--dir  会设置 bridge cwd;已记录的 session cwd 优先,只有冷启动时才用它作
shell cwd fallback。shell 卡片属于 bridge 的短期投影,不伪造 dsh agent-loop 事件;
完成后的输出在当前 bridge 生命周期内可通过历史重新加载。

/preset
在空白会话中使用 /preset  或 Tab 选择 agent 后,当前会话和之后新建的会话会
使用该 preset。/preset 的结果卡片在命令完成后立即结束,不需要再发送一条消息来
清除 QUEUED 状态。

会话已经产生回复后,dsh 会锁定 agent preset;此时切换会显示一次
Agent switch locked,请新建会话后再切换。

能力状态

完整矩阵见 docs/FEATURES.md,协议细节见
docs/PROTOCOL.md;dsh --profile oc --help 展示离线能力摘要。

| 能力 | 状态 |
|---|---|
| 会话列表/新建/续聊/fork/compact、SSE 流式消息 | ✅ |
| 会话标题、历史恢复和目录过滤 | ✅ |
| 模型目录、reasoning effort、agent preset 切换 | ✅ |
| ! shell mode(用户授权的 OS shell、固定 bash tool card) | ✅ |
| 工具卡片(bash/read/write/edit)、参数流、diff 与 Modified Files | ✅ |
| 权限/提问流、子代理会话树与后台子代理 | ✅ |
| Goal 创建/查看/暂停/恢复/完成 | ✅ |
| 文本/图片附件 | ✅(PDF 等二进制暂不支持) |
| Allow always 权限 | 🟡(仅当前会话内存记忆) |
| MCP / LSP / formatter / integration / reference 等外围路由 | ❌(schema-valid stub) |

演示

真实录制:品牌启动画面 → 真实模型运行 pnpm test → 全部单测通过 → 退出提示。

启动参数

支持透传给 opencode attach 的参数:

- --continue / -c、--session / -s、--fork、--dir、--mini、
--print-logs、--log-level

示例:
bash
dsh --profile oc --session
dsh --profile oc --dir ~/project --mini

其它参数会显式打印 ignored unsupported arg 警告,不会静默丢弃。

数据、安全与限制

- OpenCode 的配置、数据、状态和缓存隔离在 $DSH_HOME/opencode;模型和凭据由 dsh
后端管理,dsh-oc 不向 OpenCode 注入 provider/key。
- 官方二进制锁定为 1.18.18;自动更新、远程模型目录抓取和 LSP 下载均关闭。
- shell mode 由用户显式输入 ! 授权,继承当前 OS 用户权限与 session cwd;不宣称
dsh approval/sandbox 保护。取消只针对当前 bridge/session 登记的精确子进程/进程组,
不按进程名结束其它进程;POSIX 使用自有 process group,Windows 使用自有 PID
的 taskkill /T 树。Windows 使用 ComSpec(不是 dsh 的 pwsh sandbox),这项
平台差异应在 Windows 主机上单独验收。
- shell 路径只在子进程结束后发布保留的 stdout/stderr,不提供实时输出流;每路最多
保留 1 MiB,超出后继续 drain 并追加截断标记。shell-only 卡片是 bridge 内存投影;
另有一条 dsh agent/inbox/spliced pending context 供下一次 prompt 使用,claim 后
如发生 compaction 不保证逐字长期保留。
- Allow always 只在当前会话内记忆,重启后清空。
- 官方退出 splash 无法替换;dsh-oc 会在下方补一行 dsh 恢复说明,可用
DSH_OC_DISABLE_EXIT_NOTE=1 关闭。
- --mini 不加载 TUI branding 插件,因此入口仍可能显示官方 OpenCode 字符画;
dsh-oc 会在启动前打印 DSH OC 品牌。
- 流式回合中全量 TUI 与 --mini 都需要连按两次 Esc 打断;dsh-oc 会转为
session.cancel。
- 工具回合在忙碌时排队第二条消息,官方 TUI 的即时转录顺序可能暂时错位;内容
不丢失、不重复,重新进入会话后顺序正确。
- MCP/LSP/formatter/integration/reference 等外围路由目前只提供 schema-valid stub,
不伪造结果。

排障:Profile 隔离与 dsh-tui

dsh-oc 只在 dsh --profile oc 的 dsh 进程中加载。它的 bridge、OpenCode 配置和
兼容 shim 都是该进程的本地状态,不会跨进程修改其它 profile;不要把 dsh-oc 安装
到 dsh-tui 所用的 profile 来修复 dsh-tui。

dsh-tui launcher 当前固定使用 dsh --profile dsh-tui,不是泛称的 tui。两者可以
同时存在;只读查看实际组合树:
bash
dsh --profile oc --dump-config
dsh --profile tui --dump-config
dsh --profile dsh-tui --dump-config

如果你明确希望 profile 名称就是 tui,可以考虑安装 dsh-tui bundle 并直接使用该
profile(以下只是建议命令,本轮没有替用户 profile 执行):
bash
dsh plugin --profile tui add '@deepseek-harness-tui/dsh-tui@0.10.0-beta.5'
dsh --profile tui

该安装路径不要再添加旧版 dsh-dcp;全局 dsh-tui 命令仍会查找 dsh-tui profile,
不会自动转向 tui。

如果 dsh-tui 显示 turn error · events is not iterable,优先检查其 dsh-dcp 版本和
对等 ABI。旧版 dsh-dcp 仍读取 dsh 0.1.2 已移除的 session.events,而新接口是
session.snapshotEvents();这不是 dsh-oc 与 dsh-tui 的冲突。应升级到与当前 dsh
ABI 匹配的 dsh-dcp,或仅在 dsh-tui 自己的 profile patch/诊断 overlay 中暂时禁用
dcp(- id: dcp / disabled: true),再向 dsh-dcp/dsh-tui 上游反馈。

更新与开发

稳定版本、候选版本和完整发布门禁见 docs/RELEASE.md;变更记录见
docs/CHANGELOG.md。开发环境、分支策略和自测门槛见
AGENTS.md 与 CONTRIBUTING.md。手动回归步骤见
docs/MANUAL-TEST.md,下一阶段计划见
docs/ROADMAP.md。

快速自测:
bash
pnpm run e2e:api   # 快速 API 回归
pnpm run e2e       # 全量 e2e(真实 opencode TUI)

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(chiro2001)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群