From 2b6750b8219e771c552a7ab52487a680de463f25 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Mon, 5 Oct 2026 11:31:14 +0800 Subject: [PATCH] =?UTF-8?q?docs(channels):=20=E5=86=8D=E4=BF=AE=203=20?= =?UTF-8?q?=E5=A4=84=E6=B3=A8=E9=87=8A=E9=87=8C=E7=9A=84=20design/08=20?= =?UTF-8?q?=E5=BC=95=E7=94=A8=EF=BC=88=E5=85=B6=E4=B8=AD=20-14=20=E5=8F=A3?= =?UTF-8?q?=E5=BE=84=E6=97=A0=E5=AF=B9=E5=BA=94=E8=8A=82=20=E2=87=92=20?= =?UTF-8?q?=E6=94=B9=E6=8C=87=E5=AF=B9=E7=85=A7=E6=B8=85=E5=8D=95=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/channels/qq_obv11/reconnect.go | 5 +++-- plugins/channels/weixin_ilink/poll.go | 7 ++++--- plugins/channels/weixin_ilink/session_state.go | 5 ++++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/plugins/channels/qq_obv11/reconnect.go b/plugins/channels/qq_obv11/reconnect.go index aac6893..b5dfe08 100644 --- a/plugins/channels/qq_obv11/reconnect.go +++ b/plugins/channels/qq_obv11/reconnect.go @@ -12,8 +12,9 @@ package qq_obv11 // 重试只发生在出站拨号上。 // // 既有实现对照(AGENTS §9.5):项目已有 `internal/channel/adapter/wsutil.Backoff` -// (2s 起步、×2、60s 封顶的网关重连调度器,KOOK 用;design/08 §95 计划让各 WS 平台共用 -// 这套重连基座)。本包**口径与之对齐**(同样 2s/60s),但不直接 import 它,理由有三: +// (2s 起步、×2、60s 封顶的网关重连调度器,KOOK 用;design/08 §7「WebSocket 有状态 +// channel 的公共基座」计划让各 WS 平台共用这套重连基座)。本包**口径与之对齐**(同样 +// 2s/60s),但不直接 import 它,理由有三: // ① 本需求要 ±抖动,wsutil.Backoff 没有这个能力;② import wsutil 会把 gorilla/websocket // 拖进本包依赖图,而本包刻意只用标准库携带 WS 帧编解码(见 websocket.go 抬头); // ③ 真正收敛的做法是给 wsutil.Backoff 加可选抖动再迁走,那要改 internal/**,属后续工作。 diff --git a/plugins/channels/weixin_ilink/poll.go b/plugins/channels/weixin_ilink/poll.go index 846bab3..ba32071 100644 --- a/plugins/channels/weixin_ilink/poll.go +++ b/plugins/channels/weixin_ilink/poll.go @@ -125,9 +125,10 @@ func (a *Adapter) ReadMessages(ctx context.Context, emit func(adapter.UnifiedMes } } -// deliver 在已安装处理器时把归一化消息交给它,否则交给 emit 回调 -// (design/08 §1:推送式与拉取式投递)。文件类附件的字节在**投递之前**内联 -// (切片 IM-1):轮询是这条适配器唯一的入站路径,因此这里是唯一的决策点。 +// deliver 在已安装处理器时把归一化消息交给它,否则交给 emit 回调(design/08 §1 的 +// `ReadMessages` 的 `emit` 与 `SetMessageHandler` 两条投递路径)。文件类附件的字节 +// 在**投递之前**内联(切片 IM-1):轮询是这条适配器唯一的入站路径,因此这里是 +// 唯一的决策点。 func (a *Adapter) deliver(ctx context.Context, m adapter.UnifiedMessage, emit func(adapter.UnifiedMessage)) { a.inlineInboundMedia(ctx, &m) if h := a.handlerLocked(); h != nil { diff --git a/plugins/channels/weixin_ilink/session_state.go b/plugins/channels/weixin_ilink/session_state.go index 199b2a5..c32c828 100644 --- a/plugins/channels/weixin_ilink/session_state.go +++ b/plugins/channels/weixin_ilink/session_state.go @@ -1,6 +1,9 @@ package weixin_ilink -// 本文件承载适配器的「会话被拒绝」状态机(design/08 §4-§5)。 +// 本文件承载适配器的「会话被拒绝」状态机(design/08 §4 的 weixin-ilink 条目只写到 +// 「扫码登录」,未记 `-14` 口径;其语义与对照依据见 +// DevDocs/reference/weixin_ClawBot_Bridge/对照清单.md §2.2「`errcode=-14` = 会话/token +// 被拒」与 §3 的「-14 处理」对照行)。 // // iLink 在拒绝或作废会话凭据时返回 errcode=-14。bot token 是长期凭据——一个月前 // 扫码拿到的 token 依然可用——所以 -14 不是基于时间的过期:它表示 iLink 已不再接受