@deepseek-ai/dsh-tool-pwsh-persistent 0.1.5-rc.2 → 0.1.6-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.i18n.yaml +1 -1
- package/README.zh.md +7 -7
- package/package.json +21 -21
package/README.i18n.yaml
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
# after editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write packages/shell/tool-pwsh-persistent/README.md
|
|
5
5
|
README.md: 6b347dfbf8745a7bc56e2c62a5040e873bc1d8e2
|
|
6
|
-
README.zh.md:
|
|
6
|
+
README.zh.md: ce8a6542b1f3494d47ba8dee01ba3630c280bc5e
|
package/README.zh.md
CHANGED
|
@@ -9,7 +9,7 @@ kind: "package-reference"
|
|
|
9
9
|
|
|
10
10
|
## 概述
|
|
11
11
|
|
|
12
|
-
`dsh-tool-pwsh-persistent` 为每个 agent
|
|
12
|
+
`dsh-tool-pwsh-persistent` 为每个 agent(智能体)提供 `pwsh` 工具,跨调用保留其当前目录、环境变量、函数与后台任务。同一 agent 的命令串行运行,不同 agent 维护相互隔离的 shell 状态。多步 PowerShell 工作应选择本包;若每条命令都应从干净状态开始,请使用 `dsh-tool-pwsh`,需要交互 stdin 时则使用 terminal 工具。请配置支持 pwsh 的后端和单条命令超时;超时或显式 `exit` 会丢弃 shell,因此下次调用从全新状态开始。
|
|
13
13
|
|
|
14
14
|
## 目录
|
|
15
15
|
|
|
@@ -54,7 +54,7 @@ kind: "package-reference"
|
|
|
54
54
|
|
|
55
55
|
### agent 可以依赖什么
|
|
56
56
|
|
|
57
|
-
命令共享每个 agent 一个 shell,因此 cwd、`$env:` 变量、函数与后台任务都会跨调用保留。结果排除私有完成标记、shell
|
|
57
|
+
命令共享每个 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 已经丢弃该前缀,结果会明确说明。
|
|
58
58
|
|
|
59
59
|
### 可能出什么问题
|
|
60
60
|
|
|
@@ -73,7 +73,7 @@ kind: "package-reference"
|
|
|
73
73
|
### 设计理念
|
|
74
74
|
|
|
75
75
|
- **`dsh-tool-bash-persistent` 的刻意孪生。** 会话注册表、轮询循环与重置约定按设计镜像持久 bash 工具([pwsh 持久 PTY Agent Note](../../../.agents/notes/archived/architecture/2026-08-11-pwsh-persistent-pty.md))。
|
|
76
|
-
- **prompt 函数就绪。** 工具安装自己的 `prompt` 函数,打印 BEL 结尾的 OSC
|
|
76
|
+
- **prompt 函数就绪。** 工具安装自己的 `prompt` 函数,打印 BEL 结尾的 OSC 标记加可打印提示符;OSC 标记携带最后的退出码,可打印提示符让每条命令都能结算,因此模型重定义 `prompt` 会把就绪降级到静默层级。
|
|
77
77
|
- **PSReadLine 回显靠锚定剥离。** PowerShell 会把提交的输入渲染回流中;标记锚定提取与包装源码剥离移除回显,而跨终端宽度换行的包装可能在部分输出结果中留下部分回显。
|
|
78
78
|
- **重置,而非修复。** 任何不确定状态——显式 `exit`、超时、发送失败、中止——都会关闭 shell 并让下一次调用从全新状态开始。
|
|
79
79
|
|
|
@@ -82,11 +82,11 @@ kind: "package-reference"
|
|
|
82
82
|
| 文件 | 职责 |
|
|
83
83
|
|---|---|
|
|
84
84
|
| [`src/index.ts`](src/index.ts) | 插件入口:shell 注册表、prompt 设置、命令包装、scrollback 轮询、提取与渲染 |
|
|
85
|
-
| — |
|
|
85
|
+
| — | 不发布运行时不变式伴生入口;适配器私有的 owner-to-shell 缓存不存在可观察的事件或数据关系。生命周期测试无需仅为不变式增加公共 API 即可验证其清理。 |
|
|
86
86
|
|
|
87
87
|
### 命令流程
|
|
88
88
|
|
|
89
|
-
首条命令通过 `ctx.terminals.spawn` 生成 shell,安装 `prompt` 覆盖,并等待就绪。随后每条命令都包装成一行物理文本——`Write-Output` 起始标记、用反引号转义进双引号字符串的命令体、`Write-Output` 结束标记加退出状态——因此 PSReadLine 对换行包装的回显无法伪造完成。工具以 1,000 行一页轮询 scrollback
|
|
89
|
+
首条命令通过 `ctx.terminals.spawn` 生成 shell,安装 `prompt` 覆盖,并等待就绪。随后每条命令都包装成一行物理文本——`Write-Output` 起始标记、用反引号转义进双引号字符串的命令体、`Write-Output` 结束标记加退出状态——因此 PSReadLine 对换行包装的回显无法伪造完成。工具以 1,000 行一页轮询 scrollback,直到出现结束标记或完成的提示符,提取区间、剥离回显的包装与提示符,并连同任何状态标记一起渲染。超时会中止截止时间、捕获部分输出并重置 shell。
|
|
90
90
|
|
|
91
91
|
</details>
|
|
92
92
|
|
|
@@ -128,7 +128,7 @@ kind: "package-reference"
|
|
|
128
128
|
|
|
129
129
|
#### 模型看到什么
|
|
130
130
|
|
|
131
|
-
命令共享每个
|
|
131
|
+
命令共享每个 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 并报告重置。
|
|
132
132
|
|
|
133
133
|
#### Token 影响
|
|
134
134
|
|
|
@@ -145,7 +145,7 @@ kind: "package-reference"
|
|
|
145
145
|
|
|
146
146
|
这些限制说明工具何时不合适或需要特别小心。它们是当前包约束,不是任务积压。
|
|
147
147
|
|
|
148
|
-
- **工具需要拥有者
|
|
148
|
+
- **工具需要拥有者 agent 与带 pwsh 方言的真实 terminal 后端**——Windows ConPTY 或 POSIX pwsh。
|
|
149
149
|
- **输入回显不可避免**——PowerShell 的 PSReadLine 会把提交的输入渲染回终端流,而且没有 `stty -echo` 等价物。标记锚定提取在完整结果中排除回显;包装源码剥离覆盖回退路径,但跨终端宽度换行的包装可能在部分输出结果中留下部分回显,受 `maxOutputChars` 设界。
|
|
150
150
|
- **模型命令内的原始 ESC 字符不受支持**——PSReadLine 会在执行前消费它们。包装器会转义它需要的控制字节(`[char]27` 构造的 OSC 标记、正文的反引号转义)。
|
|
151
151
|
- **模型重定义 `prompt` 函数会移除就绪标记**——shell 随后在静默层级而非标记快路径上结算。
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-tool-pwsh-persistent",
|
|
3
3
|
"description": "Model-facing owner-scoped persistent PowerShell tool backed by the Harness PTY service",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.6-alpha.2",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -26,32 +26,32 @@
|
|
|
26
26
|
],
|
|
27
27
|
"license": "MIT",
|
|
28
28
|
"peerDependencies": {
|
|
29
|
-
"@deepseek-ai/dsh-
|
|
29
|
+
"@deepseek-ai/dsh-terminal": "^0.1.6-alpha.2",
|
|
30
|
+
"@deepseek-ai/dsh-timeout": "^0.1.6-alpha.2",
|
|
31
|
+
"@deepseek-ai/dsh-tools": "^0.1.6-alpha.2",
|
|
30
32
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
31
|
-
"@deepseek-ai/dsh-agent": "^0.1.
|
|
32
|
-
"@deepseek-ai/dsh-timeout": "^0.1.5-rc.2",
|
|
33
|
-
"@deepseek-ai/dsh-terminal": "^0.1.5-rc.2"
|
|
33
|
+
"@deepseek-ai/dsh-agent": "^0.1.6-alpha.2"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@deepseek-ai/schemastery": "^3.18.2"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@deepseek-ai/cordis-plugin-include": "^1.0.7",
|
|
40
39
|
"@deepseek-ai/cordis-plugin-loader": "^1.0.3",
|
|
41
|
-
"@deepseek-ai/
|
|
42
|
-
"@deepseek-ai/dsh-agent": "^0.1.
|
|
43
|
-
"@deepseek-ai/dsh-
|
|
44
|
-
"@deepseek-ai/dsh-
|
|
45
|
-
"@deepseek-ai/dsh-
|
|
46
|
-
"@deepseek-ai/dsh-
|
|
47
|
-
"@deepseek-ai/dsh-
|
|
48
|
-
"@deepseek-ai/dsh-
|
|
49
|
-
"@deepseek-ai/dsh-session
|
|
50
|
-
"@deepseek-ai/dsh-
|
|
51
|
-
"@deepseek-ai/dsh-
|
|
52
|
-
"@deepseek-ai/dsh-
|
|
53
|
-
"@deepseek-ai/dsh-
|
|
54
|
-
"@deepseek-ai/
|
|
55
|
-
"@deepseek-ai/dsh-
|
|
40
|
+
"@deepseek-ai/cordis-plugin-include": "^1.0.7",
|
|
41
|
+
"@deepseek-ai/dsh-agent-loop-testkit": "^0.1.6-alpha.2",
|
|
42
|
+
"@deepseek-ai/dsh-agent": "^0.1.6-alpha.2",
|
|
43
|
+
"@deepseek-ai/dsh-llm": "^0.1.6-alpha.2",
|
|
44
|
+
"@deepseek-ai/dsh-terminal": "^0.1.6-alpha.2",
|
|
45
|
+
"@deepseek-ai/dsh-terminal-bash": "^0.1.6-alpha.2",
|
|
46
|
+
"@deepseek-ai/dsh-pwsh-local": "^0.1.6-alpha.2",
|
|
47
|
+
"@deepseek-ai/dsh-sandbox": "^0.1.6-alpha.2",
|
|
48
|
+
"@deepseek-ai/dsh-session": "^0.1.6-alpha.2",
|
|
49
|
+
"@deepseek-ai/dsh-session-projection": "^0.1.6-alpha.2",
|
|
50
|
+
"@deepseek-ai/dsh-subprocess-local": "^0.1.6-alpha.2",
|
|
51
|
+
"@deepseek-ai/dsh-system-prompt": "^0.1.6-alpha.2",
|
|
52
|
+
"@deepseek-ai/dsh-timeout": "^0.1.6-alpha.2",
|
|
53
|
+
"@deepseek-ai/dsh-tools": "^0.1.6-alpha.2",
|
|
54
|
+
"@deepseek-ai/dsh-sandbox-policy": "^0.1.6-alpha.2",
|
|
55
|
+
"@deepseek-ai/cordis": "^4.0.2"
|
|
56
56
|
}
|
|
57
57
|
}
|