dsh-wb-archive:为 DSH Agent 提供微博单条存档与 Markdown 全文读取

前言

在 DSH(DeepSeek Harness)里处理任务时,Agent 常会碰到 m.weibo.cn/status/… 这类微博链接。直接抓网页往往拿不到稳定正文:删博、仅自己可见、图片外链失效、长文被截断,都会让后续推理建立在不可靠文本上。下面介绍的 dsh-wb-archive 是 opencamel 维护的联网工具类插件,通过 2100laike 微博存档 的后端 API,把单条微博落成可长期读取的 Markdown 快照,并在 Agent 侧暴露为工具 wb_archive,用来替代对微博页面的裸抓取。

这是什么

dsh-wb-archive(GitHub:opencamel/dsh-wb-archive)是 DSH 工具插件:为 Agent 提供微博单条存档与全文读取,由 2100laike 微博存档服务提供数据能力。维护者为 opencamel;当前发布版本 tag 为 v0.1.0,许可证 MIT。

核心功能

遇到移动端单条微博链接时,Agent 调用 wb_archive 而非直接请求网页:

  1. 未存档的微博:自动提交存档(图片转存 CDN、删博后仍可读存档、长文取全文),轮询等待抓取完成后返回全文 Markdown。
  2. 已存档的微博:去重命中,直接返回最新版全文,不消耗当日额度。
  3. 版本历史:微博被编辑或首抓图片转存失败时,可传 refresh: true 重抓新版本(需配置 PAT,且受服务端 24 小时冷却保护)。

工具返回字段包括 archive_id、url、title、author、markdown、snapshot_url、deleted、truncated、note 等;正文超过 maxContentChars 时会截断并附快照链接。

链接形态有限制:须为 https://m.weibo.cn/status/…;桌面 weibo.com、短链 t.cn、主页或热搜等会触发 NOT_WB_STATUS,需在手机浏览器打开该条微博后复制地址栏链接。

环境要求

  • dsh ≥ 0.1.0-rc.6(peer @deepseek-ai/dsh-tools >= 0.1.0-rc.6;用 dsh --version 查看)。
  • PATH 上有 pnpm(dsh plugin 底层经 pnpm 安装;缺失会报 127 / command not found)。

安装与启用

dsh plugin 必须用 --profile 指定目标 profile,否则报 required option '--profile <name>' not specified。插件按 profile 安装:装进实际运行的 profile 后工具才会出现;Web GUI 与 headless 若都用,需各装一次。

# Web GUI 用户(dsh web 即 web profile)
dsh plugin --profile web add github:opencamel/dsh-wb-archive#v0.1.0
# 纯 CLI 用户(headless profile)
dsh plugin --profile headless add github:opencamel/dsh-wb-archive#v0.1.0

#v0.1.0 为资料中的当前最新 tag;新版本见 GitHub Releases,安装时替换 tag 即可。也可用本地目录等 pnpm 支持的源,例如:

dsh plugin --profile web add /path/to/dsh-wb-archive

安装结束若出现 missing peer @deepseek-ai/cordis 等警告,属预期——peer 由 DSH 在 ~/.dsh/profiles/node_modules/ 统一提供,可忽略。

安装后必须重启 dsh 进程才加载插件(Web 需退出并重新运行 dsh web);不要手动往 cordis.patch.yml insert 插件 entry「热激活」,否则会与 bundle 重复并报 duplicate loader entry id: dsh-wb-archive。

验证安装:

dsh --profile <name> --dump-config | grep -A2 dsh-wb-archive

<name> 为 web 或 headless。

配置

在 profile 的 cordis.patch.yml(如 ~/.dsh/profiles/web/cordis.patch.yml)中覆盖,改动热生效;勿改同目录自动重写的 cordis.yml。

- insert:
  - id: dsh-wb-archive
    name: dsh-wb-archive
    config:
      apiBaseUrl: 'https://api.2100laike.com'
      token: ''
      waitTimeoutSec: 60
      pollIntervalSec: 2
      maxContentChars: 30000

匿名使用每个插件实例 8 次/天(重启后重新计数)。在 app.2100laike.com/register 注册并在 设置 → 开发者 创建 PAT(pat_2100_ 前缀,scope 至少 api:write),填入 token 后额度为 100 次/天,且可使用 refresh: true 强制重抓。

典型用法

Agent 侧工具契约为:

项 值
名称 wb_archive
参数 url(string,必填)· refresh(boolean,默认 false)

示例语义:传入 url: "https://m.weibo.cn/status/xxxxxxxx",首次未存档时会等待抓取(默认最长 60 秒);若返回 note 为「抓取尚未完成」,稍后再次调用同一 URL 通常秒回且不重复扣额度。已存档后原博删除时仍可读 Markdown,且 deleted: true。

常见错误码:RATE_LIMITED(当日额度耗尽,需 PAT);FORCE_NOT_ALLOWED(强制重抓需 PAT);NOT_WB_STATUS(链接不是移动端单条 status URL)。

内容边界与安全

转发微博的被转内容以引用块并入正文;视频微博存文字、封面与播放链接,不转存视频流;长文走 statuses/extend,接口降级时可能截断并附快照链接。

插件仅访问 apiBaseUrl 指向的 2100laike API,请求内容为调用方传入的微博 URL 及可选 PAT;不使用 eval / child_process,不读本地凭据与环境变量,无遥测。插件以当前 dsh 进程权限运行,安装前建议在 GitHub 核对源码与 MIT 许可证。

升级与卸载

dsh plugin --profile <name> add github:opencamel/dsh-wb-archive#v0.1.1
dsh plugin --profile <name> remove dsh-wb-archive

升级或卸载后需重启对应 profile 的 dsh 进程(headless 下次运行自然生效)。

DSH 生态强调「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。需要稳定读微博正文、应对删博与长文场景时,可在对应 profile 安装 dsh-wb-archive,源码与版本见 GitHub 仓库。

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

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

小夜