Cross-Session Message Skill
Deliver a message to another one of this user's conversations with the bundled agent-facing CLI. Delivering is exactly like the user opening that conversation and pressing send: the recipient starts a turn and decides for itself whether to reply.
Rules
- Use this ONLY when the user selected a target conversation with
@@, or explicitly asked you to communicate with another conversation. Never deliver a message on your own initiative. tomust be a conversation id. Names are not addresses, and there is no broadcast — onesend-messagecall reaches exactly one conversation.- Never pass, inline, export, echo, or set any
AIONUI_...environment variable. - Commands must directly call
"$AIONUI_HELPER_BIN" session .... Pass payloads through stdin heredocs. Do not write payload JSON files to disk. - If the current conversation belongs to a team, do NOT use this skill. Use
team send-messageinstead. - On
rate_limited, STOP delivering and tell the user. It means the two conversations are spinning against each other. Do not retry. - Word results precisely.
queuedmeans "delivered; the other side is busy and will see it when it frees up" — it does NOT mean "they received it" or "they read it". Never claim a message was read. - If the CLI fails, report the failure from stderr/stdout in normal prose. Do not claim the message was delivered.
Reading targets from the user's message
When the user typed @@, their message carries a block like:
[[AION_SESSIONS]]
To deliver to the conversations below, use the session-message skill (address by conversation id); if it is unavailable, run `"$AIONUI_HELPER_BIN" session capabilities` for the delivery contract.
重构-鉴权模块 conv_019f… workspace: same
文档站改版 conv_01a0… workspace: /Users/x/docs (differs from yours)
[[/AION_SESSIONS]]
The first line is a hint that this skill is how to deliver, with a fallback to
session capabilities when the skill is unavailable. Every following line is a
target: name, tab, id, tab, workspace:. Use the id.
Delivering a message
"$AIONUI_HELPER_BIN" session send-message <<'JSON'
{
"to": "conv_019f…",
"message": "接口定完了吗?"
}
JSON
Replying to a message you received
A delivered message arrives with this block at the top:
[[AION_SESSION_MESSAGE]]
from: 重构-鉴权模块 conv_019f…
workspace: same
reply_to: conv_019f… (reply: session send-message, to=reply_to)
If the session-message skill is unavailable, run `"$AIONUI_HELPER_BIN" session capabilities` for the full delivery contract.
[[/AION_SESSION_MESSAGE]]
Reply by sending to reply_to with the same command:
"$AIONUI_HELPER_BIN" session send-message <<'JSON'
{
"to": "conv_019f…",
"message": "定完了,已经推到 main。"
}
JSON
Replying is optional. Decide for yourself whether a reply is useful — there is no synchronous wait on the other side.
Finding a target the user only described in prose
"$AIONUI_HELPER_BIN" session list
Optional stdin filters: q (name filter), project_id, limit, cursor.
Cross-workspace rule
When workspace is not same, the other conversation runs in a different
directory:
- Do NOT use relative paths — they resolve against the recipient's workspace and will silently read a different file, or none.
- Do NOT assume the recipient can read your files. Cross-directory access may be blocked by its sandbox or permissions.
- To share file content, put the content itself into
message.
Getting more detail about a target conversation
For a target's workspace path, whether it is currently running a turn, or stuck/waiting hints:
"$AIONUI_HELPER_BIN" diagnose conversations get <<'JSON'
{ "conversation_id": "conv_019f…" }
JSON
Exact schemas
For enum values, error-code meanings, and full field tables:
"$AIONUI_HELPER_BIN" session capabilities