Repository navigation
Closed
Labels
area:fullstackEnd-to-end Host and Client implementationEnd-to-end Host and Client implementationfeature:messagingMessaging module and external providersMessaging module and external providersready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agentscope:tracerHuman-testable implementation sliceHuman-testable implementation slice
Milestone
Description
Parent
#902 — Personal WeChat capability alignment. IM coordination reference: #48.
What to build
A WeChat image appears as an image source in BotHarness; a suitably configured model can use it, and the Bot can return a native image to the original DM.
Scope: personal WeChat/iLink, explicitly authorized paired-owner DM. Enterprise WeChat/WeCom is excluded.
Acceptance criteria
- Extend the checked media path established by the file tracer to native image items, including image-only intake and available accompanying text, without replacing an image with an opaque URL or duplicate Source Event.
- Show a safe image preview/download through existing attachment presentation. Preserve source metadata; unavailable or rejected media has a clear recoverable presentation.
- Provide the image through the existing model/tool capability that actually supports it. Distinguish image transport success from visual understanding; an unsupported model must not be presented as having seen the image.
- Return a native WeChat image using the Bot's own identity and trusted original DM route; enforce media limits and current authorization at send time.
- Real E2E: receive a fresh test image with a unique visible marker, verify actual image use with an appropriate model/tool, and receive a native image reply in WeChat. Keep proof of the actual receiving UI and a refusal/recovery case.
Blocked by
Delivery and evidence
- Deliver one production-shaped tracer through the qualified Provider, canonical Messaging authority, applicable PersonaBot/Channel/Inbox behavior, and an operable Client path. Reuse the existing exclusive Consumer; do not create standalone dsh-im Sessions or a parallel message store.
- Keep the original external author, timestamp, lossless native message ID, Source Event ID, and trusted reply route. Every external send uses the acting Bot's own bound identity and current Grant; platform credentials, context tokens and media keys remain Provider-private.
- Qualify the changed Provider capability on the maintained fork and pin the verified artifact. Submit reusable Provider changes upstream where appropriate, without making upstream merge a release prerequisite.
- Complete fresh real WeChat E2E with the Human controlling WeChat. Include observable success and the relevant refusal/recovery behavior, focused regression coverage, and packaged-product verification. A model's claim, HTTP success, or client acknowledgement alone is not delivery/read proof.
- Preserve real screenshots or recording during acceptance; embed GitHub-renderable evidence in the PR, including before/after and applicable light/dark states for visible UI changes. Do not publish credentials or unrelated chat contents.
- Update the illustrated English and Chinese WeChat connection guide and reusable IM integration guidance with verified behavior and platform limitations; edit canonical source docs, not generated site content.
- Create one issue-linked PR, then pause for Human QA. Merge and deployment require their own Human authorization. Issue closure requires the accepted behavior, not only documentation or a capability flag.
Metadata
Metadata
Assignees
Labels
area:fullstackEnd-to-end Host and Client implementationEnd-to-end Host and Client implementationfeature:messagingMessaging module and external providersMessaging module and external providersready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agentscope:tracerHuman-testable implementation sliceHuman-testable implementation slice
Type
Projects
- StatusShow more project fieldsDone
Activity
DoodleBears commentedon Oct 5, 2026
Agent work claim
codex/local/01a0f14c-5338-7020-853b-0fe54b87aa95(not a DSH Session)codex/904-wechat-imagesDoodleBears commentedon Oct 6, 2026
Agent progress — native image roundtrip confirmed
codex/local/01a0f14c-5338-7020-853b-0fe54b87aa95; original claim remains this task's scope.e2dd34deand documented at headb6b9c022.0.0.0-test.904/ verified managed Provider4.32.0-botharness.6received the Human's native JPEG through one canonical Source Event. Client light/dark checked preview is captured.deepseek-official/deepseek-flashnativeread_imagereturned an ImageBlock and independently identified the visible Discord application, layout and readable labels. The pinned native Tool's missing scopedfsdependency was reproduced in the real Cordis Tool Runtime, patched with a tracked dependency patch, and verified in the installed product; no global sandbox or Workspace authority was widened.bridge_reply_file; checked Provider accepted the native JPEG send. Human subsequently confirmed: 已收到,图片内容一致 in the original WeChat DM.DoodleBears commentedon Oct 6, 2026
Agent work outcome — paused for Human QA
codex/local/01a0f14c-5338-7020-853b-0fe54b87aa95.075f544c690b16ca0c1eeeabe35dcd8285d38f29.Await Human QA and explicit merge/continue instructions. Remaining hub scope lives in #902.
DoodleBears commentedon Oct 6, 2026
Agent work claim — Human QA follow-up
codex/local/01a0f14c-5338-7020-853b-0fe54b87aa95.[Image]message placeholder with the actual image inside its original message bubble. Open source details should load image previews automatically, preserving captions, checked download/current authorization and recoverable failure.codex/904-wechat-images.fix(client): preview source images directly in their message bubbles
Merge main for latest-shell WeChat image validation
docs: explain automatic inline WeChat image previews
DoodleBears commentedon Oct 6, 2026
Agent work outcome — Human QA correction, paused
codex/local/01a0f14c-5338-7020-853b-0fe54b87aa95.2768b1bc1318d7df81d9ae9d8519946319ab7701.[Image]is replaced; captions, raw metadata, authenticated download, retry, MIME refusal, abort and URL disposal remain. The unopened Inbox list fetches no image bytes.0.0.0-test.904.1, integrated with main baseline80bc5a60, received the paired-owner PNG through canonical Inbox. Checked download returned PNG, 90151 bytes. Human supplied a real light-theme source-modal screenshot confirming the image inside the bubble. That screenshot contains private account information and remains machine-local; it has not been published.docs: retain Human-approved inline WeChat image QA screenshot
docs(wechat): reference Human-approved inline preview evidence
Merge latest main while preserving inline image preview
feat(wechat): checked image intake, preview and native image replies (#…
DoodleBears commentedon Oct 6, 2026
Agent work outcome
codex/local/01a0f14c-5338-7020-853b-0fe54b87aa95b6979ac52cc5bb88427691f4f390b44d538de4d6.2732eef3b97bf9cd90ed6e5c8805bc30c41a5a8e; verify and npm package preparation both succeeded.