omp packages

dsh-ctui0.1.1

Oh My Pi (OMP) style interactive TUI for DeepSeek Harness agents — /mode agent presets, MCP & skills management, double-Esc rewind. npm 一键安装。

flashingchen Published 2 months ago BSD-3-Clause ~38 downloads/mo

Built for omp

The author tagged this package oh-my-pi.

Did it work for you?

Result

One report per person. A new report replaces your old one.

Reports 0

No reports yet.

Readme

dsh-ctui — Oh My Pi 风格的 DeepSeek Harness TUI

DeepSeek Harness 官方没有终端 TUI——dsh-ctui 来补位:Oh My Pi(OMP) 视觉语言的全屏交互终端,覆盖 DSH-TUI 家族(dsh-cc-tui)的全部能力, 并新增 /mode 四模式(agent preset,可靠持久化)、TUI 内直接管理 MCP 与 Skills、npm 一键安装。

类型 状态

界面一览(OMP 风格)

  • OMP 主题色系:accent 金 #febc38、链接蓝 #0088fa、暖色用户消息底 #221d1a、VS Code Dark+ 语法高亮、markdown 标题金色/行内代码浅紫。
  • OMP 布局骨架:无鲸鱼/大字顶栏,启动即消息区;用户消息是整块暖色 铺底(无 ❯ 指针、无气泡框),助手消息为纯 markdown(无 ● 圆点), 工具调用为单行活动行(spinner/状态图标 + 工具名 + 参数,成功/失败用 toolSuccessBg/toolErrorBg 底色,结果缩进展示)。
  • 状态行在编辑器边框内(OMP "main status in editor border"):输入区是 带边框的多行编辑器,顶边框下第一行就是分段状态栏——#121212 深色条 + 分段色(模式金 · 模型粉 · 路径青 · git 绿/黄 · 上下文紫 · spend 青 · cost 橙),上下文分段进度条 + 实时 TPS 仪表保留,下面才是输入行。
  • 思考边框色阶:thinking 块左侧边框按推理力度着色(off 灰 → low 蓝 → medium 亮蓝 → high 紫 → xhigh 浅紫);流式时折叠为 OMP 思考 dots 脉冲 (✻✼❉❊✺✹✸✶),回合结束自动收起为静态 glyph,Ctrl+O 展开全文。
  • 双击 Esc 时间回溯(rewind):把对话回滚到任意一条历史消息,DSH 会话 fork 后原样重放,消息自动回到输入框可编辑重发。
  • 完整交互细节:/ 命令菜单(竖排、Enter 执行、Tab 补全)、? 快捷键菜单、 Ctrl+R 历史搜索、@ 文件补全、/ 全文搜索、Shift+Enter 多行、消息选择 模式(Shift+↑)、滚动置顶「当前提示词」与「↓ N 新消息」药丸、鼠标选择即 复制(全屏模式)。

npm 一键安装

前置:官方 dsh CLI 与 pnpm(npm install -g @deepseek-ai/dsh 与 npm install -g pnpm)。

# 一条命令装全局 CLI
npm install -g dsh-ctui

# 启动(首次运行自动初始化 profile,之后秒开)
dsh-ctui

# 恢复上次会话
dsh-ctui --resume

dsh-ctui 启动器做的事:检测 dsh CLI → 首次运行自动执行 dsh plugin --profile ctui add dsh-ctui(官方 CLI 自动初始化 $DSH_HOME/profiles/ctui,pnpm 安装并把本包追加为 bundle 层)→ dsh --profile ctui 启动。全程一条命令,无需改任何配置文件。

等价的手工路径(不装全局 CLI 也可以):

sh install.sh          # 或手工:dsh plugin --profile ctui add dsh-ctui
dsh --profile ctui

Windows 用户可用仓库根目录的 dsh-ctui.cmd(等价,且 --resume 恢复上次 会话)。

/mode — 四种模式(agent preset)

/mode 切换的是 DSH 的 agent preset(官方 dsh-agent-presets 名册),四种出厂模式:

模式 preset 说明
standard 标准 功能完整的编码 Agent:文件编辑、Shell、文件/网页检索、Skills、计划、目标、子代理、工作流
code 代码 标准模式的全部能力 + Code Mode SDK:模型用一个 TypeScript 程序组合多步操作
minimal 极简 仅持久 bash 与 str_replace_editor 的双工具 Agent
cordis 创造 标准能力 + 读写自身运行时的 Cordis 工具集,用于创作新 preset

用法:

/mode            # 打开选择器(↑/↓ 选择,Enter 切换)
/mode code       # 直接切换
/mode status     # 查看当前模式与持久化状态

