Qwen Code 接入微信:基于 iLink Bot API 的 WeChat 频道完整配置指南

Qwen Code 接入微信:基于 iLink Bot API 的 WeChat 频道完整配置指南 Qwen Code 接入微信基于 iLink Bot API 的 WeChat 频道完整配置指南【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code微信是目前最主流的即时通讯平台之一。Qwen Code 在channels体系中内置了weixin频道适配器让开发者可以直接用微信与终端里的 AI 编程 Agent 对话发文字提问、发送截图让多模态模型分析、投递 PDF 或代码文件让 Agent 读取处理。与 Telegram 使用静态 Bot Token 不同微信频道采用官方 iLink Bot API通过扫码登录完成鉴权。本文以 weixin.md 为骨架结合仓库内packages/channels/weixin/的完整实现源码带你从零配置并理解微信频道的登录、收发消息、媒体解密与故障排查全流程。前置条件接入微信频道前需要准备两样东西一个可以扫码的微信账号手机 App用于完成登录鉴权可访问iLink Bot 平台微信官方 Bot API的权限。微信频道不依赖静态 Bot Token鉴权凭证完全来自扫码登录环节这一点与 Telegram 频道有本质区别。第一步通过二维码登录微信采用二维码鉴权而非静态 Token登录命令为qwen channel configure-weixin命令执行后终端会输出一个二维码 URLQR code URL: ...用微信手机 App 扫码并在手机上确认即可完成登录。凭证会被保存到~/.qwen/channels/weixin/account.json。从源码看这条命令的完整链路位于 configure.ts获取二维码调用 iLink Bot API 的GET /ilink/bot/get_bot_qrcode?bot_type3接口获取二维码 ID见 login.ts轮询扫码状态每 1 秒轮询一次get_qrcode_status接口等待用户扫码并确认。轮询期间可能遇到scaned已扫码待确认、expired二维码过期等状态二维码过期会自动刷新最多重试 3 次整体登录超时上限为 480 秒8 分钟保存凭证登录成功后返回bot_token、baseurl、ilink_user_id等信息写入account.json。configure-weixin命令还支持两个子动作# 查看当前登录状态与保存时间 qwen channel configure-weixin status # 清除已保存的微信凭证退出登录 qwen channel configure-weixin clear关于凭证文件的安全性accounts.ts 的实现值得一提写入时使用随机命名的临时文件并以wxO_CREAT|O_EXCL标志创建再通过rename原子替换目标文件文件权限为0600可有效防止符号链接攻击与凭证被其他用户读取。clear动作还会顺带清扫中断写入残留的临时文件避免存活 Token 长期滞留在磁盘上。说明微信频道不使用token字段凭证完全来自扫码登录步骤account.json属于敏感文件请勿提交到版本库或随意分享。第二步在 settings.json 中配置频道登录完成后将频道配置加入~/.qwen/settings.json{ channels: { my-weixin: { type: weixin, senderPolicy: pairing, allowedUsers: [], sessionScope: user, cwd: /path/to/your/project, model: qwen3.5-plus, instructions: You are a concise coding assistant responding via WeChat. Keep responses under 500 characters. Use plain text only. } } }各字段含义与可选值如下完整选项表见 Channel Overview配置项说明type频道类型微信固定为weixinsenderPolicy谁能与 Bot 对话allowlist默认仅allowedUsers内用户可用、pairing陌生人需配对码审批、open所有人可用慎用allowedUsers允许使用 Bot 的用户 ID 列表配合allowlist与pairing使用sessionScope会话隔离方式user每个用户一个会话默认、chat_thread、single所有人共享一个会话cwdAgent 的工作目录默认当前目录不同频道可指向不同项目model频道使用的模型。微信支持图片分析需要配置多模态模型如qwen3.5-plusinstructions注入到每个会话首条消息的系统指令由于微信会剥离所有 Markdown 格式示例中的instructions明确要求 Agent 使用纯文本、控制回复长度这正是微信频道的最佳实践写法。第三步启动频道# 只启动微信频道 qwen channel start my-weixin # 或一次性启动所有已配置的频道 qwen channel start启动后打开微信向 Bot 发送一条消息你会先看到...输入状态指示器Agent 处理中随后收到回复。从源码看启动的核心是 WeixinAdapter.ts 中的connect()它会先读取account.json加载 Token未配置时会抛出WeChat account not configured. Run qwen channel configure-weixin first.错误然后调用 monitor.ts 的startPollLoop()启动长轮询循环持续调用getupdates接口拉取新消息。值得注意的是微信适配器会自动注入默认指令——如果配置里没有自定义instructions会补上简洁编程助手、回复控制在 500 字符内、使用纯文本的默认提示并追加[IMAGE: /path/to/file.png]图片发送标记的用法说明。图片与文件不只是文字微信频道支持发送图片和文档给 Agent而不只是纯文本。图片多模态视觉分析发送截图、照片等图片后Agent 会用视觉能力分析内容。这要求频道配置了多模态模型如model: qwen3.5-plus。图片下载处理期间同样会显示...输入指示器。底层实现路径见 WeixinAdapter.ts 与 media.ts消息中的图片以 CDN 引用encrypt_query_paramaes_key形式到达适配器调用downloadAndDecrypt()从https://novac2c.cdn.weixin.qq.com/c2c/download?encrypted_query_param...下载密文使用AES-128-ECB算法解密。parseAesKey()兼容两种密钥编码base64 解码后正好 16 字节的原始密钥或 base64 解码后是 32 字符十六进制字符串再转回 16 字节密钥解密后的图片转成 base64 与 MIME 类型挂载到消息信封上作为视觉输入交给模型。文件任意文档交给 Agent 读取发送 PDF、代码文件或任意文档后Bot 会从微信 CDN 下载并解密保存到本地临时目录再由 Agent 用文件工具读取。文件支持任何模型无需多模态能力。文件处理同样是downloadAndDecrypt()解密然后写入tmpdir()/channel-files/uuid/目录见 WeixinAdapter.ts并以附件形式传入 Agent。下载失败时会向用户返回明确的错误占位文本而不是静默丢弃。反向发送Agent 给用户发图片微信适配器还支持 Agent 在回复中以[IMAGE: /absolute/path/to/file.png]标记发送图片见 WeixinAdapter.ts。发送前 send.ts 的validateImagePath()会做严格的安全校验扩展名白名单仅.png、.jpg、.jpeg、.gif、.webp大小上限 20 MB路径必须位于临时目录或频道cwd工作目录内防 AI 读取任意文件读取文件头 16 字节做 magic bytes 校验确保扩展名与真实格式一致。通过校验后图片走申请上传 URL → AES-128-ECB 加密上传 CDN → 携带 CDN 媒体引用发送消息的四步流程getuploadurl→uploadToCdn→sendmessage并在服务端把 Markdown 统一转成纯文本。配置选项微信频道支持 Channel Overview 中列出的所有标准选项见 Channel Overview此外还有一个专属选项选项说明baseUrl覆盖 iLink Bot API 的基础地址默认https://ilinkai.weixin.qq.com该默认值定义在 accounts.tsWeixinAdapter构造时优先读取配置中的baseUrl其次使用登录凭证里保存的地址WeixinAdapter.ts。baseUrl一般无需修改仅在企业内部网关或代理场景下使用。与 Telegram 的关键差异微信频道虽然与 Telegram 共享同一套 Channel 架构统一经 ACP 连接同一个 Agent 进程但在平台能力上差异明显维度微信WeixinTelegram鉴权方式二维码扫码登录会话可能过期静态 Bot Token消息格式仅纯文本Markdown 自动剥离支持富文本/Markdown处理中指示原生...输入状态Working...文本消息群聊iLink Bot 仅支持私聊DM-only不支持群聊支持群聊需配置groupPolicy媒体加密CDN 上 AES-128-ECB 加密适配器透明解密Bot API 直连下载关于输入状态微信适配器的实现细节非常讲究iLink 的 typing 状态设置后很快过期因此 WeixinAdapter.ts 会以4 秒间隔持续刷新TYPING状态类似 Telegram 适配器对约 5 秒过期的 4 秒重复策略并设置10 分钟的兜底上限——若某个回合迟迟未结束keepalive 会自动回收并发送CANCEL避免卡死会话无限期占用输入指示器。这一系列行为都有对应的单元测试覆盖见 WeixinAdapter.test.ts包括多会话共享聊天的指示器管理、过期会话清理、断线重连状态回收等场景。使用技巧用纯文本指令微信会剥离所有 Markdown务必在instructions中写明Use plain text only否则 Agent 产出的格式化内容在微信里会显得杂乱控制回复长度微信气泡适合短文本建议在指令中加字符上限如Keep responses under 500 characters会话过期处理日志中出现Session expired (errcode -14)说明微信登录已过期停止频道后重新执行qwen channel configure-weixin扫码登录即可限制访问使用senderPolicy: pairing或allowlist控制谁能与 Bot 对话。配对模式下陌生用户会收到 8 位配对码运营者通过qwen channel pairing approve my-weixin CODE审批后该用户才可正常使用详见 DM Pairing。故障排查WeChat account not configured尚未完成登录。先执行qwen channel configure-weixin完成二维码登录再启动频道。Session expired (errcode -14)微信登录会话已过期。停止频道并重新运行qwen channel configure-weixin。从源码看errcode -14的处理在两层都有体现api.ts 的isRetryableError()将-14明确判为不可重试错误重试无意义必须重新登录而-1系统繁忙与45011频率限制等瞬时错误则走指数退避重试最多 3 次基础延迟 1 秒monitor.ts 的轮询循环遇到-14时不会直接崩溃而是打印日志并暂停 30 秒后继续轮询给运营者留出重新登录的窗口。Bot 不响应查看终端输出中的错误信息确认频道正在运行qwen channel start my-weixin如果使用senderPolicy: allowlist确认你的微信用户 ID 已加入allowedUsers。图片不工作确认频道配置了支持视觉的模型如qwen3.5-plus查看终端中是否有 CDN 下载错误——下载超时40 秒上限或网络问题都会导致图片失败。另外请确认图片格式在支持列表PNG/JPG/GIF/WebP内且不超过 20 MB。小结微信频道是 Qwen Code Channel 体系中鉴权方式最特殊、媒体链路最复杂的一环它用扫码登录替代静态 Token用 AES-128-ECB 加密的 CDN 链路承载图片与文件用原生...指示器替代文本式工作状态并且只支持纯文本私聊。理解了 accounts.ts、login.ts、monitor.ts、media.ts 与 send.ts 这几条实现链路你就能在遇到问题时快速定位是登录过期、轮询异常、CDN 下载失败还是媒体格式校验被拒。想要把 Qwen Code 的编码能力带到微信上按照本文的扫码登录 → 配置 settings.json → 启动频道三步即可跑通。【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考