GCWing / GCWing/OpenBitFun

[Bug] WeChat inbound images are downloaded but inaccessible to Claw analyze_image

Ouverte
#2,358 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
bug
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.