@stardustlc/dsh-suite 0.1.10 → 0.2.1
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 +2 -2
- package/README.md +2 -2
- package/docs/validation-2026-09-27.md +51 -0
- package/package.json +16 -11
- package/ptc-minimal.patch.yml +307 -0
package/README.en.md
CHANGED
|
@@ -10,7 +10,7 @@ Bundles five product lines — office flow (with dream-based memory), media stud
|
|
|
10
10
|
|
|
11
11
|
## Compatibility
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Version 0.2.1 requires Harness 0.1.7 or later; the current validation baseline is official-source **0.1.7-rc.2**, with a local `Symbol.for` tool-scheduler fix. All 18 plugins register 96 tools and 34 skills; 1182 automated checks pass and one is skipped. This release updates Calendar, Email, RSS, Cite, Code Security, Codex Port, Minimal PTC and PPT. See the [interactive validation record](docs/validation-2026-09-27.md) for completed flows and remaining work. External-service workflows need valid accounts and runtime dependencies. Use suite 0.1.10 on Harness 0.1.5/0.1.6.
|
|
14
14
|
|
|
15
15
|
## Install / Uninstall
|
|
16
16
|
|
|
@@ -91,7 +91,7 @@ node scripts/smoke-harness.mjs --harness-root C:/path/to/deepseek-harness --inst
|
|
|
91
91
|
|
|
92
92
|
Use `--install-tarballs` before release to test installation. The report must contain `{ "ok": true, "packages": [{ "name", "version", "tarball", "integrity" }] }` for the suite and all 18 components, with `sha512-...` integrity values. Only the temporary profile redirects those versions to local tarballs. The official CLI installs the suite; verification requires transitive component dependencies, no duplicate profile layers, successful startup, the complete registry and PTC mounting. Dependency installation can contact npm; this mode is not an offline test.
|
|
93
93
|
|
|
94
|
-
Contracts use the selected Harness's real `ToolRuntime` and `SkillRegistry`: required service declarations, all parameter/output schemas, skill registrations and collisions, both PTC SDKs, and the execution/rendering of 16 health fixtures plus `ppt_themes`.
|
|
94
|
+
Contracts use the selected Harness's real `ToolRuntime` and `SkillRegistry`: required service declarations, all parameter/output schemas, skill registrations and collisions, both PTC SDKs, and the execution/rendering of 16 health fixtures plus `ppt_themes`. Legacy-host checks cover the retired directory format. On 0.1.7, startup verification checks declarative preset registration and module resolution. Startup verification also mounts it in a real agent, requiring `run_code` as the model entry point and retention of plugin tools and the shell. Only these read-only output samples are executed; other business workflows rely on the component unit tests and mocked dependencies.
|
|
95
95
|
|
|
96
96
|
HyperFrames and Remotion also undergo a real registry regression: remove one registered skill and require unhealthy status, then restore the matching registration and require healthy status. The startup smoke check executes both health tools and requires all bundled skills to be active.
|
|
97
97
|
|
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
## 兼容性
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
0.2.1 需要 Harness 0.1.7 及以上,当前验证基线为官方源码构建的 **0.1.7-rc.2**(含本地工具调度器 `Symbol.for` 修复)。18 个组件共同注册 96 个工具、34 个技能,自动测试 1182 项通过、1 项跳过。本版同步日历、邮件、RSS、引用、安全扫描、Codex Port、极简 PTC 和 PPT 的更新。真实网页操作及仍待验证的项目见[本轮验收记录](docs/validation-2026-09-27.md);外部服务业务需有效账号和运行环境单独验证。Harness 0.1.5/0.1.6 请使用套件 0.1.10。
|
|
14
14
|
|
|
15
15
|
## 安装
|
|
16
16
|
|
|
@@ -107,7 +107,7 @@ node scripts/smoke-harness.mjs --harness-root C:/path/to/deepseek-harness --inst
|
|
|
107
107
|
|
|
108
108
|
发布前使用 `--install-tarballs` 验证真实安装:报告格式为 `{ "ok": true, "packages": [{ "name", "version", "tarball", "integrity" }] }`,须包含套件和 18 个组件,`integrity` 为 `sha512-...`。验证器只在临时 profile 中将指定版本映射到本地 tarball,经官方 CLI 安装套件,要求组件为传递依赖且不重复启用 profile 层,再检查实际启动、完整目录和 PTC 挂载。开发依赖可能访问 npm;这个安装模式不属于离线测试。
|
|
109
109
|
|
|
110
|
-
契约检查使用指定 Harness 的真实 `ToolRuntime` 和 `SkillRegistry`:逐个校验服务注入声明、全部工具参数与输出 schema、技能注册和重名冲突,生成两种 PTC SDK,再通过宿主执行链运行 16 个 health 与 `ppt_themes`
|
|
110
|
+
契约检查使用指定 Harness 的真实 `ToolRuntime` 和 `SkillRegistry`:逐个校验服务注入声明、全部工具参数与输出 schema、技能注册和重名冲突,生成两种 PTC SDK,再通过宿主执行链运行 16 个 health 与 `ppt_themes` 输出样例。旧宿主兼容测试会校验旧目录预设;0.1.7 启动验收检查声明式预设注册与模块解析,启动验收还会创建真实 agent 挂载预设,确认模型入口为 `run_code` 且保留插件工具与 Shell。这里只覆盖这些只读样例的返回值;发信、合成、渲染等业务流程由组件测试中的模拟依赖验证。
|
|
111
111
|
|
|
112
112
|
HyperFrames 与 Remotion 另有真实注册表回归:卸载一个已注册技能,确认 health 报告异常,再恢复相同注册并确认 health 恢复正常。启动验收也会执行这两个 health,要求全部随包技能实际生效。
|
|
113
113
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Harness 0.1.7-rc.2 插件验收记录
|
|
2
|
+
|
|
3
|
+
本轮覆盖 18 个独立插件,2026-09-27 提交当前进度。使用官方标签 `dsh-v0.1.7-rc.2` 构建,保留本地工具调度器 `Symbol.for` 修复。已完成冻结依赖安装、完整构建、构建后 CLI 版本及 Web 版本检查。隔离测试不改动日常账号配置,升级前后检查的 6 份日常配置文件哈希一致。
|
|
4
|
+
|
|
5
|
+
## 当前发布的修复
|
|
6
|
+
|
|
7
|
+
| 插件 | 版本 | 变化 |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| dsh-calendar | 0.9.0 | 新版设置表单及旧配置迁移;声明 settings 服务依赖;示例模式只读 |
|
|
10
|
+
| dsh-email | 0.14.1 | 未完成草稿不再显示已保存;连接测试只校验所选账号;错误提示对应设置字段 |
|
|
11
|
+
| dsh-rss | 0.4.1 | Fake-IP DNS 拒绝时给出具体恢复提示,保留地址校验 |
|
|
12
|
+
| dsh-cite | 0.3.4 | BibTeX 正确区分姓与名,并保护机构作者 |
|
|
13
|
+
| dsh-code-security | 0.3.4 | 无基线时的 null 输出通过宿主校验;修正 SARIF 路径与规则描述 |
|
|
14
|
+
| dsh-codex-port | 0.2.3 | 支持 CODEX_HOME,显式 codexHome 配置仍优先 |
|
|
15
|
+
| dsh-minimal-ptc | 0.5.1 | 声明健康检查使用的 tools 服务依赖 |
|
|
16
|
+
| dsh-ppt | 0.5.0 | 演讲者视图升级;全屏不可用时提供提示 |
|
|
17
|
+
|
|
18
|
+
引用姓名规则参考 [BibLaTeX 官方手册](https://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf) 的姓名输入及机构作者说明。
|
|
19
|
+
|
|
20
|
+
## 实际操作覆盖与限制
|
|
21
|
+
|
|
22
|
+
以下记录来自真实 Web 界面点击、输入、工具卡片和产物检查。健康检查、注册检查、单元测试与真实业务操作分别记录;没有把缺少账号或运行环境的项目算作业务通过。
|
|
23
|
+
|
|
24
|
+
| 插件 | 已进行的实际操作 | 当前结论与待办 |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| Calendar | 打开设置页,切换月/周视图,查看示例详情,测试缺少账号的连接;复测只读示例 | 示例新建、编辑、删除均禁用,中文周视图已截图;真实 CalDAV 读写仍需有效测试账号 |
|
|
27
|
+
| Email | 添加两个测试账号,选择服务商,检查草稿状态、保存和重启恢复;分别测试连接 | 草稿状态和所选账号错误提示已复测;未连接真实邮箱、未发送邮件 |
|
|
28
|
+
| RSS | 列表、订阅源抓取及错误卡片 | 本机 DNS 将公网源解析到 Fake-IP;新诊断在界面已确认。成功公网抓取、OPML 和阅读状态仍待测 |
|
|
29
|
+
| SQL | 用插件查询隔离 SQLite,展开输入和结果卡片 | 中文三行数据正确;只读写入拒绝的界面复测待补 |
|
|
30
|
+
| FFmpeg | 通过插件探测及剪辑,再用浏览器播放生成视频 | 视频成功生成并播放至结束;DSH 侧栏不支持该格式预览 |
|
|
31
|
+
| PPT | 生成三页中文 HTML/PPTX;独立打开 HTML,翻页、备注、总览和缩略图跳页 | 独立页面布局和上述交互已验证;DSH 侧栏 HTML 预览为空,演讲者窗口和全屏的完整浏览器验证仍待补 |
|
|
32
|
+
| Cite | 查询真实 DOI,生成引用和 BibTeX | Crossref 调用成功;发现并修复姓名格式问题,修复后自动测试通过,界面复测待补 |
|
|
33
|
+
| Code Security | 扫描指定合成源码并经审批导出 SARIF | 发现扫描结果 null 基线被宿主拒绝及导出路径错误;已修复并通过宿主扫描合约,界面复测待补 |
|
|
34
|
+
| Codex Port | 在隔离 CODEX_HOME 中发现合成插件,将 human-test 导入隔离 DSH,再查状态 | 修复后 1 个技能导入成功,注册表即时出现该技能 |
|
|
35
|
+
| Dream | 写入“项目代号是蓝鲸”的合成记忆并召回 | 实际写入与召回通过;未读取个人记忆 |
|
|
36
|
+
| FlakeFinder | 对合成 node:test 文件运行 3 轮,查看报告 | 1 个测试稳定通过、0 flaky;2 轮请求被正确拒绝(下限为 3) |
|
|
37
|
+
| HyperFrames | 健康检查、发现并读取内置主技能 | 20 个技能注册完整;本轮未执行视频渲染 |
|
|
38
|
+
| Remotion | 健康检查、发现并读取内置主技能 | 12 个技能注册完整;本轮未执行视频渲染 |
|
|
39
|
+
| Minimal PTC | 物化/声明式预设及服务注入合约 | 自动验证通过;本轮新版宿主中的模式选择和 run_code 实操待补 |
|
|
40
|
+
| Docker | 健康检查及只读 docker_ps | CLI 可调用,守护进程未启动,Windows 命名管道不存在;未修改容器 |
|
|
41
|
+
| Voice | 健康检查并实际请求合成测试句 | Edge TTS WebSocket 连接失败,未生成音频;代理配置及播放待测,ASR 未配置密钥 |
|
|
42
|
+
| Slack | 实际调用健康检查并读取缺配置提示 | 缺少 botToken;未发送消息 |
|
|
43
|
+
| DingTalk | 实际调用健康检查并读取缺配置提示 | 缺少 webhook;未发送消息 |
|
|
44
|
+
|
|
45
|
+
## 自动验证
|
|
46
|
+
|
|
47
|
+
修正了套件合约检查器对 Cordis `inject` 声明的理解:对象的键是服务名,不存在 `required` / `optional` 两个分组。检查器现在也会报告被插件捕获的服务注入异常,并增加真实宿主 `secure_scan` 的合成文件检查,避免仅健康检查成功却遗漏实际扫描的输出错误。
|
|
48
|
+
|
|
49
|
+
发布前完整验证:18 个插件共 1182 项通过、1 项跳过;96 个工具、34 个技能共同注册,全部宿主合约通过。所有自动验证使用独立目录;联网和真实凭据用例不计入离线通过数量。npm 产物与源码版本在发布后再次核对。
|
|
50
|
+
|
|
51
|
+
后续继续完成表中待办;本记录不表示全部外部业务已经验收通过。
|
package/package.json
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stardustlc/dsh-suite",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "DSH 插件全家桶:18 个组件覆盖邮件、日历、媒体创作、开发运维、消息通知与极简 PTC,一条命令安装。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dsh": {
|
|
7
7
|
"bundle": {
|
|
8
|
-
"patch":
|
|
8
|
+
"patch": [
|
|
9
|
+
"./cordis.patch.yml",
|
|
10
|
+
"./ptc-minimal.patch.yml"
|
|
11
|
+
]
|
|
9
12
|
}
|
|
10
13
|
},
|
|
11
14
|
"files": [
|
|
12
15
|
"cordis.patch.yml",
|
|
13
16
|
"README.md",
|
|
14
|
-
"README.en.md"
|
|
17
|
+
"README.en.md",
|
|
18
|
+
"ptc-minimal.patch.yml",
|
|
19
|
+
"docs/validation-2026-09-27.md"
|
|
15
20
|
],
|
|
16
21
|
"scripts": {
|
|
17
22
|
"test": "node --test \"test/*.test.mjs\"",
|
|
@@ -37,19 +42,19 @@
|
|
|
37
42
|
"dependencies": {
|
|
38
43
|
"@stardustlc/dsh-docker": "0.3.3",
|
|
39
44
|
"@stardustlc/dsh-dream": "0.3.3",
|
|
40
|
-
"dsh-calendar": "0.
|
|
41
|
-
"dsh-cite": "0.3.
|
|
42
|
-
"dsh-code-security": "0.3.
|
|
43
|
-
"dsh-codex-port": "0.2.
|
|
45
|
+
"dsh-calendar": "0.9.0",
|
|
46
|
+
"dsh-cite": "0.3.4",
|
|
47
|
+
"dsh-code-security": "0.3.4",
|
|
48
|
+
"dsh-codex-port": "0.2.3",
|
|
44
49
|
"dsh-dingtalk": "0.2.1",
|
|
45
|
-
"dsh-email": "0.
|
|
50
|
+
"dsh-email": "0.14.1",
|
|
46
51
|
"dsh-ffmpeg": "0.4.3",
|
|
47
52
|
"dsh-flakefinder": "0.3.3",
|
|
48
53
|
"dsh-hyperframes": "0.3.2",
|
|
49
|
-
"dsh-minimal-ptc": "0.
|
|
50
|
-
"dsh-ppt": "0.
|
|
54
|
+
"dsh-minimal-ptc": "0.5.1",
|
|
55
|
+
"dsh-ppt": "0.5.0",
|
|
51
56
|
"dsh-remotion": "0.3.2",
|
|
52
|
-
"dsh-rss": "0.
|
|
57
|
+
"dsh-rss": "0.4.1",
|
|
53
58
|
"dsh-slack": "0.3.1",
|
|
54
59
|
"dsh-sql": "0.4.3",
|
|
55
60
|
"dsh-voice": "0.3.4"
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
# Harness 0.1.7 declarative preset; generated from the bundled agent composition.
|
|
2
|
+
- insert:
|
|
3
|
+
- id: preset-ptc-minimal
|
|
4
|
+
name: "@deepseek-ai/dsh-agent-preset"
|
|
5
|
+
config:
|
|
6
|
+
id: ptc-minimal
|
|
7
|
+
name: 极简 PTC 模式
|
|
8
|
+
description: 简洁提示词、完整插件工具与 PTC 编排;Windows 支持 Git Bash 和持久 PowerShell。
|
|
9
|
+
order: 4
|
|
10
|
+
plugins:
|
|
11
|
+
# The `ptc-minimal` agent preset: the `ptc` (PTC 模式) capabilities with the
|
|
12
|
+
# `minimal` (极简模式) prompt.
|
|
13
|
+
#
|
|
14
|
+
# Everything in `ptc` is here unchanged — full standard capabilities plus the
|
|
15
|
+
# PTC tool presentation (`tool-presentation` with `mode: ptc`), where the
|
|
16
|
+
# model composes a TypeScript program against a generated SDK and `run_code`
|
|
17
|
+
# executes it. What differs is the persona row, taken verbatim from `minimal`:
|
|
18
|
+
# a fixed one-line persona marked `complete: true` with
|
|
19
|
+
# `includeRuntimeContext: false`, so global identity, Web orientation, tool
|
|
20
|
+
# guidance, and later assembly listeners cannot add prompt text, and runtime
|
|
21
|
+
# context snapshots are suppressed. The `agent-instructions` row from `ptc` is
|
|
22
|
+
# dropped for the same reason — its workspace instruction baselines would add
|
|
23
|
+
# user-role text the minimal prompt policy excludes.
|
|
24
|
+
#
|
|
25
|
+
# This file is an AGENT-PLANE composition. It is mounted under one agent's
|
|
26
|
+
# scope context, so every tool it registers belongs to that session alone.
|
|
27
|
+
# A service row here MUST sit inside a group carrying an `isolate` realm.
|
|
28
|
+
|
|
29
|
+
# ── identity ────────────────────────────────────────────────────────────────
|
|
30
|
+
|
|
31
|
+
# The persona is the complete system prompt (minimal-mode prompt policy).
|
|
32
|
+
# dsh 0.1.3 renamed the persona config field `text` to `prefix` (required).
|
|
33
|
+
- id: persona
|
|
34
|
+
name: '@deepseek-ai/dsh-persona'
|
|
35
|
+
config:
|
|
36
|
+
prefix: You are a helpful software engineer assistant.
|
|
37
|
+
complete: true
|
|
38
|
+
includeRuntimeContext: false
|
|
39
|
+
|
|
40
|
+
# ── shell ───────────────────────────────────────────────────────────────────
|
|
41
|
+
|
|
42
|
+
# `shell-env` stays in the HOST composition: `apps/cli/src/web.ts` injects it to
|
|
43
|
+
# publish `DSH_WEB_URL`/`DSH_WEB_MODE`. Both shell tools consume the host
|
|
44
|
+
# registry from here; their executors are host-plane too.
|
|
45
|
+
- id: tool-bash
|
|
46
|
+
name: '@deepseek-ai/dsh-tool-bash'
|
|
47
|
+
disabled: !!js process.platform === 'win32'
|
|
48
|
+
|
|
49
|
+
- id: tool-pwsh
|
|
50
|
+
name: '@deepseek-ai/dsh-tool-pwsh'
|
|
51
|
+
disabled: true
|
|
52
|
+
|
|
53
|
+
# Windows persistent PowerShell PTY stack (rc.1 minimal parity). Replaces the
|
|
54
|
+
# one-shot pwsh row on win32; the gitbash group below keeps a stateless bash
|
|
55
|
+
# tool beside it. The model-facing tool name remains `pwsh`.
|
|
56
|
+
- id: persistent-shell
|
|
57
|
+
name: cordis:group
|
|
58
|
+
group: true
|
|
59
|
+
disabled: !!js process.platform !== 'win32'
|
|
60
|
+
isolate:
|
|
61
|
+
terminals: true
|
|
62
|
+
config:
|
|
63
|
+
- id: pty
|
|
64
|
+
name: '@deepseek-ai/dsh-terminal'
|
|
65
|
+
|
|
66
|
+
- id: terminal-pwsh
|
|
67
|
+
name: '@deepseek-ai/dsh-terminal-bash'
|
|
68
|
+
disabled: !!js process.platform !== 'win32'
|
|
69
|
+
config:
|
|
70
|
+
shellDialect: pwsh
|
|
71
|
+
timeoutMs: 300000
|
|
72
|
+
|
|
73
|
+
- id: persistent-pwsh
|
|
74
|
+
name: '@deepseek-ai/dsh-tool-pwsh-persistent'
|
|
75
|
+
disabled: !!js process.platform !== 'win32'
|
|
76
|
+
config:
|
|
77
|
+
timeoutMs: 300000
|
|
78
|
+
description: |-
|
|
79
|
+
Run commands in a PowerShell shell
|
|
80
|
+
* When invoking this tool, the contents of the "command" parameter does NOT need to be XML-escaped.
|
|
81
|
+
* Network access depends on the host environment.
|
|
82
|
+
* State is persistent across command calls and discussions with the user.
|
|
83
|
+
* Use native Windows paths (C:\...) and $env:NAME variables; this is PowerShell, not bash.
|
|
84
|
+
* Please avoid commands that may produce a very large amount of output.
|
|
85
|
+
* Please run long lived commands in the background, e.g. 'Start-Job' or start a server with Start-Process.
|
|
86
|
+
|
|
87
|
+
# Windows Git Bash shell stack. The preset-local executor runs every `bash`
|
|
88
|
+
# call through Git for Windows bash, keeping the model-facing tool name and
|
|
89
|
+
# stateless semantics identical to the POSIX `tool-bash` row above. Only
|
|
90
|
+
# mounted on win32; the POSIX host keeps the official bash runner.
|
|
91
|
+
- id: gitbash-shell
|
|
92
|
+
name: cordis:group
|
|
93
|
+
group: true
|
|
94
|
+
disabled: !!js process.platform !== 'win32'
|
|
95
|
+
isolate:
|
|
96
|
+
shell: true
|
|
97
|
+
config:
|
|
98
|
+
- id: gitbash-executor
|
|
99
|
+
name: dsh-minimal-ptc/gitbash-executor
|
|
100
|
+
config:
|
|
101
|
+
# 留空:executor 自动探测 GIT_BASH → 常见安装目录 → PATH → 'bash'
|
|
102
|
+
# 如需固定路径可显式写 shellPath: 'C:\\Program Files\\Git\\bin\\bash.exe'
|
|
103
|
+
timeoutMs: 120000
|
|
104
|
+
maxTimeoutMs: 600000
|
|
105
|
+
maxOutputBytes: 64000
|
|
106
|
+
maxSpillBytes: 67108864
|
|
107
|
+
graceMs: 3000
|
|
108
|
+
|
|
109
|
+
- id: tool-bash-win
|
|
110
|
+
name: '@deepseek-ai/dsh-tool-bash'
|
|
111
|
+
config:
|
|
112
|
+
enableRunInBackground: false
|
|
113
|
+
|
|
114
|
+
# ── filesystem ──────────────────────────────────────────────────────────────
|
|
115
|
+
|
|
116
|
+
# Both register into the host `tools` registry and provide nothing, so
|
|
117
|
+
# they need no realm. The `fs` service and its policy stay in the host.
|
|
118
|
+
- id: tool-fs
|
|
119
|
+
name: '@deepseek-ai/dsh-tool-fs'
|
|
120
|
+
|
|
121
|
+
- id: tool-fs-search
|
|
122
|
+
name: '@deepseek-ai/dsh-tool-fs-search'
|
|
123
|
+
config:
|
|
124
|
+
sampleOverCapGlobResults: false
|
|
125
|
+
|
|
126
|
+
# ── background jobs ────────────────────────────────────────────────────────
|
|
127
|
+
|
|
128
|
+
# Only the model-facing controls. The task REGISTRY stays on the host plane.
|
|
129
|
+
- id: tool-jobs
|
|
130
|
+
name: '@deepseek-ai/dsh-tool-jobs'
|
|
131
|
+
|
|
132
|
+
# ── skills ──────────────────────────────────────────────────────────────────
|
|
133
|
+
|
|
134
|
+
# The skill REGISTRY lives in the host composition and is layered per scope:
|
|
135
|
+
# these rows register into THIS preset's layer of it, so they need no realm.
|
|
136
|
+
- id: skill-filesystem
|
|
137
|
+
name: '@deepseek-ai/dsh-skill-filesystem'
|
|
138
|
+
|
|
139
|
+
- id: tool-skill
|
|
140
|
+
name: '@deepseek-ai/dsh-tool-skill'
|
|
141
|
+
|
|
142
|
+
# ── goals ───────────────────────────────────────────────────────────────────
|
|
143
|
+
|
|
144
|
+
# Only the model-facing tool plus the human command. The goal SERVICE, its
|
|
145
|
+
# session driver stay on the host plane.
|
|
146
|
+
- id: command-goal
|
|
147
|
+
name: '@deepseek-ai/dsh-command-goal'
|
|
148
|
+
|
|
149
|
+
- id: tool-goal
|
|
150
|
+
name: '@deepseek-ai/dsh-tool-goal'
|
|
151
|
+
|
|
152
|
+
# ── plan mode ───────────────────────────────────────────────────────────────
|
|
153
|
+
|
|
154
|
+
# Plan state is per-agent by nature, so an entry-local realm is not a
|
|
155
|
+
# workaround here — it is the correct lifetime.
|
|
156
|
+
- id: planning
|
|
157
|
+
name: cordis:group
|
|
158
|
+
group: true
|
|
159
|
+
isolate:
|
|
160
|
+
planMode: true
|
|
161
|
+
config:
|
|
162
|
+
- id: plan-mode
|
|
163
|
+
name: '@deepseek-ai/dsh-plan-mode'
|
|
164
|
+
config:
|
|
165
|
+
section: |
|
|
166
|
+
You are in plan mode. Stay in plan mode until exit_plan_mode succeeds or the user switches the session mode. Imperative language to implement changes means plan the implementation, not execute it. A user's conversational agreement — including an answer confirming something you asked — approves nothing and does not end plan mode; fold the confirmed decision into the plan and submit it through exit_plan_mode.
|
|
167
|
+
|
|
168
|
+
Explore first. Use non-mutating reads, searches, static analysis, and checks to ground the plan in the actual repository. Do not edit or write files, change configuration, run formatters or code generation that rewrites tracked files, commit, or otherwise carry out the plan. Prefer existing functions and patterns over new machinery.
|
|
169
|
+
|
|
170
|
+
The tool catalog stays the same across modes for request-cache stability. These plan-mode rules override any later tool description or guidance that suggests using mutation tools; those tools remain listed to keep the tool catalog unchanged. Do not use todo_write to track this planning phase: it tracks implementation after an approved plan, while the plan itself belongs in exit_plan_mode.
|
|
171
|
+
|
|
172
|
+
Resolve discoverable facts by inspection. Use ask_user_question only for user-owned choices or material ambiguity that inspection cannot answer. Do not ask the user where code lives or how current behavior works when you can find out.
|
|
173
|
+
|
|
174
|
+
Make the plan decision-complete: state the goal and success criteria; group implementation changes by subsystem; identify public API, schema, and data-flow changes; cover edge cases, failure modes, tests, acceptance criteria, and explicit assumptions. Keep it concise enough to review but detailed enough that another engineer can implement it without making design decisions.
|
|
175
|
+
|
|
176
|
+
When ready, call exit_plan_mode with the complete plan markdown, starting with a # title. Make exit_plan_mode the only and final tool call in that assistant response: it presents the plan for approval, and implementation begins only in a later step after approval. Do not paste the final plan as a plain reply or ask "should I proceed?" through prose or ask_user_question. If review rejects it, incorporate the feedback and present again. If the review channel is unavailable or aborted, stay in plan mode and ask the user to switch modes manually; do not proceed with implementation.
|
|
177
|
+
|
|
178
|
+
# ── compaction ──────────────────────────────────────────────────────────────
|
|
179
|
+
|
|
180
|
+
# `compaction-basic` reads `toolResultPrune` through `ctx.get`, so the pruner
|
|
181
|
+
# must share this realm rather than sit outside it. `tokenMeter` stays HOST-side.
|
|
182
|
+
- id: compaction
|
|
183
|
+
name: cordis:group
|
|
184
|
+
group: true
|
|
185
|
+
isolate:
|
|
186
|
+
compaction: true
|
|
187
|
+
toolResultPruner: true
|
|
188
|
+
config:
|
|
189
|
+
- id: compaction-basic
|
|
190
|
+
name: '@deepseek-ai/dsh-compaction-basic'
|
|
191
|
+
|
|
192
|
+
- id: command-compact
|
|
193
|
+
name: '@deepseek-ai/dsh-command-compact'
|
|
194
|
+
|
|
195
|
+
- id: tool-result-pruner
|
|
196
|
+
name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
|
|
197
|
+
config:
|
|
198
|
+
thresholdChars: 8192
|
|
199
|
+
headChars: 4096
|
|
200
|
+
tailChars: 1024
|
|
201
|
+
|
|
202
|
+
# ── delegation and workflows ────────────────────────────────────────────────
|
|
203
|
+
|
|
204
|
+
# The `subagents` registry and its spawn/fork backends live in the HOST
|
|
205
|
+
# composition. This preset contributes the delegation TOOLS. `workflows` shares
|
|
206
|
+
# one entry-local realm here, and a consumer left outside would resolve a host
|
|
207
|
+
# registry this preset does not populate.
|
|
208
|
+
- id: delegation
|
|
209
|
+
name: cordis:group
|
|
210
|
+
group: true
|
|
211
|
+
isolate:
|
|
212
|
+
workflowEngine: true
|
|
213
|
+
config:
|
|
214
|
+
- id: tool-subagent-control
|
|
215
|
+
name: '@deepseek-ai/dsh-tool-subagent-control'
|
|
216
|
+
|
|
217
|
+
- id: tool-subagent-list-agents
|
|
218
|
+
name: '@deepseek-ai/dsh-tool-subagent-control/list-agents'
|
|
219
|
+
|
|
220
|
+
- id: tool-subagent
|
|
221
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
222
|
+
config:
|
|
223
|
+
provider: spawn
|
|
224
|
+
toolName: subagent
|
|
225
|
+
modelSelectionSettings: true
|
|
226
|
+
backgroundMode: continuable
|
|
227
|
+
|
|
228
|
+
- id: tool-subagent-fork
|
|
229
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
230
|
+
config:
|
|
231
|
+
provider: fork
|
|
232
|
+
toolName: subagent_fork
|
|
233
|
+
backgroundMode: continuable
|
|
234
|
+
|
|
235
|
+
# Product providers are host-plane singletons. Remove `disabled` from
|
|
236
|
+
# either ordinary tool row to expose that product to agents on this preset.
|
|
237
|
+
- id: tool-subagent-codex
|
|
238
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
239
|
+
disabled: true
|
|
240
|
+
config:
|
|
241
|
+
provider: codex
|
|
242
|
+
toolName: subagent_codex
|
|
243
|
+
backgroundMode: one-shot
|
|
244
|
+
maxDepth: provider-managed
|
|
245
|
+
|
|
246
|
+
- id: tool-subagent-claude-code
|
|
247
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
248
|
+
disabled: true
|
|
249
|
+
config:
|
|
250
|
+
provider: claude-code
|
|
251
|
+
toolName: subagent_claude_code
|
|
252
|
+
backgroundMode: one-shot
|
|
253
|
+
maxDepth: provider-managed
|
|
254
|
+
|
|
255
|
+
- id: workflow-ptc
|
|
256
|
+
name: '@deepseek-ai/dsh-workflow-ptc'
|
|
257
|
+
config:
|
|
258
|
+
provider: spawn
|
|
259
|
+
|
|
260
|
+
- id: tool-workflow
|
|
261
|
+
name: '@deepseek-ai/dsh-tool-workflow'
|
|
262
|
+
# Keep the engine above for `ralph`, but do not publish a second
|
|
263
|
+
# model-authored orchestration surface beside `run_code` in PTC mode.
|
|
264
|
+
disabled: true
|
|
265
|
+
|
|
266
|
+
- id: tool-ralph
|
|
267
|
+
name: '@deepseek-ai/dsh-tool-ralph'
|
|
268
|
+
config:
|
|
269
|
+
subagentProvider: spawn
|
|
270
|
+
maxRounds: 64
|
|
271
|
+
|
|
272
|
+
# ── remaining model-facing rows ─────────────────────────────────────────────
|
|
273
|
+
|
|
274
|
+
- id: tool-ask-user
|
|
275
|
+
name: '@deepseek-ai/dsh-tool-ask-user'
|
|
276
|
+
|
|
277
|
+
- id: tool-todo
|
|
278
|
+
name: '@deepseek-ai/dsh-tool-todo'
|
|
279
|
+
config:
|
|
280
|
+
allowParallelInProgress: true
|
|
281
|
+
|
|
282
|
+
# The `web` service and its search provider stay in the host composition; only
|
|
283
|
+
# the model-facing tool is per-session.
|
|
284
|
+
- id: tool-web
|
|
285
|
+
name: '@deepseek-ai/dsh-tool-web'
|
|
286
|
+
config:
|
|
287
|
+
fetch: true
|
|
288
|
+
searchTimeoutMs: 60000
|
|
289
|
+
|
|
290
|
+
# ── presentation ────────────────────────────────────────────────────────────
|
|
291
|
+
|
|
292
|
+
# PTC for this agent alone. The row waits for the host's `ptcRuntime`
|
|
293
|
+
# rather than assuming it: a deployment that composes no TypeScript runtime
|
|
294
|
+
# fails this preset at mount, naming this id, instead of at the first request.
|
|
295
|
+
- id: tool-presentation
|
|
296
|
+
name: '@deepseek-ai/dsh-agent-tool-presentation'
|
|
297
|
+
config:
|
|
298
|
+
mode: ptc
|
|
299
|
+
|
|
300
|
+
# Official `ptc` parity rows (0.1.6): the deliverables presenter and the
|
|
301
|
+
# plugin-manager tools (off by default, mirroring the official preset).
|
|
302
|
+
- id: present
|
|
303
|
+
name: '@deepseek-ai/dsh-tool-present'
|
|
304
|
+
|
|
305
|
+
- id: tool-plugin-manager
|
|
306
|
+
name: '@deepseek-ai/dsh-plugin-manager/tools'
|
|
307
|
+
disabled: true
|