dsh-123pan:在 DeepSeek Harness 里直连 123 云盘

前言

在 DSH 里做项目时,工作区文件往往只留在本机:要备份、要传到网盘、要让 Agent 上传刚生成的产物,常见做法是再装一套云盘客户端,或自己写脚本调开放平台接口。123 云盘若走开放平台,还需要 appid / secret,对个人或小团队并不总是顺手。

下面介绍社区插件 dsh-123pan(维护者 cny919191):把 123 云盘 接进 DSH,用手机号或邮箱加密码登录,在宿主内浏览、上传、下载、管理文件,并支持把工作区增量备份到云端。网络请求、MD5、16MB 分片上传、CDN 下载、token 加密在随包提供的 C++ 静态核心 123pan-core.exe 中完成;插件层用 Node.js 做参数拼装与 UI,README 写明不依赖 Python,也不需要额外运行时。

这是什么

架构可以概括为:

dsh 插件 ──工具/设置页──▶ 123pan-core.exe(C++ 静态链接)──▶ 123 云盘

插件在 DeepSeek Harness 中注册 Agent 工具与本机 HTTP 路由,并提供左侧栏「123 云盘」面板与「设置 → 123 云盘」配置页。当前核心的传输与加密实现面向 Windows(Winsock、DPAPI、系统证书存储);README 说明移植到 Linux/macOS 需替换连接层与平台工具部分。

核心功能

以下能力均来自仓库 README 的功能表与说明。

能力 说明
登录 手机号 / 邮箱 + 密码(密码只用于换 token,不落盘);也可粘贴客户端 JWT,或通过配置 apiToken 免账号密码
会话 token 本地用 Windows DPAPI 加密;status 时会自动续期
文件操作 列目录、翻页、按文件名搜索、回收站;上传(MD5 秒传 + 16MB 分片);下载(直链 + 单流写入);临时签名直链
管理 重命名、移动、删除(默认进回收站,可彻底删除)
备份 工作区增量备份:跳过未变化文件、保留目录结构、支持预演(dryRun)
UI 侧栏云朵图标浏览网盘;拖拽上传(或选文件);点行内「下载」;点文件名在线预览文本 / 图片 / 视频 / 音频 / PDF;设置页与侧栏跟随宿主亮暗主题

侧栏拖拽上传受浏览器限制:面板把 File 读成 base64,经 POST /api/dsh-123pan/uploadBytes 落到临时文件后交给核心上传,单文件上限由 maxFileBytes 控制(默认 200MB)。

下载目录优先级(前者优先):请求里的 out → dir → 配置 downloadDir → 当前会话工作区根目录。面板底部可改下载目录,默认跟随工作区;切换工作区后目录会更新。

安装与启用

安装前请自行查看仓库源码与 MIT 许可证;插件以当前 DSH 进程权限运行,并会启动本机子进程访问网盘与会话文件。

方式一:下载 Release(README 推荐)

从 Releases 下载 dsh-123pan-vX.Y.Z.zip,解压到固定目录(例如 D:\plugins\dsh-123pan)。该 zip 是插件目录,不是安装程序。

1、用目录联接挂到 profile 的 node_modules(示例为 Windows,不需要管理员):

cmd /c mklink /J "%USERPROFILE%\.dsh\profiles\<profile>\node_modules\dsh-123pan" "D:\plugins\dsh-123pan"

2、编辑 %USERPROFILE%\.dsh\profiles\<profile>\package.json,dependencies 与 dsh.profile.bundles 两处都要加:

{
  "dependencies": { "dsh-123pan": "file:D:/plugins/dsh-123pan" },
  "dsh": { "profile": { "bundles": ["...", "dsh-123pan"] } }
}

3、完全退出 DSH(任务管理器确认 DeepSeek Harness.exe 已结束)后再打开。在「设置 → 插件」确认 dsh-123pan 已启用,再打开「设置 → 123 云盘」登录。

方式二:从源码

