跳到主要内容

dsh-default-overrides

已验证

dsh-default-overrides · v0.5.5 · MIT

Configurable Bash and PowerShell overrides for the DSH standard preset.

安装

dsh plugin add dsh-default-overrides

用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。

源码

发布到 npm 但没有公开仓库。安装前请检查包内容。

标签

作者

说明文档

DSH Default Overrides

为 DeepSeek Harness(DSH)配置 Shell、助手人设和工具开关。你可以选择 Bash 或 PowerShell,使用保留目录与变量的持久化终端,并为指定预设设置人设。

安装后默认不改变现有行为。 按需添加配置即可,不需要修改 DSH 安装文件。

使用前

  • 已安装并能正常启动 DSH;建议使用自带的 web profile。
  • 目标 profile 包含官方 standard 预设。Shell 选择和工具禁用只作用于这个预设。
  • 安装所需的 pnpm 能从 PATH 中找到。
  • 使用 Bash 或 PowerShell 前,先在机器上安装相应程序。Windows 的 Git Bash 来自 Git for Windows。
  • 当前面向 DSH 的 danger-full-access 权限模式使用;执行权限仍由 DSH 管理。

当前本机验证基线为 macOS、Node.js 24.21.0、DSH 0.2.0-rc.2(npm 安装的宿主,不含任何本地宿主修补)。Windows Git Bash / MSYS2 的接入已实现,Windows 实机与 ConPTY 验收尚未完成;PowerShell 真进程也尚未在此环境验收。 插件不限制安装版本,其他 DSH / Node 版本的兼容性需要实际确认。

安装

以下以 web profile 为例;使用其他 profile 时替换名称:

dsh plugin --profile web add dsh-default-overrides

也可以在 DSH 插件管理器中安装 dsh-default-overrides。需要固定版本时使用 dsh-default-overrides@版本号。

安装后完整重启 DSH。接着编辑目标 profile 的配置文件:

~/.dsh/profiles/web/cordis.patch.yml

~ 表示当前用户目录;自定义了 DSH 数据目录时,使用该目录下的 profiles/web/cordis.patch.yml。

快速配置

在 profile 配置中添加或修改同一个 dsh-default-overrides 条目:这一行的 id 与包名相同。通过插件管理器或上述命令安装后,不需要再添加 insert、name 或文件入口。

Windows:使用 Git Bash

将路径换成实际安装位置:

- id: dsh-default-overrides
  config:
    shellMode: persistent-bash
    bashPath: 'C:/Program Files/Git/bin/bash.exe'

macOS / Linux:使用 Bash

- id: dsh-default-overrides
  config:
    shellMode: persistent-bash
    bashPath: /bin/bash

保存配置、完整重启 DSH,再新建 standard 会话。持久化模式会在连续的工具调用之间保留目录、变量和函数。

多个示例请合并到同一份 config 中。 DSH 会整体替换这份配置,修改时保留仍需使用的字段。完整配置示例见 配置示例。

选择 Shell

shellMode 使用的 Shell 目录、变量、函数是否跨调用保留
bash Bash 否,每次新建 Shell
persistent-bash Bash 是
pwsh PowerShell 否,每次新建 Shell
persistent-pwsh PowerShell 是

需要连续执行 cd、设置环境变量或定义函数时,选择持久化模式。终端退出或因超时被重置后,这些状态不会保留。

Bash 与 PowerShell 的路径可以同时保存;切换时只修改 shellMode:

- id: dsh-default-overrides
  config:
    shellMode: persistent-pwsh
    bashPath: 'C:/Program Files/Git/bin/bash.exe'
    pwshPath: 'C:/Program Files/PowerShell/7/pwsh.exe'

只使用当前模式对应的路径。未使用的路径可以预先填写。

路径可以省略,但显式填写更容易固定所用版本:

  • Windows Bash:优先使用 bashPath;省略时选择启动 DSH 的进程 PATH 中首个 bash.exe。找不到或不兼容会报错,需要修正路径;不会继续猜测安装位置或改用 PowerShell。
  • macOS / Linux Bash:持久化模式省略路径时使用 /bin/bash;一次性模式省略路径且未开启路径改写时沿用 DSH 原有 Shell 配置。
  • PowerShell:省略 pwshPath 时由 DSH 自动查找。

常用配置

设置助手人设

下面的配置将同一人设应用于 standard、ptc 和 cordis:

- id: dsh-default-overrides
  config:
    personaPresets:
      - standard
      - ptc
      - cordis
    persona:
      prefix: |
        你是一名软件工程师。先核对项目现状,再做必要的修改。
        使用中文回答,明确说明验证结果和未验证的部分。

省略 personaPresets 时只修改 standard;写 [] 可停用人设覆盖而保留正文。名单只控制人设,不会把 Shell 设置或工具禁用扩展到其他预设。

persona 可用字段:

字段 默认行为 用途
prefix 保留原值 助手身份与工作方式说明
suffix 保留原值 人设后缀;DSH 通常在这里提供工作目录
complete false true 时将 prefix 作为整个系统提示词,省略其他提示段
includeRuntimeContext true 是否提供该助手的运行时上下文

一般只需要设置 prefix。文本中的 {{...}} 会被当作 DSH 变量,变量不存在时会报错。minimal 原本采用精简提示词;将它加入名单前,应明确设置想保留的 complete 和 includeRuntimeContext 行为。自建预设的配置要求见 迁移与高级配置。

禁用指定工具

- id: dsh-default-overrides
  config:
    disabledTools:
      - tool-web
      - tool-workflow

