dsh-spawn:无 Shell 直接执行命令的 DSH 客户端插件

前言

在 DeepSeek Harness(DSH)里,模型往往通过 Shell 工具拼管道、改目录、读文件。Shell 方便,但也容易在 PowerShell 与 Bash 语法之间纠缠,用字符串拼多步命令时也不如用结构化工具调用清晰。若希望「按 argv 直接跑程序」,并在 PTC 模式下用 spawn 配合可选的文件系统查询工具替代默认 Shell,可以安装社区插件 @snylonue/dsh-spawn。下面介绍它是什么、提供哪些能力,以及如何安装与选用预设。

这是什么

@snylonue/dsh-spawn(仓库 snylonue/dsh-spawn)由维护者 snylonue 发布,在 SkillHub 目录中归类为客户端插件。简介为「A tool to enable bashless dsh」:核心是给 DSH 提供 spawn 工具,在不经过 Shell 的情况下直接执行命令;另可选加载 stat、list_dir 两个独立入口,用于文件系统查询。

npm 包版本为 2.0.0(MIT),引擎要求 DSH 0.2.1-rc.2。

核心功能

spawn:直接 argv 执行

spawn 每次调用都会启动一个 job,并依赖 DSH 的 jobs、sandbox、sandboxPolicy、workingDirectory 等服务。前台调用会等待命令结束;若超时,job 会转入后台。基础设施类失败在前台会抛错,后台 job 记为 failed;命令非零退出码仍作为普通结果返回,与 Shell 里「命令失败但调用成功」的语义一致。

stat 与 list_dir(可选)

主包 @snylonue/dsh-spawn 只注册 spawn。需要目录列表或文件状态时,应分别加载:

  • @snylonue/dsh-spawn/stat
  • @snylonue/dsh-spawn/list-dir

顶层配置里的 tool-stat、tool-list-dir 与预设内的副本是独立声明,默认禁用顶层副本;若使用 PTC-spawn 预设,需在预设子项里改 disabled,而不是只改顶层。

工作目录与主机要求

仅支持 DSH 0.2.1-rc.2。spawn、stat、list_dir 依赖宿主机的 working-directory 服务(含切换目录、缺失目录恢复)。相对 cwd 覆盖会相对当前工作目录解析;沙箱 workspace 根目录不变。README 明确说明:没有旧版 host 探测,也没有 workspace/header cwd 回退。

PTC-spawn 预设

插件提供预设 PTC-spawn(id:ptc-spawn),基于 PTC 模式,用上述工具替代 shell。该预设默认启用 spawn、stat、list_dir 三者。若只想保留 spawn,可在 preset-ptc-spawn.config.plugins 里对对应条目设 disabled: true,例如:

- id: tool-stat
  name: '@snylonue/dsh-spawn/stat'
  disabled: true
- id: tool-list-dir
  name: '@snylonue/dsh-spawn/list-dir'
  disabled: true

README 提到:用 TypeScript 等方式组合多程序与处理输出,往往比让模型在 Bash/PowerShell 里挣扎更可控——这是设计动机,并非第三方测评结论。

安装与启用

在对应 profile 已就绪、且 npm 包已发布的前提下,按 README 安装:

dsh plugin --profile web add @snylonue/dsh-spawn

请将 web 换成你实际使用的 profile 名称。安装前请确认本机 DSH 版本为 0.2.1-rc.2,并已具备 working-directory 等相关服务;插件以当前 DSH 进程权限运行,安装前应自行查看 GitHub 源码 与 LICENSE。

若要用完整 PTC-spawn 能力栈,在 profile 配置中启用 id 为 ptc-spawn 的预设(具体字段名以你 profile 的 Cordis 补丁为准);仅主入口则只加载默认导出的 spawn。

典型用法(概念)

资料未给出完整对话示例,用法可归纳为:

  1. 安装主包后,模型通过 spawn 传入可执行文件与参数列表(argv),而非一整段 Shell 脚本。
  2. 需要列目录或 stat 时,额外加载 @snylonue/dsh-spawn/list-dir 或 @snylonue/dsh-spawn/stat,或启用 PTC-spawn 预设一次性打开三者。
  3. 需要限定当前目录时,使用 working-directory 服务支持的相对 cwd;不要假设能靠旧版 workspace 头或 header 自动定 cwd。

具体 tool schema 以发布包内类型定义(dist/index.d.ts 等)为准。

适用场景与注意

适合谁: 已在 DSH 0.2.1-rc.2 上跑 PTC 或希望减少 Shell 依赖的智能体开发者;需要 job 沙箱、显式工作目录、且能接受每次执行走 job 模型的场景。

注意:

  • 版本绑定严格,低于或高于 README / package.json 中 engines.dsh 的环境不受支持说明覆盖。
  • 社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系,DSH 生态本身是「一切皆插件」的独立社区形态。
  • 不要凭仓库名自行拼接 dsh plugin add github:...;以 README 中的 npm 安装命令为准。

结尾

@snylonue/dsh-spawn 把「直接跑程序」和可选的文件查询拆成独立工具,并通过 PTC-spawn 预设提供无 Shell 的替代路径。若要进一步了解分类与简介,可看目录页 snylonue/dsh-spawn;实现细节与安装说明以 GitHub 仓库 README 为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