$npx -y skills add agentscope-ai/QwenPaw --skill chat_with_agent-zh当你需要咨询其他 agent、寻求帮助,或用户明确要求某个 agent 参与时,使用本 skill。
| 1 | # 与 Agent 对话 |
| 2 | |
| 3 | ## 什么时候用 |
| 4 | |
| 5 | 当你需要**向另一个 agent 询问问题、寻求帮助、请求方案、请求复核、请求决策支持,或者进行任何形式的交流**时,使用本 skill。 |
| 6 | 如果**用户明确要求与某个 agent 对话**,也应使用本 skill。 |
| 7 | |
| 8 | ### 应该使用 |
| 9 | |
| 10 | - 需要另一个 agent 的专长、判断或第二意见 |
| 11 | - 需要向某个 agent 请求方案、复核或建议 |
| 12 | - 用户明确要求某个 agent 参与、协助或回答 |
| 13 | - 需要继续某个已有的 agent 会话,并保留上下文 |
| 14 | |
| 15 | ### 不应使用 |
| 16 | |
| 17 | - 你自己可以直接完成,且用户没有明确要求调用其他 agent |
| 18 | - 只是普通问答,不需要专门 agent |
| 19 | - 目标 agent 不明确,应该先追问或先查可用 agents |
| 20 | - 刚收到某个 agent 的消息,又立刻回调同一个 agent,可能造成循环 |
| 21 | |
| 22 | ## 决策规则 |
| 23 | |
| 24 | 1. **如果用户明确要求某个 agent,优先按要求执行,但仍要先查 agent,不要猜 ID** |
| 25 | 2. **如果你自己能完成,就不要调用其他 agent** |
| 26 | 3. **需要保留上下文续聊时,必须传 `session_id`** |
| 27 | 4. **默认优先使用 `list_agents()` 和 `chat_with_agent(...)` 进行前台对话,不要绕到别的方式** |
| 28 | 5. **如果任务需要后台执行,使用 `submit_to_agent(...)` 提交,再用 `check_agent_task(...)` 查询状态** |
| 29 | |
| 30 | ## 使用流程 |
| 31 | |
| 32 | 请严格按照以下流程顺序使用本 skill: |
| 33 | |
| 34 | 1) 确保你的工具列表中包含 `list_agents()` 和 `chat_with_agent(...)` 两个内建工具 |
| 35 | |
| 36 | - 这两个工具是与其他 agent 对话的基础,不要删除或禁用它们 |
| 37 | - 如果你没有这两个工具,请告诉用户你需要它们来与其他 agent 对话,并请求用户添加 |
| 38 | |
| 39 | 2) 使用 `list_agents()` 工具查看当前可用的 Agent,并从中选择一个 agent 提取其 id |
| 40 | |
| 41 | - 请根据用户的需求和对应 Agent 的描述来选择最合适的 Agent |
| 42 | - 如果找不到合适的 Agent 且你不是 Default Agent,就使用 Default Agent |
| 43 | - 否则告诉用户没有合适的 Agent 可用,并建议他们创建一个新的 Agent 或调整现有 Agent 的描述以便更好地匹配需求 |
| 44 | |
| 45 | 3) 调用 `chat_with_agent(...)` 发起前台求助,其中需要传递的关键参数包括 |
| 46 | - `to_agent`: 对话目标 Agent 的 ID,注意是 ID 不是名字 |
| 47 | - `text`: 你要对目标 Agent 说的内容 |
| 48 | - `session_id`: (可选)如果你需要与同一个 Agent 进行多轮对话,从第二轮开始传递相同的 `session_id` 来保持上下文连续 |
| 49 | - `timeout`: (可选)预估任务需要的前台等待时间,避免过早超时 |
| 50 | |
| 51 | 4) 如果任务适合后台执行,请使用新的后台工具路径 |
| 52 | - `submit_to_agent(...)`:提交后台任务,参数只需要 `to_agent`、`text` 和可选 `session_id` |
| 53 | - `check_agent_task(...)`:通过 `task_id` 查询任务状态,完成时返回最终结果 |
| 54 | |
| 55 | ## 最小调用示例 |
| 56 | |
| 57 | ### 新对话 |
| 58 | |
| 59 | ```text |
| 60 | list_agents() |
| 61 | |
| 62 | chat_with_agent( |
| 63 | to_agent="<target_agent_id>", |
| 64 | text="[Agent <your_agent_id> requesting] 我需要你帮我判断这个问题的处理方向。", |
| 65 | ) |
| 66 | ``` |
| 67 | |
| 68 | ### 续接已有对话 |
| 69 | |
| 70 | ```text |
| 71 | chat_with_agent( |
| 72 | to_agent="<target_agent_id>", |
| 73 | text="[Agent <your_agent_id> requesting] 请基于刚才的结论继续展开第 2 点。", |
| 74 | session_id="<previous_session_id>", |
| 75 | ) |
| 76 | ``` |
| 77 | |
| 78 | ### 后台提交与查询 |
| 79 | |
| 80 | ```text |
| 81 | submit_to_agent( |
| 82 | to_agent="<target_agent_id>", |
| 83 | text="[Agent <your_agent_id> requesting] 请在后台完成这个较长任务。", |
| 84 | ) |
| 85 | |
| 86 | check_agent_task( |
| 87 | task_id="<task_id>", |
| 88 | ) |
| 89 | ``` |
| 90 | |
| 91 | |
| 92 | ## 注意事项 |
| 93 | |
| 94 | - **添加对话标识符**:建议对话内容以如下内容开头 |
| 95 | |
| 96 | ```text |
| 97 | [Agent <your_agent_id> requesting] |
| 98 | ``` |
| 99 | 这样可以让对方 Agent 更清楚地知道是谁在跟它说话,有助于提高沟通效率和准确性。 |
| 100 | |
| 101 | |
| 102 | - **合理复用会话**:如果你需要与同一个 Agent 进行多轮对话,务必传递相同的 `session_id` 来保持上下文连续。否则每次调用都会被视为新的对话,可能导致对方 Agent 无法正确理解你的需求。`session_id` 可以从第一轮对话的返回结果中获取,例如 |
| 103 | |
| 104 | ```text |
| 105 | [SESSION: xxx] |
| 106 | ``` |
| 107 | |
| 108 | 其中 `xxx` 就是 `session_id` 的值,该值一般由系统生成,长度一般较长,具有唯一性。你需要把这个 `session_id` 存下来,在后续与同一个 Agent 的对话中继续使用它。 |