用 git 管理整套 DSH 配置并一键幂等同步
30.2/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 67-68/dsh-plugins该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 41 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-plugins @ 0.1.2
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/7 14:40:27
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 27 处,展示前 26 条)
- 写入剪贴板packages/dsh-mermaid/lib/client.js:158
navigator.clipboard.writeText(code).then( - 读取本地文件packages/dsh-mermaid/lib/index.js:43
const body = await readFile(join(dir, file)); - 读取本地文件packages/dsh-mode-gate/lib/index.js:204
return readdirSync(dir).some((entry) => !entry.startsWith('.')); - 读取本地文件packages/dsh-mode-gate/lib/index.js:229
isDir = existsSync(dir) && statSync(dir).isDirectory(); - 读取本地文件packages/dsh-mode-gate/lib/index.js:229
isDir = existsSync(dir) && statSync(dir).isDirectory(); - 读取本地文件packages/dsh-mode-gate/lib/index.js:256
if (existsSync(abs) && statSync(abs).isDirectory()) { - 读取本地文件packages/dsh-mode-gate/lib/index.js:256
if (existsSync(abs) && statSync(abs).isDirectory()) { - 读取本地文件packages/dsh-mode-gate/lib/index.js:506
dirents = readdirSync(presetActionDir, { withFileTypes: true }); - 发起网络请求packages/dsh-read-url/lib/index.js:121
const res = await fetch(url, { - 发起网络请求packages/dsh-read-url/lib/index.js:278
const res = await web.fetch(url, { signal }) - 执行外部命令固定命令packages/dsh-read-url/lib/proxy-fallback.js:52
const out = execFileSync( - 执行外部命令固定命令packages/dsh-read-url/lib/proxy-fallback.js:109
execFile('curl', args, { maxBuffer: cfg.maxBytes + 8192, encoding: 'buffer', windowsHide: true, signal: externalSignal || undefined }, (err, stdout) = - 读取本地文件packages/dsh-session-converter/lib/index.js:43
if (existsSync(p)) return p - 执行外部命令来自配置/变量packages/dsh-session-converter/lib/index.js:48
execFileSync(c, ['--version'], { stdio: 'ignore' }) - 读取本地文件packages/dsh-session-converter/lib/index.js:64
entries = readdirSync(dir) - 读取本地文件packages/dsh-session-converter/lib/index.js:72
st = statSync(p) - 执行外部命令来自配置/变量packages/dsh-session-converter/lib/index.js:103
const text = execFileSync(zstd, ['-dc', file], { encoding: 'utf8', maxBuffer: 1 << 30 }) - 写入本地文件plugins/mode-experience.mjs:40
const log = (msg) => { try { appendFileSync(logFile, msg + '\n') } catch (e) {} } - 读取本地文件plugins/mode-experience.mjs:49
if (docDir && existsSync(docDir)) { - 读取本地文件plugins/mode-experience.mjs:51
for (const entry of readdirSync(docDir)) { - 读取本地文件plugins/mode-experience.mjs:54
const content = readFileSync(join(docDir, entry), 'utf8') - 读取本地文件presets/anchored-architect/custom-bash.mjs:113
const exists = (path) => access(path).then(() => true, () => false) - 读取本地文件presets/anchored-architect/persona-gated.mjs:64
return existsSync(file) ? readFileSync(file, 'utf8') : '' - 读取本地文件presets/anchored-architect/persona-gated.mjs:64
return existsSync(file) ? readFileSync(file, 'utf8') : '' - 读取本地文件presets/anchored-architect/tool-bootstrap.mjs:242
const stat = statSync(MODE_GATE_STATE_FILE) - 读取本地文件presets/anchored-architect/tool-bootstrap.mjs:244
const raw = JSON.parse(readFileSync(MODE_GATE_STATE_FILE, 'utf8'))
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- git管理配置
- 一键幂等同步
- 锁定版本清单
DSH 配置的 dotfiles 范式:git 仓库作真理源,一条 install.sh 幂等同步 preset/插件/经验文档 + requirements.txt 锁版本清单
README
由 DeepSeek 最新模型翻译生成dsh-plugins
我在 DeepSeek Harness (DSH) 上自建的插件与 agent preset 仓库。这里是「真理源」;运行时位置是 ~/.dsh/。
定位:把整套 DSH 配置(preset + 插件 + 经验文档 + profile patch)当成一个 git 仓库来管理——可 review、可回滚、可协作,用一条 ./install.sh 幂等同步到 ~/.dsh。这是 DSH 的「dotfiles 范式」,不是又一个插件。
为什么(Why)
DSH 生态里装插件的主流方式是 marketplace「浏览 + 一键装」。这适合发现新插件,但不适合复现你自己的整套配置。
展开完整文档(README 剩余 1 节)
dsh-plugins
我在 DeepSeek Harness (DSH) 上自建的插件与 agent preset 仓库。这里是「真理源」;运行时位置是 ~/.dsh/。
定位:把整套 DSH 配置(preset + 插件 + 经验文档 + profile patch)当成一个 git 仓库来管理——可 review、可回滚、可协作,用一条 ./install.sh 幂等同步到 ~/.dsh。这是 DSH 的「dotfiles 范式」,不是又一个插件。
为什么(Why)
DSH 生态里装插件的主流方式是 marketplace「浏览 + 一键装」。这适合发现新插件,但不适合复现你自己的整套配置。本仓库解决后一个问题:
| 诉求 | marketplace 一键装 | 本仓库(dotfiles 范式) |
| 发现新插件 | ✅ 强 | ❌ 不管 |
| 复现整套配置 | ❌ 手动拼 | ✅ git clone + ./install.sh |
| 版本可审计 | 部分(@latest 漂移) | ✅ requirements.txt 锁版本 |
| 变更可 review / 回滚 | ❌ | ✅ git PR / revert |
| 团队共享 | 难 | ✅ 一个仓库 |
生态现状与定位
DSH 生态 2026-08 刚开源,「装插件」的主流是 marketplace 一键装(dsh-market 等),解决「发现」已经很成熟;但「把整套配置当代码来管理」这一层在 DSH 里还没有被广泛验证的方案——现成的「分享整套配置」工具(如 dshp,1 star / 0 fork)基本是刚生成的 AI repo,不足以作为范式参考。
同一范式在 Claude Code 生态已被验证并落地:
- ai-sync(git 备份同步 ~/.claude)
- dotai / ai-dotfiles-manager(AI agent 的 dotfiles 全家桶)
- ai-config-cli(声明式插件清单,对应本仓库的 requirements.txt)
本仓库 = 把 ai-sync / dotai 这条已验证的路搬进 DSH:git 仓库作真理源、install.sh 幂等同步、requirements.txt 锁版本。
一句话:marketplace 管「发现」,本仓库管「复现」;两者正交,不互斥。
目录结构
dsh-plugins/
├── plugins/ # host-plane 插件 + 外部插件声明 │ ├── mode-experience.mjs # 按 preset 名注入 DOCUMENT/{preset}.md 到 system prompt │ └── requirements.txt # 外部插件声明(source@version,# 注释,版本锁死) ├── packages/ # 本地双面包插件(每包一个目录,basename = 包名) ├── presets/ # 自建 agent preset(每 preset 一个目录) ├── preset-actions/ # mode-gate preset actions(每 action 一个目录,内含 SKILL.md) ├── profile/ │ └── cordis.patch.yml # web profile 的 user patch 层,引用 ../plugins/.mjs ├── document/ # 经验文档(GENERAL.md 全模式 + {mode}.md 按模式) │ ├── GENERAL.md │ └── cordis.md ├── feature_intents/ # 需求意图(唯一规范位置) ├── scripts/ # 运维脚本(顶层仅构建+护栏,一次性进 archive/) ├── patches/ # install.sh 引用的补丁 ├── extensions/ # 浏览器扩展(独立交付物,不由 install.sh 部署;目录名不带版本) ├── docs/ # 设计文档(INDEX.md 为索引,plans/ 为计划) ├── temp/ # 构建缓存(gitignored,不提交) ├── install.sh # 一键把上面内容 symlink/安装 进 ~/.dsh ├── ARCHITECTURE.md # 架构地图 + 依赖规则(护栏: scripts/verify-architecture.sh) └── README.md
部署
./install.sh # 部署到 ${DSH_HOME:-$HOME/.dsh} ./install.sh /path # 部署到指定 DSH home
install.sh 会做六类同步(plugins / profile / document 用 symlink,改仓库 = 改运行时;presets 和 packages 必须用真实目录拷贝;外部插件用 pnpm 安装):
1. plugins/.mjs → ~/.dsh/profiles/web/.mjs
2. profile/cordis.patch.yml → ~/.dsh/profiles/web/cordis.patch.yml
3. presets// → ~/.dsh/.agent-presets//(拷贝,不是 symlink)
4. document/.md → ~/.dsh/DOCUMENT/.md
5. packages// → ~/.dsh/profiles/node_modules/(本地双面包插件 拷贝)
6. plugins/requirements.txt → dsh plugin --profile web add(外部插件安装,pnpm 前向器)
为什么 presets 不能 symlink:agent-presets 发现逻辑用 readdir(..., { withFileTypes: true }),只认 child.isDirectory() === true 的目录;symlink 的 isDirectory() 恒为 false,会被静默跳过 —— 所以你在仓库里能看到 preset,dsh 的模式选择器里却看不到。
为什么 packages 不能 symlink:Node 加载模块时会 realpath 符号链接,随后从仓库目录向上解析包内部的裸 peer 依赖(如 @deepseek-ai/dsh-typert-protocol),而仓库没有 node_modules/(已 gitignore),导致 ERR_MODULE_NOT_FOUND。真实拷贝让模块物理落在 profiles/node_modules 下,peer 依赖自然解析。
改完插件后必须重启 dsh web 才生效(web 的 HMR 是关闭的)。
注意事项
- 不要直接 git init 在 ~/.dsh/ 里:那里混着 sessions/、storages/、.anonymous-user-id、node_modules/ 等敏感/无关内容。
- 不要改部署自带的 preset:dsh 安装位置旁的 config/agent-presets/(通常是某次 npx 缓存里的 node_modules/@deepseek-ai/dsh/config/agent-presets/)下的 cordis 等 preset 属于部署本身,升级会被覆盖。要改就 copy 一份到这里再改。
- profile/cordis.yml 是 profile loader 自动生成的空根,不要手动编辑,也不要入库(已 gitignore)。
- DOCUMENT/ 里的 .mode-experience.log 是插件运行日志,不入库(已 gitignore)。
- 如果 dsh web 在启动时重新生成了某个文件覆盖了 symlink,重跑一次 ./install.sh 即可。
连远程仓库(备份 + 版本管理)
git remote add origin
git push -u origin main
推荐用私有仓库(GitHub / Gitea / GitLab 均可)。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
67-68/dsh-plugins
用 git 管理整套 DSH 配置并一键幂等同步
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,225未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,370已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13941 个插件含 PR 收录与…
★ 355已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目