交互手册

August 29, 2026 · View on GitHub

dsh-tianshu-tui 的全部交互:快捷键、命令、输入面与交互面板。

快捷键

会话与全局

按键作用
Ctrl+N新会话
Ctrl+S恢复最近会话
Ctrl+Q退出(同 /exit;Ctrl+C 连按两次也可退出——有草稿时第一次清空草稿再按一次退出,打断中第二次直接退出)
Ctrl+.键位表 overlay(随时呼出)
Ctrl+P命令面板(模糊搜索 + Enter 回填)
Ctrl+F / Ctrl+R历史搜索(输入即过滤;Enter 确认后 n/N 下一个,p/P 上一个)

多会话切换走 /session list|switch(或 Ctrl+S 恢复最近)。

输入

按键作用
Ctrl+E$EDITOR 打开输入行(可经 editorKey 配置)
Ctrl+T中轮转向(不中断地纠正方向)
Ctrl+Enter插队:打断当前回合并立即发送草稿(cancel-and-send;需终端支持 kitty 键盘增强协议,RIVET_KITTY_KEYBOARD=1 可强制开启)
Ctrl+V粘贴剪贴板图片(无图时回退剪贴板文本)
Alt+W把选区复制到系统剪贴板(OSC52)
Tab@-路径补全;接受 slash 菜单选中项
/输入历史(slash 菜单打开时为选择;有排队消息时空输入 取回队首)
(光标末尾)接受历史建议 ghost(fish 式:输入前缀匹配最近历史条目的剩余部分,dim 显示;/ 开头走 slash ghost 优先;ghostSuggest prefs 可关)
PageUp/PageDownslash 菜单翻页;长草稿输入视窗翻页
Esc关闭菜单/overlay/检查面板;取消挂起提问

回复与工具

按键作用
Ctrl+C打断在途回合(即时)
Esc(在途)打断在途回合(对齐 Claude Code 单次 Esc;lone ESC 80ms 防误触——单独 ESC 字节刷新超时 escapeTimeoutMs 缺省 80ms,见 input-handler.ts;overlay/菜单/检查面板打开时仍先关闭)
Esc(检查面板)关闭 /config /skills /status /lsp /tasks(有草稿也关,不布防 rewind)
Esc+Esc(空闲)打开 rewind 回退面板(Claude Code 的 Esc+Esc 时间回溯;1s 双击窗口,同 /rewind;第一下布防时提示「再按 Esc 打开 rewind」;打断在途后 1s grace 期内不布防防误触)
Ctrl+O展开/收起最近推理块
Enter(空输入)切换最后一张进行中工具卡的展开(显示参数 JSON)
Shift+Tab模式循环:normal → plan → always-approve

输入轨上方默认是统一活动带(◐ N 子代理 · M 工作流 + 每项一行统计,封顶 activityBandMaxRows):子代理结束塌成 ✓ {label} · N 工具 · X tok · 12s,工作流结束再提交一行摘要。activityBand: false 回退为每条运行中子代理一行 spinner。

交互面板

按键作用
y审批卡:允许一次
p审批卡:此命令前缀不再问(仅 bash 类工具;本会话内同前缀命令自动放行)
t审批卡:记住此工具(本会话内该工具自动放行)
a审批卡:本会话放行(always-approve + 结算当前请求)
n审批卡:拒绝
fEnter审批卡:拒绝并说明(反馈文本经 steer 投递给 agent;Esc 返回选项)
Esc / Ctrl+C审批卡:取消
fEnterplan-review 反馈模式(Keep planning + 自定义反馈)
数字键结构化提问面板选项
选择器中:/(j/k)选择、Enter 应用(本会话)、S 设为默认、Esc/q 关闭/model /theme /effort 选择器(会话//key 选择器无 S)
会话列表:按今天/昨天/本周/更早分组后逐行打印/session list
会话选择器:/ 滚动(跳过分组头)/session 无参选择器(今天/昨天/本周/更早 + 标题/相对年龄,不分页)

命令全表(40 条)

会话

命令作用
/session new|list|switch <id>会话管理(无参打开会话选择器)
/fork [directive] · /branch分叉当前会话(历史复制到新子会话)
/rewind两阶段回滚(会话截断 + 可选文件回退)
/export [path]导出转录为 Markdown
/scroll分页查看器:全文浏览转录(↑↓/PgUp/PgDn 滚动、实时搜索、n/N 跳转、g/G 首尾)
/clear清空滚动区视图
/compact压缩会话上下文(需 compact 服务)

模型与模式

命令作用
/model [target] [effort] [default]查看/切换模型(无参打开选择器; Enter=本会话, S 或末尾 default=启动默认; 别名 spark-flash/spark-pro)
/effort off|high|max|auto|default设置推理等级(无参打开选择器; Enter/带参=本会话, S 或 default=启动默认; auto 回模型默认)
/preset [name] [default]查看/切换 agent 预设(列出每套的能力与工具集; footer/顶栏显示当前短名; 带参=本会话整套 agent 面; 末尾 default=新会话启动默认; 仅空白会话可换; 别名 ptc→code、creative→cordis)
/yolo [on|off]全放行模式
/density [default]切换紧凑工具卡渲染(开关=本会话; /density default=启动默认)
/glance [segment]切换 footer metrics 段显隐(如 /glance cost;无参查看现状)
/info切换输入区信息密度: full 两行(状态行+指标行, 缺省) / compact 仅状态行 / off 全关; 持久化
/vim [on|off|default]切换 vi/vim 编辑键位(default 写入启动默认)

认证

命令作用
/key · /login配置模型供应商 API 密钥(选择供应商 → 掩码输入 + 联网验证,保存即生效;/login 为别名)

面板

命令作用
/status状态面板(goal/todos/plan 投影 + 会话汇总)
/todos [all]待办卡画在输入轨上方(无参显隐; all 看全表)。默认列出进行中置顶的最多 5 条;全完成缩回一行。模型首次写入非空待办会自动出现;关掉或 /clear 后本会话不再自动开
/config [notify [on|off]]设置面板(终端通知/密度置顶;空输入 n/d。检查面板互斥,Esc 关闭)
/skills技能浏览(空输入 ↑↓/j/k 展开选中详情)
/tasks [kill <id>]任务窗格
/goal目标管理(创建/暂停/恢复/完成/阻塞)
/subagents委派树活区卡(进行中第二行、失败态;宿主有外部 run 时追加「⤷ 外部子代理」)
/workflowworkflow 运行面板(roster 在 childId 命中委派树时追加子会话 label / 运行态)
/lspLSP 诊断面板

记忆与诊断

命令作用
/remember <text>保存一条项目记忆
/memory [delete <id>]记忆浏览器
/btw <question>向后台 agent 侧问
/doctor终端诊断 + 修复指引
/mcp [tools <name>]列出 MCP server 与工具
/help [cmd]命令帮助(无参打开命令面板分组浏览+过滤; /help <cmd> 单条详情)
/changelog [all|N]版本更新内容(默认当前版本; all 全部; N 最近 N 版; 自动更新提示后查看本次改了什么)
/cost当前会话累计用量与成本估算(按模型分桶)

其他

命令作用
/theme [name] [default]切换主题(无参打开选择器,含 custom:; Enter/带参=本会话, S 或末尾 default=启动默认);auto 随终端明暗;export [name] 导出当前主题为自定义模板
自定义主题(~/.dsh-tui/themes/*.json)加载时按声明背景做对比度警告(WCAG < 3.0,不阻断);NO_COLOR 显式压制全部主题色输出。
/steer <text>中轮转向
/restart重启当前 dsh 进程(同命令重新启动;插件更新后生效)
/update检查插件更新(对照 npm latest,只查不装;发现新版给出更新命令)
/exit退出 TUI

输入面

  • Slash 菜单:输入 / 打开;模糊前缀匹配、MRU 排序、Tab 接受、Enter 提交、 参数 ghost 预览。userInvocable 技能也进菜单(🧭 标记,数据源 ctx.skills.listinvocation.userInvocable 过滤;技能目录变化经 skills/change 事件自动刷新)。 空输入框 Tab 打开的命令菜单(/ 全集)同样包含技能条目。
  • 技能手势:消息文本中任意词边界的 /技能名(kebab-case,如 /find-skills)由 harness 的 tool-skill 钩子识别为「用户显式技能调用」——命中 userInvocable 技能时 其指令体注入当轮上下文(转录侧显示为 🧭 使用技能: <name> 摘要行),未知名保持 普通文本。提交 /技能名 不会落「未知命令」;已知命令优先于同名技能(命令命名 空间客户端先行解析)。
  • @ 引用:@ 触发路径补全(Tab),提交时展开为文件摘要(@mention),带 cwd 边界 与截断降级。
  • 图片粘贴:Ctrl+V 或终端菜单粘贴;超大图提交前自适应压缩(长边 1568px 封顶, 逐级 JPEG 降质)。
  • 多行输入与 bracketed paste:粘贴多行/长文本整段进输入行,不逐行提交。 长草稿编辑:输入视窗最多 16 行(超出折叠「… 上/下 N 行」),↑↓ 按软折行 移动、PageUp/Down 翻页、Home/End/Ctrl+U/K 以逻辑行为范围;超过 100 行/10000 字的超大粘贴收纳为 [paste #N] 标记(提交时展开)。
  • Vim 键位:可选(vimEnabled);Alt+W/yank 经 OSC52 复制选区。光标随模式区分:NORMAL 反色块、insert 竖线(#55;ASCII 档 |)。insert 两键序列→Esc(vimInsertRemaps,如 {"jj":"esc"} 写入 prefs;1 秒窗防误触)。
  • 运行中排队(对标 CC queue):agent 运行时提交进输入轨上方本地队列(立即回显不直发);回合结束按序投递,中断不投递;空输入 取回队首;切会话丢弃并回显。即时纠偏走 /steer/Ctrl+T;Ctrl+Enter 插队(先打断再发,需 kitty 键盘增强)。

交互面板

  • 审批卡:挂起审批内联 diff 预览;工具可 diff 时红绿渲染,bash 类附 $ 命令 预览与危险模式标注(只警示不拦截),不可见时盲批提示。决策梯度:y 允许一次 · p 此命令前缀不再问(仅 bash 类) · t 记住此工具 · a 本会话全放行 · n 拒绝 · f 拒绝并说明(文本经 steer 投递;Esc 返回) · esc 取消; 非当前会话请求委托下一个监听者。
  • 提问面板:数字键选择、Esc 取消、重叠保护;plan-review 反馈模式(反馈走输入行,光标编辑/粘贴完备)。决策卡带 dim 分隔线与主操作 success 高亮(❯ 批准项)。
  • 错误时刻可行动:agent 错误完整落底并附恢复指引尾注(401→/key、超长→/compact、超时→);输入行为空时自动回填最近一条已投递消息, 提示行告知「可能未被完整处理」——改一下回车即可重发(成功回合清底料,有草稿不抢写)。
  • 选择器(issue #31):/model /theme /effort /session 无参打开,当前值 ● 高亮, 启动默认 ★。/model /theme /effort:Enter 仅本会话, S 应用并写启动默认。 会话与 /key 选择器不加 S。主题选择器支持实时预览:↑↓ 移动即切换主题, Enter 落定(不写 prefs)、S 写启动默认、Esc 还原打开前主题。
  • 命令面板(Ctrl+P):命令模糊搜索 + 子序列匹配,按域分组浏览(会话/配置/认证/面板/技能/系统),Enter 回填 /cmd
  • 键位表(Ctrl+.):完整快捷键清单,随时呼出。
  • 历史搜索(Ctrl+F / Ctrl+R,vim NORMAL /):两阶段——编辑段输入即过滤(所有字符含 n/N 都进搜索词,#55),Enter 确认进跳转段(n/N 下一个、p/P 上一个、再按 Enter 回编辑段);命中词行内反色高亮。

Overlay 体系

全屏 overlay(命令面板、键位表、历史搜索、rewind、记忆浏览器、分页查看器、选择器)共享同一套 生命周期:打开进 alt screen、Esc/Ctrl+C 关闭、关闭后补写暂存 scrollback。流式输出 不会盖住打开的 overlay。