D
dsh-nushell
daief/dsh-nushell
Run DeepSeek Harness's bash tool with Nushell
安装
dsh plugin --profile web add github:daief/dsh-nushellREADME
dsh-nushell
English | 中文
dsh-nushell 是一个 DeepSeek Harness Profile Bundle,用 Nushell 执行 DSH 内置的 bash 工具。
面向模型的工具名称和参数仍保持为 bash,但命令会以 nu --no-config-file -c <command> 运行。用户的 config.nu 和 env.nu 不会影响工具调用;后台任务、权限审批、沙箱、超时和输出处理继续使用 DSH 的原有机制。
前置条件
- 兼容 DSH
0.1.0-rc.7,并使用 Node.js>=22.19.0。 - 已安装 Nushell,并能通过
PATH中的nu调用。若需使用其他位置的可执行文件,请在启动 DSH 前将DSH_NU_PATH设置为其绝对路径。
安装
dsh plugin --profile web add dsh-nushell
安装后重启对应 Profile;将 web 替换为你实际使用的 Profile 名称。
本地开发与测试
先安装依赖并构建:
pnpm install
pnpm run build
生成引用本机构建产物绝对路径的补丁:
pnpm run patch:local
该命令从 cordis.patch.yml 生成未纳入 Git 的 cordis.patch.local.yml,并将 sandbox.js 和 tool.js 替换为本机 dist 目录的绝对 file:/// 路径。
使用该补丁启动 DSH:
dsh web --patch ./cordis.patch.local.yml
修改源码后,先重新构建,再运行 pnpm run patch:local。
使用方式
工具仍叫 bash,但必须编写 Nushell 语法:
ls | where type == file | get name
open package.json | get name
$env.DSH_WEB_URL
每次调用都会创建新的 Nushell 进程。请使用工具的 workdir 参数,不要依赖前一次调用的 cd 状态。
限制
- Shell 状态、别名和变量不会在工具调用之间持久化。
- 为了兼容性,公开工具名仍是
bash;插件自己的 consumer 会将其描述和系统提示固定为 Nushell 语义。 - 执行器将隔离委托给 DSH 沙箱,并按当前 runner 的拒绝特征分类文件访问拒绝和 runner 故障。
- 插件实现与 DSH
0.1.0-rc.7的 shell/sandbox 契约对齐;升级 DSH 前应先验证兼容性。