问题描述
WeCom(企业微信)通道的 WeComChannel.parse_inbound() 已经正确解析了企微消息中的发送者信息(data["from"]["userid"]),但没有将 sender_id 和 sender_name 写入 InboundMessage.metadata。
当前代码(harness-gateway 0.9.3, wecom.py parse_inbound)
# sender_id 已提取:
sender_info = data.get("from", {})
sender_id = sender_info.get("userid", "") or sender_info.get("user_id", "unknown")
# 但在构建 InboundMessage 时,metadata 里缺少 sender_id / sender_name:
return InboundMessage(
channel_subject=ChannelSubject(subject_id=sender_id, metadata={}), # ✅ 这里有
metadata={
"to_handle": sender_id, # ✅ 这里有
"chat_id": chat_id,
"chat_type": chat_type,
# ❌ 缺少: "sender_id": sender_id
# ❌ 缺少: "sender_name": sender_info.get("name", "")
...
},
)
影响
- LLM Agent 无法知道是谁在说话 —
harness_request.py 的 _group_turn_text() 尝试读取 msg.metadata.get("sender_id"),但 WeCom 通道从未设置此字段
- 单聊场景完全无法识别用户 — 群聊还有 group context 机制,单聊直接没有任何发送者信息注入到提示词
- 多用户场景不可用 — 无法实现按用户区分会话、个性化回复、权限控制
建议修复
在 parse_inbound() 的 metadata 中补上:
metadata={
"sender_id": sender_id,
"sender_name": sender_info.get("name", ""),
"to_handle": sender_id,
...
}
环境
- harness-gateway: 0.9.3
- 通道: 企业微信 AI Bot(WebSocket 长连接)
- 部署: Octop 自托管
问题描述
WeCom(企业微信)通道的
WeComChannel.parse_inbound()已经正确解析了企微消息中的发送者信息(data["from"]["userid"]),但没有将sender_id和sender_name写入InboundMessage.metadata。当前代码(harness-gateway 0.9.3, wecom.py parse_inbound)
影响
harness_request.py的_group_turn_text()尝试读取msg.metadata.get("sender_id"),但 WeCom 通道从未设置此字段建议修复
在
parse_inbound()的 metadata 中补上:环境