持久化保证(单真源,绝不回退):

  • 选择先写盘后生效:写不进 ~/.dsh-ctui/mode.json 的切换会被拒绝,界面 永远不会显示一个重启后就消失的模式。
  • 写入是原子写(临时文件 + rename),崩溃也不会留下截断文件。
  • 空白会话(尚未产生任何轮次)立即生效;已开始的会话受官方 blank-only 规则锁定,选择会保存为默认并显示为 mode: A · 会话:B,/new 或下次启动 生效——已选 A 绝不会悄悄变回 B。
  • 重启后新会话用 ~/.dsh-ctui/mode.json 里的模式创建;cordis.yml 里显式 配置的 mode 键优先于运行时选择(部署优先)。
  • 旧版 dsh-cc 的选择(~/.dsh-cc/agent-preset.json 或 ~/.dsh-ctui/agent-preset.json,preset 键)会自动迁移。
  • 验证:pnpm test 里的 verify-mode-prefs 覆盖写入/读取/原子性/损坏文件/ 重启不回退全部用例。

MCP — TUI 内直接管理

/mcp 打开交互管理器,管理 ~/.dsh-ctui/mcp.json(TUI 管理的服务器):

/mcp            # 面板:列出服务器(● 启用 / ○ 停用 · 工具数)
/mcp status     # 文本报告

面板操作:a 添加(表单:传输方式 1=stdio / 2=streamable-http → serverName → command/url → args)、space/x 启停、d 删除(再按 y 确认)、r 刷新工具列表、Esc 关闭。

  • 即时生效,无需重启:启用/添加的服务器通过官方 @deepseek-ai/dsh-mcp-client 动态挂载,工具以 mcp__<服务器>__<工具> 注册进运行时;停用/删除立即断开。
  • 与 /mode 同一持久化契约:先写盘后挂载,写失败拒绝操作。
  • 经典部署方式(profile 的 cordis.patch.yml 里 insert mcp 行)不受影响, /mcp status 同样能看到这些服务器。

Skills — TUI 内直接管理

/skills 打开技能管理器,列出注册表里的全部技能(ctx.skills.list()):

/skills         # 面板:● 启用 / ○ 停用 · 描述 · 可调用性
/skills status  # 文本报告(总数/启停清单)

面板操作:space/x/Enter 启停、r 刷新、Esc 关闭。

  • 停用即时生效:被停用的技能从模型可见目录(loadedContext.skills)移除, 模型不再看到它;启用后立即恢复。状态持久化在 ~/.dsh-ctui/skills-state.json(原子写,先写盘后生效)。
  • 技能本体不动:~/.dsh/skills、项目 .dsh/skills、.agents/skills、 各 preset 自带的 skills 目录照常被扫描。

快捷键

按键 功能
Esc Esc 时间回溯(rewind 选择器)
/ 命令菜单(/mode /mcp /skills /new /compact /resume …)
? 快捷键帮助
Ctrl+R 历史搜索
Ctrl+O 展开/折叠全部 thinking 与工具详情
Ctrl+T 切换加载上下文面板
Ctrl+E 展开折叠的早期消息
Ctrl+C 中断当前回合(双击退出)
Ctrl+D 退出
@ 文件补全
Shift+Enter 多行输入
Shift+↑ 消息选择模式
↑/↓ 历史 / 选择器导航
Tab 命令补全

主题

OMP 色系内置三套:dark(默认,OMP dark 移植)、light(OMP light 移植)、 dark-ansi(16 色终端回退)。启动时自动探测终端背景。

/theme          # 选择器
/theme light    # 直接切换

自定义主题放 ~/.dsh-ctui/themes/<名字>.json(base 必填,colors 覆盖 任意主题键;所有主题键见 src/theme.ts 的 Theme 接口)。选择持久化在 ~/.dsh-ctui/theme.json。

配置(profile cordis.patch.yml)

$DSH_HOME/profiles/ctui/ 下只有 cordis.patch.yml(你的补丁层,顶层 YAML 数组,!!js 可用)。常用覆盖:

- id: ctui
  config:
    provider: deepseek-official   # LLM 路由
    model: deepseek-v4-flash      # 模型
    effort: max                   # 顶栏/状态栏启动显示的思考深度
    activity: true                # 工作状态行开关
    activityFrames: claude        # 指示器预设:claude/moon/comet/dots/…
    cwd: !!js process.cwd()       # 工作目录
    fullscreen: true              # 备用屏幕全屏模式
    mode: standard                # 部署级 mode(优先于 /mode 运行时选择)

构建与测试

pnpm install
pnpm build          # tsc
pnpm test           # 模式持久化 / MCP 存储 / skills 状态 验证脚本
pnpm tui            # 从仓库直接启动(等价于 bin/dsh-ctui.js)

许可证

BSD-3-Clause。本项目是 dsh-cc-tui 的派生(同许可证),视觉语言致敬 Oh My Pi(OMP)主题体系 (can1357/oh-my-pi)。