把 DSH 的配置、插件和本地源码,安全地带到每一台设备。
42.7/100
综合分
23
GitHub 星标
66
npm 周下载
—/5
用户评分
数据截至 2026/9/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @dickpy/dsh-cloud-syncnpm 源 · @dickpy/dsh-cloud-sync 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 56 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@dickpy/dsh-cloud-sync @ 0.20.10
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 07:02:23
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 81 处,展示前 28 条)
- 发起网络请求lib/client.js:454
const response = await fetch(`/api/dsh-cloud-sync/${path}`, { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify(va - 写入剪贴板lib/client.js:622
try { await navigator.clipboard?.writeText(value.userCode) } catch {} - 写入剪贴板lib/client.js:637
h('div', { className: 'githubCodeCard' }, h('strong', null, authorization.userCode), h('button', { className: 'githubCopyCode', disabled: busy !== '', - 读取本地文件lib/core.js:54
].find(candidate => candidate !== undefined && existsSync(candidate)) - 执行外部命令固定命令lib/core.js:57
const found = await commandOutput(spawn('where.exe', ['pnpm.cmd'], { shell: false, windowsHide: true })) - 读取本地文件lib/core.js:58
globalShim = found.stdout.split(/ ? /).map(value => value.trim()).find(candidate => candidate !== '' && existsSync(candidate)) - 读取本地文件lib/core.js:61
if (globalShim === undefined || !existsSync(globalShim)) return undefined - 读取本地文件lib/core.js:64
if (!existsSync(target) || await readFile(target, 'utf8') !== content) await writeFile(target, content, 'utf8') - 读取本地文件lib/core.js:64
if (!existsSync(target) || await readFile(target, 'utf8') !== content) await writeFile(target, content, 'utf8') - 写入本地文件lib/core.js:64
if (!existsSync(target) || await readFile(target, 'utf8') !== content) await writeFile(target, content, 'utf8') - 读取本地文件lib/core.js:79
try { return JSON.parse(await readFile(file, 'utf8')) } catch (error) { if (error?.code === 'ENOENT') return fallback; throw error } - 写入本地文件lib/core.js:81
async function writeJson(file, value) { await mkdir(dirname(file), { recursive: true }); await writeFile(file, `${JSON.stringify(value, null, 2)}\n`, - 写入本地文件lib/core.js:81
async function writeJson(file, value) { await mkdir(dirname(file), { recursive: true }); await writeFile(file, `${JSON.stringify(value, null, 2)}\n`, - 写入本地文件lib/core.js:81
async function writeJson(file, value) { await mkdir(dirname(file), { recursive: true }); await writeFile(file, `${JSON.stringify(value, null, 2)}\n`, - 写入本地文件lib/core.js:205
await writeFile(path, next, 'utf8') - 写入本地文件lib/core.js:214
await writeFile(path, next, 'utf8') - 执行外部命令固定命令lib/core.js:248
const child = spawn('powershell.exe', ['-NoProfile', '-NonInteractive', '-Command', script], { shell: false, windowsHide: true, stdio: ['pipe', 'pipe' - 删除本地文件lib/core.js:264
if (Object.keys(secrets).length === 0) { await rm(credentialsPath(home), { force: true }); return } - 发起网络请求lib/core.js:460
const response = await fetch(url, { ...init, signal: controller.signal }) - 发起网络请求lib/core.js:628
const response = await fetch(url, { ...init, signal: controller.signal }) - 发起网络请求lib/core.js:682
const response = await this.request('PUT', this.objectPath(key), { body, ifMatch, ifNoneMatch }) - 发起网络请求lib/core.js:688
const response = await this.request('GET', this.objectPath(key)) - 发起网络请求lib/core.js:694
const response = await this.request('HEAD', this.bucketPath()) - 发起网络请求lib/core.js:722
const response = await fetch(url, { method, headers: githubApiHeaders(token, body !== undefined, headers), body, signal: controller.signal }) - 删除本地文件lib/core.js:1212
if (previous?.archive !== undefined && previous.archive !== archive) await rm(join(syncRoot(home), 'archives', previous.archive), { force: true }) - 删除本地文件递归lib/core.js:1220
await Promise.all(entries.slice(MAX_LOCAL_BACKUPS).map(name => rm(join(directory, name), { recursive: true, force: true }))) - 删除本地文件递归lib/core.js:1261
await rm(target, { recursive: true, force: true }) - 执行外部命令来自配置/变量lib/core.js:1493
return commandOutput(spawn(command.command, command.args, { cwd: dir, shell: false, windowsHide: true }))
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
4 张 · 点击查看大图功能亮点
- 同步配置档
- 同步插件源码
- WebDAV同步
可移植的 DeepSeek Harness 配置档,通过 WebDAV 同步本地插件源码。
最近更新
在 GitHub 查看全部 →v0.20.102026-10-30
本次更新让只提供 HTTP WebDAV 的家庭 NAS 可以作为同步渠道,解决 #7,合入 #8。
· HTTP WebDAV
· 默认继续要求 HTTPS;需要连接仅支持 HTTP 的 NAS 时,在 WebDAV 连接窗口勾选 允许 HTTP(仅限可信内网),再填写 http:// 开头的 DAV 地址。
· 显示中英文明文凭据提示,并在保存配置、切换渠道、重新打开设置及复用已存密码重连时保留该选项。
· 切回 HTTPS 并关闭该选项后,会清除 HTTP 授权设置。
HTTP 会明文传输账号凭据及未加密的同步内容。仅在可信家庭网络或内网中启用,公网访问请使用 HTTPS。
· 修复与验证
· 连接成功提示现在显示实际渠道名称,避免 WebDAV 等渠道误显示为 GitHub Gist。
· 同步界面版本号与安装包版本统一为 0.20.10。
· 补充中英文使用说明与 HTTP 授权、协议限制、凭据脱敏、断开重连的回归测试。
· 语法检查、核心集成测试和本地化测试通过;使用本地模拟 WebDAV 服务完成浏览器交互验证。
· 安装与更新
dsh plugin --profile web add @dickpy/dsh-cloud-sync@0.20.10
也可下载本页的 dickpy-dsh-cloud-sync-0.20.10.tgz 后安装。已安装用户可通过云同步设置页的更新入口升级;安装完成后完全退出并重启 DSH。
感谢 @altruistOS 的贡献。
完整变更:
v0.20.92026-09-08
· 亮点
· 新增可配置的历史保留上限(1-200,默认 30)。历史备份数量超过上限后,最旧的备份会自动从云端删除(#6)。
· 在 Web UI 的「配置与历史」标签页里改这个上限;该值按设备保存,切换服务商后依然生效。
· 请求里没带 auto-sync 和 sync-scope 时,settings/preferences 会保留现有值。
验证:
@dickpy/dsh-cloud-sync@0.20.9 test
node test/core.test.mjs && node test/client-locale.test.mjs
core tests passed
client locale tests passed 均通过。
完整更新日志:
v0.20.82026-08-31
· 亮点
· 通过 DSH locale 服务为 Web UI 加上完整的中英文 i18n 支持。
· 支持实时切换语言,无需重启 DSH Web。
· 本地化导航、标签页、对话框、按钮、字段、工具提示、ARIA 标签、状态、错误和同步结果。
· 用插值保留服务商名称、URL、路径、包名和服务端错误详情。
· 增加 locale 与插值的回归测试。
验证:
@dickpy/dsh-cloud-sync@0.20.8 check
node --check lib/index.js && node --check lib/core.js && node --check lib/client.js、
@dickpy/dsh-cloud-sync@0.20.8 test
node test/core.test.mjs && node test/client-locale.test.mjs
core tests passed
client locale tests passed 均通过。
完整变更日志:
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成DSH Cloud Sync
把 DSH 的配置、插件和本地源码,安全地带到每一台设备。
@dickpy/dsh-cloud-sync · WebDAV / Amazon S3 / OSS / COS / MinIO / 七牛云 Kodo / GitHub Gist · 快照历史 · 冲突恢复 · GitHub 自更新
English · 变更日志 · GitHub Releases · 问题反馈
它解决了什么问题?
DSH Cloud Sync 的重点不是绑定某一种存储服务,而是让插件环境可以随时随地同步:在办公室、家里或新电脑上,都能用自己顺手的云服务保存配置和插件信息,再快速恢复出一致的 DSH 环境。
它把这件事变成一个清晰的流程:选择任意支持的云服务,上传可重建的配置和源码归档,把依赖安装交给 DSH / pnpm,在目标设备上恢复出一致的插件环境。
- 不复制会话、附件、node_modules、pnpm 缓存或明文凭据。
- 不绑定某一种云服务:WebDAV、Amazon S3、阿里云 OSS、腾讯云 COS、MinIO、七牛云 Kodo 和 GitHub Gist 都可以使用。
- 不把更新放在私有 WebDAV:插件本身通过公开 GitHub Releases 检查和安装更新。
实际效果
设置页提供三个清晰的工作区:云服务、配置与历史、同步状态。
展开完整文档(README 剩余 1 节)
DSH Cloud Sync 把 DSH 的配置、插件和本地源码,安全地带到每一台设备。 @dickpy/dsh-cloud-sync · WebDAV / Amazon S3 / OSS / COS / MinIO / 七牛云 Kodo / GitHub Gist · 快照历史 · 冲突恢复 · GitHub 自更新 English · 变更日志 · GitHub Releases · 问题反馈 它解决了什么问题? DSH Cloud Sync 的重点不是绑定某一种存储服务,而是让插件环境可以随时随地同步:在办公室、家里或新电脑上,都能用自己顺手的云服务保存配置和插件信息,再快速恢复出一致的 DSH 环境。 它把这件事变成一个清晰的流程:选择任意支持的云服务,上传可重建的配置和源码归档,把依赖安装交给 DSH / pnpm,在目标设备上恢复出一致的插件环境。 - 不复制会话、附件、node_modules、pnpm 缓存或明文凭据。 - 不绑定某一种云服务:WebDAV、Amazon S3、阿里云 OSS、腾讯云 COS、MinIO、七牛云 Kodo 和 GitHub Gist 都可以使用。 - 不把更新放在私有 WebDAV:插件本身通过公开 GitHub Releases 检查和安装更新。 实际效果 设置页提供三个清晰的工作区:云服务、配置与历史、同步状态。下面是当前版本的实际界面: 核心能力 | 能力 | 你得到的结果 | | 多云同步渠道 | WebDAV、Amazon S3、阿里云 OSS、腾讯云 COS、MinIO、七牛云 Kodo、GitHub Gist;同一时间只启用一个渠道,切换服务不需要改代码 | | GitHub 授权连接 | 复制设备授权码并打开 GitHub 确认,无需手动创建 Gist;也可绑定已有的空 Gist | | 轻量可重建快照 | 同步 package.json、lockfile、workspace、patch 和市场热更新 YAML,而不是打包整个运行环境 | | 本地源码归档 | 自动发现可达的 file: / link: 插件源码,归档后换盘符、换电脑也能恢复 | | 三种同步策略 | 智能合并、云端优先、本地优先;两端同时修改同一项时先展示差异再执行 | | 历史与恢复 | 每次成功同步留下快照,支持预览、恢复远端版本和回滚到指定历史版本;历史备份数量上限可配置(默认 30),超出自动删除最旧备份 | | 插件安装状态 | 对比远端快照与本机 Web Profile,直接安装或卸载缺失插件 | | GitHub 自更新 | 从 GitHub Releases 检查更新,下载 .tgz 后校验 SHA-256,再由用户确认安装 | | 兼容加密和自动同步 | 保留已有 AES-256-GCM、设备名和定时同步配置;界面只保留更容易理解的核心操作 | 工作方式 下面这张图展示了双向同步的完整链路:两台设备围绕云端快照仓库同步,保留历史、支持回滚,并可按智能合并、云端优先或本地优先执行。 目标设备只需要相同的同步渠道和 DSH profile。恢复会先备份当前 profile,再写入快照;依赖安装等到完全重启 DSH 后执行,避免覆盖正在运行的 bundle。 快速开始 按推荐顺序,任选一种方式安装;无论哪种方式,安装完成后都需要完全退出并重启 DSH Web,然后在 设置 → 云同步 中开始配置。 方式一:让 AI 助手帮你安装(最省事) 把下面这段话发给 DSH 或 Codex,让它执行安装并重启 DSH Web: 请帮我安装 DSH Cloud Sync 插件(npm 包 @dickpy/dsh-cloud-sync),然后重启 DSH Web。 方式二:通过 npm 安装(推荐) dsh plugin --profile web add @dickpy/dsh-cloud-sync 方式三:通过聚合包(.tgz)安装 从 GitHub Releases 下载最新的 dickpy-dsh-cloud-sync-*.tgz,然后执行: dsh plugin --profile web add .\dickpy-dsh-cloud-sync-0.20.6.tgz 适合无法直接访问 npm registry 的内网或离线环境。 方式四:自己开发启动 git clone https://github.com/dickpy/dsh-cloud-sync.git cd dsh-cloud-sync npm install npm run check dsh plugin --profile web add . 适合需要修改插件源码、调试或贡献代码的场景。 第一次同步 1. 打开 云服务,选择 WebDAV、S3、OSS、COS、MinIO、七牛云 Kodo 或 GitHub Gist。Gist 可通过授权码连接,授权完成后会自动创建 secret Gist。 2. 进入 配置与历史,选择同步策略并点击 开始同步。 3. 需要手动补充本地插件源码时,在同一页填写源码目录并点击 备份源码。 4. 换到新设备后,在 同步状态 查看插件安装情况;可先预览远端快照,再应用恢复。 同一时间只有一个同步渠道处于启用状态。连接并启用新的渠道时,旧渠道会自动停用。 每种云服务会分别保存自己的 Endpoint、Region、Bucket、对象前缀和 Access Key ID。切换回已保存的渠道时,表单会自动填充这些信息;如果该渠道的密钥已保存在本机,密钥框留空即可直接复用,不需要再次输入。 GitHub Gist GitHub Gist 很适合不涉及本地插件源码归档的配置同步:profile 配置、插件依赖、锁文件、市场 YAML、历史快照都很轻量,使用一个 secret Gist 即可完成多设备恢复。 - 在设置中选择 GitHub Gist,复制显示的授权码并在打开的 GitHub 页面确认授权;插件会自动创建一个受管 secret Gist。 - Gist API 的单个同步对象限制为约 700 KiB,受管 Gist 最多 200 个文件。超过限制时同步会明确失败,不会截断数据。 - 连接 Gist 后会自动切换为“仅配置同步”,本地插件源码不会上传。需要同步源码时请使用 WebDAV、S3、OSS、COS、MinIO 或七牛云 Kodo。 - secret Gist 并不等同于端到端私密存储,持有链接的人可读取内容;建议启用本插件的客户端 AES-256-GCM 加密。 GitHub 授权码连接会使用本项目的 OAuth App,只请求 gist 权限;当授权服务暂不可用时,界面会自动提供拥有 gist 权限的 GitHub Token 作为备用连接方式。 WebDAV 目标目录不存在时,保存连接或首次同步会自动创建该目录;嵌套目录以及包含空格或非 ASCII 字符的目录也无需手动预先创建。 支持的同步渠道 | 渠道 | 适合场景 | 配置要点 | | WebDAV | 坚果云、Nextcloud、NAS 等 | 填写 DAV 地址、用户名和应用密码 | | Amazon S3 | AWS 或兼容 S3 的对象存储 | Endpoint、Region、Bucket、Access Key | | 阿里云 OSS | 阿里云对象存储 | 使用 OSS 的 S3 兼容 Endpoint | | 腾讯云 COS | 腾讯云对象存储 | Bucket 通常包含 APPID,填写对应 Region | | MinIO | 自建对象存储、内网或本地开发 | 填写 MinIO Endpoint、Bucket 和密钥 | | 七牛云 Kodo | 七牛云对象存储(新用户有免费额度) | Bucket 填写控制台中的 S3 空间名(全局唯一),Region 用七牛云 S3 Region ID(如 cn-east-1) | 公共网络上的存储服务建议使用 HTTPS。MinIO 在本机或可信内网中可以使用 HTTP。 同步策略 | 策略 | 行为 | | 智能合并(默认) | 合并两端的插件依赖、Bundle 和源码归档;发现同一项目被两端修改时,先让你确认 | | 云端优先 | 使用远端快照覆盖当前 profile,适合新设备恢复 | | 本地优先 | 使用当前 profile 覆盖远端快照,适合把本机状态作为最新版本 | 安全边界 - 快照、历史和源码归档可使用 AES-256-GCM 客户端加密;每个对象使用新的 KDF salt。 - 密码和派生密钥不会写入明文设置文件;Windows 使用当前用户 DPAPI 保护已保存凭据。 - 恢复前自动备份当前 profile,源码归档恢复会做 SHA-256 校验并拒绝路径穿越。 - 加密保护的是远端内容,不替代对象存储本身的权限控制;请为 Bucket、Endpoint 以及 MinIO / Kodo 管理员账号配置最小权限。 GitHub 自更新 打开云同步设置页时,插件会直接检查 GitHub Releases,不依赖任何 WebDAV 或对象存储配置。发现新版本后: 1. 用户点击 更新; 2. 插件下载对应的 .tgz 到本机 release 缓存; 3. 使用 GitHub 提供的 SHA-256 资产摘要校验; 4. 用户确认后安装到 web profile,重启 DSH 完成切换。 更新始终是显式操作,不会在同步时静默替换正在运行的 Cloud Sync。 开发与测试 环境要求:Node.js 18 或更高版本、pnpm。 npm install npm run check npm test npm pack 项目结构: lib/index.js bundle 入口和本地 API 路由 lib/core.js 存储渠道、快照、加密和插件生命周期 lib/client.js 设置页 UI test/core.test.mjs 核心流程集成测试 docs/screenshots/ README 界面截图 发布 1. 更新 package.json 版本号并添加 CHANGELOG.md 条目; 2. 执行 npm run check 和 npm test; 3. 执行 npm pack 生成 .tgz; 4. 创建同版本的 GitHub Release 并上传 .tgz; 5. 其他设备会在设置页检测到更新,并由用户显式安装。 常见问题 没有 WebDAV,也能检查插件更新吗? 可以。插件更新来自 GitHub Releases,与同步渠道完全独立;WebDAV、S3、OSS、COS、MinIO 和七牛云 Kodo 只负责你的配置快照和源码归档。 会不会复制整个 node_modules? 不会。同步的是可重建的 profile 文件和必要的本地插件源码,依赖由目标设备上的 DSH / pnpm 重新安装。 为什么恢复后要重启 DSH? 恢复会修改 profile 配置。重启可以让 pnpm 和 DSH 从新的 profile 重新建立依赖,避免在运行中的 bundle 上热替换。 如何排除不想同步的文件? 在 DSH 同步目录创建 .dshsyncignore,每行填写一个要排除的文件或目录名。 许可证 MIT © 2025 dickpy
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
dickpy/dsh-cloud-sync
把 DSH 的配置、插件和本地源码,安全地带到每一台设备。
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,173已汉化DeepSeek 客户端
74.4
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,308已汉化DSH
71.3
智能体运行框架路由HarnessRouter/harnessrouter
智能体运行框架的统一接口。
★ 3,897已汉化DSH
71.2
这是你的仓库?认领条目