前言¶
在 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 而非直接请求网页:
- 未存档的微博:自动提交存档(图片转存 CDN、删博后仍可读存档、长文取全文),轮询等待抓取完成后返回全文 Markdown。
- 已存档的微博:去重命中,直接返回最新版全文,不消耗当日额度。
- 版本历史:微博被编辑或首抓图片转存失败时,可传
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 仓库。