← 返回列表
未验证
选择 DeepSeek Harness 在哪个 shell 中运行 agent…
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/18 · 已提供中文文档
DeepSeek Harness 插件:一个面向模型的 shell 工具,其 shell(PowerShell、cmd、Git Bash、WSL、bash、zsh、fish、sh)是用户设置,带有 Web 设置卡片,并且当沙箱无法将其限制时,会以失败关闭的方式拒绝。
综合分
29.2
GitHub 分
29.2
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add athif23/dsh-shell-select该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
信任档位:已验证本站已于 0 天前真实安装成功
- 是什么
- dsh 原生插件 · tool
- 装得上吗
- 本站已真实安装成功(非静态推断)
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 活跃:最近一次提交在 7 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
🟢实装验证通过· 2026/9/26
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/26(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-bash-local@deepseek-ai/dsh-llm@deepseek-ai/dsh-pwsh-local@deepseek-ai/dsh-sandbox@deepseek-ai/dsh-sandbox-local@deepseek-ai/dsh-settings-file@deepseek-ai/dsh-shell@deepseek-ai/dsh-subprocess@deepseek-ai/dsh-subprocess-local@deepseek-ai/dsh-tools用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-shell-select license: MIT 选择 DeepSeek Harness 在哪个 shell 中运行 agent 命令。PowerShell、Windows PowerShell、cmd.exe、Git Bash、WSL Bash、bash、zsh、fish 或系统 sh:你选一个,它会被存储为一项设置,之后每条 agent 命令都使用它。 这个选择属于部署,而不属于模型。Agent 只会得到一个 shell 工具,无法为某一条命令选择不同的 shell;而当前权限模式无法约束的 shell 会被拒绝,而不是在沙箱之外运行。 DSH 设置中的 Shell selection 卡片 功能 - 所有 agent 命令共用一个 shell。 所选 shell 会成为 ctx.shell,因此 shell 工具、hook 命令以及 harness 自身的探测都通过它运行。 随附的 bash 和 pwsh 工具会被拒绝,并给出指明 shell 的原因。 - 自动发现,并可在需要时显式覆盖。 Shell 通过 harness 自身的可执行文件解析按名称查找。当某个 shell 位于不寻常的位置,或存在两个安装时,设置 executable。 - 持久化,并可在 Web UI 中编辑。 该选择保存在你的 DSH 设置文档中的 shell-select 下,并通过 Settings → Plugins → Shell selection 卡片管理,带有 Save、Discard 和 Test 操作。 - 模型会被告知所选 shell 需要什么。 每个 shell 都带有自己的 语法说明(PowerShell 路径、cmd 变量展开、WSL 的 /mnt/... 路径、fish 的非 POSIX 语法),因此 agent 会编写与之匹配的命令。 - 在 harness 现有的沙箱内运行。 截止时间、输出限制、 后台任务和约束都原样来自 harness;此插件 不添加自己的执行机制。 快速开始 安装到 dsh profile 中,它是一个位于 ~/.dsh/profiles/ 下的 pnpm 项目: dsh plugin --profile web add dsh-shell-select 该命令会将参数转发给 profile 目录中的 pnpm,然后 为你将该包注册为 dsh.profile.bundles 中的一个 bundle 层。该列表中的现有 条目会保持不变,因此无需手动编辑。正在运行的 profile 会保持它启动时的 bundle 集合,因此请重启它: dsh web # 等同于 dsh --profile web 然后,在应用中: 1. 打开 Settings → Plugins 并展开 Shell selection。 2. 从下拉列表中选择一个 shell。默认的 Automatic 会为你 选择一个 shell,并说明它解析到了哪一个。 3. 按下 Save。在你这样做之前,编辑只是暂存,不会有任何不同的运行方式。 4. 按下 Test shell,通过该选择运行一条固定命令。 Test shell 运行的是已保存的选择,而不是卡片中暂存的编辑。 如果它 报告拒绝,那么该拒绝就是当前命令会得到的结果。 从检出安装 git clone https://github.com/athif23/dsh-shell-selectmarkdown dsh plugin --profile web add link:/absolute/path/to/dsh-shell-select link: 安装会保持检出处于实时状态,因此编辑插件并重启配置文件就足以看到变更。该插件安装到一个已经提供 harness 的配置文件中,因为它将 harness 包声明为 peer 依赖,而不是携带它们的第二份副本。 支持的 shell 与兼容性 | 平台 | 目录条目 | 通过插件执行 | 已验证的隔离 | |---|---|---|---| | Windows(主要) | pwsh、powershell、cmd、gitbash、wsl | PowerShell 5.1、cmd.exe、Git Bash、WSL Bash | cmd.exe 和 PowerShell 5.1,是。Git Bash 和 WSL Bash,否 | | Linux(次要) | bash、zsh、fish、sh、pwsh | CI 运行器上的 bash、sh 和 pwsh;独立审查中的 bash、zsh 和 sh | 是,针对 CI 运行器上的 bash | | macOS(未验证) | bash、zsh、fish、sh、pwsh | 无 | 否 | “目录条目”是指插件可以选择该 shell 并构建其参数。“通过插件执行”是指有人用它运行了 agent 命令。最后一列比前两者更严格:它意味着工作区之外的写入确实被拒绝,测试套件在运行器的配置文件承诺之处都会对此进行断言。 Windows 是主要平台。 在那里,Git Bash 和 WSL Bash 无法在沙箱使用的受限令牌下启动,因此在 workspace-write 和 read-only 下会被拒绝,包括该卡片的版本探测;它们仅在 danger-full-access 下运行。这种拒绝是有意为之,因为替代方案将是运行一个沙箱无法隔离的 shell。pwsh(PowerShell 7)受支持,在测试主机上被跳过只是因为那里没有安装它。 Linux 是次要平台。 CI 运行器通过插件执行 bash、sh 和 pwsh,并断言工作区写入拒绝,这在那里成立。一次独立审查在没有可用沙箱后端的 Linux 主机上运行了测试套件,因此在那台机器上实际被检验的是拒绝路径。zsh 和 fish 在两者上都未安装。macOS 未验证。 测试工作流仅在 Windows 和 Linux 上运行;请查看其最新运行结果,而不是相信这里的说法。 测量结果、例外情况以及仍未测试的内容见 testing.md。路由规则和执行细节见 architecture.md。 配置 设置位于 ~/.dsh/settings.yaml 中的 shell-select 命名空间下: yaml shell-select: shell: gitbash loginShell: false | 设置 | 默认值 | 含义 | |---|---|---| | shell | auto | 一个目录 id,或 auto。 | | executable | 空 | 所选 shell 的显式路径。优先于发现。无法解析的路径,或指向不同 shell 的路径,是错误,而不是搜索的提示。 | | loginShell | false | 以 -l 运行 bash 系列 shell,这会在每条命令时加载你的配置文件脚本。 | | wslDistro | 空 | WSL 发行版名称;为空则使用该发行版的默认值。 | | wslMountRoot | /mnt | 发行版挂载 Windows 驱动器的位置。 | | enableRunInBackground | true | 在 shell 工具上提供 run_in_background。 | 其余字段是继承自本地执行器的预算,一并传递过来,因此一行组合配置即可配置整个执行器:cwd、timeoutMs(120000)、maxTimeoutMs(600000)、maxOutputBytes(64000)、maxSpillBytes(67108864)和 graceMs(3000)。pwshPath 是 harness 自身的 PowerShell 路径设置,对 PowerShell 条目仍然生效,因此现有值可继续使用。 Automatic 是默认值,因为它复现了部署已有的行为:第一个解析成功的目录条目,在 Windows 上是 PowerShell(harness 自身执行器所运行的),在 Linux 上则遵循指向某个目录条目的 $SHELL。显式的 executable 覆盖会改变结果,因为指定 shell 的覆盖会声明使用该 shell:当 shell 为 auto 时,将 executable 设为某个 bash.exe 路径会运行该 bash,并使用 bash 的参数。 设置更改适用于后续调用。它绝不会改变已在准备中的调用、正在运行的进程,或已完成调用所记录的事实。 故障排除与限制 未找到 可执行文件。 插件按名称查找 shell,但什么也没找到。请安装它,或将 executable 设为其完整路径。错误信息会列出所有已探测的位置。 在当前权限模式下被拒绝。 所选 shell 无法被会话解析出的沙箱所限制。在 Windows 上,对于 workspace-write 和 read-only 下的 Git Bash 和 WSL Bash,这是预期行为。拒绝信息会指明 shell 和模式;请选择该模式能够限制的 shell。 Automatic 显示 unknown。 你已暂存了一个宿主尚未解析的 executable 路径。Automatic 是从已保存的选择中解析的,因此请保存该路径,卡片就会显示它所选择的 shell。 Test shell 报告被拒绝或选错 shell。 Test 运行的是已保存的选择。如果你有暂存的编辑,请先保存,或将其丢弃。 cmd 的怪癖。 命令会一次性传递给 cmd.exe,因此命令中的 %NAME% 会保持字面量;需要展开时请写 call echo %CD%。非 ASCII 输出取决于控制台代码页,因此可能以替换字符的形式出现。Unicode 路径和文件名不受影响。 选择器不控制的路由。 Agent 命令会经过所选 shell,但 run_code 程序主体、基于 PTY 的终端工具以及进程外子代理会生成自己的进程。完整列表及原因见 architecture.md。 Shell 选择并非破坏性命令保护。沙箱会根据会话的权限模式限制写入类访问;此插件增加了 没有破坏性命令检测,也不是安全层。其他已知限制列在 testing.md 中。 开发 sh pnpm install --frozen-lockfile pnpm test # 每个测试套件 pnpm test:execution # 仅生成真实进程的测试套件 测试会在 /.test-tmp// 下创建其夹具。它们拒绝使用真实用户配置文件内的根目录,因此位于该配置文件内的检出($HOME 中的克隆、CI 运行器)必须指定一个位于其外部的已批准根目录: sh Linux、macOS 或 Git Bash DSH_SHELL_SELECT_TEST_TMP=/var/tmp/dsh-shell-select pnpm test powershell Windows:指定一个位于配置文件之外的路径,因为 %TEMP% 位于其中 $env:DSH_SHELL_SELECT_TEST_TMP = 'D:\dsh-shell-select-test-tmp' pnpm test pnpm 是受支持的安装器,由 packageManager 固定;npm 无法表达 harness 工作区的 link: 图。有关 harness 包为何是 peer 的原因,请参见 architecture.md;有关每个测试套件涵盖的内容以及已测试的平台,请参见 testing.md。 许可证 MIT,版权所有 2026 Muhammad Athif Humam。