入门
深入
简体中文
Appearance
状态:Accepted(Experimental 实现)
关联:#971
掘金、Bilibili、抖音这类内容平台的交互不是 IM 会话,而是「内容下的评论 + 楼中楼回复」。用户希望 AI 辅助回复自己内容下的评论,但这些平台普遍没有官方评论开放接口,且对自动化回复有严格的风控与用户协议约束。
现有 plugins/adapters/github 已经证明「评论流」可以直接复用 Endpoint 契约:评论进 message.receive,send 即回复评论。本 ADR 把评论型平台的共同约定固化下来,避免每个平台各造一套。
plugins/adapters/github
Endpoint
message.receive
send
评论型 adapter 仍继承 Endpoint,只在语义上约定:
kind = 'channel'
id = <资源类型>:<资源id>:<根评论id>
parent = { kind: 'channel', id: <资源类型>:<资源id> }
rpid
displayName
resource
rootId
parentId
createdAt
likeCount
isUploader
oid
root
reportSelfUserId(uid)
配置必须列出要管理的资源(B 站为 BV 号 / av 号)。adapter 不做全站搜索、不主动去别人的评论区。空白名单 = 不轮询。
sendMode 默认 review:AI 生成的回复只进入草稿队列,send 返回 EndpointDeliveryError('approval_pending', …, 'not_sent'),send 永远不调用平台写接口。
sendMode
review
EndpointDeliveryError('approval_pending', …, 'not_sent')
真正发出必须由人审批:adapter 插件提供仅 master 可用的 bili-draft list|show|edit|send|drop 命令(可在任意已接入的聊天平台里执行),send 调用 endpoint.approveDraft(id) 后才走平台写接口。审批发送同样受保护:已熔断、缺凭据、sendMode: off、距上次发送不足最小间隔(默认 30s)时直接拒绝,草稿保留,不排队、不自动重试;发送遇风控码熔断整个 endpoint。
bili-draft list|show|edit|send|drop
endpoint.approveDraft(id)
sendMode: off
自动直发(auto)不在 v1 范围。新草稿主动推送给 master、Console 审批页(与「群聊插话」同类的普通人页面)、接入 ApprovalPort 留作后续。
auto
ApprovalPort
sendMode: off 完全禁止出站。
-352
-412
-509
12015
12051
SESSDATA
bili_jct
type=1
x/web-interface/view
x/v2/reply
sort=0
x/web-interface/nav
x/msgfeed/reply
x/msgfeed/at
notifications
mentioned: true
x/v2/reply/add
bili-draft send <id>
ADR 0035:评论型平台适配器契约(Bilibili 先行)
状态:Accepted(Experimental 实现)
关联:#971
背景
掘金、Bilibili、抖音这类内容平台的交互不是 IM 会话,而是「内容下的评论 + 楼中楼回复」。用户希望 AI 辅助回复自己内容下的评论,但这些平台普遍没有官方评论开放接口,且对自动化回复有严格的风控与用户协议约束。
现有
plugins/adapters/github已经证明「评论流」可以直接复用Endpoint契约:评论进message.receive,send即回复评论。本 ADR 把评论型平台的共同约定固化下来,避免每个平台各造一套。决策
1. 不新开通道,沿用
message.receive/send评论型 adapter 仍继承
Endpoint,只在语义上约定:kind = 'channel',id = <资源类型>:<资源id>:<根评论id>,parent = { kind: 'channel', id: <资源类型>:<资源id> }rpid),原样字符串,不拼接displayName为昵称resource(type/oid/bvid)、rootId、parentId、createdAt、likeCount、isUploader等平台事实oid/root,不允许凭空发一级评论reportSelfUserId(uid);过滤 bot 自己的评论防自回环;同一评论 id 只入站一次2. 作用范围必须显式白名单
配置必须列出要管理的资源(B 站为 BV 号 / av 号)。adapter 不做全站搜索、不主动去别人的评论区。空白名单 = 不轮询。
3. 默认「先审再发」
sendMode默认review:AI 生成的回复只进入草稿队列,send返回EndpointDeliveryError('approval_pending', …, 'not_sent'),send永远不调用平台写接口。真正发出必须由人审批:adapter 插件提供仅 master 可用的
bili-draft list|show|edit|send|drop命令(可在任意已接入的聊天平台里执行),send调用endpoint.approveDraft(id)后才走平台写接口。审批发送同样受保护:已熔断、缺凭据、sendMode: off、距上次发送不足最小间隔(默认 30s)时直接拒绝,草稿保留,不排队、不自动重试;发送遇风控码熔断整个 endpoint。自动直发(
auto)不在 v1 范围。新草稿主动推送给 master、Console 审批页(与「群聊插话」同类的普通人页面)、接入ApprovalPort留作后续。sendMode: off完全禁止出站。4. 保守限流与风控熔断
-352、-412、-509、12015、12051等)时立即熔断:停止该 endpoint 的轮询并记录错误,不自动重试,需人工处理后重启。5. 凭据
SESSDATA+bili_jct/csrf)。6. 平台优先级
type=1);动态(11/17)、专栏(12)留到 v1.1。Bilibili MVP 范围
x/web-interface/view)x/v2/reply,sort=0)x/web-interface/nav)x/msgfeed/reply、x/msgfeed/at)notifications,需 Cookie;只收视频评论;默认只收白名单视频;以mentioned: true入站)review模式)x/v2/reply/add)bili-draft send <id>;带最小发送间隔与风控熔断结果