先在插件目录构建核心(README 写明需要 MSYS2 ucrt64 的 g++),再安装进指定 profile:

cd native/core
./build.sh

dsh plugin --profile <profile> add /absolute/path/to/dsh-123pan

更细的排查步骤见仓库 docs/USAGE.md。

配置

可在 profile 的 cordis.patch.yml 中覆盖下列项(均有默认值):

- id: dsh-123pan
  config:
    defaultRemoteDir: dsh-backup/my-project
    maxFileBytes: 209715200
    maxFiles: 5000
    ignoreDirs: ['.git', 'node_modules']
    ignoreGlobs: ['*.log', '*.tmp']
    storeDir: ''
    corePath: ''
    apiToken: ''

apiToken 非空时,可直接用 API Key 作为会话,无需在 UI 里登录。

典型用法

日常:侧栏与设置页

  • 左侧栏点云朵图标:浏览当前网盘目录,拖文件上传或选文件上传。
  • 「设置 → 123 云盘」:登录、查看容量、配置备份、关于信息。

会话里让 Agent 备份工作区

README 示例话术:

把当前工作区备份到 123 云盘的 dsh-backup/python,先预演一遍。

对应工具包括 pan123_backup_workspace(支持 dryRun)、pan123_backup_status、pan123_scan_workspace 等;完整工具列表见 README「给 agent 用的工具」一节。

本机 HTTP API(脚本 / Agent)

插件注册 http://127.0.0.1:<port>/api/dsh-123pan/*,README 强调只接受本机回环与 POST,并校验 Origin / Sec-Fetch-Site。

按本地路径批量上传:

curl -X POST http://127.0.0.1:<port>/api/dsh-123pan/uploadBatch \
  -H 'content-type: application/json' \
  -d '{"files":["D:\work\a.zip","D:\work\b.txt"],"parentId":0}'

下载到指定目录(不传 out/dir 时落到工作区根目录):

curl -X POST http://127.0.0.1:<port>/api/dsh-123pan/download \
  -H 'content-type: application/json' \
  -d '{"fileId":123,"name":"a.zip","dir":"D:\work"}'

用客户端 JWT 登录一次后复用会话:

curl -X POST http://127.0.0.1:<port>/api/dsh-123pan/loginToken \
  -H 'content-type: application/json' \
  -d '{"token":"eyJhbGciOiJIUzI1NiIs..."}'

Agent 上传自己生成的文件时,仓库建议阅读 AGENT.md,避免再生成 Python 中转脚本。

适用场景与注意

适合谁:已在用 123 云盘、希望在 DSH 工作流里完成上传下载与增量备份的个人开发者;需要 Agent 直接调本机 API 或 pan123_* 工具、而不是手写网盘脚本时。

需要知道的限制:

  • 接口走的是客户端私有 API,不是开放平台文档里的稳定开放接口,README 建议个人账号低频自用,高频可能触发风控。
  • 核心 123pan-core.exe 在工作区内可能带 Low 完整性标签,写不了部分系统目录;下载失败时会先落到工作区下的 .dsh-123pan-staging\,再由 Node 搬到目标路径。
  • HTTP 桥仅监听本机;token 密文在 $DSH_HOME/dsh-123pan/session.dat,绑定当前 Windows 用户 DPAPI,不宜当作可迁移的明文凭证。

DeepSeek Harness 的生态是「一切皆插件」;SkillHub 上的插件目录由社区维护,与 DeepSeek / 幻方无官方从属关系。选用插件前请自行审阅源码与发布包。

结尾

dsh-123pan 把 123 云盘的登录、传输与增量备份收进 DSH 一条链路:侧栏与设置页给人用,HTTP 路由与 pan123_* 工具给 Agent 用,C++ 核心承担协议与加密细节。若要安装或查版本,以 GitHub Releases 与 README 为准;插件介绍页见 skillhub.cn/plugins/cny919191/dsh-123pan。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye