一键安装全局记忆、会话导航与桌面宠物等插件
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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 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🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
xujiping/dsh-plugins
一键安装全局记忆、会话导航与桌面宠物等插件
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,489已汉化DSH
73.1
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,918已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,453已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
Download DS Bot for Windows 10/11 64-bit / 下载 Windows…
★ 5,293已汉化DSH
71.2
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,797已汉化DSH
71.1
这是你的仓库?认领条目