[Bug] WeChat inbound images are downloaded but inaccessible to Claw analyze_image
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 52/100
Research direction
Start by reading the WeChat inbound image conversion in src/crates/assembly/core/src/service/remote_connect/bot/weixin.rs around lines 220-255, then trace how text-only multimodal rendering handles the attachment in src/crates/assembly/core/src/agentic/execution/execution_engine.rs around lines 1908-1944. Reproduce the text-only Claw flow with a WeChat JPEG and verify that the image is inspectable without a missing workspace-relative path.
Written by the indexing model from the issue text.
Description
Summary
When using BitFun's built-in WeChat gateway with Claw, an inbound image is downloaded successfully but cannot be inspected by a text-only primary model through the analyze_image tool.
The image is present as an inline data URL in the turn payload, but no local attachment path is created. Claw receives only the remote_img_<uuid> identifier and the tool treats it as a workspace-relative path.
Environment
- BitFun: 0.2.17 (macOS Apple Silicon)
- Channel: built-in WeChat gateway / Claw
- Primary model: GLM-5.3 (text-only; image inputs disabled)
- Reproduced: 2026-08-18
Steps to reproduce
- Configure a Claw session with a text-only primary model.
- Send a JPEG image to the Claw bot through WeChat.
- Let Claw try to inspect or describe the image.
Actual behavior
The image is received and displayed in the BitFun transcript, but Claw calls:
analyze_image(path="remote_img_<uuid>")
and fails with:
unable to locate image at <workspace>/remote_img_<uuid>: No such file or directory
The gateway logs show a successful CDN request immediately before the turn starts. The turn payload contains a valid data:image/jpeg;base64,... value, so the media download itself is not the failing step.
Expected behavior
One of these should happen:
- Save the downloaded/decoded image in a session-scoped temporary directory and expose its real
image_path; or - Make
analyze_imageaccept the attachment ID / inline data URL directly; or - Route the attachment directly to a configured vision-capable primary model when available.
The current prompt says to use analyze_image when a path is available, but the WeChat adapter only supplies a data URL.
Upstream references
The current implementation still follows this path in 0.2.18:
- WeChat inbound image conversion creates only a data URL.
- Text-only multimodal rendering exposes only an image ID when no path exists.
I have not tested outbound file delivery in this report; this issue is specifically about inbound image inspection from WeChat.
- Dominant language
- Rust
- Stars
- 2.3k
- Forks
- 236
- Avg merge
- 2h 56m
- Merged PRs (30d)
- 619
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from GCWing/OpenBitFun
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
GCWing/OpenBitFun#3213 · 1 comment ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
GCWing/OpenBitFun#2363 ·
-
question
Difficulty 1/5 Under an hour Newbie friendliness 78/100
GCWing/OpenBitFun#2340 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 65/100
GCWing/OpenBitFun#3210 ·
-
GCWing/OpenBitFun#3195 · 2 comments · 1 assignee ·
All issues in GCWing/OpenBitFun
Similar issues
-
bug CLI custom-model
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
rust-bitcoin/rust-bitcoin#6930 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
fulcrumgenomics/ferro-hgvs#2251 ·
-
A-allocators A-docs C-enhancement T-libs
Difficulty 2/5 1-3 hours Newbie friendliness 75/100