UseChat: AI tools for WeChat

Your AI can already summarize, write and work on tasks. To read WeChat, draft a reply and send approved content, it also needs a bridge to the desktop app. We have open-sourced that bridge as UseChat.

UseChat is a local-first Computer Use runtime for WeChat. It reads a specified conversation, polls for newly observed messages and sends text, files, images and videos through the visible, signed-in desktop app. The first connector supports macOS and Windows, and the code uses the MIT license.

Explore UseChat on GitHub →

Turn WeChat operations into agent tools

The agent decides which conversation to read, how to interpret it and what to reply. UseChat provides read, write and watch, encapsulating window operations and message state. Agents can use the CLI, TypeScript SDK or a local stdio JSONL tool service.

usechat read --app wechat --chat "ABC" --limit 20 --format json
usechat write --app wechat --chat "ABC" --text "收到,我稍后回复"
usechat watch --app wechat --chat "ABC" --emit jsonl

Sending requires confirmation by default. Explicitly authorized non-interactive flows can use --yes. Reading and watching return tool data; your agent handles summaries and drafts.

The vision model and recognition cost

The repository recommends Alibaba Cloud Model Studio’s qwen3.5-flash, a vision-language model that accepts images. UseChat does not hard-code or prefill this model in an empty configuration: users configure it and can substitute another compatible vision model. It turns screenshots and OCR hints into message JSON, while the agent handles summaries and reply content.

Qwen requests explicitly set enable_thinking: false, temperature: 0 and JSON output, returning structured recognition results without generating a long reasoning trace.

View the configurable model interface →

View the model request parameters →

What might one read cost?

At the standard North China 2 (Beijing) list price checked on October 14, 2026, qwen3.5-flash costs RMB 0.20 per million input tokens and RMB 2.00 per million output tokens for requests with up to 128K input tokens. Images also count as input tokens, so OCR text length alone is insufficient. Other regions, longer-input tiers and future prices may differ.

Check Alibaba Cloud’s official model pricing →

Illustrative estimate, not a measured bill: assume one recognition call uses 5,000 input tokens, including the image, prompts and OCR, plus 1,000 output tokens. The cost is 5,000 / 1,000,000 × 0.20 + 1,000 / 1,000,000 × 2.00 = RMB 0.003, or 0.3 fen.

Under the same assumptions, 1,000 recognition calls cost about RMB 3. One call per minute for eight hours means 480 calls, or about RMB 1.44. These figures cover recognition only, excluding agent summaries, reply generation, extra layout classification and retries. Screenshot dimensions, message count and actual usage vary; this is not a fixed price per WeChat message.

Cost advantages come from how models are used

Execute routine operations locally

Native Helpers handle input, paste and submission, reducing model calls for repeated screenshots and step-by-step keystroke planning. Switching conversations can still require vision, so sending is not universally zero-token.

Run OCR locally

Local OCR incurs no cloud-model API charge and supplies text and position hints. The screenshot still goes to the vision model, so OCR alone does not establish a reduction in image tokens.

Deduplication reduces repeated processing

The ledger reduces the chance of repeated summaries or replies by the agent. Current watch ticks still read and invoke vision, with deduplication after recognition. Even unchanged windows can incur recognition charges, and more frequent polling generally costs more.

View polling and deduplication →

UseChat combines a low-priced model, local execution and message state management to reduce dependence on step-by-step model decisions. Specific savings versus another system require matched tasks, actual call counts, recognition quality and bills. These estimates do not include caching or Batch discounts or assume the code implements those mechanisms.

What a dedicated runtime adds

UseChat also uses vision models. The comparison here is with general-purpose workflows where a model repeatedly inspects screenshots and plans clicks and input. UseChat puts recurring WeChat operations and state handling in dedicated code, while using models for visual understanding.

Reduce step-by-step model work

The native Helper handles window targeting, input focus, clipboard paste and submission. Routine input does not require the model to choose each keystroke, although switching conversations may invoke vision-based layout classification. Sending is therefore not universally free of model calls.

Give observation explicit state

A dedicated ledger records observed messages, establishes a baseline and compares subsequent windows for new content. Agents do not need to reconstruct that state on every poll, reducing the chance of duplicate triggers.

Make failures diagnosable

Diagnosable errors distinguish missing permissions, an unavailable app, login requirements, input targeting and model requests. Phased traces help separate recognition, window operations and sending failures.

These are advantages suggested by the architecture and implementation. There is no published standardized comparison establishing specific gains in success rate, speed or cost. Results depend on the model, WeChat version, window state and device.

Read the architecture →

How the core pieces fit together

1. Screenshots, local OCR and vision

The Helper captures screenshots, OCR text and layout hints. A vision model returns structured sender, message type, text and position fields. Core normalizes, validates and orders them into data an agent can consume.

View the model provider →

2. TypeScript core and native Helpers

Business state stays in TypeScript. Helpers use Swift on macOS and C#/.NET on Windows, exposing screenshot, OCR, input, clipboard and file capabilities through JSON-RPC. Windows OCR includes RapidOcrNet, ONNX Runtime and PP-OCRv5 assets.

Read about the native runtime →

3. Message identity without official IDs

Screenshots do not expose official message IDs. UseChat combines sender, type, normalized text, position bands, media features and neighboring context into message keys, then compares observations through a local ledger. The first watch tick establishes a baseline rather than replaying visible history.

View message identity code →

4. Staged sending and explicit results

Sending manages the target conversation, input focus, clipboard snapshots and restoration, and text or attachment submission. A sent-unconfirmed result means submission completed without confirmation of recipient delivery. Callers should handle that status explicitly rather than retry blindly.

View the read/write runtime →

5. User activity and takeover mechanisms

The core sender includes activity gates, automation leases, takeover interruption and manual-review states. The current direct write path disables activity waiting and takeover checks, so these are core coordination mechanisms rather than protections enabled by default for every command.

View the sender and takeover handling →

6. Replaceable models and redacted diagnostics

Vision models use an OpenAI-compatible interface with user-configured endpoints, model names and key environment variables. reasonCode, traceSummary and JSONL traces aid debugging, while diagnostics omit or redact screenshots, long text, full clipboard contents and secret-like fields.

Scope and relationship to Shennian

UseChat operates the visible desktop without reading chat databases, injecting into the client or reverse-engineering its protocol. Reading and watching depend on visible content, and watch uses polling. It is not a complete history sync, instant push service or guaranteed lossless channel. Windows requires a signed-in, visible desktop session.

Local-first means desktop execution, configuration and message state primarily live on your computer. With a remote vision model, screenshots and OCR hints still go to your configured provider. Choose a provider that fits your data requirements.

UseChat was independently open-sourced from Shennian’s historical WeChat RPA capability. Standalone mode needs no Shennian account or Relay. WeChat RPA and Desktop have been retired from the main Shennian product; this article describes standalone UseChat and does not announce their return.

Read about data and usage boundaries →

Start with the open-source project

Read the repository’s installation guide: install the CLI, configure a vision model, explicitly install the platform Helper and grant system permissions. Run doctor, then start by reading a conversation you specify. Confirm the target and content before using write.

npm install -g @shennian/usechat
usechat init
usechat doctor

Installing the CLI does not silently install the GUI Helper. Follow the repository for model configuration and Helper build and installation instructions.

Go to the UseChat repository →