与 Agent 对话
什么时候用
当你需要向另一个 agent 询问问题、寻求帮助、请求方案、请求复核、请求决策支持,或者进行任何形式的交流时,使用本 skill。
如果用户明确要求与某个 agent 对话,也应使用本 skill。
应该使用
- 需要另一个 agent 的专长、判断或第二意见
- 需要向某个 agent 请求方案、复核或建议
- 用户明确要求某个 agent 参与、协助或回答
- 需要继续某个已有的 agent 会话,并保留上下文
不应使用
- 你自己可以直接完成,且用户没有明确要求调用其他 agent
- 只是普通问答,不需要专门 agent
- 目标 agent 不明确,应该先追问或先查可用 agents
- 刚收到某个 agent 的消息,又立刻回调同一个 agent,可能造成循环
决策规则
- 如果用户明确要求某个 agent,优先按要求执行,但仍要先查 agent,不要猜 ID
- 如果你自己能完成,就不要调用其他 agent
- 需要保留上下文续聊时,必须传
session_id - 默认优先使用
list_agents()和chat_with_agent(...)进行前台对话,不要绕到别的方式 - 如果任务需要后台执行,使用
submit_to_agent(...)提交,再用check_agent_task(...)查询状态
使用流程
请严格按照以下流程顺序使用本 skill:
- 确保你的工具列表中包含
list_agents()和chat_with_agent(...)两个内建工具
- 这两个工具是与其他 agent 对话的基础,不要删除或禁用它们
- 如果你没有这两个工具,请告诉用户你需要它们来与其他 agent 对话,并请求用户添加
- 使用
list_agents()工具查看当前可用的 Agent,并从中选择一个 agent 提取其 id
- 请根据用户的需求和对应 Agent 的描述来选择最合适的 Agent
- 如果找不到合适的 Agent 且你不是 Default Agent,就使用 Default Agent
- 否则告诉用户没有合适的 Agent 可用,并建议他们创建一个新的 Agent 或调整现有 Agent 的描述以便更好地匹配需求
- 调用
chat_with_agent(...)发起前台求助,其中需要传递的关键参数包括
to_agent: 对话目标 Agent 的 ID,注意是 ID 不是名字text: 你要对目标 Agent 说的内容session_id: (可选)如果你需要与同一个 Agent 进行多轮对话,从第二轮开始传递相同的session_id来保持上下文连续timeout: (可选)预估任务需要的前台等待时间,避免过早超时
- 如果任务适合后台执行,请使用新的后台工具路径
submit_to_agent(...):提交后台任务,参数只需要to_agent、text和可选session_idcheck_agent_task(...):通过task_id查询任务状态,完成时返回最终结果
最小调用示例
新对话
list_agents()
chat_with_agent(
to_agent="<target_agent_id>",
text="[Agent <your_agent_id> requesting] 我需要你帮我判断这个问题的处理方向。",
)
续接已有对话
chat_with_agent(
to_agent="<target_agent_id>",
text="[Agent <your_agent_id> requesting] 请基于刚才的结论继续展开第 2 点。",
session_id="<previous_session_id>",
)
后台提交与查询
submit_to_agent(
to_agent="<target_agent_id>",
text="[Agent <your_agent_id> requesting] 请在后台完成这个较长任务。",
)
check_agent_task(
task_id="<task_id>",
)
注意事项
- 添加对话标识符:建议对话内容以如下内容开头
[Agent <your_agent_id> requesting]
这样可以让对方 Agent 更清楚地知道是谁在跟它说话,有助于提高沟通效率和准确性。
合理复用会话:如果你需要与同一个 Agent 进行多轮对话,务必传递相同的
session_id来保持上下文连续。否则每次调用都会被视为新的对话,可能导致对方 Agent 无法正确理解你的需求。session_id可以从第一轮对话的返回结果中获取,例如[SESSION: xxx]其中
xxx就是session_id的值,该值一般由系统生成,长度一般较长,具有唯一性。你需要把这个session_id存下来,在后续与同一个 Agent 的对话中继续使用它。