前言¶
在 DSH 里做项目级智能体开发时,团队往往希望「配置跟着仓库走」:换一台机器、新开一个会话,子代理定义、斜杠命令、MCP 服务器和 hooks 都能一致加载。DSH 自带能力会读工作区里的 AGENTS.md 和 .dsh/skills/,但子代理、命令、MCP、hooks 原先只能在全局配置里维护,无法按项目版本化、随 git 分发。
下面介绍社区插件 dsh-project-config(维护者 RicardoYan,分类:工作流)。它从工作区根目录的 .dsh/settings.yml(以及可选的 .dsh/settings.local.yml)为当前 DSH 工作区加载上述能力,并配合 dsh-workspace-trust 在「已信任工作区」边界内执行项目里的命令与脚本。
这是什么¶
dsh-project-config 是 DeepSeek Harness 的 Cordis 插件(npm 包名 dsh-project-config,当前资料中的版本为 0.2.1)。一句话定位:Per-workspace subagents, commands, MCP servers and hooks for DSH from .dsh/settings.yml。
工作区根目录的判定方式(README 原文):从会话目录向上找,最近的、含有 .dsh/settings.yml 或 .git 的目录即为工作区根。
核心功能¶
项目级 settings.yml¶
在工作区根放置 .dsh/settings.yml,可声明四类条目(字段细节、hook 输入输出、从 Claude Code 迁移与排查见仓库内 docs/settings.md):
- subagents:按
personaFile加载人格文件,注册为同名工具;可用toolFilter限制可用工具(MCP 工具需写全名,如mcp__github__search_code)。 - commands:注册斜杠命令,
handlerFile为相对工作区根的模块,需export default ({ rawInput, agent, workspaceRoot }) => '文本'。 - mcp:按条目启动 MCP 服务器(stdio 等),工具名形如
mcp__<serverName>__<工具>;环境变量可用${VAR}引用 DSH 进程环境。 - hooks:在
tools/pre-execute、tools/post-execute、agent/pre-step等事件上挂命令;在工作区根执行,stdin 为 JSON;退出码 2 表示拦截,原因走 stderr。
个人覆盖:settings.local.yml¶
MCP 凭据、个人 hooks 等可放在 .dsh/settings.local.yml,写法与主文件相同;同名条目整条覆盖 settings.yml,enabled: false 可去掉主文件中的同名项,hooks 条目接在后面。须加入 .gitignore。仅当存在 settings.yml(可以是空文件)时才会读取 local 文件。详见文档 §7。
Skill 仍放在 .dsh/skills/<名字>/SKILL.md,由 DSH 自行读取,不在本插件的 settings 里声明。
会话内诊断命令¶
插件提供 /project-config:查看本会话已加载的配置、被跳过的条目及原因,以及各 MCP 服务器的连接状态。
/project-config reconnect [名字] 可在当前会话内重连指定 MCP 服务器。
上述命令与配置告警跟随 DSH 语言设置,界面为中文或英文;字段名、事件名保持原文。
子代理与 MCP 的协作规则¶
- 子代理、MCP、hooks 对子代理同样生效;子代理共用主会话的 MCP 连接,再按各自
toolFilter过滤。 - 子代理再派发项目子代理:需在
toolFilter.allow里写上对方工具名,且对方maxDepth要足够(表示最多出现在第几层;主会话直接派发为第 1 层)。 - DSH 自带的通用
subagent工具每个子代理都有,toolFilter管不到它;嵌套层数由 DSH 的子代理层数上限控制。
安全边界与 AGENTS.md 隔离¶
- 命令、MCP、hooks 会运行项目里的代码,仅在工作区已被信任时运行;信任由 dsh-workspace-trust 记录。未安装该插件时一律按不信任处理,子代理仍可正常使用。
- 配置中的路径只接受相对路径;指向工作区外(含符号链接)的路径要求工作区已信任,且不在禁止访问列表中。
- 存在
settings.yml的工作区只读取本工作区自己的AGENTS.md与项目 skill,不再继承外层 git 仓库根目录的 AGENTS.md。
安装与启用¶
官方安装步骤(Desktop 示例;Web 端将 desktop 换为你的 profile 名,一般为 web)。信任插件与项目配置插件需一并安装:
dsh plugin --profile desktop add github:RicardoYan/dsh-workspace-trust#v0.2.1
dsh plugin --profile desktop add github:RicardoYan/dsh-project-config#v0.2.1
安装完成后重启 DSH。
卸载:
dsh plugin --profile desktop remove dsh-project-config
版本与运行时:插件声明适用于 @deepseek-ai/dsh >=0.2.1-rc.1 <0.3.0-0,Node ^22.19.0 || >=24.0.0。它依赖 DSH 内部接口(agent 事件、dsh-tool-subagent、dsh-mcp-client、dsh-hook-protocol 等),升级 DSH 大版本前宜对照 README 与 release。
典型用法¶
最小 settings.yml 示例¶
在工作区根创建 .dsh/settings.yml,可按需组合四类配置。下面片段来自 README,展示常见字段形态:
subagents:
- toolName: code-reviewer
personaFile: agents/code-reviewer.md
toolFilter: { allow: [read, grep, mcp__github__search_code] }
commands:
- name: release-notes
description: 生成发布说明
handlerFile: tools/release-notes.mjs
mcp:
- serverName: github
transport: stdio
command: npx
args: ['-y', '@modelcontextprotocol/server-github']
env: { GITHUB_TOKEN: '${GITHUB_TOKEN}' }
hooks:
tools/pre-execute:
- matcher: pwsh|bash
command: node .dsh/hooks/check.mjs
personaFile 相对工作区根;frontmatter 中的 description 用作子代理用途说明。Token 也可写入 settings.local.yml 而非环境变量。
验证加载结果¶
新开会话后执行 /project-config,确认 subagents、commands、MCP、hooks 是否按预期加载,MCP 是否已连接。修改 settings.yml 或 settings.local.yml 后,仅新开会话生效。
hooks 在 Windows 上的注意点¶
hooks 的 command 由 DSH 的 shell 执行:Windows 为 PowerShell,带引号的程序路径前需加 &,例如 & "C:/Program Files/nodejs/node.exe" check.mjs。
适用场景与注意¶
适合谁:需要在 monorepo 或多仓库协作中,把 DSH 的子代理、自定义斜杠命令、项目 MCP、审计类 hooks 与代码一起提交;又希望凭据与个人 hook 留在本机 settings.local.yml 的团队。
权限与安全:插件会以当前 DSH 进程权限运行配置中的命令、MCP 与 hooks;安装前应阅读源码与 MIT 许可证,并理解信任工作区的含义。未信任时项目级命令与 MCP 不会跑,避免误执行不可信仓库里的脚本。
其它行为(README「注意」):
- 装上或卸下本插件后,已有会话继续时可能多收到一次完整的 AGENTS.md 推送。
- 诊断日志:
%TEMP%\dsh-project-config.log(超过 1MB 轮转);MCP 的url、headers、env的值不会写入日志与/project-config。
社区插件目录站点 SkillHub 上的 dsh-project-config 页 与 GitHub 仓库并列存在;DSH 生态强调「一切皆插件」,该目录为社区维护,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-project-config 把原先偏全局的 DSH 扩展点收拢到 .dsh/settings.yml,与 AGENTS.md、.dsh/skills/ 形成同一套「项目内智能体配置」;配合 dsh-workspace-trust,在可审计的信任边界内运行项目脚本与 MCP。若你正在维护可复现的 DSH 工作流,可从仓库 README 与 docs/settings.md 对照字段后,在目标工作区放置配置文件并用 /project-config 自检。
- 目录页:https://www.skillhub.cn/plugins/RicardoYan/dsh-project-config
- GitHub:https://github.com/RicardoYan/dsh-project-config