Create a new topic in a Feishu topic-group, and optionally add the first in-thread reply (with optional @mention) by sending as the user. Use when the user s...
Create a new Feishu topic in a dedicated topic-group, then optionally post the first thread reply inside it.
Keep this skill lightweight. Use it for topic creation and first-reply bootstrapping, not for session routing magic.
This workflow has been verified:
feishu_im_user_message.send to a topic-group chat_id creates a new top-level topic.feishu_im_user_message.reply with reply_in_thread=true posts inside that topic.@ a user by placing Feishu text markup directly in the content:<at user_id="ou_xxx">Name</at> 你好
This is the current working path. Prefer it over assumptions about implicit reply routing.
Require all of the following:
feishu_im_user_message.If user auth is unavailable or expired, stop and ask the user to re-authorize.
If the target group is not a topic-group, explain that the result will only be a normal group message, not a topic.
Default to the fixed topic-group configured in TOOLS.md, if one exists.
Do not hardcode a personal/local group name into a public skill.
Use feishu_chat with action=search to resolve the group.
If the user explicitly names a target group, use that group.
If the user does not name a group and no local default is configured:
If no matching group is found:
TOOLS.md, if configured.chat_id with feishu_chat.search.Support four shapes:
Example:
开话题:OpenClaw 多线程 SOP
Send one top-level text message only.
Example:
开话题:OpenClaw 多线程 SOP|先写一个 5 点大纲
Interpret as:
OpenClaw 多线程 SOP先写一个 5 点大纲Example:
开话题:测试 1|回一条:@我 测试
Interpret as:
<at user_id="...">...</at> mentionExample:
开个新话题聊这个,把前面几条带过去,然后追问:自由现金流有几个指数?有什么区别?
Interpret as:
Use feishu_im_user_message.send:
action=sendreceive_id_type=chat_idreceive_id=<chat_id>msg_type=textcontent={"text":"<top-level text>"}The returned message_id is the topic root.
If the user asked for an initial reply, use feishu_im_user_message.reply:
action=replymessage_id=<topic root message_id>reply_in_thread=truemsg_type=textcontent={"text":"<reply text>"}If an @mention is requested, format it directly in the text:
<at user_id="ou_xxx">Name</at> 回复内容
Use the current user open_id when the user says @我.
For context carry-over + new question, prefer one single top-level message. Do not add a second seed reply unless the user explicitly wants one, because two user messages may trigger two assistant replies.
Use a simple structure:
<标题>
问题:...
前情提要:...
Or, when a short summary reads better:
<标题>
问题:...
前情提要:
- ...
- ...
Rules:
Example:
HALO:自由现金流指数有什么区别
问题:
A股里自由现金流目前有几个主流指数?它们分别有什么区别?
前情提要:
- 刚讨论过 HALO 在 A 股的映射,涉及资源、能源、公用事业、电网、交运、央企红利、现金流。
- 这次只是在这个基础上继续追问自由现金流指数。
Treat all of the following as likely triggers:
开话题:标题开个话题:标题开个新话题:标题/topic 标题/topic 标题|正文新开一个话题,然后在话题里回复一条开话题: 标题, 然后在话题里回复 1 条测试并且 at 我Useful parsing rules:
: / : to isolate the command from the payload.| / | as a likely separator between title and first reply.然后回复一条, 回一条, 在话题里回复, 并且 at 我, @我 indicate an in-thread follow-up.把前面几条带过去, 把刚才聊的内容带过去, 新开一个话题聊这个, 继续追问, 新的追问 indicate a context-carrying seed reply rather than a plain freeform reply.Do not overfit parsing. If the message is ambiguous, ask one short clarification question.
Prefer the validated user-message path for this skill:
feishu_im_user_message.sendfeishu_im_user_message.replyReason: this path has been validated end-to-end for:
Do not rely on ordinary assistant reply routing to create a fresh topic.
After success, tell the user briefly:
Keep it short.
User:
开话题:测试 4
Action:
测试 4User:
开话题:测试 3|不 @ 的线程回复测试
Action:
测试 3不 @ 的线程回复测试User:
开话题:测试 2|@我 再测一次
Action:
测试 2<at user_id="ou_xxx">Name</at> 再测一次
User:
开个新话题聊这个,把前面几条带过去,然后追问:自由现金流有几个指数?有什么区别?
Action:
问题:... first前情提要:...ZIP package — ready to use