# DSHplugins **Repository Path**: BroWhite/DSHplugins ## Basic Information - **Project Name**: DSHplugins - **Description**: 自用DSH插件与obsidian插件 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-01 - **Last Updated**: 2026-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DSHplugins DeepSeek Harness(DSH)自建插件与自写 skill 的可搬运集合。目标机 `git clone` 之后,插件装进 profile,skill 放进 `$DSH_HOME/skills`,本机那套写作风格、叙事规范与审计知识库即可整份复现。 源机环境:`dsh 0.2.0-rc.1`,profile 名 `web`,`DSH_HOME=C:\Users\white\.dsh`。白广大插件现为 **v2.6.0**(2026-10-28):技能正文快照不变(八层写作纪律 9.1—9.11、21 项机检、B 档文类基线、B 档对照样本),新增 `style_lint` / `style_audit` / `style_rules` 三个工具、`skill/` 全量资源随包携带、`dsh.permissions` 权限自述,**设置里的一页**(`client.js` + `/api/baiguangda-style`:总开关 + 改配置 + 单篇/批量试跑 + 阈值表),以及按 444 篇语料重标定的机检判据(4 条 A 级 + 27 条 B 级,含新加的冗余量词、段落节奏、连接词单一、孤证数字、口头禅、导读腔)。 2026-10-11 追加两类内容:第三方插件 ThoughtDAG(`dsh-thoughtdag@0.5.17`)的 npm 原件与上游源码子集;DSH Desktop profile 的接线参考。桌面端跑的是应用自带运行时 `0.2.0-rc.2`,web 端仍是 `0.2.0-rc.1`。 ## 仓库内容 | 路径 | 是什么 | 装到哪里 | |---|---|---| | `packages/dsh-plugin-baiguangda-style/` | 插件:把白广大写作风格 skill 注册进 `ctx.skills`,注册 `style_lint`/`style_audit`/`style_rules` 三个工具,并在**设置里开一页**(改配置 + 贴稿子试跑);正文、工具层、负样本库、语料、校验脚本全随包携带 | profile 的 bundle 层 | | `packages/dsh-plugin-sillytavern-jailbreak/` | 插件:SillyTavern 越狱机制审计知识库,注册为会话技能 | profile 的 bundle 层 | | `skills/baiguangda-writing-style/` | 文件系统 skill:SKILL.md(八层纪律 9.1—9.11)+ 校验工具层 + 负样本库(23 类错误)+ 语料 + 27 个脚本 + `examples/`(B 档对照样本) | `$DSH_HOME/skills/` | | `skills/tonglan-narrative-style/` | 文件系统 skill:SKILL.md + 11 份 references | `$DSH_HOME/skills/` | | `skills/no-runaway-execution/` | 文件系统 skill:节制执行纪律 + 词频检查脚本 | `$DSH_HOME/skills/` | | `profiles/web/` | 目标机 profile 的接线参考(bundles 列表、用户覆盖层) | 手动比对,不直接覆盖 | | `examples/hello-plugin/` | 最小插件样例:注册 `hello` 工具 | 可选,仅供学习 | | `docs/plugin-tutorial.zh.md` | 插件写法教程 | 阅读 | | `dist/*.tgz` | 预打包插件,离线安装用 | `dsh plugin add` 的入参 | | `dist/dsh-thoughtdag-0.5.17.tgz` | 第三方插件 ThoughtDAG 的 npm 原件镜像(9.0 MB,sha1 `243cc6d1`) | `dsh plugin add` 的入参 | | `upstream/thoughtdag-v0.5.17/` | 上游 v0.5.17 源码子集(3.45 MB,MIT):插件宿主半、画布 SPA、CLI、运行时、桌面壳 | 阅读,或按 `upstream/README.md` 自行重建 | | `profiles/desktop/` | 桌面 profile 接线参考(bundles 三项、用户覆盖层) | 手动比对,不直接覆盖 | | `scripts/install.ps1`、`scripts/install.sh` | 目标机一键安装:只覆盖 `packages/` 里两个自建插件与 `skills/`,不含 ThoughtDAG | 直接执行 | ## 目标机安装 前置:`npm i -g @deepseek-ai/dsh@0.2.0-rc.1`,用 `dsh --version` 核对版本。插件是预构建 ESM,无编译步骤,但 bundle 名要与 harness 版本匹配。 ```powershell # 1. 取仓库 git clone https://gitee.com/BroWhite/DSHplugins.git cd DSHplugins # 2. 一键安装(Windows) pwsh -File scripts\install.ps1 # 装插件 + 放 skill,默认 profile 名 web pwsh -File scripts\install.ps1 -FromSource # 用 packages\ 目录代替 dist\*.tgz pwsh -File scripts\install.ps1 -SkipPlugins # 只放 skill ``` ```bash # Linux / macOS bash scripts/install.sh # 默认 profile 名 web PROFILE=desktop bash scripts/install.sh ``` ### 不 clone 的直装方式 `dist/*.tgz` 在仓库里,Gitee 的 raw 直链可以直接作为 `dsh plugin add` 的入参。2.6.0 于 2026-10-28 重新打包(`npm pack`,约 149 KB),包内 `skill/` 与 `packages/dsh-plugin-baiguangda-style/skill/` 逐字节一致: ```powershell dsh plugin --profile web add "https://gitee.com/BroWhite/DSHplugins/raw/main/dist/dsh-plugin-baiguangda-style-2.6.0.tgz" dsh plugin --profile web add "https://gitee.com/BroWhite/DSHplugins/raw/main/dist/dsh-plugin-sillytavern-jailbreak-0.1.0.tgz" ``` skill 不在插件里,仍需落到本机。**推荐用 clone**:`git clone --depth 1` 后复制 `skills\`。 > **raw 直链的已知限制(2026-10-01 实测)**:仓库内部分文件通过 Gitee raw 直链访问时返回 **HTTP 451**(平台侧内容审查),包括 `skills/*/SKILL.md`(三个技能全部)、`skills/baiguangda-writing-style/白广大风格-完整版节选(…).md`、`corpus/corpus_interview.txt`、`packages/dsh-plugin-baiguangda-style/skill/SKILL.md`。 > **不受影响**:`git clone`(git 协议,80 个文件全部完整)、`dist/*.tgz` 直链(HTTP 200,字节数与仓库一致)、以及 raw 可读的 `README.md`、`白广大风格校验工具层.md`、`白广大风格负样本库.md`、`scripts/*.js`。 > **结论**:插件用 tgz 直链安装,skill 文件用 clone 获取;不要依赖 raw 直链逐个下载 SKILL.md。 手工等价命令,便于排查: ```powershell dsh plugin --profile web add ".\dist\dsh-plugin-baiguangda-style-2.6.0.tgz" dsh plugin --profile web add ".\dist\dsh-plugin-sillytavern-jailbreak-0.1.0.tgz" Copy-Item .\skills\* "$env:USERPROFILE\.dsh\skills\" -Recurse -Force # 也可以直接指向源目录: dsh plugin --profile web add ".\packages\dsh-plugin-baiguangda-style" ``` 外部依赖不在本仓库,需要时单独装: ```powershell dsh plugin --profile web add github:nickkkkkk123123/dsh-whale-girl ``` ## desktop profile:装 ThoughtDAG 要走载体 CLI `desktop` 是 Electron 应用独占的 profile。npm 上那份 `dsh` 会直接拒绝: ```text profile "desktop" is managed exclusively by the Electron application ``` 只有桌面应用自带的载体 CLI 有权改它: ```powershell & "C:\Users\white\AppData\Local\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" ` plugin --profile desktop add dsh-thoughtdag@0.5.17 ``` 2026-10-10 源机实测(桌面应用 0.2.0-rc.2 正在运行,未退出): | 项 | 值 | |---|---| | profile 变化 | `dependencies` 从 `{}` 变成 `dsh-thoughtdag: "0.5.17"`,`bundles` 追加 `dsh-thoughtdag` | | peer 检查 | `peers check` → No peer dependency issues found | | 耗时 | 426 ms,pnpm 11.7.0,走缓存,无构建脚本 | | 热挂 | 不必重启:装完 `/thoughtdag/assets/index-Bmw4g-fF.js` 立即返回 200、2,242,318 字节,与刚装入的文件同尺寸 | 官方文档与载体 CLI 的报错文案都建议先完全退出桌面版再装。源机在运行中装,实测热挂成功;画布行为异常时,重启应用是首先该试的动作。 装完的 `~/.dsh/profiles/desktop/` 现状收在 `profiles/desktop/`:`package.json.template`(bundles 三项)、`cordis.patch.yml`(字号 16、transcript 标准视图等用户覆盖层)、`pnpm-workspace.yaml`。三个文件都不含凭据。 web profile 那侧照旧,npm CLI 自己就能改: ```powershell dsh plugin --profile web add dsh-thoughtdag@0.5.17 dsh plugin --profile web add .\dist\dsh-thoughtdag-0.5.17.tgz # 无网络时用仓库里的原件 ``` ## 装完怎么验 1. 重启 harness(`dsh web`)。 2. 会话技能目录应出现本仓库贡献的 4 个技能名:`baiguangda-writing-style`、`sillytavern-jailbreak-audit`、`no-runaway-execution`、`tonglan-narrative-style`。v2 起 `baiguangda-style` 插件默认 `registerSkill: auto`:检测到工作区/用户目录已有同名文件系统 skill 时**不再注册运行时副本**(避免同名遮蔽和目录里两行重复),只提供工具;想让插件接管技能正文,把它设成 `true` 或删掉文件系统那份。harness 自带的 `diagnose-windows-sandbox-acl` 由 `@deepseek-ai/dsh-sandbox-windows-acl` 包提供,不需要来自本仓库。 3. 核对加载树:`dsh --profile web --dump-config | Select-String dsh-plugin`。 4. 设置页是否就位:打开「设置」,左侧应出现**白广大风格**;页内第一行是总开关,状态区显示版本、已挂工具、技能来源与资源路径。关掉总开关应当场看不到工具(会话里 `style_lint` 等调不通),再打开又回来;改一项配置点保存,重启后仍是新值。 4. 中文是否完好:随便打开一份 `skills\*\SKILL.md`,应当无乱码。 5. ThoughtDAG 是否就位:`dsh --profile web --dump-config` 里应出现 `dsh-thoughtdag`;desktop 端用载体 CLI 跑同一条命令,或趁应用在跑请求 `http://127.0.0.1:19387/thoughtdag/api/models`,应返回 200 与真实模型目录。 ## 技能放哪里由发现规则决定 | Rank | 来源 | 路径 | |---|---|---| | 100 | `project-dsh` | `<项目根>/.dsh/skills` | | 200 | `project-agents` | `<项目根>/.agents/skills` | | 300 | `custom` | `Config.customSkillDirs` | | 400 | `user-dsh` | `/skills` | | 500 | `user-agents` | `/skills` | 规则细节:项目根取"含 `.git` 的最近祖先目录",没有则用当前 cwd;发现深度只有一层,只认 `/SKILL.md` 或 `.md`,嵌套的 `**/SKILL.md` 不识别;frontmatter 必填 `name`(kebab-case)与 `description`;根目录被监视,增删改立即生效,不必重启。放进 `$DSH_HOME/skills` 的好处是不依赖"在哪个目录开会话"。 ## baiguangda 的副本与技能遮蔽 v2 起仓库里有三份走同一套正文的东西: | 位置 | 内容 | 谁用 | |---|---|---| | `skills/baiguangda-writing-style/SKILL.md` | 带 YAML frontmatter 的文件系统 skill | `$DSH_HOME/skills` 或工作区 `.dsh/skills` | | `packages/dsh-plugin-baiguangda-style/skill/SKILL.md` | 同一份文档(含 frontmatter),`npm run sync` 从上面同步 | 插件包内快照 | | `dist/dsh-plugin-baiguangda-style-2.6.0.tgz` | 上面整包 + 工具层 / 负样本库 / 语料 / `style_lint.js` / 阈值文件 / 语料与回归脚本 + `client.js` | `dsh plugin add` | 注册侧的关键事实:DSH 的技能发现按 rank 合并,**同名时项目级 > 运行时(插件注册)> 用户级**,先到先得并打一条 warn。v1 插件用同名 `baiguangda-writing-style` 注册,在源机上一直被工作区那份遮蔽——插件在跑,技能却来自文件系统。 v2 因此默认 `registerSkill: auto`:启动时探测 `/.dsh/skills/`、三层祖先目录、`$DSH_HOME/skills/`,命中就不注册运行时副本,只注册三个工具;探不到才注册。要把技能锁死在插件里,配 `registerSkill: true` 并删掉同名文件系统 skill;反过来,只要文件系统 skill,就不装插件。 源机 profile 内那份曾长期停在 2026-08-16 的旧正文,2026-10-01 就地同步过一次,2026-10-28 随 v2 重新部署(正文 39,730 字节,与 `packages/` 内逐字节一致)。目标机装完 tgz 后以仓库版为准;装过旧 tgz 的需重装覆盖。 ## profile 接线 profile 是 `$DSH_HOME/profiles/` 下的一叠 patch 层,加载顺序为:`package.json` 里 `dsh.profile.bundles` 列出的各 bundle 自带 patch → `cordis.patch.yml` 用户覆盖层 → 命令行 `--patch`。 | 文件 | 作用 | |---|---| | `package.json` | `dsh.profile.bundles` 决定加载哪些 bundle;`dsh plugin add` 会替你改写 | | `cordis.patch.yml` | 用户覆盖层:默认模型、主题、provider、`apiKeyEnv` 等按 id 覆写 | | `cordis.yml` | 空数组占位,不要手改 | | `pnpm-workspace.yaml` | `nodeLinker: hoisted`、`autoInstallPeers: false`,决定依赖如何落盘 | `profiles/web/package.json.template` 与 `profiles/web/cordis.patch.yml` 是源机现状,供比对。覆盖层里出现的环境变量(例如 `KIMI_CODING_API_KEY`)要在目标机自行设置,本仓库不含任何密钥。 ## 排错对照 | 症状 | 原因 | 处理 | |---|---|---| | 技能少了几条 | skill 放在了项目级根,而目标机在别的目录开会话 | 复制到 `$DSH_HOME/skills`,或在新环境用同一目录开会话 | | 插件没挂上 | `node_modules` 链接没建,或 bundle 名不在 `dsh.profile.bundles` | 重跑 `dsh plugin --profile web add <包>`,看启动日志 | | 启动即 abort,报 `duplicate loader entry id` | 同一 id 在 bundle 层与 `cordis.patch.yml` 里各 insert 了一次 | 只留 bundle 层那份 | | 中文乱码 | 复制过程经过文本模式中转 | 用 `robocopy /E` 或 `cp -R` 按字节复制 | | 目录空、链接断裂 | 源机用了 junction/symlink,打包时只带走了链接 | 本仓库已存实体内容;目标机不要再建链接 | | 模型/主题回到默认 | 设置存在 profile 的 `cordis.patch.yml`,不是 `settings.yaml` | 比对 `profiles/web/cordis.patch.yml` 合并 | ## 维护:源机更新后重新推送 ```powershell $env:npm_config_cache = '<一个可写的缓存目录>' # 缓存默认落在用户目录,受限环境需改写 cd packages\dsh-plugin-baiguangda-style npm pack --pack-destination ..\..\dist cd ..\dsh-plugin-sillytavern-jailbreak npm pack --pack-destination ..\..\dist cd ..\.. git add -A git commit -m "更新 <插件名> 与 skill 正文" git push ``` ThoughtDAG 是第三方包,维护动作变成同步镜像: ```powershell $env:npm_config_cache = '<可写的缓存目录>' npm pack dsh-thoughtdag@<版本> --pack-destination dist ``` 上游源码子集按 `upstream/README.md` 的收录清单复制:在 thoughtdag 克隆里 `git checkout `,取 `dsh/`、`src/`、`cli/`、`runtime/`、`desktop/`、`protocol/`、`scripts/` 与根配置文件,`public/`、`docs/`、`website/`、`video/`、`benchmark/` 不入库。 `.gitattributes` 里 `* -text` 关闭了行尾转换,中文文本按字节进出,改动前不必担心 CRLF 污染。 ## 本仓库不含 - 凭据:`.credentials.yaml`、API key、账号 token、浏览器会话 secret - 会话历史 `sessions/`(源机 530 MB)与附件 `attachments/`(源机 168 MB) - `node_modules`、pnpm store、`.plugin-manager` 日志 - 第三方插件 `dsh-whale-girl`(上游 GitHub 仓库,按需自取) - thoughtdag 上游的 `public/`、`docs/`、`website/`、`video/`、`benchmark/`(合计 173 MB 媒体与文档站),只收插件重建所需的 3.45 MB 源码子集,清单见 `upstream/README.md` 仓库整体采用 MIT,见 `LICENSE`;两个插件的 `package.json` 也各自标注 MIT。