39 lines
3.5 KiB
Markdown
39 lines
3.5 KiB
Markdown
# 活动上下文
|
||
|
||
## 当前工作焦点
|
||
|
||
我们正处于 **架构验证和问题修复的关键阶段**。在初步搭建了包含多个服务器(`APICaller`, `SchemaValidator`, `DMSProvider`, `TestManager`)的完整 MCP 架构后,我们遇到了一个**持续性的、与文件路径解析相关的核心障碍**。
|
||
|
||
当前所有工作的核心焦点是 **彻底解决在子进程中运行的 MCP 服务器无法正确定位其依赖文件(如 `domain.json`)的问题**,并最终让整个测试流程成功运转起来。
|
||
|
||
### 优先任务
|
||
1. **根源分析**: 彻底理解 `subprocess.Popen` 的工作目录(CWD)继承机制,以及它是如何与 `DMSProviderServer.py` 中 `os.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.py` 在 `TaskGroup` 中遇到了未处理的异常。一旦路径问题解决,下一个需要关注的技术点将是如何在 `anyio` 和 `asyncio` 的环境中优雅地捕获和处理并发任务中的错误。
|
||
2. **LLM 的稳定性**: 尽管 Agent 的逻辑是 LLM 驱动的,但我们还未充分测试在真实、长链条的工具调用下,LLM 生成的参数和决策的稳定性。这可能是下一个潜在的问题点。
|
||
|
||
## 下一步计划
|
||
|
||
### 短期目标 (本次会话)
|
||
- [x] **重构 `run_tests.py`** 以正确设置服务器的 `cwd`。 (已完成)
|
||
- [x] **调整 `DMSProviderServer.py`** 中的文件路径以匹配新的 `cwd`。(已完成)
|
||
- [ ] **执行最终测试**: 在您重启对话后,我们将立即运行 `run_tests.py`,并期望看到 `DMSProviderServer` 成功加载 API 列表,Agent 开始执行测试。
|
||
- [ ] **修复 `TaskGroup` 异常**: 解决在 `agent_main_loop.py` 中出现的 `AttributeError: 'NoneType' object has no attribute 'get'`,这个错误很可能是由空的 API 列表间接触发的。 |