dsh-opencode-tui:为 DeepSeek Harness 复用 opencode 原版 TUI 界面

前言

DeepSeek Harness(DSH)采用插件化架构,后端能力(Agent、会话、工具)强大。但在终端交互层面,往往缺乏一个成熟、交互细腻的原生 UI。dsh-opencode-tui 插件旨在解决这个问题,它通过在 DSH 进程内运行一个协议兼容层,将 opencode 官方的高质量 TUI 界面直接复用到 DSH 的驱动中,让开发者能在终端获得原汁原味的会话管理与工具调用体验。

插件介绍

dsh-opencode-tui 是一个为 DeepSeek Harness (dsh) 制作的客户端插件。它直接复用 opencode 的终端界面,并将 Agent、会话、工具和权限的驱动逻辑交给 dsh 处理。该插件由开发者 LittleFishStars 维护,遵循 MIT 许可证。

核心功能

  • 界面复用:直接复用 opencode 原版 TUI 界面,包括会话列表、消息流、工具卡片、thinking 折叠、鼠标交互与主题支持。
  • 逻辑驱动:由 dsh 负责底层的 Agent、会话、工具调用与权限管理。
  • 协议兼容:在插件进程内实现 opencode server 协议兼容层,将 TUI 的 HTTP 请求映射到 dsh。
  • 存储集成:会话与消息数据存储在 DSH 的会话存储中,支持历史会话恢复。
  • 交互细节:支持 Ctrl+C 退出对话框(默认选 No,需按 Tab 切至 Yes 后 Enter 确认),并兼容 v2 PermissionRequest 审批流程。

安装与启用

安装成功后,需在 profile 的 config 中配置以下参数(默认值仅供参考):
* binary:指定 lildax 的路径。
* preset:指定 agent preset 的 id(默认为 roster 默认值)。
* cwd:设置工作目录(默认为进程当前目录)。
* serverPort:设置兼容层端口(默认随机,也可通过环境变量 DSH_OPENCODE_TUI_SERVER_PORT 设置)。
* args:透传给 TUI 的附加参数。
启动后,会话与消息将自动保存到 DSH 的会话存储中(可通过 DSH_OPENCODE_SESSION_ROOT 重定向路径)。

注意事项与限制

  • 二进制依赖:必须具备 opencode TUI 的二进制文件(如 lildax),否则无法启动。
  • 渲染限制:由于沙箱 pty 的技术限制,侧边栏区域以及部分 flex 布局可能无法正常渲染。
  • 消息格式:兼容层要求消息格式严格对齐旧 SDK 类型。例如 UserMessage 和 AssistantMessage 通常没有 content 字段,而是需要包含 agent、model、parentID 等字段,否则会导致渲染崩溃。
  • 协议容错:旧路径(如 /config/providers)在 404 时会被 TUI 的 gracefulFetch 兜底处理,其他 404 则按 TUI 容错机制处理。

结语

dsh-opencode-tui 通过协议兼容层,成功将 opencode 成熟的 TUI 体验引入 DeepSeek Harness。它解决了终端 UI 开发成本高的问题,让开发者能专注于 Agent 逻辑本身,同时保留了原版 TUI 的交互细节与视觉体验。更多技术细节与源码,请访问项目主页或插件目录。

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

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

小夜