基于 https://ilinkai.weixin.qq.com 的 Python 3.10+ 文本链路 CLI。
项目现在使用 uv 管理,推荐所有命令都通过 uv run 执行。
默认状态目录:
~/.wechat-claw-cli/
里面会保存:
account.jsoncursor.txt
安装 uv 后,在项目目录执行:
uv python install 3.10
uv sync查看帮助:
uv run wechat-claw-cli --help也可以:
uv run python -m wechat_claw_cli --help仓库仍然保留了原来的脚本入口,下面这种方式依然可用:
python wechat_claw_cli.py --help前提是你当前环境本身已经满足 Python 3.10+。
获取二维码:
uv run wechat-claw-cli login默认会把二维码直接渲染到终端,并立即进入等待确认;扫码失败时仍会同时打印链接备用。
等待扫码确认:
uv run wechat-claw-cli wait-login只有在 login 已经拿到二维码、但你中途退出或超时后,才需要单独再跑 wait-login。
看当前状态:
uv run wechat-claw-cli whoami拉一次消息:
uv run wechat-claw-cli poll --once持续拉消息:
uv run wechat-claw-cli poll查看单条消息原始 JSON:
uv run wechat-claw-cli poll --once --format message-json查看整次响应 JSON:
uv run wechat-claw-cli poll --once --format response-json发文本:
uv run wechat-claw-cli send-text --text "hello"带 context_token 回复:
uv run wechat-claw-cli reply-text --context-token "<token>" --text "received"拉 typing_ticket:
uv run wechat-claw-cli get-config发“正在输入”:
uv run wechat-claw-cli send-typing --fetch-ticket --context-token "<token>"poll返回的入站消息里会带context_token,回复时要用它。send-text、reply-text、get-config、send-typing不传用户 ID 时,默认会使用登录后保存的user_id。get-config和send-typing实测更稳的方式,是对真实入站消息的from_user_id搭配context_token一起调用。- 只拿登录后的
user_id直接调用get-config,实测可能会返回ret=-4。 wait-login --json现在只会把最终 JSON 写到stdout;中间进度信息会写到stderr。login和二维码刷新默认会在文本模式下直接打印终端二维码;--json仍只保证机器可读输出。
这个仓库包含一个 acp-bridge 子命令,可以把微信文本消息转给 Claude Agent ACP,再把结果回到微信。
前置条件:
- 已完成
login和wait-login - 已安装
npm install -g @zed-industries/claude-agent-acp - 本机可以运行
claude-agent-acp - Claude Code 已登录:
claude auth status
注意:
- 这个仓库现在只支持
@zed-industries/claude-agent-acp @zed-industries/claude-code-acp已弃用且不再兼容;如果你还装着它,请改装@zed-industries/claude-agent-acp- 当前 bridge 配置默认面向完全私有、单人自用场景,默认信任本机 Claude/ACP 的文件系统和终端能力
- 如果不再是单人自用,请显式加上
--allow-user-id
启动示例:
uv run wechat-claw-cli acp-bridge \
--cwd . \
--command-prefix "/claude" \
--allow-user-id "<from_user_id>"如果你想显式指定模型,也可以传:
uv run wechat-claw-cli acp-bridge \
--cwd . \
--command-prefix "/claude" \
--model-id "xiaomi/mimo-v2-pro:free" \
--allow-user-id "<from_user_id>"微信里可直接发送:
/claude hello/claude status/claude reset
行为说明:
- 每个
from_user_id会单独维护一个 Claude 会话 - 只处理带命令前缀的文本消息,普通聊天会忽略
- 回复时会自动带上原消息的
context_token - 默认会发送 typing 状态,可用
--no-send-typing关闭 - 不传
--model-id时,会沿用~/.claude/settings.json里的默认模型 - 不传
--allow-user-id时,默认只允许登录后保存的user_id触发 - 如果你在 Git Bash 里启动,
/claude这种参数可能会被改写成 Windows 路径;新版本已经会自动纠正,老进程需要重启
uv run python -m unittest -q