description: "可选的按轮次 tmux 位置上下文,供启用或调优 agent(智能体)的会话、window 与 pane 感知的用户与维护者阅读。"
English | 中文
dsh-tmux-context 让模型识别其 agent 进程所在的 tmux 会话、window、pane 和 pane 树布局。它仅在位置发生变化时,于每轮的第一个步骤追加一条持久、带来源的读数。若终端只继承了 tmux 环境变量,却并未在所指名的 pane 中运行,则不添加任何内容;查询失败同样不添加内容,也不会使该轮失败。本包需主动启用,且不包含在随附的 Web 或无头 profile 中。
当 agent 进程运行在 tmux 内、且模型需要知道其 window 与 pane 位置时,挂载此插件。每条读数都是持久历史中额外的一条 user 角色消息;位置未变化时不添加任何内容,因此长时会话累积很少。
在 tmux 状态发生变化的每一轮,模型会收到一条带来源标记的上下文消息,包含会话名称、window 索引与名称、pane 索引与 id、活动标志,以及紧凑的 pane 树布局。读数只发生在每轮的第一个步骤;轮次中途移动或缩放的 pane 会在下一轮反映。像素尺寸有意省略,相邻 pane 的可见内容从不采集。
最小挂载无需任何配置。refreshIntervalMs 为正值时,会额外抑制距最近一次注入不足该毫秒数的注入;省略或设为 0 时,只要 tmux 状态自上次注入以来发生变化就注入。
- name: '@deepseek-ai/dsh-tmux-context'
config:
refreshIntervalMs: 60000
| 字段 | 默认值 | 含义 |
|---|---|---|
refreshIntervalMs |
0(每个变化轮次) |
同一会话中两次持久注入之间的最小毫秒数 |
生成的配置目录是所有受支持字段及其 JSDoc 的完整真源。
只有当进程的控制终端与 pane 的 #{pane_tty} 一致时,才视为位于 tmux 中;从 tmux shell 启动的终端(VS Code 集成终端、桌面启动器)会继承变量但不在 pane 内,因此被视为不在 tmux 中。ctx.shell 缺失、环境变量不存在或读数格式非法时是空操作;执行器拒绝会被兜住并记录为警告,而不会使该轮失败。
包级约定不够用时阅读以下页面。这些页面从设计决策讲到查询所经由的执行器以及完整配置。
在 tmux 状态发生变化的每一轮,注入一条带来源标记、含以下三行的上下文消息。<window-layout> 是 tmux 紧凑的 pane 树描述;pane 与 window 的像素尺寸有意省略,相邻 pane 的内容从不采集。
tmux location (turn <turn>):
session <session>, window <index> "<name>", pane <index> <pane-id>
window active=<0|1>, pane active=<0|1>, layout <window-layout>
每条三行读数会累积,直到压缩将其遮蔽。位置未变化以及间隔抑制不会新增内容。
仅追加;新增可见内容位于可复用的请求前缀之后,不会使已有 KV Cache 条目失效。
这些限制说明 tmux 位置上下文何时不合适。它们是当前包约束。
\t,会使读数分割错误并作为非法读数跳过;常规名称不受影响。$TMUX_PANE 的 #{pane_tty} 一致时,才视为「位于 tmux 中」。这会有意排除从 tmux 祖先进程继承 $TMUX/$TMUX_PANE 的终端(如 VS Code 集成终端)。ps -o tty= 属于 POSIX;在其或 #{pane_tty} 不可用的环境中,该检查即为空操作。