presets.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. """
  2. Agent Presets - Agent 类型预设配置
  3. 定义不同类型 Agent 的工具权限和运行参数。
  4. 用户可通过 .agent/presets.json 覆盖或添加预设。
  5. """
  6. from dataclasses import dataclass, field
  7. from typing import Optional, List
  8. @dataclass
  9. class AgentPreset:
  10. """Agent 预设配置"""
  11. # 工具权限
  12. allowed_tools: Optional[List[str]] = None # None 表示允许全部
  13. denied_tools: Optional[List[str]] = None # 黑名单
  14. # 运行参数
  15. max_iterations: int = 30
  16. temperature: Optional[float] = None
  17. # Skills(注入 system prompt 的 skill 名称列表;None = 加载全部)
  18. skills: Optional[List[str]] = None
  19. # 描述
  20. description: Optional[str] = None
  21. # 内置预设
  22. _DEFAULT_SKILLS = ["planning", "research", "browser"]
  23. AGENT_PRESETS = {
  24. "default": AgentPreset(
  25. allowed_tools=None,
  26. max_iterations=30,
  27. skills=_DEFAULT_SKILLS,
  28. description="默认 Agent,拥有全部工具权限",
  29. ),
  30. "delegate": AgentPreset(
  31. allowed_tools=None,
  32. max_iterations=30,
  33. skills=_DEFAULT_SKILLS,
  34. description="委托子 Agent,拥有全部工具权限(由 agent 工具创建)",
  35. ),
  36. "explore": AgentPreset(
  37. allowed_tools=["read", "glob", "grep", "list_files"],
  38. denied_tools=["write", "edit", "bash", "task"],
  39. max_iterations=15,
  40. skills=["planning"],
  41. description="探索型 Agent,只读权限,用于代码分析",
  42. ),
  43. "evaluate": AgentPreset(
  44. allowed_tools=["read_file", "grep_content", "glob_files", "goal"],
  45. max_iterations=10,
  46. skills=["planning"],
  47. description="评估型 Agent,只读权限,用于结果评估",
  48. ),
  49. }
  50. def get_preset(name: str) -> AgentPreset:
  51. """获取预设配置"""
  52. if name not in AGENT_PRESETS:
  53. raise ValueError(f"Unknown preset: {name}. Available: {list(AGENT_PRESETS.keys())}")
  54. return AGENT_PRESETS[name]
  55. def register_preset(name: str, preset: AgentPreset) -> None:
  56. """注册自定义预设"""
  57. AGENT_PRESETS[name] = preset