[Bug] WeChat inbound images are downloaded but inaccessible to Claw analyze_image
- Langage dominant
- Rust
- Étoiles
- 2.3k
- Forks
- 231
- Merge moyen
- 2 h 49 min
- PR mergées (30 j)
- 589
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_` 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
1. Configure a Claw session with a text-only primary model.
2. Send a JPEG image to the Claw bot through WeChat.
3. 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_")`
and fails with:
`unable to locate image at /remote_img_: 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_image` accept 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](https://github.com/GCWing/BitFun/blob/v0.2.18/src/crates/assembly/core/src/service/remote_connect/bot/weixin.rs#L220-L255) creates only a data URL.
- [Text-only multimodal rendering](https://github.com/GCWing/BitFun/blob/v0.2.18/src/crates/assembly/core/src/agentic/execution/execution_engine.rs#L1908-L1944) 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.
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- rust
- Domaine
- ai, backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 52/100