🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

插件合集 QHX-BNU/dsh-plugins

DeepSeek Harness
QHX-BNU28 天前有提交已提供中文文档扫描:含敏感能力

DSH(DeepSeek Harness)插件:code-panel、memory-admin、retract-prompt

32.9/100
综合分
4
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/7 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:仓库根目录无 package.json,浅层子目录有 12 份 dsh 插件清单(dsh-agent-factory/package.json、dsh-drawio/package.json、dsh-memory-admin/package.json 等),无法唯一定位安装名。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add QHX-BNU/dsh-plugins
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · chat
装得上吗
作者未把包发布到 npm,只能用源码安装
插件本身没问题,是分发方式不同
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 28 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

仓库根目录无 package.json,浅层子目录有 12 份 dsh 插件清单(dsh-agent-factory/package.json、dsh-drawio/package.json、dsh-memory-admin/package.json 等),无法唯一定位安装名

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-plugins(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/21 02:57:28

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 91 处,展示前 80 条)
  • 发起网络请求
    dsh-agent-factory/lib/client.js:115
    res = await fetch(path, init);
  • 读取本地文件
    dsh-agent-factory/lib/store.js:110
    const raw = await readFile(this.path, 'utf8');
  • 读取本地文件
    dsh-agent-factory/lib/store.js:241
    return (await stat(this.path)).isFile();
  • 发起网络请求
    dsh-code-panel/lib/client.js:294
    return fetch(path, init).then((res) => res.json()).then((data) => {
  • 发起网络请求
    dsh-code-panel/lib/client.js:323
    res = await fetch(url);
  • 发起网络请求
    dsh-code-panel/lib/client.js:1157
    openRequests.request({ root: d.root, rel: d.rel, name: d.name });
  • 读取本地文件
    dsh-drawio/src/service.ts:62
    canonical = await realpath(root)
  • 读取本地文件
    dsh-drawio/src/service.ts:113
    handle = await readdir(abs, { withFileTypes: true })
  • 读取本地文件
    dsh-drawio/src/service.ts:133
    const info = await stat(childAbs)
  • 读取本地文件
    dsh-drawio/src/service.ts:156
    info = await stat(target)
  • 读取本地文件
    dsh-drawio/src/service.ts:165
    const content = await readFile(target, 'utf8')
  • 读取本地文件
    dsh-drawio/src/service.ts:176
    async stat(rootArg: string, path: string): Promise<DrawioOpResult> {
  • 写入本地文件
    dsh-drawio/src/service.ts:220
    await mkdir(dirname(target), { recursive: true })
  • 写入本地文件
    dsh-drawio/src/service.ts:222
    await writeFile(target, content, 'utf8')
  • 读取本地文件
    dsh-drawio/src/static.ts:95
    info = await stat(target)
  • 读取本地文件
    dsh-drawio/src/static.ts:116
    const stream = createReadStream(target)
  • 写入本地文件
    dsh-drawio/src/tools.ts:184
    await mkdir(dirname(target), { recursive: true })
  • 写入本地文件
    dsh-drawio/src/tools.ts:185
    await writeFile(target, content)
  • 写入本地文件
    dsh-drawio/src/tools.ts:510
    await mkdir(dirname(source.absPath), { recursive: true })
  • 写入本地文件
    dsh-drawio/src/tools.ts:511
    await writeFile(source.absPath, edited.xml, 'utf8')
  • 读取本地文件
    dsh-drawio/src/watch.ts:73
    entries = await readdir(abs, { withFileTypes: true })
  • 读取本地文件
    dsh-drawio/src/watch.ts:89
    const info = await stat(childAbs)
  • 发起网络请求
    dsh-memory-admin/lib/client.js:106
    res = await fetch(path, init);
  • 写入本地文件
    dsh-memory-admin/lib/store.js:186
    mkdirSync(dirname(resolved), { recursive: true });
  • 写入本地文件
    dsh-pwsh-guard/lib/audit.js:33
    mkdirSync(dirname(file), { recursive: true });
  • 写入本地文件
    dsh-pwsh-guard/lib/audit.js:34
    appendFileSync(file, JSON.stringify({ ts: new Date().toISOString(), ...entry }) + "\n", "utf8");
  • 读取本地文件
    dsh-pwsh-guard/lib/audit.js:44
    if (!existsSync(file)) return [];
  • 读取本地文件
    dsh-pwsh-guard/lib/audit.js:45
    const lines = readFileSync(file, "utf8").split(/ ? /).filter((line) => line.trim().length > 0);
  • 读取本地文件
    dsh-pwsh-guard/lib/index.js:55
    content: await readFile(SKILL_URL, "utf8"),
  • 发起网络请求
    dsh-retract-prompt/lib/client.js:52
    return fetch(path, init).then((res) => res.json()).then((data) => {
  • 发起网络请求
    dsh-retract-prompt/lib/client.js:88
    configPromise ??= fetch("/retract-prompt/api/config")
  • 写入剪贴板
    dsh-retract-prompt/lib/client.js:212
    navigator.clipboard.writeText(text).then(done).catch(() => {});
  • 发起网络请求
    dsh-scheduled-tasks/lib/client.js:114
    res = await fetch(path, init);
  • 读取本地文件
    dsh-scheduled-tasks/lib/scheduler.js:251
    const raw = readFileSync(this.filePath, 'utf8');
  • 写入本地文件
    dsh-scheduled-tasks/lib/scheduler.js:264
    renameSync(this.filePath, `${this.filePath}.corrupt-${Date.now()}`);
  • 写入本地文件
    dsh-scheduled-tasks/lib/scheduler.js:276
    mkdirSync(dir, { recursive: true });
  • 写入本地文件
    dsh-scheduled-tasks/lib/scheduler.js:278
    writeFileSync(tmp, JSON.stringify(this.tasks, null, 2), 'utf8');
  • 写入本地文件
    dsh-scheduled-tasks/lib/scheduler.js:280
    renameSync(tmp, this.filePath);
  • 删除本地文件
    dsh-scheduled-tasks/lib/scheduler.js:282
    rmSync(tmp, { force: true });
  • 执行外部命令来自配置/变量
    dsh-scheduled-tasks/lib/scheduler.js:313
    const child = execFile(
  • 读取本地文件
    dsh-show-image/lib/index.js:167
    data = await readFile(absPath);
  • 发起网络请求
    dsh-skill-manager/lib/client.js:155
    res = await fetch(path, init);
  • 发起网络请求
    dsh-skill-manager/lib/client.js:642
    res = await fetch("/code-panel/api/search?" + params.toString(), { signal });
  • 发起网络请求
    dsh-skill-manager/lib/client.js:685
    res = await fetch("/agent-factory/api/list", { signal });
  • 读取本地文件
    dsh-skill-manager/lib/fs-store.js:155
    const text = await readFile(this.path, 'utf8');
  • 写入本地文件
    dsh-skill-manager/lib/fs-store.js:178
    await mkdir(dirname(this.path), { recursive: true });
  • 写入本地文件
    dsh-skill-manager/lib/fs-store.js:179
    await writeFile(this.path, JSON.stringify(this.data, null, 2), 'utf8');
  • 读取本地文件
    dsh-skill-manager/lib/fs-store.js:192
    entries = await readdir(skillsDir, { withFileTypes: true });
  • 读取本地文件
    dsh-skill-manager/lib/fs-store.js:205
    await stat(active);
  • 读取本地文件
    dsh-skill-manager/lib/fs-store.js:209
    await stat(disabled);
  • 读取本地文件
    dsh-skill-manager/lib/fs-store.js:246
    return await readFile(path, 'utf8');
  • 读取本地文件
    dsh-skill-manager/lib/fs-store.js:267
    try { await stat(active); hasActive = true; } catch { }
  • 写入本地文件
    dsh-skill-manager/lib/fs-store.js:273
    await rename(disabled, active);
  • 写入本地文件
    dsh-skill-manager/lib/fs-store.js:276
    await rename(active, disabled);
  • 删除本地文件递归
    dsh-skill-manager/lib/fs-store.js:300
    if (info.isDirectory()) await rm(target, { recursive: true, force: true });
  • 删除本地文件
    dsh-skill-manager/lib/fs-store.js:301
    else await rm(target, { force: true });
  • 写入本地文件
    dsh-skill-manager/lib/fs-store.js:315
    await mkdir(dir, { recursive: true });
  • 删除本地文件
    dsh-skill-manager/lib/fs-store.js:319
    await rm(disabledPath, { force: true });
  • 写入本地文件
    dsh-skill-manager/lib/fs-store.js:322
    await writeFile(target, content, 'utf8');
  • 删除本地文件递归
    dsh-skill-manager/lib/fs-store.js:337
    await rm(dir, { recursive: true, force: true });
  • 发起网络请求
    dsh-skill-manager/lib/market.js:26
    const res = await fetch(url, { headers: apiHeaders(token), signal: AbortSignal.timeout(20000) });
  • 发起网络请求
    dsh-skill-manager/lib/market.js:82
    const res = await fetch(url, {
  • 发起网络请求
    dsh-skill-manager/lib/market.js:102
    const blobRes = await fetch(json.git_url, {
  • 执行外部命令固定命令
    dsh-skill-manager/lib/publish.js:20
    execFile('gh', ['api', ...args], { maxBuffer: 8 * 1024 * 1024, windowsHide: true }, (err, stdout, stderr) => {
  • 读取本地文件
    dsh-skill-manager/lib/publish.js:52
    await stat(skillDir);
  • 发起网络请求
    dsh-tool-manager/lib/client.js:128
    res = await fetch(path, init);
  • 读取本地文件
    dsh-tool-manager/lib/store.js:71
    const raw = await readFile(this.path, 'utf8');
  • 读取本地文件
    dsh-tool-manager/lib/store.js:201
    return (await stat(this.path)).isFile();
  • 请求外部主机api.deepseek.com
    dsh-usage-panel/lib/api.js:70
    const res = await fetch('https://api.deepseek.com/user/balance', {
  • 发起网络请求
    dsh-usage-panel/lib/api.js:70
    const res = await fetch('https://api.deepseek.com/user/balance', {
  • 发起网络请求
    dsh-usage-panel/lib/client.js:54
    const res = await fetch("/dsh-usage/api/summary", { method: "GET", headers: { accept: "application/json" } });
  • 读取本地文件
    dsh-wallpaper-sync/lib/api.js:78
    const stream = createReadStream(file, { start, end });
  • 发起网络请求
    dsh-wallpaper-sync/lib/client.js:59
    const r = await fetch("/wallpaper-sync/api/current");
  • 发起网络请求
    dsh-wallpaper-sync/lib/client.js:63
    const r = await fetch("/wallpaper-sync/api/status");
  • 发起网络请求
    dsh-wallpaper-sync/lib/client.js:275
    const r = await fetch("/wallpaper-sync/api/library");
  • 执行外部命令固定命令
    dsh-wallpaper-sync/lib/we.js:62
    const out = execFileSync(
  • 读取本地文件
    dsh-wallpaper-sync/lib/we.js:198
    if (existsSync(cand)) {
  • 读取本地文件
    dsh-wallpaper-sync/lib/we.js:246
    if (existsSync(fp)) {
  • 执行外部命令固定命令
    dsh-wallpaper-sync/lib/we.js:249
    const txt = execFileSync('type', [fp], { encoding: 'utf8' }).toString();
  • 读取本地文件
    dsh-wallpaper-sync/lib/we.js:345
    if (existsSync(pj)) { const p = JSON.parse(await fsp.readFile(pj, 'utf8')); title = p.title || p.name || id; }
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
涉及外部主机:api.deepseek.com

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • DSH插件集合
  • code-panel插件

README

由 DeepSeek 最新模型翻译生成
DSH 插件 DeepSeek Harness (DSH) 的插件集合。每个插件都是独立的 Cordis 插件包,包含服务端入口(lib/index.js)与 Web 客户端 bundle(lib/client.js)。 插件列表 | 插件 | 版本 | 说明 | | dsh-code-panel | 0.1.0 | 右侧代码面板:浏览工作区代码与 Agent 代码片段,选中代码即可作为引用直接发给 Agent 解释 | | dsh-memory-admin | 0.1.0 | 记忆管理:直接修改记忆模块内容 + 对话中直接看到加载了哪些记忆模块(零外部依赖,node:sqlite) | | dsh-retract-prompt | 0.1.0 | 撤回指令:停止当前运行并把最后一条用户指令放回编辑器重新编辑,修改后再发送,避免错误指令被继续误执行 | | dsh-scheduled-tasks | 0.1.0 | 定时任务:设置任务执行时间(一次性/每天/每周/间隔)与内容,到点自动向会话发消息唤醒 Agent 或执行系统命令 | | dsh-skill-manager | 0.1.0 | Skill 管理:侧边栏管理入口(下载/启用/禁用/删除 skills),对话输入框输入 @ 弹出 skills 选择器并支持搜索 |
展开完整文档(README 剩余 1 节)
DSH 插件

DeepSeek Harness (DSH) 的插件集合。每个插件都是独立的 Cordis 插件包,包含服务端入口(lib/index.js)与 Web 客户端 bundle(lib/client.js)。

插件列表

| 插件 | 版本 | 说明 |
| dsh-code-panel | 0.1.0 | 右侧代码面板:浏览工作区代码与 Agent 代码片段,选中代码即可作为引用直接发给 Agent 解释 |
| dsh-memory-admin | 0.1.0 | 记忆管理:直接修改记忆模块内容 + 对话中直接看到加载了哪些记忆模块(零外部依赖,node:sqlite) |
| dsh-retract-prompt | 0.1.0 | 撤回指令:停止当前运行并把最后一条用户指令放回编辑器重新编辑,修改后再发送,避免错误指令被继续误执行 |
| dsh-scheduled-tasks | 0.1.0 | 定时任务:设置任务执行时间(一次性/每天/每周/间隔)与内容,到点自动向会话发消息唤醒 Agent 或执行系统命令 |
| dsh-skill-manager | 0.1.0 | Skill 管理:侧边栏管理入口(下载/启用/禁用/删除 skills),对话输入框输入 @ 弹出 skills 选择器并支持搜索 |
| dsh-agent-factory | 0.1.0 | Agent 工厂:可复用的 subagent 模板库(指定子智能体做任务,模板可编辑——含模型供应商/模型名等,可复用;侧边栏管理面板 + agent_list/agent_save/agent_run/agent_delete 四个工具) |
| dsh-tool-manager | 0.1.0 | 工具管理:显示 DSH 全部工具,制作自定义工具(定义参数与执行代码,保存后主 Agent 立即可用),禁用/启用/删除任意工具(侧边栏面板 + toolmgr_list/create/edit/delete/toggle 五个工具) |
| dsh-usage-panel | 0.1.0 | 用量面板:显示 DeepSeek 账户余额、Token 用量与估算费用(适配 DSH Desktop 2.0.2) |
| dsh-wallpaper-sync | 0.1.0 | 背景同步:读取 Wallpaper Engine 当前壁纸作为 DSH 全界面背景,桌面切换壁纸时自动跟随 |
| dsh-drawio | 0.1.0 | drawio 画图:agent 画图工具(drawio_validate / drawio_render / drawio_template)+ 侧边栏「画板」——mxfile XML 实时渲染为 SVG、导出 PNG、写入工作区(纯 TS 零依赖翻译器) |
| dsh-show-image | 0.1.0 | 界面内嵌图片:模型调用 show_image 工具把本地图片以内联卡片显示在 WebUI 对话里(点击看灯箱大图);图片只走展示通道、永不进模型历史(纯文本/多模态模型均安全,主题适配) |
| dsh-pwsh-guard | 0.6.0 | PowerShell 守门:pwsh 调用前的静态检查闸门(22 条坑位,8 条阻断)+ bash→PowerShell 自动修复 + AST/PSScriptAnalyzer 深度检查 + 免转义执行(pwsh_run / run_argv)+ 破坏性操作闸(dangerous 确认)+ 审计日志(pwsh_audit)+ 工具接管(run_in_background 模式见 README) |

安装

将插件目录放到 DSH 的插件工作区中,DSH 会通过 cordis.patch.yml 自动应用补丁并加载插件。

开发

每个插件目录结构:

<plugin>/
├── lib/ # 服务端 + 客户端 bundle ├── cordis.patch.yml # Cordis 补丁配置 ├── package.json # 插件元信息(dsh.client 声明 Web 客户端入口) └── README.md # 插件说明

许可

MIT
预览分享卡片长什么样 ↓QHX-BNU/dsh-plugins
分享 · DeepSeek Harness Hub
QHX-BNU/dsh-plugins

DSH(DeepSeek Harness)插件:code-panel、memory-admin、retract-prompt

这是你的仓库?认领条目

回到顶部