代理查询助手
该项目编排了一个多代理循环,使用Google Gemini模型、MCP工具服务器和检索管道回答用户查询。核心流程:
- 感知:理解查询,用之前的会话记忆作为基础。
- 检索器:可选的检索计划器,决定是否需要额外的上下文,并从MCP工具(如DuckDuckGo搜索或本地RAG)中获取。
- 决定:计划并执行工具/代码步骤,同时重用检索到的上下文和会话数据。
- 行动:通过执行沙盒Python
action/executor.py,安全地调用MCP工具。 - 批评家:使用Gemini提示进行稳健评估,从语义上评估每个步骤以确定进度。
- 内存和日志记录:
AgentSession记录感知快照、计划、步骤评估和检索器计划,以实现完全可追溯性。
关键组件
main.py:CLI入口点连接MCP服务器并运行AgentLoop.agent/agent_loop2.py:感知的异步编排→ 检索→ 决定→ 行动→ 批评周期。retriever/retriever.py:提示驱动的计划器,返回上下文片段并发出计划元数据。decision/decision.py双子座驱动的规划者,吸收感知、检索背景和批评反馈。critic/critic.py:将语义LLM评估与启发式回退相结合,用于步骤评分。memory/session_log.py:持久会话跟踪(session_logs/YYYY/MM/DD/*.json).
运行助手
python main.py您将看到MCP工具发现输出,然后系统会提示您进行查询。每个会话都会生成一个JSON日志 memory/session_logs/ 捕获感知、检索计划、决策步骤、代码执行结果和评论家评估。
配置
- 编辑
config/mcp_server_config.yaml添加/删除MCP服务器。 - 感知、决策和批评的推动者生活在
prompts/(UTF-8文本)。 - 环境变量:set
GEMINI_API_KEYGemini接入。
开发说明
action/executor.py注入retrieved_context/retrieved_context_text因此,生成的代码可以立即使用提取的片段。- 当感知/记忆已经回答问题时,检索器提示会避免冗余的网络调用,并在跳过检索时记录。
- Critic prompt利用Gemini来防止像通用令牌不匹配这样的假阴性,确保语义评估。
日志和诊断
- 会话日志现在包括
retriever.plan(原始计划JSON)和retriever.skipped旗帜。 - 内存搜索结果在运行启动期间打印,以提高透明度。
- LLM速率限制(例如Gemini 429)被困在
decision.py并报告为NOP步骤,而不是崩溃。
快乐的实验!对于新功能,更新提示和会话日志,以保持代理行为的可解释性。
