description: "面向模型的持久 pwsh 工具,供选择、配置或排查跨调用保留的按所有者隔离 PowerShell 状态的使用者与维护者阅读。"
English | 中文
dsh-tool-pwsh-persistent 为每个 agent(智能体)提供 pwsh 工具,跨调用保留其当前目录、环境变量、函数与后台任务。同一 agent 的命令串行运行,不同 agent 维护相互隔离的 shell 状态。多步 PowerShell 工作应选择本包;若每条命令都应从干净状态开始,请使用 dsh-tool-pwsh,需要交互 stdin 时则使用 terminal 工具。请配置支持 pwsh 的后端和单条命令超时;超时或显式 exit 会丢弃 shell,因此下次调用从全新状态开始。
在 agent 需要在命令之间保持 PowerShell 状态的任何组合中加载本插件——它是 dsh-tool-pwsh 的持久对应物,用于依赖跨调用状态的工作。它注册 pwsh 工具,需要 ctx.tools 与 ctx.terminals 服务,并在执行时需要拥有者 agent 会话。
当工作依赖跨调用 PowerShell 状态时选择持久工具;当每条命令都应从已知、干净的环境开始时选择 dsh-tool-pwsh。这里不支持需要交互 stdin 的命令——读取输入的前台子进程会一直阻塞到命令超时,随后重置 shell——因此交互工作属于 terminal 工具。
默认的 shell 后端通过配置了 shellDialect: pwsh 的 dsh-terminal-bash 实例启动 PowerShell shell;部署方可以注册其他 pwsh 方言 PTY 后端并按名称选择。
- name: '@deepseek-ai/dsh-terminal'
- name: '@deepseek-ai/dsh-terminal-bash'
config:
shellDialect: pwsh
- name: '@deepseek-ai/dsh-tool-pwsh-persistent'
| 字段 | 默认值 | 含义 |
|---|---|---|
backendType |
shell |
用于每个 agent shell 的已注册 PTY 后端 |
timeoutMs |
300,000 |
单条命令的墙钟上限;超时关闭 shell |
maxOutputChars |
16,000 |
保留的命令输出字符上限;固定诊断信息在其后追加 |
description |
Run commands in a persistent PowerShell shell. State, including the current directory and exported environment variables, persists across calls for this agent. |
面向模型的环境约定;部署方可描述自己的环境 |
生成的配置目录是每个受支持字段及其 JSDoc 的穷尽式真源。
命令共享每个 agent 一个 shell,因此 cwd、$env: 变量、函数与后台任务都会跨调用保留。结果排除私有完成标记、shell 提示符与回显的输入行。非零的包装命令追加 [exit code: N]——命令运行原生程序时给出确切原生退出码,PowerShell 终止错误则为 1。在报告该状态前就退出的 shell 改为追加 [shell exited: code N]、[shell killed by signal: SIG] 或 [shell exited](Windows 强制终止报告 exit 1 且没有信号),然后重置并告诉 agent 下一次调用从全新状态开始。长输出保留最早的已保留前缀并附裁剪通知;若 terminal 已经丢弃该前缀,结果会明确说明。
没有拥有者 agent 会话的调用会以 pwsh requires an owning agent session 失败,没有 pwsh 方言 PTY 后端的组合会激活该工具,但首次调用以 no PTY backend registered for "shell" 失败。模型重定义 prompt 函数会移除就绪标记,shell 随后在静默层级而非标记快路径上结算。命令内的原始 ESC 字符会在执行前被 PSReadLine 消费,不受支持。超时或取消会关闭不确定的 shell、丢弃结果并报告重置。
当包级约定不够用时阅读以下页面。它们从 terminal 家族逐步进入 seam、后端,以及持久 shell 设计背后的设计笔记。
ctx.terminals 服务。shellDialect: pwsh。pwsh 参数 schema 的确切内容。生成的 pwsh schema,包括配置的 description。本插件不贡献独立的系统提示词区段;人设与环境指引由部署方负责。
pwsh 可见期间产生固定 schema 开销。
只要配置的描述与 schema 不变,前缀就保持稳定。
命令共享每个 agent 一个 shell,因此 cwd、$env: 变量、函数与后台任务都会跨调用保留。结果排除私有完成标记、shell 提示词与回显的输入行(PSReadLine 会把提交的输入渲染回流中;标记锚定提取与包装源码剥离会移除它)。非零的包装命令追加 [exit code: N]——命令运行原生程序时给出确切原生退出码,PowerShell 终止错误则为 1。在报告该状态前就退出的 shell 改为追加 [shell exited: code N]、[shell killed by signal: SIG],或后端两者都未提供时的 [shell exited](Windows 强制终止报告 exit 1 且没有信号),然后重置并告诉模型下一次调用从全新状态开始。长输出保留最早的已保留前缀并附裁剪通知;若 terminal 已经丢弃该前缀,结果会明确说明。超时返回有界部分输出、关闭不确定的 shell 并报告重置。
依数据而定。maxOutputChars 限制保留的命令输出;固定的裁剪、丢失前缀、状态、超时与重置诊断可能延长结果。
仅追加的工具结果位于可复用请求前缀之后。
这些限制说明工具何时不合适或需要特别小心。它们是当前包约束,不是任务积压。
stty -echo 等价物。标记锚定提取在完整结果中排除回显;包装源码剥离覆盖回退路径,但跨终端宽度换行的包装可能在部分输出结果中留下部分回显,受 maxOutputChars 设界。[char]27 构造的 OSC 标记、正文的反引号转义)。prompt 函数会移除就绪标记——shell 随后在静默层级而非标记快路径上结算。[Console]:: 编码固定与 prompt 标记。命令仍可通过可打印提示词与静默层级结算,但非 ASCII 输出可能跟随宿主代码页。