feat: 同平台多账号支持 — adapter_name 贯穿全链路

- UnifiedMessage 新增 AdapterName 字段
- router 从适配器 ConfigName() 捕获 adapter 实例名
- forwardToAICore source 新增 adapter_name
- ai-core SetBotUID key 优先用 adapter_name,回退 platform
- 更新优化大纲加入 P4.1

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-06-22 20:53:40 +08:00
parent 41f653b672
commit 2b17bb5b03
5 changed files with 64 additions and 6 deletions
@@ -150,6 +150,11 @@ func (r *PlatformRouter) RouteMessage(adapterKey string, rawMsg interface{}) (*U
unified.BotUID = selfAware.SelfID()
}
// Capture adapter config name for multi-account routing.
if named, ok := a.(interface{ ConfigName() string }); ok {
unified.AdapterName = named.ConfigName()
}
// Resolve identity (nil for unknown users; caller decides routing).
// Use platform type (e.g. "qq") for identity resolution, not adapter key.
identity := r.mapper.ResolveOrNil(a.PlatformName(), unified.SenderID)
@@ -29,6 +29,7 @@ type UnifiedMessage struct {
GroupName string `json:"group_name,omitempty"` // resolved group name for group chats
OriginalRawMessage interface{} `json:"-"` // preserved for SendMessage wiring
BotUID string `json:"-"` // bot's own platform UID, set by router
AdapterName string `json:"-"` // adapter config name (e.g. "qq-main"), set by router
}
// Attachment represents a file/image/voice/video attachment.