dsh-share-import:把 DeepSeek / 豆包公开分享链接导入 DSH 会话

前言

在 DeepSeek Harness(DSH)里做智能体或长对话开发时,常见需求是把别处已经聊完的一轮对话「搬」进当前工作区,接着在同一套会话模型里续写或调试。手动复制粘贴容易丢轮次、标题对不上,也不利于和 DSH 的 v4 会话事件流对齐。dsh-share-import 面向公开的 DeepSeek、豆包分享链接,在本地 DSH 实例中写入一条已完成历史、可续聊的静态会话,无需登录分享方账号,也不触发新的模型生成。

这是什么

dsh-share-import 由社区维护者 Sillykjs 发布,归类为 DSH 生态中的联网工具插件。它读取可匿名访问的分享页或公开 JSON 接口,把对话正文规范化后,通过 DSH 的会话持久化写入你选定的工作区。导入结果仅是历史记录:不会发消息、不会开未结束的 turn;打开会话后,下一条输入自然接在历史之后。

支持的链接形式(须为公开、未过期):

  • DeepSeek:https://chat.deepseek.com/share/<id>
  • 豆包:https://www.doubao.com/thread/<id>(也可不带 www)

核心功能

下面介绍 README 中已说明、且与实现一致的能力。

零凭据拉取。 DeepSeek 走公开分享接口 https://chat.deepseek.com/api/v0/share/content?share_id=…;豆包优先走公开 JSON 快照(常规 id 用 POST /alice/message/share/get,移动端 x… id 用 POST /im/message/share/get),必要时回退到服务端渲染的分享页。不需要登录、token 或无头浏览器。

选择目标工作区。 面板会列出当前 DSH 实例下的工作区,会话写入你所选的那一个。

静态导入。 直接写入 v4 会话事件序列(session/title → turn/start → step/start → user/message → assistant/message → step/end → turn/end → session/end-seed),不调度生成任务。

重复导入防护。 默认同一分享链接再次导入会被拒绝(错误码 ALREADY_IMPORTED);面板提供「仍作为新会话导入」的显式路径。

界面与导航。 文案随 DSH UI 语言在中英文间切换。Settings 里可开关是否在侧栏显示 Share import 入口;状态保存在浏览器 localStorage 键 dsh-share-import:show-nav。

已知限制。 豆包分享仅导入文本;纯图片/视频消息会变成一行占位说明。若分享页声明懒加载且快照无消息,会报 SHARE_LAZY 而非写入截断对话。推理轨迹、联网搜索结果、引用标记等不会进入导入内容。

环境与依赖

插件在 README 中写明针对 DSH 0.2.1-rc.2(web profile)编写与测试。运行 dsh web 的机器需要 Node.js ≥ 20。须使用无需登录即可阅读的公开分享;私有或已失效链接无法导入。Host 侧依赖 DSH 内部服务,DSH 大版本升级后可能需要同步更新插件。

安装与启用

推荐从 GitHub 安装(命令来自官方 README):

dsh plugin --profile web add github:Sillykjs/dsh-share-import

dsh plugin 会把参数转给 profile 内的 pnpm add,因此也可使用 pnpm 支持的其它 specifier,例如固定 tag:

dsh plugin --profile web add github:Sillykjs/dsh-share-import#v0.2.0

npm 发布后可使用:

dsh plugin --profile web add dsh-share-import

安装后:dsh plugin add 会把 dsh-share-import 写入 profile 的 dsh.profile.bundles,并由 cordis.patch.yml 挂载插件。客户端刷新页面即可加载新 bundle(约 500 ms 内生效)。Host 侧须重启运行 dsh web 的进程;DSH 0.2.1-rc.2 不支持 host 插件模块的热重载。

插件以 MIT 许可证发布;安装前建议自行查看仓库源码与许可证。DSH 社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

典型用法

  1. 侧栏进入 Share import(全局导航第三项,下载图标),或从账户菜单 Settings → Share import 打开同一表单。
  2. 按需切换 Show the entry in the sidebar nav(默认显示侧栏入口;关闭后仍可从 Settings 进入)。
  3. 粘贴分享链接并选择工作区。
  4. 点击 Preview 查看标题、轮次数以及首尾问题摘要,确认后 Import session。
  5. 面板显示新会话 id;侧栏刷新后会话标题通常为首条用户问题。Back to chat 返回当前会话。

同一分享默认不能二次导入;若确需重复,面板会出现 Import as a new session anyway。

导入完成后,去重记录写在 $DSH_HOME/share-import/index.json(键为 deepseek:<id> 或 doubao:<id>);会话文件为 $DSH_HOME/sessions/<workspace>/<sessionId>/session.v4.jsonl.zstd。

适用场景与注意

适合: 把公开分享的 DeepSeek / 豆包对话归档到本地 DSH 工作区,在统一会话格式下继续提问或做 harness 相关实验;不想维护分享方账号凭据、只需只读拉取正文时。

注意:

  • 插件会以当前 dsh 进程权限访问网络并写入 $DSH_HOME;安装与运行前应理解其会请求 chat.deepseek.com 与 www.doubao.com,且不读取 cookie 或 DSH 凭据,但导入内容应视为不可信文本。
  • 仅导入问答 prose;末尾仅有用户问、无 assistant 回复的轮次会被丢弃,避免留下 open turn。
  • 常见错误码包括 SHARE_LINK_INVALID、SHARE_NOT_FOUND、SHARE_FETCH_FAILED、SHARE_EMPTY、SHARE_LAZY、WORKSPACE_REQUIRED、PERSISTENCE_UNAVAILABLE、WRITE_FAILED 等,面板与 API 会返回对应标识。

结尾

dsh-share-import 把「公开分享链接 → DSH 可续聊静态会话」做成面板内几步操作,并明确不去生成、不去开未完成轮次。若你在用 DSH 的 web profile 整理跨平台对话素材,可按上文命令安装并在侧栏或 Settings 中导入。

  • 社区目录页:https://www.skillhub.cn/plugins/Sillykjs/dsh-share-import
  • 源码与完整说明:https://github.com/Sillykjs/dsh-share-import
羽毛球分组比赛记分
小程序二维码

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

Xiaoye