|
|
1 day ago | |
|---|---|---|
| .. | ||
| cli | 3 days ago | |
| core | 1 day ago | |
| docs | 3 days ago | |
| llm | 3 days ago | |
| memory | 3 days ago | |
| tools | 1 day ago | |
| trace | 1 day ago | |
| utils | 1 day ago | |
| README.md | 5 days ago | |
| __init__.py | 3 days ago | |
Agent 核心框架:提供单个 Agent 的执行能力
module/file.py:function_namedocs/decisions.md另行记录Agent Core 是一个完整的 Agent 执行框架,提供:
独立性:Agent Core 不依赖任何其他模块,可以独立运行。
agent/
├── core/ # 核心引擎
│ ├── runner.py # AgentRunner + 运行时配置
│ └── presets.py # Agent 预设(explore、analyst 等)
│
├── trace/ # 执行追踪(含计划管理)
│ ├── models.py # Trace, Message
│ ├── goal_models.py # Goal, GoalTree, GoalStats
│ ├── protocols.py # TraceStore 接口
│ ├── store.py # FileSystemTraceStore 实现
│ ├── goal_tool.py # goal 工具(计划管理)
│ ├── compaction.py # Context 压缩
│ ├── api.py # REST API
│ └── websocket.py # WebSocket API
│
├── tools/ # 外部交互工具
│ ├── registry.py # 工具注册表
│ ├── schema.py # Schema 生成器
│ ├── models.py # ToolResult, ToolContext
│ └── builtin/
│ ├── file/ # 文件操作
│ ├── browser/ # 浏览器自动化
│ ├── bash.py # 命令执行
│ ├── subagent.py # 子 Agent 创建
│ └── a2a_im.py # A2A IM 工具(桥接到 Gateway)
│
├── memory/ # 跨会话记忆
│ ├── models.py # Experience, Skill
│ ├── stores.py # 存储实现
│ ├── skill_loader.py # Skill 加载器
│ └── skills/ # 内置 Skills
│
└── llm/ # LLM 集成
├── gemini.py # Gemini Provider
├── openrouter.py # OpenRouter Provider
└── yescode.py # Yescode Provider
一次完整的 Agent 执行。所有 Agent(主、子、人类协助)都是 Trace。
实现位置:agent/trace/models.py:Trace
计划中的一个目标,支持层级结构。
实现位置:agent/trace/goal_models.py:Goal
对应 LLM API 的消息,每条 Message 关联一个 Goal。
实现位置:agent/trace/models.py:Message
from agent.core.runner import AgentRunner, RunConfig
# 创建 Runner
runner = AgentRunner(
llm_call=create_llm_call(),
trace_store=FileSystemTraceStore()
)
# 运行 Agent
async for item in runner.run(
messages=[{"role": "user", "content": "分析项目架构"}],
config=RunConfig(model="gpt-4o")
):
if isinstance(item, Trace):
print(f"Trace: {item.trace_id}")
elif isinstance(item, Message):
print(f"Message: {item.content}")
from agent.tools import tool, ToolContext, ToolResult
@tool(description="自定义工具")
async def my_tool(arg: str, ctx: ToolContext) -> ToolResult:
return ToolResult(
title="成功",
output=f"处理结果: {arg}"
)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/traces |
列出 Traces |
| GET | /api/traces/{id} |
获取 Trace 详情 |
| GET | /api/traces/{id}/messages |
获取 Messages |
| POST | /api/traces |
新建 Trace 并执行 |
| POST | /api/traces/{id}/run |
续跑或回溯 |
| POST | /api/traces/{id}/stop |
停止运行 |
实现位置:agent/trace/api.py, agent/trace/run_api.py