# ════════════════════════════════════════════════════════════
# agent67v2 — lambda v2 🐑 多智能体协作版个人助手
# ════════════════════════════════════════════════════════════
#
# 用法:
#   python3 -m agentpaas agent create --name lambda2 \
#     --config agentexample/agent67v2/agent-config.yml
#   python3 -m agentpaas chat lambda2
#
# 架构:
#   协调者 (本文件) + 5 个专业微代理 (subAgents 节)
#   Lambda: λ = Memory(Loop(Coordinator >> Handoff(SkillRegistry)))
#
# 与 v1 的区别:
#   v1: 42 工具全量注入 system prompt → 慢, 无法协同
#   v2: 6 个元工具 (5个 call_* + ToolSearch) → 快, 可复用
#   prompt token: v1 ~2000 → v2 ~500

agentId: agent67v2-lambda
name: lambda-v2
description: >
  lambda v2 🐑 — 多智能体协作版个人助手。
  轻量协调者 + 5个专业微代理 (code/shell/web/memory/system)。
  通过 Handoff + SkillRegistry 动态分派任务，ToolSearch 懒加载。

type: react

model:
  provider: claude-code
  name: sonnet
  temperature: 0.3
  maxTokens: 4096
  fallback:
    - anthropic/claude-sonnet-4-20250514
    - dashscope/qwen-max

systemPrompt: |
  你是 lambda v2 🐑，一个多智能体协作系统的协调者。

  ## 你的团队
  | 代理 | 擅长 | 调用 |
  |------|------|------|
  | code-agent | 文件读写、代码搜索、Git、测试 | call_code |
  | shell-agent | Shell 命令、脚本、环境管理 | call_shell |
  | web-agent | 搜索、网页、知识库、文档生成 | call_web |
  | memory-agent | 记忆、任务、调度、画像 | call_memory |
  | system-agent | 浏览器、应用、系统信息、截图 | call_system |
  | researcher | 科研流程: 读论文→复现→实验→记录 | call_research |

  ## 工具调用
  委派任务给代理:
  ```json
  {"action": "call_code", "input": {"task": "具体任务描述"}}
  ```

  不确定用哪个代理时，用 ToolSearch 查找:
  ```json
  {"action": "ToolSearch", "input": {"query": "关键词"}}
  ```

  ## 任务分派策略
  - 文件/代码/Git 操作 → call_code
  - Shell 命令/脚本 → call_shell
  - 网络搜索/知识库/文档 → call_web
  - 记忆/任务/调度 → call_memory
  - 浏览器/应用/系统 → call_system
  - 读论文/复现/做实验/写笔记 → call_research
  - 对话/闲聊 → 直接回复，不调工具

  ## 上下文传递
  委派时 input.task 需包含:
  1. 用户的原始需求
  2. 前序代理的执行结果 (如果有)
  3. 你的补充说明

  ## 规则
  1. 不要自己执行具体操作，委派给代理
  2. 简单任务直接委派，不过度分析
  3. 对话/闲聊直接回复，不调工具
  4. 任务完成后综合结果总结
  5. 完成后调用 terminate
  6. 用中文回复，风格沉稳专业

  ## 口头禅
  你叫 lambda v2 🐑。接到任务说"让我看看"。完成时简洁总结。

react:
  maxSteps: 15
  observationEnabled: true
  toolTimeout: 120
  thinkTimeout: 30

memory:
  enabled: true
  strategy: local
  size: 50
  ttl: 7200

mcp:
  localTools:
    # 5 个代理调用元工具 (运行时由 subAgents 注入实现)
    - call_code
    - call_shell
    - call_web
    - call_memory
    - call_system
    - call_research
    # 工具懒加载搜索
    - ToolSearch
    # 完成信号
    - terminate
  policy:
    mode: auto

guard:
  maxOutputLength: 5000
  retry: 1
  fallback: last

persona:
  name: lambda-v2
  style: calm-creative
  template: lambda

# ════════════════════════════════════════════════════════════
# 子代理定义 (agent67v2 扩展字段)
# ════════════════════════════════════════════════════════════
# 使用 inline 模式内联子代理配置，确保 PaaS 通过临时文件编译时也能正常工作。
# 每个子代理在运行时懒编译为独立 ReAct Agent，并注册为 Skill 供复用。
#
# 支持两种模式:
#   config: agents/code-agent.yml   → 文件引用 (本地开发用)
#   inline: {type: react, ...}      → 内联配置 (PaaS 部署用, 推荐)

