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 CHANGED
@@ -3,7 +3,7 @@
3
3
  ![npm](https://img.shields.io/npm/v/dsh-minimal-ptc) ![downloads](https://img.shields.io/npm/dm/dsh-minimal-ptc) ![license](https://img.shields.io/github/license/STARDUSTLC666/dsh-minimal-ptc) ![stars](https://img.shields.io/github/stars/STARDUSTLC666/dsh-minimal-ptc?style=social)
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, aligned with `dsh-v0.1.2-alpha.4`.
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.2-alpha.4` minimal preset; `pwsh` runs as a persistent PTY session, so cwd, variables, and functions survive across calls.
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 against source-run `@deepseek-ai/dsh@0.1.2-alpha.4` on 2026-09-02. Built for the cordis patch-bundle plugin model (`cordis.patch.yml` + `dsh.bundle.patch`). No runtime imports of `@deepseek-ai/*` internals.
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
- - Marker version lower than the plugin version -> refresh from the bundled files.
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` and the `VERSION` constant in `lib/index.js`.
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
  ![npm](https://img.shields.io/npm/v/dsh-minimal-ptc) ![downloads](https://img.shields.io/npm/dm/dsh-minimal-ptc) ![license](https://img.shields.io/github/license/STARDUSTLC666/dsh-minimal-ptc) ![stars](https://img.shields.io/github/stars/STARDUSTLC666/dsh-minimal-ptc?style=social)
4
4
 
5
5
  > 极简提示词 × PTC 全能力 —— 一个更"干净"的编码 Agent。
6
- > 安装即获得新的 Agent 模式:**极简 PTC 模式**;Windows 自动启用 Git Bash 与持久 PowerShell(对齐 dsh-v0.1.2-alpha.4)。
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.2-alpha.4` 的 minimal 预设,`pwsh` 使用持久 PTY 会话,cwd、变量、函数跨调用保留。
20
+ - **Windows 持久 PowerShell**:对齐 `dsh-v0.1.5-rc.1` 的 minimal 预设,`pwsh` 使用持久 PTY 会话,cwd、变量、函数跨调用保留。
21
21
 
22
22
  ## 兼容性
23
23
 
24
- 在 `@deepseek-ai/dsh@0.1.3-alpha.2` 源码模式下验证(2026-09-08;0.4.4 适配 0.1.3 的 persona `text`→`prefix` 字段改名,旧版 dsh 请用 0.4.3)。遵循 cordis 组合包补丁模型(`cordis.patch.yml` + `dsh.bundle.patch`),运行时不 import 任何 `@deepseek-ai/*` 内部模块。
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 = '0.4.4'
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 === VERSION) return
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
- writeFileSync(join(dir, file), readFileSync(join(presetSourceDir, file)))
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), VERSION + '\n')
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
- materialize(ctx.logger)
63
- } catch (error) {
64
- ctx.logger?.warn(`dsh-minimal-ptc: preset materialization failed: ${String(error)}`)
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",
4
- "description": "Minimal prompt x full PTC tools for DeepSeek Harness - aligned with the Project2 we/let's trajectory (Minimal 99/96).",
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": ">=22"
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
- * You don't have access to the internet via this tool.
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 session driver, and the
135
- # `/goal` command stay on the host plane.
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: 提示词与极简模式一致(一句固定人格,无运行时上下文与附加指令),保留 PTC 模式的全部能力:PTC SDK 多步工具编排,以及文件、Shell、检索、Skills、计划、目标、子代理和工作流。Windows 上 Shell 为持久 PowerShell + Git Bash,并对齐 dsh-v0.1.2-alpha.2 子代理配置。
2
+ description: 一句固定人格,无运行时上下文与附加指令,保留 PTC SDK 多步工具编排、文件、Shell、检索、Skills、计划、目标、子代理和工作流。Windows 上提供持久 PowerShell 与 Git Bash,自动适配 Harness 0.1.5 和 0.1.6 的工作流运行时。