feat(history): 消息正向增量拉取(A5) — GET /sessions/{id}/messages?after=
CI / Backend (build / vet / test / cross-compile) (push) Has been cancelled
CI / Frontend (tsc + vite build) (push) Has been cancelled

- history/list_after.go: ListAfter(升序, created_at>after, 走覆盖索引, rowid兜底同毫秒)
- HistoryStore 新增 ListAfter(store+fakes同步)
- gateway history.go: handleListMessages解析after分流; after+before互斥400; 负数/非数字400
- 新增测试(list_after/history_after), build/vet/test绿+交叉编译
- Docs/api-client v0.26 + api-reference §3.4 同步
This commit is contained in:
AskaEth committed 2026-09-08 21:49:12 +08:00
1 parent 026b27b310
commit f43751fd07
11 files changed
+407 -35

No files matched your search

+6 -28
View File
@@ -1,32 +1,10 @@
# 主人档案 / 主人白名单
# 用途:供 channel 层 actor 元数据 + 策略引擎(design/11 §0/§2)做「认主」判定。
# 注意:这是策略引擎的引用数据,不是让 LLM/人格读的「身份权限依据」;
# 权限判定绝不由 LLM 读这里得出,而是 channel actor 元数据 + 策略引擎。
# 后台面板(M10 用户与权限 → 主人档案)可编辑,经 bus/config 热重载供 policy engine(M6)使用。
# 给 LLM 看的「陪伴对象是谁」身份说明书(人格知识,非权限依据)见 identityFile。
id: owner
displayName: 叶酱
defaultPersona: cyrene
identityFile: configs/users/owner_identity.md
# 渠道账号白名单:每个渠道确认的主人账号 id(基于渠道协议确认的发送者身份)。
# 取消注释并填入真实 id 后才生效;未配置时默认「无人被识别为主人」(default deny,安全)。
# ⚠️ 每个适配器都要单独配,漏配则该平台上的主人消息不会被认出(被最小打扰静默、不回复)。
# 拿到某平台主人 id 的方式:连上后在该平台发一条消息 → 翻「渠道消息日志」/身份测试,
# 该消息的 deviceId 形如 kook:<channel>:<你的平台uid>,末尾那段就是 accountId。
accounts:
- platform: kook
accountId: "329284282"
# 其余适配器:连上并入一条消息后,把上面那段 uid 填进对应 platform(取消注释):
# - platform: qq-obv11
# accountId: "<主人的 QQ 号 / OneBot uid>"
- platform: weixin-ilink
accountId: "o9cq802QPKPscBenJAp-SMZPBlnQ@im.wechat"
# - platform: telegram
# accountId: "<主人的 Telegram 数字 id>"
notes: >-
主人。关系:陪伴对象(昔涟称「开拓者」)。群聊/陌生人使用隔离上下文、记忆只读不写、不泄露主人敏感信息。
具体权限(能否读写记忆/用哪些工具/是否代审)由策略引擎基于 actor 元数据决定,与本文件内容无关。
- platform: kook
accountId: "329284282"
- platform: weixin-ilink
accountId: o9cq802QPKPscBenJAp-SMZPBlnQ@im.wechat
identityFile: configs/users/owner_identity.md
notes: 主人。关系:陪伴对象(昔涟称「开拓者」)。群聊/陌生人使用隔离上下文、记忆只读不写、不泄露主人敏感信息。 具体权限(能否读写记忆/用哪些工具/是否代审)由策略引擎基于 actor 元数据决定,与本文件内容无关。