后端: - 迁移 0007:chat_messages 加 adapter_id 列 + 索引 - history.Message 加 AdapterID;persistToMain/persistIsolated 传适配器名(a.Name()) - channelbridge: 4 个持久化点 + registerSilenced 传 a;light.go registerSilenced 签名加 a - Store 新增 ListAdapterLog(?adapter=, 不排除主会话)/ListAllLog(adapter_id!='', 总览);ListPlatformLog 保留 - 新端点 GET /api/v1/admin/channels/messages:?adapter= 配置级 / ?platform= 平台 / 无参=总览,historyMessage 加 adapterId - 测试:ListAdapterLog/ListAllLog 过滤用例 + 端点粒度用例 + 桥接持久化断言 前端:渠道管理每配置(账号)「消息日志」按钮 + 页顶「适配器总览日志」入口 + ChannelLogPanel 弹窗(总览/配置级),Miuix 风格,build 绿。
agent-98 面板批次: - 会话管理面板改接 history.ListSessions(主web+次级) + 新建次级会话按钮 - 记忆面板手动添加入口 POST /admin/memories(owner) - 知识库真正实现 IndexDocument(分块+落projectindex) + POST /admin/rag 导入端点 - 三面板空态诚实表述(去除'后端M10+提供') - RAG嵌入降级到keyword/line(无直属embedder,不伪造语义,符合红线) agent-99 design/16 §4.6: - model.Message.SenderName + 迁移0006 sender_name 列 - 第三方身份边界: session.ResolveActor判定(非LLM猜) + [第三方·昵称]前缀(不改源content) - 群聊/陌生人落独立sess-xxx(persistIsolated),不写主会话,不广播 - 黑/白名单(allowGroups/denyGroups/allowUsers/denyUsers)最前拦截,不进LLM - 多账号 CHANNELS_JSON 配置 + 每平台多实例 - 管理只读 GET /admin/channels/{platform}/messages(该平台非主人消息流) 实机验证(JWT): 会话管理返回主会话web / 记忆添加成功 / RAG导入documents非空+Cyrene命中; 后端build/vet/test全绿 + 前端build绿
- agent-96: chat_messages 加 platform 列(迁移0004) + IM主人私聊落主会话web(带platform) + 前端按平台过滤契约 + message_persisted 带 platform(复用 BroadcastPersisted) - agent-97: chat_messages 加 device_id 列(迁移0005) + history.Message.DeviceID + Web发消息带deviceId(localStorage getClientId) + IM persistToMain 带 deviceID + 前端气泡展示 SourceLabel + 修主会话基础2个bug(fn scanMessage语法/DDL缺列) - design/16 §4.4(平台) + §4.5(deviceID) 已入档 - 实机: POST /chat 带 deviceId 读回 user/assistant 均带 deviceId+platform; 后端 build/vet/test 绿 + 前端 build 绿 - 红线: 身份靠 actor 元数据; 禁止 shell 读 .env(JWT冒烟由主会话跑)