gongwenxin 1901cf611e 集成
2025-07-24 17:22:36 +08:00

3.5 KiB
Raw Blame History

活动上下文

当前工作焦点

我们正处于 架构验证和问题修复的关键阶段。在初步搭建了包含多个服务器(APICaller, SchemaValidator, DMSProvider, TestManager)的完整 MCP 架构后,我们遇到了一个持续性的、与文件路径解析相关的核心障碍

当前所有工作的核心焦点是 彻底解决在子进程中运行的 MCP 服务器无法正确定位其依赖文件(如 domain.json)的问题,并最终让整个测试流程成功运转起来。

优先任务

  1. 根源分析: 彻底理解 subprocess.Popen 的工作目录CWD继承机制以及它是如何与 DMSProviderServer.pyos.path 相关函数交互并导致错误的。
  2. 实施健壮的解决方案:
    • 重构 run_tests.py: 修改启动脚本,在创建服务器子进程时,为其明确设置 cwd 参数,确保每个服务器都在其脚本所在的目录中运行。
    • 简化服务器路径: 在 DMSProviderServer.py 中,将文件路径调整为基于其已被正确设置的 cwd 的、更简单的相对路径。
  3. 最终验证: 运行完整的端到端测试,确认 AI Agent 能够成功从 DMSProviderServer 获取 API 列表,并启动其测试循环。

最近变更

  • 多服务器架构实现: 我们已经成功创建并集成了四个独立的 MCP 服务器,每个服务器都提供一组特定的工具。
  • Agent 逻辑进化: Agent 的主循环 (agent_main_loop.py) 已经从硬编码逻辑演变为一个完全由 LLM 驱动的、动态的测试流程。
  • 启动器脚本: 创建了 run_tests.py,用于统一启动所有服务器和 Agent 进程。
  • 反复的路径修复尝试: 多次尝试修改 DMSProviderServer.py 中的相对路径,但均未成功,这促使我们对问题进行更深入的分析。

活动决策和考虑

当前决策

  1. 接受失败并深入分析: 我们认识到,简单的路径调整是无效的。我们决定暂停“打地鼠”式的修复,转而投入时间去理解问题的根本原因——进程的执行上下文。
  2. 采用 cwd 解决方案: 我们确定,通过在 subprocess.Popen 中为每个服务器子进程显式设置 cwd,是解决此类问题的最健壮、最可靠的方法。这将使我们的系统对执行环境的变化更具弹性。

开放问题

  1. 异步错误处理: 当前的 agent_main_loop.pyTaskGroup 中遇到了未处理的异常。一旦路径问题解决,下一个需要关注的技术点将是如何在 anyioasyncio 的环境中优雅地捕获和处理并发任务中的错误。
  2. 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 列表间接触发的。