项目定位
Evolve Agent 是一个本地优先、可扩展的智能 Agent 项目。
它把长期记忆、MCP 工具调用、本地 SKILL.md 能力注入、评估反馈和自我反思放在同一个运行框架里,目标是让 Agent 不只是一次性问答模型,而是一个能长期协作、能接工具、能被持续评估和演进的个人智能助手底座。
对话流程
- CLI 用户输入 2. 进入大类evolveagent 3.分配给manager agent 4. 搜索长期记忆 5.长期记忆和用户需求封装进prompt,规划是否使用工具 5.检查工具权限 6.执行MCP工具 7.匹配本地skill 8.生成回答 9.保存记忆 10.评估回答 11.必要时候反思
manager Agent
1.work flow
1 | 会话管理 -> 看是否有因为权限而阻塞的工具调用任务(用户给权限->执行、加入会话消息列表,用户不给,加入会话消息列表,用户不确定,再次弹窗需要用户回答) ->若无/已完成工具调用任务,就开始记忆搜索 |
记忆搜索
用用户输入作为querry,最多寻找10条相关记忆,将Querry和记忆内容分词,然后检索分词overlap F1 分数,超过0.7,会把记忆加入prompt,最多加入10条
工具agent
判断这一轮对话是否需要调用工具,(是否,什么,如何),如果需要,返回json列表,调用工具名称和相关参数。
然后检查工具是否需要用户授权。
授权维护一个工具白名单:只读、公开数据访问(web搜索工具),不修改本地或者外部状态的工具,可以执行。
传入prompt让小参数模型自动对工具进行分类,L3及以上需要用户确认,二次确认等
| L0 | 不调用工具 | 直接让模型回答 | 普通知识问答、写作、解释代码 |
|---|---|---|---|
| L1 | 公开只读工具 | 默认自动执行 | 天气查询、网页搜索、查公开文档 |
| L2 | 受限只读工具 | 可自动执行,但要限制资源范围 | 读取项目内文件、查看本地状态、查询数据库只读接口 |
| L3 | 有副作用但可逆 | 用户确认后执行 | 创建文件、修改草稿、打开浏览器、发送测试请求 |
| L4 | 高风险或外部可见 | 二次确认 | 发邮件、发消息、提交表单、改数据库、推送代码 |
| L5 | 危险或不可接受 | 默认禁止 | 经典命令rm -rf ,删除大量文件、执行任意 shell、泄露密钥、绕过权限、访问未授权路径 |
如果因为权限问题,询问用户,就把这个需要调用的工具加入session列表,然后等待下一个循环。
如果工具正常秩序,就把数据结果返回保存进会话列表,在下一个循环传入给LLM
问答
存储记忆
把整个对话包装成为一个memoryentry字典,然后记忆全量写入一个json
优化点:借入LLM抽取稳定事实、去重/合并相似记忆、压缩对话摘要、淘汰策略
评估整体回复质量
调用评估agent,对生成的回复进行打分,获得evaluation_score用于agent判断是否需要反思。
反思
1.对话轮次到达一定数目 2.evaluation_score分数低 3.用户要求
调用反思agent,基于当前输入、回复和记忆上下文生成一段 reflection,并且存入记忆JSON
更新会话消息
生成回复之后,再更新会话消息。回复包括:llm回复、会话ID、记忆、工具执行数量、反思内容、回复质量。
2.组装prompt
加载skill
在与llm会话前,先根据用户输入,扫描一下skill文件夹skill.md的所有前面的skill摘要,选择是否需要使用skill
正常对话
1.agent角色 + 长期记忆 + 匹配到的skill摘要 + 工具执行结果 + 当前任务要求 传入子agent进行工作
不用agent 异步调用async
记忆
工作流写了,直接存储所有对话 + 中文分词 和用户输入计算分词匹配度
MCP
用户可以通过cli /MCP 命令配置mcp服务器,然后agent会在需要调用工具的时候通过mcp server获取工具列表,让工具agent判断是否调用,调用后将调用过的工具维护在当前会话工具agent的工具白名单。
Agent设计
基类 AGENT
维护agent id ,名字 ,功能描述,异步锁
AGENT共有方法:初始化,执行,关闭
managerAgent
整体工作流,分析任务并行给到不同的agent,异步等待结果,并且最终调用llm做出总结
menory agent
具体负责记忆存储,把manager给的记忆列表保存在JSOn里面,更新记忆、删除记忆,overlap搜索记忆、清空记忆等等
工作流一般是用到搜索记忆,和存储记忆
tool Agent
工具agent,方法:
plan:是否需要调用工具
permission:检查工具权限
execute:执行工具
list_tool:plan之前列出mcp所有工具列表
get_tool:获取单个工具的具体调用信息
evaluate Agent
主要负责评估agent返回质量:获得evaluation_score
评估策略:
高分回答触发风格学习,把反思提炼成风格建议,写入独立的风格记忆文件,再在生成回复时注入 prompt;同时给风格记忆加长度上限和裁剪规则。
Reflection Agent
反思,学习,获得改进意见,周期执行(manager agent获得10轮次以上对话记录之后)