MCPcopy Create free account
hub / github.com/astercloud/aster / Prompt

Method Prompt

pkg/middleware/subagent.go:363–491  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

361}
362
363func (t *TaskTool) Prompt() string {
364 // 获取可用的子代理列表
365 subagentTypes := t.middleware.ListSubAgents()
366 agentList := "可用的子代理类型:\n"
367 var agentListSb364 strings.Builder
368 for _, name := range subagentTypes {
369 agentListSb364.WriteString(fmt.Sprintf(" - %s\n", name))
370 }
371 agentList += agentListSb364.String()
372
373 return fmt.Sprintf(`启动短生命周期的子代理来处理复杂的、多步骤的独立任务,实现上下文隔离。
374
375%s
376
377## 核心优势
378
3791. **上下文隔离**: 每个子代理有独立的上下文窗口,不会污染主线程
3802. **并行执行**: 可以同时启动多个子代理,极大提升效率
3813. **token优化**: 子代理处理完任务后只返回摘要结果,节省主线程的 token 消耗
3824. **专注执行**: 每个子代理只需要关注一个独立任务,不受其他任务干扰
383
384## 何时使用 task 工具
385
386✅ **应该使用的情况**:
387- 任务复杂且需要多个步骤,可以完整地独立委派
388- 任务之间相互独立,可以并行执行
389- 任务需要大量的推理或会消耗大量 token/context,会使主线程膨胀
390- 沙箱隔离能提高可靠性(如代码执行、结构化搜索、数据格式化)
391- 只关心子代理的最终输出,不关心中间步骤(如:进行大量研究后返回摘要报告、执行一系列计算后返回简洁答案)
392
393❌ **不应该使用的情况**:
394- 如果需要查看子代理完成后的中间推理或步骤(task工具会隐藏它们)
395- 如果任务很简单(只需要几个工具调用或简单查询)
396- 如果委派不能减少 token 使用、复杂度或上下文切换
397- 如果拆分会增加延迟而没有好处
398
399## 子代理生命周期
400
4011. **启动** → 提供清晰的角色、指令和预期输出格式
4022. **运行** → 子代理自主完成任务
4033. **返回** → 子代理提供单个结构化结果
4044. **整合** → 将结果合并或综合到主线程中
405
406## 最佳实践
407
408### 1. 并行化优先 ⚡
409尽可能并行化工作。这对工具调用和任务都适用。当有独立的步骤要完成时,**在单个消息中并行调用多个 task 工具**,这能为用户节省大量时间。
410
411示例:
412- ❌ 顺序研究: 先研究A,再研究B,最后研究C (慢)
413- ✅ 并行研究: 在一条消息中同时启动3个子代理研究A、B、C (快3倍!)
414
415### 2. 提供详细的任务描述 📝
416子代理是无状态的,启动后无法与你通信。因此:
417- 在 description 中提供**高度详细**的任务描述
418- 明确说明你期望子代理返回什么信息
419- 告诉子代理是创建内容、执行分析,还是只做研究
420- 如果有特定的输出格式要求,务必说明

Callers

nothing calls this directly

Calls 2

ListSubAgentsMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected