site-chenwei/dsh-default-overrides ↗★ 1

dsh-default-overrides

Configurable Bash and PowerShell overrides for the DSH standard preset. 适合需要自定义Shell模式、环境变量或Persona的DSH高级用户。

Package
dsh-default-overrides
Compatibility
Unverified
Version
0.3.0
License
MIT
Last updated
Sep 24, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:site-chenwei/dsh-default-overrides

配置

将配置合并到实际 profile 的 cordis.patch.yml(位置为 $DSH_HOME/profiles/ /cordis.patch.yml)。这里只覆盖 bundle 已创建的条目,不使用 insert。下面列出全部配置面,按需删减,未写出的选项保持默认;Windows 路径示例见 examples/cordis.patch.yml。

- id: local-dsh-default-overrides
  config:
    shellMode: persistent-bash
    bashPath: /bin/bash
    timeoutMs: 300000
    envContext: true
    disabledTools:
      - tool-web
      - tool-workflow
    persona:
      prefix: 'You are a helpful software engineer assistant.'
    includeHarnessIdentity: false
    normalizeWindowsPaths: true

Windows 可将 bashPath 设置为 'C:/Program Files/Git/bin/bash.exe',并同时保留 pwshPath: 'C:/Program Files/PowerShell/7/pwsh.exe'。切换时只修改 shellMode。DSH 对匹配行的 config 做整体替换,因此要保留仍需使用的配置字段。

字段默认值说明
shellMode未设置四种取值见上表;不设置时保留官方 Shell 选择
disabledTools[]standard 预设中要禁用的行 ID 数组;ID 不存在时直接报错。不设置时不禁用任何行
persona未设置覆盖 standard 的 persona 行,字段见下。不设置时不修改 persona
includeHarnessIdentity未设置是否保留 harness:identity 段(You are an AI agent powered by DeepSeek Harness.)。不设置时不修改;false 隐藏该句
normalizeWindowsPathsfalse仅 Bash 两模式:命令进入 bash 前把 C:\a\b 改写成 C:/a/b。设到其他模式会报错
bashPath未设置Bash 两模式必填,必须是存在的绝对文件路径
pwshPath未设置建议显式填写以固定版本;未填写时委托官方 PowerShell 探测
timeoutMs300000正整数。持久化模式为命令截止时间;一次性模式沿用官方等待、后台处理与上限
envContexttrue是否向模型添加模式、配置路径和会话工作区;关闭后仍保留工具操作规则

disabledTools 按 standard 预设的行 ID 生效,包含分组内的行。常用 ID 有 tool-web、tool-workflow、tool-ralph、skill-filesystem;完整列表见安装中 @deepseek-ai/dsh-web-app/presets/standard.patch.yml 的 config.plugins。本插件只做 disabled: true,不改变这些行的其他配置。

persona 覆盖官方 persona 行(@deepseek-ai/dsh-persona),可写字段与该插件的 schema 一致:

persona 字段默认值说明
prefix保留官方值persona 前缀正文,也就是模型的身份说明
suffix保留官方值persona 后缀;官方值是 Your working directory is {{cwd}}.
completefalse写 true 会把 prefix 变成整个系统提示词,抑制 suffix 与所有其他段落
includeRuntimeContexttrue写 false 会抑制该 agent 作用域的运行时上下文快照

行补丁整体替换 config,本插件先展开当前有效配置再覆盖你写出的字段,因此未写的字段(例如官方 suffix)会保留。complete 与 includeRuntimeContext 即使未写也会显式落成上表默认值,避免上游把提示词锁成单句。字段内的 {{...}} 按宿主已注册的变量严格插值,变量不存在会让组装报错。persona 至少写一个字段,键名或类型写错会在启动时直接报错。

includeHarnessIdentity 作用于全局 system-prompt 行(dsh-base 声明),而不是 standard 预设的 persona 行,因此影响该 profile 的所有预设与会话。写 false 只让模型少收到 harness:identity 这一段 You are an AI agent powered by DeepSeek Harness.,模型与 API、工具注册、Shell、团队/Goal/Workflow、沙箱与审批都不受影响;计划模式指引、工具说明、persona 与运行时上下文照常组装。本插件复用宿主 @deepseek-ai/dsh-system-prompt 的官方开关,不新造隐藏机制。

该选项要生效,全局 system-prompt 行必须在插件就绪后再解析配置,因此 bundle 补丁为该行添加了 dshDefaultOverridesReady 等待。用户层若覆盖了该行的 inject,同样要保留这个信号。不使用该选项时这条等待仍然存在,代价只是启动顺序上的一次等待。

normalizeWindowsPaths 解决 Windows 上 Bash 把反斜杠当转义符吃掉的问题:cd C:\Users\me 在 bash 里会变成 cd C:Usersme 而失败。开启后,C:\a\b 会在命令进入 bash 之前被改写成 C:/a/b,一次性与持久化两种 Bash 模式都生效:

  • 只改写盘符开头的路径段;引号内的路径(含空格)一路改写到配对引号;sed 's/\\d//'、"a\tb" 这类正则与转义里的反斜杠不受影响。
  • UNC 路径(\\server\share)不在覆盖范围;若某条命令需要把 Windows 反斜杠路径当字面量传给只认反斜杠的原生程序(例如 robocopy),改写会改变它的含义,这类命令请关闭该选项或改用该程序可接受的写法。
  • 持久化模式通过给 dsh-terminal-bash 传官方 shellArgs、用 --rcfile 加载一个垫片实现(写在系统临时目录 dsh-default-overrides-bashrc.sh,每次启动重新生成)。垫片只在命令里出现 X:\ 时才启动 node 做改写,其他命令原样透传。
  • 该改写依赖宿主持久化工具仍以 eval -- 包装命令;宿主改版后垫片可能静默失效——命令照常执行,只是不再改写。

工具说明与 command 参数说明里也写明了“不要使用反斜杠、含空格的路径要加引号”,与上面的确定性改写互为补充。

只验证和使用当前模式对应的路径。一次性工具的前台等待超时可能将命令转为后台任务,并不等于杀死进程。配置后使用新会话验收,旧会话可能保留旧预设和 Shell 状态。

bundle 已为 preset-standard 添加 dshDefaultOverridesReady。如果用户层或其他 bundle 覆盖了该行的 inject,必须把这个信号与其他依赖一起保留;不能把它加在 agent-preset-registry 上。插件暂未导出设置表单 schema,使用上述 YAML 配置。

旧 shellPath 和 blockNestedShells: true 的迁移见迁移说明。插件不修改宿主 PATH,也不强制阻断任意脚本启动其他 Shell。