dsh-minimal-ptc 0.4.4 → 0.4.7
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.en.md +32 -5
- package/README.md +32 -7
- package/lib/index.js +110 -9
- package/package.json +3 -3
- package/presets/ptc-minimal/agent.cordis.yml +16 -3
- package/presets/ptc-minimal/preset.yml +1 -1
package/README.en.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
   
|
|
4
4
|
|
|
5
5
|
> Minimal prompt x full PTC capabilities — a cleaner coding agent.
|
|
6
|
-
> Installing gives you a new agent mode: **Minimal PTC**, with Git Bash and persistent PowerShell on Windows,
|
|
6
|
+
> Installing gives you a new agent mode: **Minimal PTC**, with Git Bash and persistent PowerShell on Windows, compatible with Harness 0.1.5-rc.2 and 0.1.6-alpha.1.
|
|
7
7
|
|
|
8
8
|
## Highlights
|
|
9
9
|
|
|
@@ -11,11 +11,15 @@
|
|
|
11
11
|
- **Complete PTC surface**: provides `run_code` SDK orchestration, files and search, Shell, Skills, plan mode, goals, subagents, Ralph, and web search/fetch; the general-purpose workflow tool stays hidden as in alpha.4.
|
|
12
12
|
- **We / Let's reasoning**: the PTC SDK packs thinking and doing into one TypeScript program, orchestrating multi-step operations before executing them once. This matches the high-scoring Minimal trajectory in DeepSeek's official Project2 V4.1b runs (99/96), where reasoning is dominated by `we` / `let's` instead of the standard-like `let me` / `I` blocks seen at 91/92.
|
|
13
13
|
- **Git Bash on Windows**: ships a preset-local Git Bash executor (GIT_BASH -> Program Files\Git -> LOCALAPPDATA\Git -> PATH). The bash tool is no longer disabled on Windows.
|
|
14
|
-
- **Persistent PowerShell on Windows**: mirrors the `dsh-v0.1.
|
|
14
|
+
- **Persistent PowerShell on Windows**: mirrors the `dsh-v0.1.5-rc.1` minimal preset; `pwsh` runs as a persistent PTY session, so cwd, variables, and functions survive across calls.
|
|
15
15
|
|
|
16
16
|
## Compatibility
|
|
17
17
|
|
|
18
|
-
Verified
|
|
18
|
+
Verified with official source builds of Harness `0.1.5-rc.2` and `0.1.6-alpha.1` on 2026-09-16: all 18 components load alongside ModLens, with passing tool schemas, skill registration, offline read-only calls, real Agent preset mounting, and plugin calls through `run_code`. Uses the `cordis.patch.yml` + `dsh.bundle.patch` bundle model. Node requirements are 22.19 or later within 22.x, or 24 or later. Live external-service workflows require separate configuration and validation.
|
|
19
|
+
|
|
20
|
+
Since 0.4.6, the plugin selects the workflow provider after host startup: `workflow-ptc` on 0.1.6 and `workflow-worker-thread` on 0.1.5. Managed presets refresh when the plugin version or host runtime family changes. Local edits on the same version and runtime, and user-created presets without a marker, remain untouched. Since 0.4.7, the preset restores the official 0.1.6 `ptc` rows `present` / `command-goal` / `tool-plugin-manager` (disabled) plus `modelSelectionSettings` on subagent spawn, and a startup health check guards the `reading 'prepare'` failure modes (see Troubleshooting).
|
|
21
|
+
|
|
22
|
+
The Minimal PTC preset also mounts in a real agent and assembles `run_code` as the model-facing tool while retaining installed plugin tools and Windows Git Bash. Uses the persona `prefix` field introduced in Harness 0.1.3; use plugin 0.4.3 with older Harness versions. Since 0.4.5, the preset update marker reads the package version automatically so upgrades cannot leave an older preset because of a stale hard-coded version.
|
|
19
23
|
|
|
20
24
|
## Installation
|
|
21
25
|
|
|
@@ -34,6 +38,29 @@ Verified against source-run `@deepseek-ai/dsh@0.1.2-alpha.4` on 2026-09-02. Buil
|
|
|
34
38
|
|
|
35
39
|
4. Select **Minimal PTC** when starting a new session.
|
|
36
40
|
|
|
41
|
+
## Troubleshooting: `Cannot read properties of undefined (reading 'prepare')`
|
|
42
|
+
|
|
43
|
+
When every tool call (including `run_code`) fails with this error while sessions mount fine, the root cause is **two identities of the dsh-tools scheduler key (a Symbol) inside one process**. Two confirmed triggers:
|
|
44
|
+
|
|
45
|
+
1. **A duplicate core package inside a profile**: a third-party plugin lists `@deepseek-ai/*` under `dependencies` (it belongs in `peerDependencies`), a tarball install drags in transitive copies, or stale `node_modules` linger. Check:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Any output means trouble (should be empty)
|
|
49
|
+
ls ~/.dsh/profiles/*/node_modules/@deepseek-ai 2>/dev/null
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Fix: move the `@deepseek-ai` directory out of that profile's `node_modules` (or fix the offending plugin's dependencies and reinstall), then restart dsh.
|
|
53
|
+
|
|
54
|
+
2. **The 0.1.6-alpha host's own dual build outputs**: the `@deepseek-ai/dsh-tools` exports map routes `./types` and `./presentation` to a second compiled tree (`lib/types/*.js`) next to the bundle (`lib/index.js`) — the key splits even with zero extra copies. The root fix, in `packages/core/tools/src/index.ts`:
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
Symbol('@deepseek-ai/dsh-tools.scheduler') → Symbol.for('@deepseek-ai/dsh-tools.scheduler')
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
`Symbol.for` uses the global symbol registry, so the key stays identical across module instances and both triggers are disarmed.
|
|
61
|
+
|
|
62
|
+
**Since 0.4.7 this plugin self-checks at startup**: if a profile holds core-package copies, or the host still uses a module-local Symbol key (unpatched), it logs a warning with the matching remediation. Warnings never block startup.
|
|
63
|
+
|
|
37
64
|
## Uninstall
|
|
38
65
|
|
|
39
66
|
```bash
|
|
@@ -67,9 +94,9 @@ Detection order: `GIT_BASH` -> `Program Files\\Git` -> `Program Files (x86)\\Git
|
|
|
67
94
|
## Materialization policy
|
|
68
95
|
|
|
69
96
|
- No target directory -> write all preset files and a version marker.
|
|
70
|
-
-
|
|
97
|
+
- Plugin version or host runtime family changes -> refresh managed files.
|
|
71
98
|
- Directory exists without a marker (treated as user-created) -> leave it untouched.
|
|
72
|
-
- Upgrading: bump `version` in `package.json
|
|
99
|
+
- Upgrading: bump `version` in `package.json`; the marker reads it automatically.
|
|
73
100
|
|
|
74
101
|
## License
|
|
75
102
|
|
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
   
|
|
4
4
|
|
|
5
5
|
> 极简提示词 × PTC 全能力 —— 一个更"干净"的编码 Agent。
|
|
6
|
-
> 安装即获得新的 Agent 模式:**极简 PTC 模式**;Windows 自动启用 Git Bash 与持久 PowerShell
|
|
6
|
+
> 安装即获得新的 Agent 模式:**极简 PTC 模式**;Windows 自动启用 Git Bash 与持久 PowerShell,兼容 Harness 0.1.5-rc.2 和 0.1.6-alpha.1。
|
|
7
7
|
|
|
8
8
|
## 卖点
|
|
9
9
|
|
|
@@ -17,11 +17,15 @@
|
|
|
17
17
|
Minimal 高分轨迹一致:99/96 的两跑以 `we` / `let's` 为主,而不是
|
|
18
18
|
Standard/PTC 常见的 `let me` / `I` 长块。
|
|
19
19
|
- **Windows 保持 bash**:预设内置 Git Bash executor(自动探测 GIT_BASH → Program Files\Git → LOCALAPPDATA\Git → PATH),`bash` 工具不再在 Windows 上被禁用。
|
|
20
|
-
- **Windows 持久 PowerShell**:对齐 `dsh-v0.1.
|
|
20
|
+
- **Windows 持久 PowerShell**:对齐 `dsh-v0.1.5-rc.1` 的 minimal 预设,`pwsh` 使用持久 PTY 会话,cwd、变量、函数跨调用保留。
|
|
21
21
|
|
|
22
22
|
## 兼容性
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
已在官方源码构建的 Harness `0.1.5-rc.2` 和 `0.1.6-alpha.1` 上验证(2026-09-16):18 个组件与 ModLens 同载,工具 schema、技能注册、离线只读调用、真实 Agent 预设挂载及 `run_code` 调用插件工具通过。采用 `cordis.patch.yml` + `dsh.bundle.patch` 组合包模型。Node 要求为 22.19 及以上的 22.x,或 24 及以上。外部服务的实际业务操作需按各组件配置单独验证。
|
|
25
|
+
|
|
26
|
+
0.4.6 起,插件等待宿主启动完成后选择工作流运行时:0.1.6 使用 `workflow-ptc`,0.1.5 保留 `workflow-worker-thread`。受管理的预设会在插件版本或运行时种类变化时刷新;同版本、同运行时的本地修改以及无版本标记的自建预设保持不变。0.4.7 起预设补齐官方 0.1.6 `ptc` 的 `present` / `command-goal` / `tool-plugin-manager`(默认关闭)行与 subagent 的 `modelSelectionSettings`,并新增启动健康检查(见下文故障排查)。
|
|
27
|
+
|
|
28
|
+
另已在真实 agent 中挂载极简 PTC 预设并组装模型工具:模型入口为 `run_code`,安装的插件工具和 Windows Git Bash 均可用。沿用 0.1.3 起的 persona `prefix` 字段;更旧的 Harness 请使用插件 0.4.3。0.4.5 起,预设更新标记自动读取包版本,避免升级后仍保留旧预设。
|
|
25
29
|
|
|
26
30
|
## 安装
|
|
27
31
|
|
|
@@ -41,6 +45,29 @@
|
|
|
41
45
|
|
|
42
46
|
4. 新建会话时选择 **极简 PTC 模式**。
|
|
43
47
|
|
|
48
|
+
## 故障排查:`Cannot read properties of undefined (reading 'prepare')`
|
|
49
|
+
|
|
50
|
+
每次工具调用(含 `run_code`)都以这个错误失败、且会话在挂载期一切正常时,根因是 **dsh-tools 的调度器键(一个 Symbol)在进程内出现了两个身份**。两个已确认的触发路径:
|
|
51
|
+
|
|
52
|
+
1. **profile 里多装了一份核心包**:某个第三方插件把 `@deepseek-ai/*` 写进了 `dependencies`(应为 `peerDependencies`)、tarball 安装拖入传递副本,或旧 `node_modules` 残留。检查:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# 任一命令有输出即为中招(应为空)
|
|
56
|
+
ls ~/.dsh/profiles/*/node_modules/@deepseek-ai 2>/dev/null
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
修复:把该 profile `node_modules` 下的 `@deepseek-ai` 目录移走(或整改插件依赖后重装),重启 dsh。
|
|
60
|
+
|
|
61
|
+
2. **0.1.6-alpha 宿主自身的双构建产物**:`@deepseek-ai/dsh-tools` 的 exports 把 `./types`、`./presentation` 子路径指向第二套编译输出(`lib/types/*.js`),与打包产物 `lib/index.js` 并存时调度器键同样分裂——即使没有装任何多余副本也会中招。根治办法是把 `packages/core/tools/src/index.ts` 里的
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
Symbol('@deepseek-ai/dsh-tools.scheduler') → Symbol.for('@deepseek-ai/dsh-tools.scheduler')
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
`Symbol.for` 走全局符号注册表,跨模块实例恒等,两类触发路径同时免疫。
|
|
68
|
+
|
|
69
|
+
**本插件自 0.4.7 起在启动时自动体检**:发现 profile 内核心包副本、或宿主仍使用模块本地 Symbol 键(未打上述补丁)时,会在日志里给出对应警告与修复指引(只警告,不阻断启动)。
|
|
70
|
+
|
|
44
71
|
## 卸载
|
|
45
72
|
|
|
46
73
|
```bash
|
|
@@ -79,10 +106,8 @@ dsh-minimal-ptc/
|
|
|
79
106
|
|
|
80
107
|
## 说明
|
|
81
108
|
|
|
82
|
-
-
|
|
83
|
-
|
|
84
|
-
- 升级插件:改 `version` 并同步 `lib/index.js` 里的 `VERSION` 常量即可刷新
|
|
85
|
-
用户根目录里的预设文件。
|
|
109
|
+
- 物化策略:目标目录不存在时写入全部文件;插件版本或宿主运行时种类变化时刷新受管理文件;无标记的自建预设不覆盖。
|
|
110
|
+
- 升级插件只需更新 `package.json` 的版本;预设标记自动读取该版本。
|
|
86
111
|
|
|
87
112
|
## 许可证
|
|
88
113
|
|
package/lib/index.js
CHANGED
|
@@ -9,17 +9,26 @@
|
|
|
9
9
|
//
|
|
10
10
|
// 零运行时依赖:harness home 的解析逻辑内置(DSH_HOME 环境变量优先,
|
|
11
11
|
// 否则 ~/.dsh),与 dsh 官方规则一致。
|
|
12
|
-
import { mkdirSync, readFileSync, writeFileSync, existsSync } from 'node:fs'
|
|
12
|
+
import { mkdirSync, readFileSync, writeFileSync, existsSync, readdirSync } from 'node:fs'
|
|
13
13
|
import { homedir } from 'node:os'
|
|
14
14
|
import { join, resolve } from 'node:path'
|
|
15
15
|
import { fileURLToPath } from 'node:url'
|
|
16
|
+
import pkg from '../package.json' with { type: 'json' }
|
|
16
17
|
|
|
17
18
|
export const name = 'ptc-minimal-preset'
|
|
19
|
+
export const inject = ['appReady']
|
|
18
20
|
|
|
19
|
-
const VERSION =
|
|
21
|
+
const VERSION = pkg.version
|
|
20
22
|
const PRESET_ID = 'ptc-minimal'
|
|
21
23
|
const MARKER = '.dsh-ptc-minimal.version'
|
|
22
24
|
|
|
25
|
+
// dsh-tools keys its tool scheduler with this symbol description. On stock
|
|
26
|
+
// hosts it is a module-local Symbol(), so any second dsh-tools instance
|
|
27
|
+
// (duplicate profile copy, or the package's own dual build outputs on
|
|
28
|
+
// 0.1.6-alpha) breaks the agent-loop lookup: every tool call then fails with
|
|
29
|
+
// "Cannot read properties of undefined (reading 'prepare')".
|
|
30
|
+
const SCHEDULER_SYMBOL_DESC = '@deepseek-ai/dsh-tools.scheduler'
|
|
31
|
+
|
|
23
32
|
const packageDir = fileURLToPath(new URL('..', import.meta.url))
|
|
24
33
|
const presetSourceDir = join(packageDir, 'presets', PRESET_ID)
|
|
25
34
|
|
|
@@ -33,9 +42,10 @@ function dshHomePath(...segments) {
|
|
|
33
42
|
return resolve(base, ...segments)
|
|
34
43
|
}
|
|
35
44
|
|
|
36
|
-
function materialize(logger) {
|
|
45
|
+
function materialize(logger, modernRuntime) {
|
|
37
46
|
const dir = dshHomePath('.agent-presets', PRESET_ID)
|
|
38
47
|
mkdirSync(dir, { recursive: true })
|
|
48
|
+
const revision = modernRuntime ? `${VERSION}:ptc-runtime` : VERSION
|
|
39
49
|
|
|
40
50
|
let marker = null
|
|
41
51
|
try {
|
|
@@ -44,23 +54,114 @@ function materialize(logger) {
|
|
|
44
54
|
// 无标记:可能是首次安装,也可能是用户自建目录
|
|
45
55
|
}
|
|
46
56
|
|
|
47
|
-
if (marker ===
|
|
57
|
+
if (marker === revision) return
|
|
48
58
|
if (marker === null && existsSync(join(dir, 'agent.cordis.yml'))) {
|
|
49
59
|
logger?.warn(`dsh-minimal-ptc: ${dir} exists without our marker; leaving it alone`)
|
|
50
60
|
return
|
|
51
61
|
}
|
|
52
62
|
|
|
53
63
|
for (const file of ['agent.cordis.yml', 'preset.yml', 'gitbash-executor.mjs']) {
|
|
54
|
-
|
|
64
|
+
let content = readFileSync(join(presetSourceDir, file), 'utf8')
|
|
65
|
+
if (modernRuntime && file === 'agent.cordis.yml') {
|
|
66
|
+
content = content.replaceAll('workflow-worker-thread', 'workflow-ptc')
|
|
67
|
+
.replaceAll('`codeRuntime`', '`ptcRuntime`')
|
|
68
|
+
}
|
|
69
|
+
writeFileSync(join(dir, file), content)
|
|
55
70
|
}
|
|
56
|
-
writeFileSync(join(dir, MARKER),
|
|
71
|
+
writeFileSync(join(dir, MARKER), revision + '\n')
|
|
57
72
|
logger?.info(`dsh-minimal-ptc: materialized agent preset "${PRESET_ID}" into ${dir}`)
|
|
58
73
|
}
|
|
59
74
|
|
|
60
75
|
export function apply(ctx) {
|
|
76
|
+
ctx.effect(() => ctx.appReady.onReady(() => {
|
|
77
|
+
try {
|
|
78
|
+
materialize(ctx.logger, ctx.get('ptcRuntime') !== undefined)
|
|
79
|
+
} catch (error) {
|
|
80
|
+
ctx.logger?.warn(`dsh-minimal-ptc: preset materialization failed: ${String(error)}`)
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
healthCheck(ctx)
|
|
84
|
+
} catch (error) {
|
|
85
|
+
ctx.logger?.warn(`dsh-minimal-ptc: health check failed: ${String(error)}`)
|
|
86
|
+
}
|
|
87
|
+
}))
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Warn about the two known causes of "Cannot read properties of undefined
|
|
92
|
+
* (reading 'prepare')" before the first session hits them. Warnings only —
|
|
93
|
+
* nothing here blocks startup.
|
|
94
|
+
*/
|
|
95
|
+
function healthCheck(ctx) {
|
|
96
|
+
const logger = ctx.logger
|
|
97
|
+
|
|
98
|
+
// Cause 1 (most common in the wild): a plugin or stale install left a
|
|
99
|
+
// physical copy of @deepseek-ai/* inside some profile's node_modules. The
|
|
100
|
+
// core must come from the CLI's own dependency tree only.
|
|
101
|
+
for (const hit of findProfileCoreCopies()) {
|
|
102
|
+
logger?.warn(
|
|
103
|
+
`dsh-minimal-ptc: duplicate core package in profile: ${hit}\n`
|
|
104
|
+
+ ' A second @deepseek-ai copy breaks the tool scheduler key (module-local Symbol) '
|
|
105
|
+
+ 'and every tool call fails with "reading \'prepare\'".\n'
|
|
106
|
+
+ ' Fix: remove the @deepseek-ai directory from that profile\'s node_modules '
|
|
107
|
+
+ '(and reinstall the offending plugin with core packages in peerDependencies), then restart.',
|
|
108
|
+
)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Cause 2 (seen on stock 0.1.6-alpha): the host itself can load two dsh-tools
|
|
112
|
+
// instances (bundled lib/index.js vs per-module lib/types/*.js). It is safe
|
|
113
|
+
// only when the scheduler key survives multiple instances, i.e. the host was
|
|
114
|
+
// built with Symbol.for. Probe exactly that.
|
|
115
|
+
const status = schedulerKeyStatus(ctx.tools)
|
|
116
|
+
if (status === 'module-local') {
|
|
117
|
+
logger?.warn(
|
|
118
|
+
'dsh-minimal-ptc: this host keys the tool scheduler with a module-local Symbol '
|
|
119
|
+
+ '(unpatched dsh-tools). PTC sessions break with "reading \'prepare\'" '
|
|
120
|
+
+ 'whenever a second dsh-tools instance loads in this process.\n'
|
|
121
|
+
+ ' Fix: rebuild dsh-tools with `Symbol.for(\'@deepseek-ai/dsh-tools.scheduler\')` '
|
|
122
|
+
+ 'in packages/core/tools/src/index.ts, or keep a single dsh-tools copy.',
|
|
123
|
+
)
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Physical @deepseek-ai copies under any profile's node_modules.
|
|
129
|
+
* @returns {string[]} paths like "<profile>/node_modules/@deepseek-ai/<pkg>"
|
|
130
|
+
*/
|
|
131
|
+
export function findProfileCoreCopies(home = dshHomePath('profiles')) {
|
|
132
|
+
const hits = []
|
|
133
|
+
let profiles = []
|
|
61
134
|
try {
|
|
62
|
-
|
|
63
|
-
} catch
|
|
64
|
-
|
|
135
|
+
profiles = readdirSync(home, { withFileTypes: true })
|
|
136
|
+
} catch {
|
|
137
|
+
return hits
|
|
65
138
|
}
|
|
139
|
+
for (const profile of profiles) {
|
|
140
|
+
if (!profile.isDirectory()) continue
|
|
141
|
+
const scopeDir = join(home, profile.name, 'node_modules', '@deepseek-ai')
|
|
142
|
+
let entries = []
|
|
143
|
+
try {
|
|
144
|
+
entries = readdirSync(scopeDir, { withFileTypes: true })
|
|
145
|
+
} catch {
|
|
146
|
+
continue
|
|
147
|
+
}
|
|
148
|
+
for (const entry of entries) {
|
|
149
|
+
if (entry.isDirectory()) hits.push(join(scopeDir, entry.name))
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return hits
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* How the host's tool registry exposes the scheduler key:
|
|
157
|
+
* - 'global' — Symbol.for key works; safe across duplicate instances.
|
|
158
|
+
* - 'module-local' — registry carries a same-description local Symbol; the
|
|
159
|
+
* agent loop breaks if a second dsh-tools instance loads.
|
|
160
|
+
* - 'absent' — no tools registry / no scheduler mounted (nothing to say).
|
|
161
|
+
*/
|
|
162
|
+
export function schedulerKeyStatus(tools) {
|
|
163
|
+
if (tools == null || (typeof tools !== 'object' && typeof tools !== 'function')) return 'absent'
|
|
164
|
+
if (tools[Symbol.for(SCHEDULER_SYMBOL_DESC)] !== undefined) return 'global'
|
|
165
|
+
const local = Object.getOwnPropertySymbols(tools).some(s => s.description === SCHEDULER_SYMBOL_DESC)
|
|
166
|
+
return local ? 'module-local' : 'absent'
|
|
66
167
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-minimal-ptc",
|
|
3
|
-
"version": "0.4.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.4.7",
|
|
4
|
+
"description": "DeepSeek Harness 极简 PTC 预设:简洁提示词、run_code 工具编排、完整插件工具,以及 Windows Git Bash 和持久 PowerShell。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"exports": {
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
},
|
|
49
49
|
"homepage": "https://github.com/STARDUSTLC666/dsh-minimal-ptc#readme",
|
|
50
50
|
"engines": {
|
|
51
|
-
"node": ">=
|
|
51
|
+
"node": "^22.19.0 || >=24.0.0"
|
|
52
52
|
},
|
|
53
53
|
"scripts": {
|
|
54
54
|
"test": "node --test"
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
description: |-
|
|
69
69
|
Run commands in a PowerShell shell
|
|
70
70
|
* When invoking this tool, the contents of the "command" parameter does NOT need to be XML-escaped.
|
|
71
|
-
*
|
|
71
|
+
* Network access depends on the host environment.
|
|
72
72
|
* State is persistent across command calls and discussions with the user.
|
|
73
73
|
* Use native Windows paths (C:\...) and $env:NAME variables; this is PowerShell, not bash.
|
|
74
74
|
* Please avoid commands that may produce a very large amount of output.
|
|
@@ -131,8 +131,11 @@
|
|
|
131
131
|
|
|
132
132
|
# ── goals ───────────────────────────────────────────────────────────────────
|
|
133
133
|
|
|
134
|
-
# Only the model-facing tool. The goal SERVICE, its
|
|
135
|
-
#
|
|
134
|
+
# Only the model-facing tool plus the human command. The goal SERVICE, its
|
|
135
|
+
# session driver stay on the host plane.
|
|
136
|
+
- id: command-goal
|
|
137
|
+
name: '@deepseek-ai/dsh-command-goal'
|
|
138
|
+
|
|
136
139
|
- id: tool-goal
|
|
137
140
|
name: '@deepseek-ai/dsh-tool-goal'
|
|
138
141
|
|
|
@@ -209,6 +212,7 @@
|
|
|
209
212
|
config:
|
|
210
213
|
provider: spawn
|
|
211
214
|
toolName: subagent
|
|
215
|
+
modelSelectionSettings: true
|
|
212
216
|
backgroundMode: continuable
|
|
213
217
|
|
|
214
218
|
- id: tool-subagent-fork
|
|
@@ -282,3 +286,12 @@
|
|
|
282
286
|
name: '@deepseek-ai/dsh-agent-tool-presentation'
|
|
283
287
|
config:
|
|
284
288
|
mode: ptc
|
|
289
|
+
|
|
290
|
+
# Official `ptc` parity rows (0.1.6): the deliverables presenter and the
|
|
291
|
+
# plugin-manager tools (off by default, mirroring the official preset).
|
|
292
|
+
- id: present
|
|
293
|
+
name: '@deepseek-ai/dsh-tool-present'
|
|
294
|
+
|
|
295
|
+
- id: tool-plugin-manager
|
|
296
|
+
name: '@deepseek-ai/dsh-plugin-manager/tools'
|
|
297
|
+
disabled: true
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
name: 极简 PTC 模式
|
|
2
|
-
description:
|
|
2
|
+
description: 一句固定人格,无运行时上下文与附加指令,保留 PTC SDK 多步工具编排、文件、Shell、检索、Skills、计划、目标、子代理和工作流。Windows 上提供持久 PowerShell 与 Git Bash,自动适配 Harness 0.1.5 和 0.1.6 的工作流运行时。
|