DeepSeek Harness 插件

dsh-preset-run

preset_run tool for DeepSeek Harness: create a fresh agent session composed from any agent preset (e.g. router-spec / router-standard / standard / minimal / cordis) and run a task headlessly(英文原文)

跳到安装方式

来源信息

GitHub 仓库
YiGeSama/dsh-preset-run
最近更新
2026年8月16日
分类
自动化与任务
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/YiGeSama/dsh-preset-run
插件名:dsh-preset-run
作者:YiGeSama

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.md来源说明 · 只读预览
README 语言

dsh-preset-run

English | 中文

DeepSeek Harness 插件:把「web 会话 + Agent 预设」变成可编程接口。

注册一个 host-plane 工具 preset_run(preset, task) —— 用指定的 agent 预设 (如 router-spec / router-standard / standard / minimal / cordis)创建 一个全新的独立会话,执行 task,返回最终回答文本。等价于无头模拟 web UI 的 「新建会话 → 选预设 → 发消息」流程。

环境要求

  • 已安装 DeepSeek Harness >= 0.1.0-rc.6dsh CLI,web 或 headless profile)
  • Node.js >= 18(建议 20+——插件与验证脚本用到较新的 Node 特性)
  • 已配置可用的模型服务(settings.yamlagent-default-model
  • 目标预设已存在于部署的 roster 中(如 router-specminimal

这是一个 dsh 插件,不是独立 npm 包:必须通过 dsh plugin add 装进 dsh profile,仓库不打包 dsh 运行时。

安装

# 方式一:从 GitHub 安装(推荐)
dsh plugin --profile web add "github:YiGeSama/dsh-preset-run"

# 方式二:git+https 地址
dsh plugin --profile web add "git+https://github.com/YiGeSama/dsh-preset-run.git"

# 方式三:本地 clone / 源码目录
dsh plugin --profile web add "file:C:/path/to/dsh-preset-run"

> Windows 注意file: 本地路径若包含空格dsh plugin 转发给 pnpm 时可能 > 被拆断(实测 E:/BaiduSyncdisk/SD Manager/dsh-preset-run 会报 > ERR_PNPM_LINKED_PKG_DIR_NOT_FOUND)。这种情况请改用 GitHub 安装,或把仓库 > clone 到无空格路径,或使用 8.3 短路径。

安装完成后重启 web 进程生效:preset_run 是 host-plane 工具,重启后所有 会话都能调用。

dsh plugin 命令会:pnpm 安装依赖 → 检测到 package.json 的 dsh.bundle.patch 声明 → 自动把 preset-run 追加进 profile 的 dsh.profile.bundles 层列表 → 重启后 cordis.patch.yml 的插件行随 bundle 层一起装载。

依赖处理

本插件运行时 import @deepseek-ai/dsh-toolsdsh-agentdsh-llmdsh-session。它们只作为 peerDependencies 声明,不放进 dependencies

  • 这些包由承载该 profile 的 dsh harness 安装提供;
  • 一旦声明为 dependenciespnpm add 会把这些包提升进

profiles/web/node_modules/@deepseek-ai/,导致 tools 服务实例与 dsh-agent-loopTOOL_RUNTIME_SCHEDULER 符号来自两个模块实例, 任何工具调度都会崩溃(Cannot read properties of undefined (reading 'prepare'));

  • 因此仓库不包含 node_modules,也没有任何本机绝对路径/junction。

用法

会话里直接让模型调用:

preset_run("router-spec", "请调用 dev_router_status 工具并输出结果")
preset_run("minimal", "1+1=?")
preset_run("standard", "把 README.md 里的 TODO 列表整理成表格")

可选参数 timeoutMs 控制单次子会话运行的最长耗时(默认 600000ms)。

支持的预设

preset_run 使用 agentPresets roster 中的预设 id,不硬编码预设列表。

本插件自身支持 dsh 官方默认的 4 个预设(随 dsh 自带,无需额外安装):

预设说明
standard标准完整工具目录
code代码模式
minimal极简预设,适合简单问答
cordisCordis 调试/开发相关预设

另外 2 个路由预设来自第三方插件yjh051108/dsh-router-standard,不属于本插件,需单独安装后才会出现在 roster 中):

预设说明
router-spec首轮只暴露核心工具(read/edit/glob/grep + shell),首次工具调用后开放完整目录
router-standard标准路由预设

实际可用的预设以部署的 roster 为准(agentPreset.list 可查看)。

工作原理

  • 预设应用走官方路径agentPresets.mount(agentCtx, presetId) 在 agent

工厂的 setup(agentCtx) 钩子里调用(agent 尚未发布,装载失败则整个创建回滚), 预设 id 同时写入会话 header(meta.agentPreset)。这与 web 前端新建会话的后端 实现(dsh-host-apiproxycomposeAgent/ensureSession)完全一致,不是 loader --patch 硬塞。

  • 模型路由:读取 agentDefaultModel.currentSelection()(即 settings.yaml 的

agent-default-model),经 installModelSelection 挂到子 agent, provider/model/effort 一起生效。

  • 任务执行agent.followup(createUserMessage(task)) 唤醒驱动,

agent.whenIdle() 等待运行结束,然后从会话事件日志汇总最后一段 assistant 文本 与 turn/end 的 reason。没有正常结束标记(turn/end)的运行一律按失败返回 (严格模式,即使已产生部分文本),非 completed 的结局同样按失败处理(附带已有 部分文本)。

  • 清理:返回结果后 dispose() 子 agent,会话从注册表移除,不残留 UI 会话。

调用方(exec.signal)中止或超时都会先 agent.cancel() 再退出。清理出错只记录 日志,绝不覆盖子会话自身的结果/报错

安全注意

  • preset_run任何能调用它的会话都能开子会话跑任务,能力很强。多用户或

不可信环境部署时,务必确认只有受信调用方能触达它。

  • 子会话沿用部署的默认权限预设(新会话默认的 sandbox + approval);在默认

workspace-write + ask 的部署里,子 agent 若需要提权会进入审批流程而无人应答, 可能阻塞到超时。需要无人工介入时请把默认权限预设配成 danger-full-access (settings.yaml 或环境 DSH_PERMISSION_MODE=danger-full-access)。

  • 子会话是一次性的:返回文本后即销毁,不留历史。

验证

已在 @deepseek-ai/dsh 0.1.0-rc.6 + tokenrythm/deepseek-v4-flash-0731 实测全过。

# 1. 起一个验证实例(与正式实例同 profile,另开端口)
dsh web --port 3083

# 2. 跑验收脚本(内部走 web 的 JSON-RPC:建会话→发消息→等结果→查目录/日志)
node verify-preset-run.mjs http://127.0.0.1:3083

实测输出要点:

  • roster 含 router-spec / minimal(预设目录生效);
  • router-spec 会话的提升后目录包含 dev_router_status,且子会话实际调用

成功,返回 router-mode=spec / mode=1.00 (band=react) / core=[read, write, edit] / override=no

  • minimal 会话回答 1+1=2
  • 一个 standard 父会话两次调用 preset_run 工具本身(router-spec 子会话

输出 dev_router_status 结果;minimal 子会话回答 1+1=2),全部中继成功。

注意事项

  • router-spec 预设的设计是首轮只暴露核心工具(read/edit/glob/grep + shell),

首次工具调用后才开放完整目录 —— 让子会话调用 dev_router_status 时,任务文本 应引导它先执行一次 shell 命令(如 pwd)再调。

致谢

  • 想法与需求:YiGeSama(本仓库所有者)
  • 实现:由两个 AI 助手协作完成——dsh(DeepSeek Harness)侧的助手负责核心实现,Hermes 侧的助手负责统筹、审查与工程化。

许可证

MIT —— 见 [LICENSE](LICENSE)。