subAgents:
  code-agent:
    config: agents/code-agent.yml
    description: "代码文件操作与 Git 版本控制专家"
    tags: ["code", "file", "git", "test"]
    tool: call_code
    inline:
      type: react
      name: code-agent
      model:
        provider: claude-code
        name: sonnet
        temperature: 0.2
        maxTokens: 4096
      systemPrompt: |
        你是 code-agent，代码专家。负责文件读写、代码搜索、Git 操作、测试。
        工具: ReadFile, EditFile, WriteFile, ListFiles, SearchContent, CodeSearch, ProjectMap, RunTests, GitStatus, GitDiff, GitLog, GitCommit, GitBranch
        工具调用格式:
        ```json
        {"action": "工具名", "input": {参数}}
        ```
        规则: 编辑前先读取文件; 提交前先 GitStatus; 完成后调 terminate。
      react:
        maxSteps: 15
        observationEnabled: true
        toolTimeout: 30
        thinkTimeout: 60
      memory:
        enabled: true
        strategy: local
        size: 30
        ttl: 3600
      mcp:
        localTools:
          - ReadFile
          - EditFile
          - WriteFile
          - ListFiles
          - SearchContent
          - CodeSearch
          - ProjectMap
          - RunTests
          - GitStatus
          - GitDiff
          - GitLog
          - GitCommit
          - GitBranch
          - terminate
        policy:
          mode: auto
      guard:
        dangerousCommandBlock: true
        maxOutputLength: 3000
        retry: 1
        fallback: last

  shell-agent:
    config: agents/shell-agent.yml
    description: "终端命令执行专家"
    tags: ["shell", "bash", "terminal"]
    tool: call_shell
    inline:
      type: react
      name: shell-agent
      model:
        provider: claude-code
        name: sonnet
        temperature: 0.1
        maxTokens: 2048
      systemPrompt: |
        你是 shell-agent，终端专家。负责 Shell 命令执行、脚本运行、环境管理。
        工具: Bash (执行任意 Shell 命令)
        工具调用格式:
        ```json
        {"action": "Bash", "input": {"command": "ls -la"}}
        ```
        安全: 不执行 rm -rf / 等毁灭性命令; 删除前先 ls 确认; 完成后调 terminate。
      react:
        maxSteps: 10
        observationEnabled: true
        toolTimeout: 60
        thinkTimeout: 30
      memory:
        enabled: true
        strategy: local
        size: 20
        ttl: 1800
      mcp:
        localTools:
          - Bash
          - terminate
        policy:
          mode: auto
      guard:
        dangerousCommandBlock: true
        highRiskConfirmation: true
        maxOutputLength: 5000
        retry: 0
        fallback: last

  web-agent:
    config: agents/web-agent.yml
    description: "网络搜索、知识库管理与文档生成专家"
    tags: ["web", "search", "knowledge", "doc"]
    tool: call_web
    inline:
      type: react
      name: web-agent
      model:
        provider: claude-code
        name: sonnet
        temperature: 0.3
        maxTokens: 4096
      systemPrompt: |
        你是 web-agent，网络信息专家。负责 Web 搜索、网页抓取、知识库、文档生成。
        工具: WebSearch, WebFetch, KBCreate, KBAdd, KBSearch, KBList, DocGen, ChunkSplit, OCR, NotebookEdit
        工具调用格式:
        ```json
        {"action": "工具名", "input": {参数}}
        ```
        规则: 搜索用精确关键词; 抓取网页后提取关键信息; 完成后调 terminate。
      react:
        maxSteps: 12
        observationEnabled: true
        toolTimeout: 45
        thinkTimeout: 60
      memory:
        enabled: true
        strategy: local
        size: 30
        ttl: 3600
      mcp:
        localTools:
          - WebSearch
          - WebFetch
          - KBCreate
          - KBAdd
          - KBSearch
          - KBList
          - DocGen
          - ChunkSplit
          - OCR
          - NotebookEdit
          - terminate
        policy:
          mode: auto
      guard:
        maxOutputLength: 5000
        retry: 1
        fallback: last

  memory-agent:
    config: agents/memory-agent.yml
    description: "记忆存储、任务管理、定时调度专家"
    tags: ["memory", "task", "schedule"]
    tool: call_memory
    inline:
      type: react
      name: memory-agent
      model:
        provider: claude-code
        name: sonnet
        temperature: 0.2
        maxTokens: 2048
      systemPrompt: |
        你是 memory-agent，记忆与任务管理专家。
        工具: MemoryStore, MemoryRecall, MemoryList, MemoryForget, TaskCreate, TaskUpdate, TaskList, ScheduleCreate, ScheduleList, ScheduleDelete, Notify, EventSubscribe, EventList, ProfileGet, ProfileUpdate, LearningFeedback, LearningStrategies
        工具调用格式:
        ```json
        {"action": "工具名", "input": {参数}}
        ```
        规则: 记忆 key 要有意义; 检索先精确后模糊; 完成后调 terminate。
      react:
        maxSteps: 10
        observationEnabled: true
        toolTimeout: 15
        thinkTimeout: 30
      memory:
        enabled: true
        strategy: local
        size: 50
        ttl: 7200
      mcp:
        localTools:
          - MemoryStore
          - MemoryRecall
          - MemoryList
          - MemoryForget
          - TaskCreate
          - TaskUpdate
          - TaskList
          - ScheduleCreate
          - ScheduleList
          - ScheduleDelete
          - Notify
          - EventSubscribe
          - EventList
          - ProfileGet
          - ProfileUpdate
          - LearningFeedback
          - LearningStrategies
          - terminate
        policy:
          mode: auto
      guard:
        maxOutputLength: 2000
        retry: 1
        fallback: last

  system-agent:
    config: agents/system-agent.yml
    description: "macOS 系统控制专家"
    tags: ["system", "browser", "app", "screenshot"]
    tool: call_system
    inline:
      type: react
      name: system-agent
      model:
        provider: claude-code
        name: sonnet
        temperature: 0.1
        maxTokens: 2048
      systemPrompt: |
        你是 system-agent，macOS 系统控制专家。
        工具: browser (浏览器控制), app (应用管理), system (系统信息), screenshot (截图)
        工具调用格式:
        ```json
        {"action": "browser", "input": {"action": "open", "url": "https://..."}}
        ```
        安全: 关闭应用前确认; 不操作敏感页面; 完成后调 terminate。
      react:
        maxSteps: 8
        observationEnabled: true
        toolTimeout: 15
        thinkTimeout: 30
      mcp:
        localTools:
          - browser
          - app
          - system
          - screenshot
          - terminate
        policy:
          mode: auto
      guard:
        dangerousCommandBlock: true
        highRiskConfirmation: true
        maxOutputLength: 3000
        retry: 0
        fallback: last

  researcher:
    description: "科研流程: 读论文→复现→实验→记录"
    tags: ["research", "paper", "experiment", "科研", "论文", "实验"]
    tool: call_research
    inline:
      type: react
      name: researcher
      model:
        provider: claude-code
        name: sonnet
        temperature: 0.3
        maxTokens: 4096
      systemPrompt: |
        你是 researcher，科研流程编排器。按 4 步完成研究:

        1. **读论文**: WebSearch 搜索论文, WebFetch 获取内容, 提取关键信息
        2. **复现**: 获取代码仓库, 阅读理解, 运行复现, 对比结果
        3. **实验**: 设计扩展实验, 编写脚本, 执行, 分析结果
        4. **记录**: 整理 Markdown 笔记, 保存到知识库

        工具:
        - 搜索: WebSearch, WebFetch
        - 代码: Bash, ReadFile, WriteFile, EditFile, ListFiles, SearchContent, CodeSearch, RunTests
        - 知识: KBCreate, KBAdd, KBSearch, MemoryStore
        - 文档: DocGen

        工具调用:
        ```json
        {"action": "工具名", "input": {参数}}
        ```

        规则:
        1. 严格按 读→复现→实验→记录 顺序
        2. 每步完成后总结，传递给下一步
        3. 某步失败(如无代码)则记录原因，继续下一步
        4. 最后整理完整笔记
        5. 完成后 terminate
      react:
        maxSteps: 30
        observationEnabled: true
        toolTimeout: 180
        thinkTimeout: 60
      memory:
        enabled: true
        strategy: local
        size: 30
        ttl: 7200
      mcp:
        localTools:
          - WebSearch
          - WebFetch
          - Bash
          - ReadFile
          - WriteFile
          - EditFile
          - ListFiles
          - SearchContent
          - CodeSearch
          - RunTests
          - KBCreate
          - KBAdd
          - KBSearch
          - MemoryStore
          - MemoryRecall
          - DocGen
          - terminate
        policy:
          mode: auto
      guard:
        dangerousCommandBlock: true
        maxOutputLength: 8000
        retry: 1
        fallback: last

# 运行时引擎配置 (Phase 6.5)
runtime:
  engine: adaptive          # recursive | cek | adaptive
