在智能体开发中,浏览器 Harness 与终端控制台之间常存在割裂。开发者需要频繁切换上下文,手动查询 tmux 会话状态,或遗忘哪些工作会话已被冻结。dsh-wo-tmux 插件将 tmux 工作流直接集成到 DeepSeek Harness 的工作区概览中,解决状态可见与快速接入的问题。
插件简介¶
dsh-wo-tmux 是 DeepSeek Harness (DSH) 的一个客户端插件,由 joao-paulo-santos 维护。它提供 tmux 工作区概览,支持会话状态(实时、冻结、冷存储)显示及一键终端附加功能,帮助开发者在不离开浏览器的情况下管理终端会话。
核心功能¶
-
会话状态胶囊
在工作区概览的会话头部显示状态胶囊,直观展示会话的当前状态。点击胶囊即可打开或附加终端,根据状态自动执行解冻或恢复操作。 -
Workspace Overview 子标签页
在 Workspace Overview 中提供 Tmux 子标签页,分为两个视图:- Session:显示当前工作区会话的详细状态(名称、状态芯片、解析方式、客户端数、窗口数)。
- All sessions:列出机器上的所有会话,按状态分组,支持从全局视图对会话进行管理。
-
会话操作
根据会话状态提供不同的操作选项:- 实时会话:打开控制台、冻结、快照到冷存储。
- 冻结会话:解冻、恢复、清理快照。
- 冷存储会话:恢复、清理快照。
- 所有操作均需确认,防止误操作。
-
链接与分组
支持将工作区固定到自定义会话名称,实现分组显示。这对于同名项目(如两个项目都叫api)非常有用,可通过显式链接避免冲突。 -
持久化链接
工作区与会话的链接关系持久化存储在~/.dsh/settings/wo-tmux.json,重启后依然有效。 -
会话解析优先级
插件通过以下优先级将工作区解析为会话:- 显式链接(Link Store)
- 基名匹配(Workspace Basename)
- 无匹配(需手动创建或链接)
安装与启用¶
安装前需确保已安装 DeepSeek Harness (DSH),并拥有一个配置文件(示例中使用 web profile)。系统需在 PATH 中包含 tmux 和 tmux-fridge。
- 创建插件目录并克隆依赖:
mkdir -p ~/dsh-plugins && cd ~/dsh-plugins
git clone https://github.com/joao-paulo-santos/dsh-workspace-overview.git
git clone https://github.com/joao-paulo-santos/dsh-wo-tmux.git
- 从 Harness 检出目录执行插件安装:
pnpm dsh plugin --profile web add ~/dsh-plugins/dsh-workspace-overview
pnpm dsh plugin --profile web add ~/dsh-plugins/dsh-wo-tmux
- 验证配置:
pnpm dsh --profile web --dump-config
重启 Harness 后,在 Workspace Overview 中即可看到 Tmux 子标签页,且在关联的会话头部会显示状态胶囊。
典型用法¶
- 冻结工作流:使用
tmux-fridge冻结当前正在进行的长时间运行的工作会话,保持系统资源占用最小化。 - 快速接入:点击工作区概览中的状态胶囊,直接在浏览器中打开真实的终端窗口并附加到会话,无需手动输入
tmux attach。 - 解决冲突:将两个同名项目的工作区分别链接到不同的自定义会话名称,并在 Workspace Overview 中清晰区分。
适用场景与注意事项¶
适用场景¶
- 使用 tmux-fridge 管理会话冻结与恢复的开发者。
- 需要在浏览器 Harness 与终端之间频繁切换的智能体开发者。
- 需要统一管理多台机器上 tmux 会话状态的用户。
注意事项¶
- 依赖项:必须安装
dsh-workspace-overview插件,否则客户端功能将无法生效。 - 终端模拟器:插件依赖终端模拟器。创建会话时通过
$TERMINAL环境变量指定,若未指定则探测kitty、alacritty、wezterm等常用模拟器。 - 环境变量:可通过
TMUX_FRIDGE_BIN环境变量指定tmux-fridge二进制文件的路径。 - 真实终端:插件不嵌入浏览器终端,而是生成真实的终端窗口。每次点击仅打开一个终端窗口。
- 场景限制:名称检测目前仅覆盖一对一场景(一个工作区一个会话),多对多场景未覆盖。
总结¶
dsh-wo-tmux 通过将 tmux 的会话状态管理能力引入 DSH 的工作区概览,实现了浏览器操作与终端控制的无缝衔接。它通过状态胶囊和子标签页提供了清晰的可视化界面,并通过标准化的操作流程简化了会话的冻结、恢复与管理。