前言¶
在 DeepSeek Harness(DSH)里做智能体开发时,项目根目录下的 CLAUDE.md 已被宿主读取;官方桥接也覆盖了 Claude Code 的 hooks 与 plugin mods。但若你已经在 Claude Code 项目里维护 .claude/commands 和 permissions.deny,仍缺少一块:命令展开与 deny 规则如何在 DSH 侧生效,而不改宿主、也不在缺文件时静默加载无关内容。
下面介绍社区插件 dsh-dotclaude(维护者 RUI-debug769),它把 Claude Code 项目 .claude/ 目录里「命令与权限」这一半接到 DSH 上运行。
这是什么¶
dsh-dotclaude 是 DSH 生态中的工作流类插件(npm 包名 dsh-dotclaude,当前版本 0.1.0,MIT 许可证)。定位一句话:在 DSH 内运行 Claude Code 项目的 .claude/ 资源——项目斜杠命令支持参数展开,并对宿主工具调用执行 permissions.deny 规则;不补丁宿主,宿主或项目缺少对应文件时不会加载。
插件目录页:skillhub.cn/plugins/RUI-debug769/dsh-dotclaude。源码与说明:github.com/RUI-debug769/dsh-dotclaude。
核心功能¶
命令来源与调用方式¶
.claude/ 来源 |
在 DSH 中的效果 |
|---|---|
项目 .claude/commands/**/*.md |
/claude run <name> [args];在支持 agent 作用域注册的宿主上,新 agent 还会得到同名斜杠命令(如 /review) |
用户 ~/.claude/commands/**/*.md |
同上;同名时项目命令覆盖用户命令 |
项目 .claude/settings.json → permissions.deny |
在工具实际执行前拒绝匹配的宿主工具调用 |
.claude/settings.local.json → permissions.deny |
同上,在项目配置之后合并 |
permissions.allow / ask |
仅报告,不用于放宽用户必须批准的边界 |
命令正文支持 Claude Code 侧常用的替换(不经过 shell):
$ARGUMENTS:命令名之后的原始文本$1…$9:按引号规则拆分的位置参数@path:内联文件内容(有大小上限;文件缺失时保留字面量并由诊断报告)
Front matter 会读取 description、argument-hint;allowed-tools 与 model 会被忽略并标记为不支持。
内置 /claude 子命令¶
/claude # 列出已解析命令及来源
/claude list # 同上
/claude run <name> [args]
/claude doctor # 来源、deny 规则及读取过程中的问题
/claude reload # 丢弃读取缓存并重新解析
在支持命令注册表的宿主上,每个解析出的命令还会注册为独立斜杠命令;/claude run <name> 在所有宿主上可用。若宿主提供 system-prompt 段落注册表,会加入稳定段落列出可用命令;若存在 dsh-tui 状态行接口,聚合命令数会显示为 claude N cmd。
权限规则¶
规则语法与 Claude Code 一致:Tool 或 Tool(specifier),工具名会映射到宿主工具(例如 Bash→bash、Read→read、WebFetch→web_fetch、Task→subagent)。仅 deny 会强制执行;allow 不会绕过宿主自身的批准策略。无法解析或未知工具名由 /claude doctor 报告,且不会因此拒绝调用。
settings 文件不可读或格式错误时,deny 行为为 fail-open(不静默拦截),问题同样由 /claude doctor 暴露。若你需要 fail-closed,不应单独依赖本插件作为唯一边界。
刻意不覆盖的范围¶
不读取 .claude/agents/*.md、.claude/skills/、.mcp.json;命令体内不支持 ! bash 执行;hooks 与 plugin mods 请用官方 @deepseek-ai/dsh-hooks-claude-code 与 @deepseek-ai/dsh-experimental-claude-code-mods;不读写任何 .claude/ 文件。
安装与启用¶
通过 DSH 插件配置安装(资料原文命令):
dsh plugin --profile web add dsh-dotclaude
安装后重启宿主。bundle 会挂载一行插件 id:dotclaude。
若从本地检出目录安装:
dsh plugin --profile web add link:/path/to/dsh-dotclaude
package.json 中声明的 DSH 引擎要求为 >=0.1.7,依赖 Cordis 4;README 记载的兼容性包括 DSH 0.2.1-rc.2(Web profile)与 dsh-tui 0.16.1 组合启动等,详见仓库 scripts/host-smoke.sh(DOTCLAUDE_MATRIX=1)。
配置¶
默认即可用,config: {} 即完整配置。可通过 profile patch 覆盖,例如关闭 system-prompt 中的命令列表段落:
- id: dotclaude
config:
promptSection: false
| 键 | 默认值 | 含义 |
|---|---|---|
projectCommands |
true |
从 Session 工作目录对应项目根读取 .claude/commands |
userCommands |
true |
读取 ~/.claude/commands |
enforceDeny |
true |
执行 permissions.deny |
inlineFiles |
true |
内联 @path |
registerCommands |
true |
在新 agent 上注册独立斜杠命令 |
promptSection |
true |
在 system prompt 中加入命令列表段落 |
statusLine |
true |
在 dsh-tui 状态行显示命令数(若接口存在) |
maxCommandBytes |
65536 |
超过则跳过命令文件 |
maxInlineBytes |
65536 |
超过则跳过内联文件 |
extraRoots |
[] |
预留,暂无额外扫描根 |
promptSection 与 statusLine 有可见成本:前者增加每次请求的 token,后者占用一条 dsh-tui 状态槽。
项目根判定¶
项目根为向上最近包含 .git 的目录;若无 .git 则为当前工作目录。若 home 目录带有 .claude,仅作用户级根,不会与项目扫描重复。
典型用法¶
- 在 Claude Code 项目中照常维护
.claude/commands/*.md与settings.json中的permissions.deny。 - 安装插件并重启 DSH 后,在新会话中执行
/claude确认命令来源。 - 用
/claude run <name> [args]或已注册的/name触发命令;需要排查 deny 或读取问题时运行/claude doctor。 - 修改
.claude/后可用/claude reload刷新缓存。
适用场景与注意¶
适合已在 Claude Code 工作流中沉淀项目命令与 deny 规则、又希望在 DSH Web profile(或配套 dsh-tui)中继续使用的团队或个人。插件只读 .claude/,但以当前 dsh 进程权限运行;内联的 @path 会把文件内容送入模型,命令文件若引用密钥会泄露,只应运行你信任的命令文件。
安装前建议查看 GitHub 仓库 源码与 MIT 许可证。社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,属「一切皆插件」生态中的独立收录站点。
结尾¶
dsh-dotclaude 补上了 DSH 与 Claude Code 项目资产之间「命令 + permissions.deny」的缺口:不改宿主、缺件不加载,用 /claude 系列命令即可列出、运行与自检。进一步说明与 issue 见 GitHub,目录入口见 SkillHub 插件页。