```mermaid
flowchart TD
    Start([收到撤回请求]) --> CheckSender{请求者是当前 agent 的 owner / 已授权操作者?}
    CheckSender -->|否或不明确| End1[直接 NO_REPLY]
    CheckSender -->|是| ResolveTarget{能定位目标消息?}

    ResolveTarget -->|否| End2[直接 NO_REPLY]
    ResolveTarget -->|是| PrepareTarget[准备目标消息参数<br/>action=unsend<br/>channel=grix<br/>accountId=current<br/>sessionId=目标会话或省略(当前会话)<br/>messageId=目标消息]

    PrepareTarget --> UnsendTarget[执行目标消息撤回]
    UnsendTarget --> TargetResult{成功或已删除?}
    TargetResult -->|否| End3[直接 NO_REPLY]
    TargetResult -->|是| PrepareCommand[准备指令消息参数<br/>action=unsend<br/>channel=grix<br/>accountId=current<br/>sessionId=当前会话(必要时解析)<br/>messageId=当前指令消息]

    PrepareCommand --> UnsendCommand[执行指令消息撤回]
    UnsendCommand --> End4[返回 NO_REPLY]

    style Start fill:#e1f5e1
    style End1 fill:#ffe1e1
    style End2 fill:#ffe1e1
    style End3 fill:#ffe1e1
    style End4 fill:#e1f5e1
    style CheckSender fill:#fff4e1
    style ResolveTarget fill:#fff4e1
    style UnsendTarget fill:#e1f0ff
    style UnsendCommand fill:#e1f0ff
```
