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

自研插件合集 xujiping/dsh-plugins

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

一键安装全局记忆、会话导航与桌面宠物等插件

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

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

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装;安装清单取自 packages/dsh-agent-driver/package.json。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xujiping/dsh-plugins
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · chat
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 30 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/11/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装;安装清单取自 packages/dsh-agent-driver/package.json

展开查看检查明细 ↓

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

✗npm 包dsh-agent-driver(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/11 22:20:36

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

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 58 处,展示前 57 条)
  • 执行外部命令来自配置/变量
    packages/dsh-agent-driver/lib/commands.js:39
    const child = spawn(agent.config.command, args, {
  • 发起网络请求
    packages/dsh-agent-driver/lib/driver-core.js:80
    outcome = await approval.request({
  • 读取本地文件
    packages/dsh-agent-driver/lib/driver-core.js:179
    const parsed = JSON.parse(await readFile(this.path, 'utf8'))
  • 写入本地文件
    packages/dsh-agent-driver/lib/driver-core.js:188
    await mkdir(dirname(this.path), { recursive: true })
  • 写入本地文件
    packages/dsh-agent-driver/lib/driver-core.js:190
    await writeFile(temp, `${JSON.stringify({ version: this.driverVersion, sessions: entries }, null, 2)}\n`, { mode: 0o600 })
  • 写入本地文件
    packages/dsh-agent-driver/lib/driver-core.js:191
    await rename(temp, this.path)
  • 执行外部命令来自配置/变量
    packages/dsh-agent-driver/lib/driver-core.js:363
    child = spawn(this.config.command, this.commandArgs(turn === 1, message), {
  • 读取本地文件
    packages/dsh-agent-driver/lib/hermes-models.js:12
    try { await access(candidate, constants.X_OK); return candidate } catch { }
  • 读取本地文件
    packages/dsh-agent-driver/lib/hermes-models.js:19
    const launcher = await realpath(await executable(agent.config.command))
  • 执行外部命令来自配置/变量
    packages/dsh-agent-driver/lib/hermes-models.js:30
    const child = spawn(parts[0], [...parts.slice(1), fileURLToPath(new URL('./hermes-models.py', import.meta.url)), launcher, JSON.stringify(agent.config
  • 发起网络请求
    packages/dsh-desktop-pet/lib/client.js:1000
    balanceFetching = fetch(BALANCE_ENDPOINT, { cache: 'no-store' })
  • 发起网络请求
    packages/dsh-desktop-pet/lib/client.js:1440
    const response = await fetch(endpoint, {
  • 发起网络请求
    packages/dsh-desktop-pet/lib/client.js:1457
    const status = await fetch(endpoint, { cache: 'no-store', signal: AbortSignal.timeout(2000) })
  • 写入剪贴板
    packages/dsh-desktop-pet/lib/client.js:1507
    await navigator.clipboard.writeText(info)
  • 读取本地文件
    packages/dsh-desktop-pet/lib/index.js:66
    const doc = yaml.parse(readFileSync(settingsPath, 'utf8'))
  • 读取本地文件
    packages/dsh-desktop-pet/lib/index.js:90
    for (const line of readFileSync(credentialsPath, 'utf8').split('\n')) {
  • 发起网络请求
    packages/dsh-desktop-pet/lib/index.js:99
    const res = await fetch(url, { ...init, signal: AbortSignal.timeout(timeoutMs) })
  • 执行外部命令固定命令
    packages/dsh-desktop-pet/lib/index.js:106
    const child = spawn('arkcli', ['usage', 'balance', '--type', 'plan'], { stdio: ['ignore', 'pipe', 'pipe'] })
  • 读取本地文件
    packages/dsh-desktop-pet/lib/index.js:268
    return JSON.parse(readFileSync(require.resolve('@deepseek-ai/dsh/package.json'), 'utf8')).version
  • 读取本地文件
    packages/dsh-desktop-pet/lib/index.js:273
    return JSON.parse(readFileSync(fileURLToPath(pkg), 'utf8')).version
  • 发起网络请求
    packages/dsh-desktop-pet/lib/index.js:287
    const res = await fetch(`${base}/@deepseek-ai/dsh`, { signal, headers: { accept: 'application/vnd.npm.install-v1+json' } })
  • 执行外部命令来自配置/变量
    packages/dsh-desktop-pet/lib/index.js:375
    const child = spawn(process.execPath, [helper, String(process.pid), process.cwd(), ...process.execArgv, ...process.argv.slice(1)], {
  • 写入本地文件
    packages/dsh-desktop-pet/lib/restart.js:9
    mkdirSync(directory, { recursive: true })
  • 执行外部命令来自配置/变量
    packages/dsh-desktop-pet/lib/restart.js:22
    const child = spawn(process.execPath, args, { cwd, env: process.env, detached: true, stdio: ['ignore', log, log] })
  • 发起网络请求
    packages/dsh-own-plugin-manager/lib/client.js:101
    const res = await fetch(url, { cache: 'no-store' })
  • 发起网络请求
    packages/dsh-own-plugin-manager/lib/client.js:107
    const res = await fetch(url, {
  • 写入剪贴板
    packages/dsh-own-plugin-manager/lib/client.js:253
    await navigator.clipboard.writeText(text)
  • 读取本地文件
    packages/dsh-own-plugin-manager/lib/core.js:127
    return readdirSync(join(home, 'profiles'), { withFileTypes: true })
  • 读取本地文件
    packages/dsh-own-plugin-manager/lib/core.js:138
    try { return JSON.parse(readFileSync(path, 'utf8')) } catch { return null }
  • 读取本地文件
    packages/dsh-own-plugin-manager/lib/core.js:144
    const text = readFileSync(join(pkgDir, 'cordis.patch.yml'), 'utf8')
  • 读取本地文件
    packages/dsh-own-plugin-manager/lib/core.js:153
    const text = readFileSync(join(pkgDir, 'lib', 'index.js'), 'utf8')
  • 读取本地文件
    packages/dsh-own-plugin-manager/lib/core.js:227
    try { patchText = readFileSync(join(dir, 'cordis.patch.yml'), 'utf8') } catch { }
  • 写入本地文件
    packages/dsh-own-plugin-manager/lib/core.js:267
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    packages/dsh-own-plugin-manager/lib/core.js:269
    writeFileSync(tmp, JSON.stringify(state, null, 2), 'utf8')
  • 写入本地文件
    packages/dsh-own-plugin-manager/lib/core.js:270
    renameSync(tmp, path)
  • 读取本地文件
    packages/dsh-own-plugin-manager/lib/core.js:279
    const data = JSON.parse(readFileSync(path, 'utf8'))
  • 写入本地文件
    packages/dsh-own-plugin-manager/lib/core.js:288
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    packages/dsh-own-plugin-manager/lib/core.js:290
    writeFileSync(tmp, JSON.stringify({ version: 1, repos }, null, 2), 'utf8')
  • 写入本地文件
    packages/dsh-own-plugin-manager/lib/core.js:291
    renameSync(tmp, path)
  • 执行外部命令固定命令
    packages/dsh-own-plugin-manager/lib/core.js:554
    out.commit = execFileSync('git', ['-C', sourcePath, 'rev-parse', '--short', 'HEAD'], {
  • 执行外部命令固定命令
    packages/dsh-own-plugin-manager/lib/core.js:569
    const url = execFileSync('git', ['-C', sourcePath, 'remote', 'get-url', 'origin'], {
  • 执行外部命令固定命令
    packages/dsh-own-plugin-manager/lib/core.js:583
    const prefix = execFileSync('git', ['-C', sourcePath, 'rev-parse', '--show-prefix'], {
  • 写入本地文件
    packages/dsh-own-plugin-manager/lib/index.js:60
    writeFileSync(tmp, text, 'utf8')
  • 写入本地文件
    packages/dsh-own-plugin-manager/lib/index.js:61
    renameSync(tmp, path)
  • 读取本地文件
    packages/dsh-own-plugin-manager/lib/index.js:141
    try { text = readFileSync(patchPath, 'utf8') } catch { }
  • 发起网络请求
    packages/dsh-task-board/lib/client.js:79
    const res = await fetch(url, { cache: 'no-store' })
  • 发起网络请求
    packages/dsh-task-board/lib/client.js:86
    const res = await fetch(url, {
  • 读取本地文件
    packages/dsh-task-board/lib/index.js:143
    return normaliseCards(yaml.parse(readFileSync(path, 'utf8')))
  • 写入本地文件
    packages/dsh-task-board/lib/index.js:154
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    packages/dsh-task-board/lib/index.js:156
    writeFileSync(tmp, body, 'utf8')
  • 写入本地文件
    packages/dsh-task-board/lib/index.js:157
    renameSync(tmp, path)
  • 发起网络请求
    packages/dsh-web-sites/lib/client.js:93
    const res = await fetch(API_LIST, { cache: 'no-store' })
  • 发起网络请求
    packages/dsh-web-sites/lib/client.js:100
    const res = await fetch(API_SAVE, {
  • 读取本地文件
    packages/dsh-web-sites/lib/index.js:104
    return normaliseSites(yaml.parse(readFileSync(path, 'utf8')))
  • 写入本地文件
    packages/dsh-web-sites/lib/index.js:116
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    packages/dsh-web-sites/lib/index.js:118
    writeFileSync(tmp, body, 'utf8')
  • 写入本地文件
    packages/dsh-web-sites/lib/index.js:119
    renameSync(tmp, path)
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

功能亮点

  • 一键安装插件
  • 全局记忆
  • 会话导航

DeepSeek Harness 自研插件全家桶(monorepo):dsh-memory 全局记忆等

README

由 DeepSeek 最新模型翻译生成
dsh-plugins 我(xujiping)的 DeepSeek Harness(DSH)自研插件全家桶。每个子目录 packages/<name> 都是一个独立可安装的 DSH 插件(monorepo),都能用 dsh plugin add 安装。 收录的插件 | 包 | 功能 | 安装 | | packages/dsh-agent-driver | 原生智能体会话驱动(Claude Code + Hermes 双驱动):新会话菜单里选后端,同一 UUID 绑定 DSH 与 CLI 会话,含严格 Remote、原子发布、只读工具与 MCP 隔离 | dsh plugin --profile <name> add link:~/AiProjects/dsh-plugins/packages/dsh-agent-driver | | packages/dsh-chat-scroll-nav | 对话右侧快速导航条:聊天区右缘竖向迷你导航(类似手机通讯录索引),点或拖即跳转到对应消息,当前消息高亮 | dsh plugin --profile <name> add dsh-chat-scroll-nav |
展开完整文档(README 剩余 1 节)
dsh-plugins

我(xujiping)的 DeepSeek Harness(DSH)自研插件全家桶。每个子目录 packages/<name> 都是一个独立可安装的 DSH 插件(monorepo),都能用 dsh plugin add 安装。

收录的插件

| 包 | 功能 | 安装 |
| packages/dsh-agent-driver | 原生智能体会话驱动(Claude Code + Hermes 双驱动):新会话菜单里选后端,同一 UUID 绑定 DSH 与 CLI 会话,含严格 Remote、原子发布、只读工具与 MCP 隔离 | dsh plugin --profile <name> add link:~/AiProjects/dsh-plugins/packages/dsh-agent-driver |
| packages/dsh-chat-scroll-nav | 对话右侧快速导航条:聊天区右缘竖向迷你导航(类似手机通讯录索引),点或拖即跳转到对应消息,当前消息高亮 | dsh plugin --profile <name> add dsh-chat-scroll-nav |
| packages/dsh-desktop-pet | 桌面宠物:Web GUI 里一只纯 CSS 小宠,状态机驱动 idle/walk/sleep/happy/eat/typing/work,点击、拖拽、双击喂食,联动会话状态(AI 输出中打字、工具执行中敲锤) | dsh plugin --profile <name> add link:~/AiProjects/dsh-plugins/packages/dsh-desktop-pet |
| packages/dsh-session-archive | 一键归档空闲会话:侧边栏 workspace 目录行悬停出按钮,按天数(默认 3 天)归档不活动会话,可恢复 | dsh plugin --profile <name> add link:~/AiProjects/dsh-plugins/packages/dsh-session-archive |

packages/
dsh-agent-driver/ 原生智能体会话驱动(Host+Client 半边;Claude Code / Hermes 双驱动 + 新会话菜单) dsh-chat-scroll-nav/ 对话右侧快速导航条(纯 client 半边 lib/client.js;host 半边空实现) dsh-desktop-pet/ 桌面宠物(纯 client 半边;CSS 关键帧动作 + 状态机 + 节律/交互/会话三类触发器) dsh-session-archive/ 一键归档空闲会话(纯 client 半边;workspace 目录行按钮 + archiveSession RPC)

曾有的 dsh-new-session-route、dsh-llm-agent-bridge、dsh-agent-terminal 三个插件(及 dsh-global-memory)已删除:前三个的功能均被 dsh-agent-driver 取代(新会话下拉选后端已由 agent-driver 内置),dsh-global-memory 本地未安装。
历史版本可从 git 历史恢复。

安装方式(以 dsh-agent-driver 为例)

从本仓库
dsh plugin --profile web add link:~/AiProjects/dsh-plugins/packages/dsh-agent-driver

--profile 必填(dsh plugin 转发到 pnpm 按 profile 安装),web 换成你的实际 profile 名。装完重启 dsh web(或重载 profile)生效。

注意:GUI(Desktop)实际用的是 desktop profile。若 GUI 的 pnpm store 版本与
dsh plugin 内置 pnpm 不一致导致 ERR_PNPM_UNEXPECTED_STORE,可手动接线
(零依赖插件等价于 link:):在 ~/.dsh/profiles/desktop/package.json 的 dependencies 加 "<pkg>": "link:~/AiProjects/dsh-plugins/packages/<pkg>"、 dsh.profile.bundles 数组追加包名,并在 node_modules 下建软链。

插件包约定

- package.json:main 指向 host 半边(ESM,导出 name / inject / apply);
exports["./client"] 指向浏览器半边(window.__ModuleLoader__.load 包裹的经典脚本,
factory 返回 { apply, inject });dsh.bundle.patch 指向 cordis.patch.yml; dsh.client 声明 { inject: [], platform: "web" }。
- Host 半边:inject: ['webServer'],用 ctx.webServer.register({ kind: 'exact', path, handler })
注册路由;所有路由必须做回环信任围栏;ctx.effect(() => disposer, 'label') 管理清理。
- Client 半边:纯 DOM 注入(侧边栏行 + 中心面板),自带 , MutationObserver 自愈;挂载失败只 console.warn,绝不让 GUI 启动失败。
- 主题:配色一律用 DSH 官方 --dsw-alias- / --dsw-specific- token,自动跟随 body[data-ds-dark-theme] 明暗切换,不用硬编码颜色。
- UI 只用纯色,不用渐变。

开发

每个包自带测试(如 packages/dsh-agent-driver/test/smoke.mjs,node test/smoke.mjs 运行; agent-driver 与 session-archive 在 package.json 里声明了 npm test 脚本)。
改 client 半边后刷新 Web GUI 即可看到效果(纯 DOM,MutationObserver 自愈)。

License

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

一键安装全局记忆、会话导航与桌面宠物等插件

这是你的仓库?认领条目

回到顶部