返回作品

AI Agent Workflow

WeChat Bot / IM Agent

把微信消息接入多模型 Agent,梳理真实 IM 场景里的触发、上下文、记忆和误回复边界。

群聊助手online
这个 PDF 帮我看一下重点?
收到。我会先确认文件,再按白名单和上下文处理。
引用上一条消息继续问...

Scenario

当 Agent 进入真实聊天场景

微信不是一个干净的输入框,而是一个高噪声、高上下文、强隐私的沟通场景。 私聊、群聊、引用、图片、链接和临时插话混在一起,Agent 如果只是“收到就回”,很容易误触发、误理解或暴露不该处理的信息。

这个项目关注的问题不是单纯把模型接进微信,而是把 IM 消息变成可控的 Agent 工作流: 哪些消息可以触发,哪些上下文可以读取,回复应该交给哪个模型,以及用户如何管理长期记忆。

脱敏后的微信群聊长文本触发样例
群聊长文本触发:保留 @、引用和消息结构,隐藏群名与具体身份。

System

从消息入口到可控回复

项目可以拆成四个模块:接收微信消息,判断是否应该响应,构造上下文与记忆, 再把请求路由到指定模型或 Pi agent。核心不是“自动回复”,而是让回复发生在可控范围内。

微信消息入口

扫码登录后接收私聊、群聊、图片、链接和表情等 IM 消息。

触发与权限

用联系人白名单、群聊白名单、@ 机器人、引用回复和前缀规则控制是否响应。

上下文与记忆

群聊历史写入 JSONL,并在需要回复时注入最近消息;长期记忆由用户显式管理。

模型与 Agent

通过 provider 机制切换 ChatGPT、DeepSeek、Ollama、Claude、Pi 等服务。

01Wechaty

接入微信,监听聊天消息。

02Message Store

保存上下文、引用和历史。

03Command Router

判断触发条件,分发任务。

04LLM Provider

调用不同模型或服务。

05Chat Reply

把结果发回微信对话。

Evidence

文本、图片和文件都在同一个 IM 场景里

下面两张样例展示了更复杂的输入形态:图片识别和文件理解。它们都来自真实聊天界面, 已经隐去群名、头像和具体用户身份。

脱敏后的微信图片理解样例
图片理解

群聊里直接发图并 @ bot,系统需要识别图片内容,同时保留引用关系和多人触发语境。

脱敏后的微信文件理解样例
文件理解

文档作为消息进入聊天后,Agent 可以提取任务要求,输出可读摘要,而不是只处理纯文本问答。

Boundaries

比模型能力更重要的是触发边界

IM Agent 的风险来自真实社交环境:误回复、错读上下文、过度记忆和越权读取。 因此这个项目把白名单、触发条件和记忆管理作为核心设计对象。

私聊只响应白名单联系人,降低误触发和隐私风险。
群聊首次参与需要 @ 机器人、直接称呼或引用机器人回复。
群聊历史只在群聊回复时注入,不影响私聊性能和语境。
长期社交记忆默认本地保存,并由用户查看、删除或清除。

Related work