SupSub 精读(deep read)是对单篇文章做 AI 深度拆解的 Skill。它不是摘要——摘要回答「讲了什么」,精读则是一份带批判视角的结构化拆解:值不值得读、干货在哪、作者什么立场、信源可不可信、论证最弱的一环在哪。
【用途】 对已经在上下文里出现过的某一篇文章做深度拆解,产出「一句话本质 / 干货成色 / 核心要点 / 分节正文 / 编辑批注(背景·立场·来源可信度·最弱一环)」。适用于用户说「精读这篇」「深读一下」「帮我拆解这篇」「这篇讲透了吗」「这篇靠不靠谱 / 有没有干货」等场景。
【前置条件】
- 安装:curl -fsSL https://raw.githubusercontent.com/SupSub-AI/supsub-cli/master/scripts/install.sh | bash(native 安装,装到 ~/.local、支持后台自动更新);或包管理器 npm i -g @supsub/cli / pnpm add -g @supsub/cli。
- 已登录:supsub auth status 显示 Authenticated(首次使用先 supsub auth login)。
- 未授权(exit 2 / UNAUTHORIZED)时,直接运行 supsub auth login 打开浏览器授权(命令会自动打开浏览器并阻塞等待授权,需用足够长的超时,如 10 分钟;用户只需在浏览器点确认,无需在终端输入任何内容),授权成功后重试原命令。无浏览器 / 无头环境再回退为提示用户 SUPSUB_NO_BROWSER=1 supsub auth login。
- 精读需要付费计划;无权限时后端返回业务错误(exit 1),如实转达并停止,不要重试。
【两条硬门禁】 ① 花钱门禁:发起精读前必须确认额度。精读按次扣月度额度,且没有撤销/退额度操作。额度上限随套餐/后端调整,一律以 deepread quota 当次返回的 limit / remaining 为准,不要凭记忆复述余额。流程为:先 supsub deepread quota -o json 取 {limit, used, remaining};向用户复述要精读哪几篇(列标题)、将消耗几次、本月还剩几次;得到明确肯定答复后才执行 deepread run。批量时逐篇列出标题让用户确认。用户已明确点名单篇时,一次 quota + 一句确认即可。已经精读过的文章不会重复扣费(run 会先探测状态,命中 done 直接返回结果,quotaSpent: false)。 ② 取值门禁:contentId 只能来自上下文。contentId 是不透明字符串,必须来自本轮会话里 sub contents / focus contents / search 的真实返回。用户说「精读第 3 篇」时说明指向上文列表第 3 项,直接用其 contentId;说「精读那篇讲 XX 的」时按标题模糊匹配,恰好命中 1 篇才执行,0 篇或 ≥2 篇则回问用户;上文没有任何文章列表时先列出候选并等用户点名;用户直接粘文章 URL 时如实说明 CLI 没有 URL→contentId 接口,改为从订阅/关注点/搜索里定位。绝不让用户手输 contentId,绝不凭记忆构造或猜测。
【主要能力与使用方式】
- deepread run:发起精读。supsub deepread run --type <MP|WEBSITE|X> --content-id <cid> [--title <t>] [--source-name <n>] [--url <u>] [--no-wait] [--timeout <sec>] [--brief]。--type 必填(MP 公众号 / WEBSITE 网站 / X 推特),--content-id 必填且来自 contents / search。--title / --source-name / --url 写进本地队列展示信息,建议总是带上。--no-wait 只发起不等待(批量排队用);--timeout 默认 180,前台等待上限 1–600;--brief 输出省略正文 sections,只留本质/成色/要点/批注。行为:先 GET 探测状态 → none/failed 才 POST 发起 → 默认轮询到 done。本地已有 done 缓存时零网络请求直接返回。默认前台等待,实测 20~40 秒,使用 Bash 工具时超时设到 120 秒以上,长文可给到 180s,或改用 --no-wait + deepread list --wait。status 取值:none 未发起 / pending 进行中 / done 完成 / failed 失败;超时或仍在 pending 不是错误,退出码仍是 0,应按 status 字段分支。
- deepread get:查看结果(优先本地缓存)。supsub deepread get --type <t> --content-id <cid> [--brief] [--refresh] [--wait] [--timeout <sec>] [--out <file>] [--title <t>] [--source-name <n>] [--url <u>]。done 是终态、结果不可变,默认直接用本地缓存(零请求);--refresh 强制回源;--out <file> 导出 Markdown 全文。查从未精读过的内容返回 status:"none",退出码 0。
- deepread list:本地精读队列(收件箱)。supsub deepread list [--all] [--wait] [--timeout <sec>]。默认视图 = 进行中 + 跑完但还没跟用户说过的(fresh: true),播报后自动打水位线;看全部历史用 --all(--all 不动水位线)。注意队列是本机本地的:网页端发起的精读这里看不到,CLI 发起的网页端也看不到(后端没有跨端的精读列表接口)。
- deepread quota:本月额度。supsub deepread quota。返回形如 {"success":true,"data":{"limit":100,"used":7,"remaining":93}}(数值仅为示例,实际以当次返回为准)。
- deepread share / show / drop:share --type <t> --content-id <cid> 生成公开链接,需单独确认(会生成 https://supsub.net/s/<code> 页面,任何人拿到链接都能打开且无需登录,当前 API 没有撤销分享的接口);show --share-code <code> [--brief] 读别人分享的,无需登录;drop --type <t> --content-id <cid> 移出本地队列,只删本地缓存,服务端结果还在,之后 get 能重新拉回且不扣额度。
【批量精读 → 综合简报】 网页端只能一篇一篇点,agent 可以一次排队、一次收割,延迟被摊平(5 篇 ≈ 1 篇的时间):取候选 → 列标题 + 消耗次数给用户确认 → 并发排队不等(--no-wait)→ supsub deepread list --wait 一次等完 → 基于各篇 essence / quality.grade / keyPoints 做横向比较和综合。需要某篇细节时读它的 cachePath(本地 Markdown 全文),不要把所有全文都塞进上下文。
【适用场景与限制】 适用:想判断一篇文章值不值得读、有没有干货、作者立场与信源可信度、需要结构化拆解与批判性批注时。限制:精读 ≠ 全文,CLI 没有取文章原文的接口,用户要原文时给 url 让他自己打开;精读 ≠ 摘要,只想知道「讲了啥」时用 sub contents 里现成的 summary 就够了,不要为此花额度;精读需要付费计划且按次扣月度额度;精读队列为本机本地,无跨端列表;分享链接无法撤销。一份精读结果约 4~6KB,可整份进上下文;批量(>5 篇)时用 --brief。本地缓存目录 ~/.supsub/deepread/<账号>/,一篇两个文件(.json 元数据 + .md 全文),想在历史精读里找东西可直接 grep 该目录。本 skill 不负责浏览文章列表、关键词搜文章、标记已读。
【退出码】0 OK(含 pending / none),2 UNAUTHORIZED,64 INVALID_ARGS(--type 非法、--content-id 为空、--timeout 越界),10 网络错误,1 业务错误(如无付费计划、额度用尽),11 服务端错误。