| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- """
- Agent Presets - Agent 类型预设配置
- 定义不同类型 Agent 的工具权限和运行参数。
- 用户可通过 .agent/presets.json 覆盖或添加预设。
- """
- from dataclasses import dataclass, field
- from typing import Optional, List
- @dataclass
- class AgentPreset:
- """Agent 预设配置"""
- # 工具权限
- allowed_tools: Optional[List[str]] = None # None 表示允许全部
- denied_tools: Optional[List[str]] = None # 黑名单
- # 运行参数
- max_iterations: int = 30
- temperature: Optional[float] = None
- # 描述
- description: Optional[str] = None
- # 内置预设
- AGENT_PRESETS = {
- "default": AgentPreset(
- allowed_tools=None,
- max_iterations=30,
- description="默认 Agent,拥有全部工具权限",
- ),
- "explore": AgentPreset(
- allowed_tools=["read", "glob", "grep", "list_files"],
- denied_tools=["write", "edit", "bash", "task"],
- max_iterations=15,
- description="探索型 Agent,只读权限,用于代码分析",
- ),
- "analyst": AgentPreset(
- allowed_tools=["read", "glob", "grep", "web_search", "webfetch"],
- denied_tools=["write", "edit", "bash", "task"],
- temperature=0.3,
- max_iterations=25,
- description="分析型 Agent,用于深度分析和研究",
- ),
- }
- def get_preset(name: str) -> AgentPreset:
- """获取预设配置"""
- if name not in AGENT_PRESETS:
- raise ValueError(f"Unknown preset: {name}. Available: {list(AGENT_PRESETS.keys())}")
- return AGENT_PRESETS[name]
- def register_preset(name: str, preset: AgentPreset) -> None:
- """注册自定义预设"""
- AGENT_PRESETS[name] = preset
|