只影响 standard 预设。这里填写的是预设中的配置 ID,不是界面显示名称;常见 ID 还有 tool-ralph、skill-filesystem,实际可用项随 DSH 版本而定。ID 不存在时会明确报错;写 [] 或省略该项即可保留全部工具。

调整身份提示和环境说明

- id: dsh-default-overrides
  config:
    includeHarnessIdentity: false
    surfaceContext: false
    envContext: true

includeHarnessIdentity: false 隐藏 DSH 提供的框架身份提示句,影响整个 profile;不会更换所用模型或 API。

surfaceContext: false 关闭 Web 表层提示:系统提示词里不再出现 DSH 实现源码 checkout 的路径说明和 Web GUI 的定位说明,shell 命令也不再收到 DSH_WEB_URL。它只影响这两段文本和这个变量,不影响 Web 界面本身的启动、URL 打印或浏览器打开;没有 Web 界面的 profile(例如 headless)本来就没有这两段。

envContext: true 向模型补充平台和工作区信息。只有本插件实际配置过 Shell 的预设,才附带对应 Shell 说明。设为 false 会关闭这段环境说明,Shell 工具自身的操作提示仍然保留。

配置速查

选项 默认值 说明
shellMode 未设置 不设置时保留 DSH 原有 Shell;四种取值见上表
bashPath 未设置 Bash 可执行文件的绝对路径,仅 Bash 模式使用
pwshPath 未设置 PowerShell 可执行文件的绝对路径,仅 PowerShell 模式使用
timeoutMs 300000 插件配置的 Shell 通道使用的超时设置,单位毫秒,必须是正整数
disabledTools [] 禁用 standard 中指定的配置 ID
persona 未设置 不设置时保留原有人设
personaPresets ['standard'] 接受人设覆盖的预设名单;仅在配置 persona 时生效
includeHarnessIdentity 未设置 保留 DSH 当前设置;false 隐藏框架身份提示句
surfaceContext 未设置 保留 DSH 当前设置;false 关闭 Web 表层提示段与 DSH_WEB_URL
envContext 选择 Shell 时开启,否则关闭 可显式开启或关闭环境说明
normalizeWindowsPaths false 可选的 Bash 路径改写辅助,见下文

只有适用的配置参与校验。例如 PowerShell 模式会忽略 normalizeWindowsPaths;没有由插件配置 Shell 时,timeoutMs 不参与执行。一次性命令等待超时可能转入后台,并不等于进程已终止,请以工具返回结果为准。

Windows Bash 的路径与检查

Git Bash 和独立 MSYS2 Bash 属于当前接入的 MSYS 家族。DSH 在 Windows 上运行时,本插件的 Bash 后端不接受 Cygwin 或 WSL / Linux 入口。 这项限制不改变 DSH 在 Linux 环境中运行时的 Bash 行为。

首次使用时会检查所选 Bash 的环境和 Windows 路径转换能力,检查上限为 30 秒。失败信息会指出所用入口和出错阶段,可据此修正 bashPath 或 Bash 的初始化配置。

日常使用优先采用相对路径;需要 Windows 绝对路径时,可写成 'C:/Users/me/project',含空格的路径要正确引用。Git Bash 可能转换传给原生 Windows 程序的路径参数;容器和远端路径需要按用途处理。

normalizeWindowsPaths: true 可辅助把简单路径参数中的 C:\a\b 改成 C:/a/b,但它不是使用 Git Bash 的前提,建议先保持默认关闭。复杂命令、正则、程序代码和格式串应使用正确的引用;网络共享路径(如 \\server\share)不在此辅助功能的处理范围内。

常见问题

现象 处理方式
修改配置后没有变化 确认修改的是正在使用的 profile,完整重启 DSH 并新建会话;Shell 配置还要求使用 standard 预设
升级到 0.5.0 后配置全部失效 配置行 ID 已改为 dsh-default-overrides,见迁移说明;沿用旧 ID 的行只会收到警告并被跳过
Windows 提示 Bash 不兼容或找不到入口 显式填写 Git Bash / MSYS2 的实际路径,检查报错中的入口是否选到了 WSL 启动器或其他 Bash
Windows 路径检查失败 检查所选 Bash 能否找到 cygpath,以及初始化配置是否改变了 PATH;保留完整的错误阶段信息
环境检查超时 检查 Bash 启动配置中是否有耗时操作或等待输入的命令
连续调用没有保留目录或变量 改用 persistent-bash / persistent-pwsh,并确认终端没有退出或被重置
人设没有生效 检查当前预设是否在 personaPresets 中;自建预设还需完成高级配置中的等待依赖设置
系统提示词里仍有 checkout 路径或 GUI 说明 用 surfaceContext: false 关闭;固定开场白 You are an AI agent powered by DeepSeek Harness. 由 includeHarnessIdentity 控制
禁用工具时报 ID 不存在 按当前 DSH 版本核对配置 ID,或先删除该项恢复启动

反馈问题时,请提供 DSH / Node 版本、操作系统、所选模式及错误文本。

更新与卸载

更新到指定版本后,完整重启 DSH 并新建会话:

dsh plugin --profile web add dsh-default-overrides@版本号

版本号不只是为了固定:安装走 pnpm,pnpm 从 11 起默认有 24 小时的发布冷却期(minimumReleaseAge),刚发布的版本不带版本号时解析不到,会装回更早的版本。

卸载:

dsh plugin --profile web remove dsh-default-overrides

然后删除 profile 中针对 dsh-default-overrides 的配置,再完整重启 DSH。需要暂时停用时,在插件管理器中停用整个插件包。不要仅禁用主条目;旧文件部署还需清理手工添加的等待依赖。

旧版本升级、文件部署和回退步骤见 迁移说明。

许可证

MIT License。