3.5 KiB
3.5 KiB
活动上下文
当前工作焦点
我们正处于 架构验证和问题修复的关键阶段。在初步搭建了包含多个服务器(APICaller, SchemaValidator, DMSProvider, TestManager)的完整 MCP 架构后,我们遇到了一个持续性的、与文件路径解析相关的核心障碍。
当前所有工作的核心焦点是 彻底解决在子进程中运行的 MCP 服务器无法正确定位其依赖文件(如 domain.json)的问题,并最终让整个测试流程成功运转起来。
优先任务
- 根源分析: 彻底理解
subprocess.Popen的工作目录(CWD)继承机制,以及它是如何与DMSProviderServer.py中os.path相关函数交互并导致错误的。 - 实施健壮的解决方案:
- 重构
run_tests.py: 修改启动脚本,在创建服务器子进程时,为其明确设置cwd参数,确保每个服务器都在其脚本所在的目录中运行。 - 简化服务器路径: 在
DMSProviderServer.py中,将文件路径调整为基于其已被正确设置的cwd的、更简单的相对路径。
- 重构
- 最终验证: 运行完整的端到端测试,确认 AI Agent 能够成功从
DMSProviderServer获取 API 列表,并启动其测试循环。
最近变更
- 多服务器架构实现: 我们已经成功创建并集成了四个独立的 MCP 服务器,每个服务器都提供一组特定的工具。
- Agent 逻辑进化: Agent 的主循环 (
agent_main_loop.py) 已经从硬编码逻辑演变为一个完全由 LLM 驱动的、动态的测试流程。 - 启动器脚本: 创建了
run_tests.py,用于统一启动所有服务器和 Agent 进程。 - 反复的路径修复尝试: 多次尝试修改
DMSProviderServer.py中的相对路径,但均未成功,这促使我们对问题进行更深入的分析。
活动决策和考虑
当前决策
- 接受失败并深入分析: 我们认识到,简单的路径调整是无效的。我们决定暂停“打地鼠”式的修复,转而投入时间去理解问题的根本原因——进程的执行上下文。
- 采用
cwd解决方案: 我们确定,通过在subprocess.Popen中为每个服务器子进程显式设置cwd,是解决此类问题的最健壮、最可靠的方法。这将使我们的系统对执行环境的变化更具弹性。
开放问题
- 异步错误处理: 当前的
agent_main_loop.py在TaskGroup中遇到了未处理的异常。一旦路径问题解决,下一个需要关注的技术点将是如何在anyio和asyncio的环境中优雅地捕获和处理并发任务中的错误。 - LLM 的稳定性: 尽管 Agent 的逻辑是 LLM 驱动的,但我们还未充分测试在真实、长链条的工具调用下,LLM 生成的参数和决策的稳定性。这可能是下一个潜在的问题点。
下一步计划
短期目标 (本次会话)
- 重构
run_tests.py以正确设置服务器的cwd。 (已完成) - 调整
DMSProviderServer.py中的文件路径以匹配新的cwd。(已完成) - 执行最终测试: 在您重启对话后,我们将立即运行
run_tests.py,并期望看到DMSProviderServer成功加载 API 列表,Agent 开始执行测试。 - 修复
TaskGroup异常: 解决在agent_main_loop.py中出现的AttributeError: 'NoneType' object has no attribute 'get',这个错误很可能是由空的 API 列表间接触发的。