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