架构
ARES 采用分层组织。sdk 包是唯一入口;它拥有的 Runtime 将 LLM 服务、
工具注册表、记忆、知识图谱与进化系统串联在一起。sdk 以下均为内部包,
通过 api/ 暴露稳定的公开契约。
分层模型
flowchart TD
User([开发者]) --> SDK["sdk.NewRuntime"]
SDK --> RT["Runtime"]
RT -->|NewAgent| Agent["Agent"]
Agent -->|Run ctx, input| Loop["Agent Loop"]
Loop -->|strategy| Strat["StrategySource<br/>internal/agents"]
Loop -->|history| Mem[("Memory<br/>internal/ares_memory")]
Loop -->|recall| KR["Knowledge Runtime<br/>internal/knowledge"]
Loop -->|chat+tools| LLM["LLM Service<br/>internal/llmservice"]
LLM -->|tools| Tools["Tool Registry<br/>api/tools"]
KR -->|distill| Bridge["DistillBridge<br/>internal/knowledge/adapter"]
Bridge -->|quality gate| Store[("Knowledge Store<br/>memory/sqlite/pg/mysql")]
Loop -->|events| Evt["Event Store<br/>internal/ares_events"]
Evt -->|TaskCompleted| Distill["Distillation Service<br/>internal/ares_experience"]
请求流程
sdk.NewRuntime(opts...)构造Runtime,根据传入的选项串联 LLM 客户端、 工具注册表、记忆管理器、知识运行时、进化协调器与 MCP 客户端。rt.NewAgent(name, opts...)创建绑定到运行时的Agent。agent.Run(ctx, input)进入智能体循环:- 从
StrategySource加载当前策略(prompt + LLM 参数)。 - 从记忆(RAG)与知识运行时召回相关上下文。
- 构建消息列表(system + 历史 + 用户输入 + 上下文片段)。
- 调用 LLM 服务。若存在工具,路由到 Chat API。
- 若 LLM 返回工具调用,通过工具注册表执行并将结果回填;重复直到 LLM 产出最终答案或达到迭代上限。
- 从
- 完成后发布
TaskCompleted事件。事件驱动的蒸馏订阅者消费该事件, 将对话蒸馏为长期经验与 AKG KnowledgeObject。
模块协作
上图展示了主要数据路径。关键协作关系:
- sdk ↔ internal/*:SDK 是唯一直接导入内部包的层;
api/定义公开契约。 - agents ↔ llmservice:智能体循环在有工具时调用
Service.Chat,否则 调用Service.Generate。 - knowledge ↔ ares_memory:
KnowledgeRetriever实现ContextRetriever接口,使 AKG 事实注入记忆 RAG。 - ares_events ↔ ares_experience:事件触发蒸馏流水线,回写到经验存储与 知识存储。
- ares_evolution ↔ knowledge:进化协调器可通过
WithPatchRegistry提交影响运行中知识运行时的补丁。
扩展方式
具体的新增 LLM 供应商、自定义工具、知识存储与策略源的指引,请参见 扩展指南。