What's New
Admin Users
- Configure
channels.wecom.adminUsersto grant users admin privileges - Admin users bypass the command allowlist and skip dynamic agent routing (routed to main agent directly)
Rich Message Types
- Mixed (text+image): Text and images extracted together for AI processing
- File: Downloaded and passed to AI as attachments with MIME type detection
- Location: Converted to text description
[位置] name (lat, lng) - Link: Title, description, URL extracted as text
Inbound Image Decryption
- WeCom-encrypted images (AES-256-CBC) automatically decrypted
- Correct MIME type detection via magic bytes (JPG/PNG/GIF)
Message Debounce
- Rapid consecutive messages (within 2s) merged into a single AI request
- Prevents concurrent LLM calls for the same user
- Commands bypass debounce and are processed immediately
Thinking Placeholder
- Streams immediately show "思考中..." instead of spinning empty
- Replaced by real content when the AI responds
AsyncLocalStorage Stream Binding
- Outbound adapter always writes to the correct stream during concurrent processing
Bug Fixes
- Webhook unregister: Target removal now works correctly on hot-reload/restart
- Duplicate messages: Return 200 ACK instead of 400 (prevents platform retry storms)
- Stream byte limit: 20480-byte limit enforced in all write paths (appendStream, replaceIfPlaceholder)
- sandbox: path: URL conversion preserves leading
/ - Group @mention: No longer false-triggers on email addresses (
user@domain.com) - Buffer.slice(): Replaced deprecated calls with
Buffer.subarray() - Shutdown cleanup: Pending debounce timers cleared on gateway shutdown
Breaking Changes
None. This is a backwards-compatible feature release.
Install/upgrade:
openclaw plugins install @sunnoy/wecom