qq-quoted-image-recovery
QQ Quoted Image Recovery
Overview
Use this skill when a QQ reply chain points at an earlier image message but the bridge did not hand you the image itself.
The core rule is simple:
- a quote marker is only a handle,
- the flattened quote text is not the image,
- you have not "seen the image" until you recover the original media payload.
When to Use
- The inbound text contains
[quote<msg:12345> ...]or[quote<msg:12345>]. - The user is asking what a quoted screenshot/image says or means.
- The quote block is empty or nearly empty, but the surrounding context suggests the original message was visual.
- You need the quoted image pixels before answering.
Do not use this skill for ordinary text-only quote context. Use
qq-current-history for that.
Workflow
- Read the quoted
message_idfrom[quote<msg:...>]. - Recover the raw quoted message via OneBot
get_msg. - Inspect the raw message JSON for
imagesegments. - Recover the actual image URL or local path from that raw payload.
- Download the image into
.run/artifacts/. - Inspect locally first.
- Only if local inspection is insufficient, send the recovered artifact to a vision-capable model.
Rules
- Stay inside the current conversation and the quoted
message_id. - Do not pretend the bridge already showed you the image when it only showed a quote marker.
- Do not hallucinate missing text from a screenshot you have not recovered.
- Prefer a bounded, deterministic recovery path over broad history scanning.
- If recovery fails, say that clearly and explain that only the quote marker was available.
Practical Notes
- Today the bridge flattens quoted message text with
extract_text, so image segments can disappear from the visible quote preamble. - The raw
get_msgpayload is the source of truth when you need to recover quoted media. - If the raw payload contains multiple segments, do not assume the first one is text; inspect the segment list directly.
- Save recovered media under
.run/artifacts/quoted_<message_id>.<ext>.
Local-First Inspection
- Check file type, dimensions, and whether it is obviously a screenshot, photo, or meme.
- Use local OCR / preview / terminal-friendly inspection first when available.
- Escalate to a vision model only when the answer really depends on pixels that local inspection cannot reliably recover.
Common Mistakes
- Treating
[quote<msg:...>]as if it already contained the image body. - Summarizing a screenshot before recovering the actual image payload.
- Jumping straight to a vision model without first reconstructing the quoted artifact.
- Broadly scraping conversation history instead of targeting the quoted
message_id.
More from acking-you/codex-bridge
reply-current
Use when a Codex turn running inside codex-bridge must send normal results back to the active QQ conversation as text, image, or file
1gpt2api-image-generator
Use when a QQ user asks Codex to draw, paint, create, generate, or render an image through GPT2API, including Chinese requests such as 画图, 画一张, 生成图片, 出图, 做张图, or 帮我画
1invoke-capability
Call another registered model (Claude via Kiro, Gemini images, ...) to produce this turn's reply, keeping Codex as the harness but letting a better-suited model own the actual voice. Use liberally for conversational / emotional / creative turns; Codex's own voice is a poor fit for most QQ chat.
1qq-current-history
Query normalized QQ message history for the current conversation only, with optional time, sender, keyword, and free-form filters
1staticflow-kiro-log-diagnoser
Use when a Codex turn needs to diagnose StaticFlow Kiro upstream failures by reading the backend error log and correlating real usage events through sf-cli
1