Skip to content

feat(agent): 完成 DeepAgents 0.7 迁移与全仓依赖安全升级 - #971

Merged
xerrors merged 3 commits into
xerrors:mainfrom
Yuchuan925:feat/deepagents-0.7-migration
Aug 23, 2026
Merged

feat(agent): 完成 DeepAgents 0.7 迁移与全仓依赖安全升级#971
xerrors merged 3 commits into
xerrors:mainfrom
Yuchuan925:feat/deepagents-0.7-migration

Conversation

@Yuchuan925

Copy link
Copy Markdown
Collaborator

变更说明

本 PR 完成 xhome #39 所对应的 DeepAgents 0.7 迁移,并对全仓依赖执行分批升级与安全验证。

  • 任务类型:architecture
  • 目标:
    • 适配 DeepAgents 0.7+(升级至 0.7.7,解除 backend factory 依赖)。
    • 删除 Yuxi 自行维护的 CustomCompositeBackend,改用官方 CompositeBackend
    • FilesystemMiddleware 中显式限定工具 allowlist,排除未实现且缺少审批设计的 delete
    • 补齐 ProvisionerSandboxBackend.read() 的结构化分页字段与 grep()max_count/truncated 传播。
    • 适配 SummarizationMiddleware 0.7 签名与 session/media offload 机制。
    • 升级全仓(backend / packages/yuxi-cli / web)可安全升级的依赖。
  • 非目标:
    • 不引入全局可变的 backend 实例或共享缓存(仍保持每次 Graph 构造独立 backend)。
    • 不将 Yuxi 装配整体替换为 create_deep_agent(保留 Yuxi 自定义 AgentRun、审批、Steer、Skills 链路)。
  • substantial / trivial 判断:substantial(涉及 agent backend/middleware 装配重构、核心依赖升级与决策记录)。

工程主张与 Owner

  • 受影响的工程主张:
    • AgentRun 的 backend 实例在每次 get_graph(context) 时构造,并由 FilesystemMiddlewareSummarizationMiddleware 共用同一实例,artifacts_root 派生 outputs 前缀。
    • 文件工具通过 allowlist 明确排除 deleteopen_kb_document 豁免于 tool result eviction。
    • 依赖漏洞审计 uv audit --locked 保持 0 漏洞。
  • Owner / commit point / 观察边界:
    • backend/package/yuxi/agents/backends/composite.py:负责每 Run backend 构造与 FilesystemMiddleware 工具 allowlist。
    • backend/package/yuxi/agents/backends/sandbox/backend.py:负责 read 分页 metadata 与 grep max_count 截断。
    • backend/package/yuxi/agents/middlewares/summary.py:负责上下文压缩与摘要会话隔离。
  • 决策记录:docs/develop-guides/decisions/implemented/2026-08-23-deepagents-07-migration.md

验证情况

DeepAgents 0.7+ 正确装配并保持隔离

  • 失败面:backend factory TypeError / 跨用户文件串读 / 缺少 thread_id 未报错
  • 语义 Owner:yuxi.agents.backends.composite
  • 直接证据 / 命令:docker compose exec api uv run --no-sync --group test pytest test/unit/backends/test_sandbox_backends.py -q
  • 负向案例:缺少 thread_id 时抛 ValueError;未选择 Skill 不扫描 Skill 目录
  • 结果:Passed

上下文压缩与摘要正确派生 outputs 前缀

  • 失败面:摘要输出到根目录 / session ID 碰撞 / L1 裁剪失效
  • 语义 Owner:yuxi.agents.middlewares.summary
  • 直接证据 / 命令:docker compose exec api uv run --no-sync --group test pytest test/unit/middlewares/test_summary_middleware.py -q
  • 负向案例:ContextOverflow 回退到摘要并处理 handler 失败
  • 结果:Passed

后端全量 Unit 测试通过

  • 失败面:依赖升级导致接口不兼容或断言失效
  • 语义 Owner:CI / unit test runner
  • 直接证据 / 命令:docker compose exec api uv run --no-sync --group test pytest test/unit -m "not slow" -q
  • 负向案例:修复初期 21 处断言不匹配
  • 结果:Passed (1475 passed, 39 skipped)

工程信任契约与依赖安全审计

  • 失败面:依赖漏洞 / 契约失效 / 决策记录格式错误
  • 语义 Owner:信任系统
  • 直接证据 / 命令:python3 scripts/verify_engineering_contracts.py + python3 -m unittest scripts.test_verify_engineering_contracts + cd backend && uv audit --locked + cd packages/yuxi-cli && uv audit --locked
  • 负向案例:0 vulnerabilities, 29 decisions valid
  • 结果:Passed

Web 前端构建与测试

  • 失败面:js-yaml 5 默认导出缺失 / pinia 4 兼容性 / 构建报错
  • 语义 Owner:web/
  • 直接证据 / 命令:cd web && pnpm run build && pnpm run test:unit && pnpm run lint
  • 负向案例:已修复 js-yaml 5 命名导入
  • 结果:Passed (82 unit tests passed)

yuxi-cli 构建与测试

  • 失败面:依赖升级破坏 CLI 命令
  • 语义 Owner:packages/yuxi-cli/
  • 直接证据 / 命令:cd packages/yuxi-cli && uv run --isolated --no-dev --with pytest pytest tests -q
  • 负向案例:不适用
  • 结果:Passed (90 tests passed)

简化 / 删除验收

  • keep/narrow/replace/remove:
    • 彻底删除 CustomCompositeBackend,由官方 CompositeBackend 代替(0.7 已包含路由修复与 truncated 支持)。
    • 删除 _SUMMARY_BACKEND ContextVar,直接使用中间件实例的 self._backend
    • 删除 _count_request_tokens,委托给父类 _count_tokens
    • 删除 create_summary_middleware 的手动 prefix 赋值,由 artifacts_root 自动派生。
  • 旧能力不存在证据:搜索 CustomCompositeBackend 全仓 0 引用;搜索 _SUMMARY_BACKEND 0 引用。
  • 重新引入条件:若官方 CompositeBackend 在未来版本再次引入 route-aware glob 倒退且上游未修复时。

独立语义 Review

已通过全量 unit 回归、契约检查与依赖审计核实;涉及装配重构、沙盒后端、摘要中间件、前端构建与 CLI 测试均全部通过。

未验证范围与风险

  • 真实外部沙盒执行(需 Daytona/Docker 运行时,本地单测使用 Mock / ProvisionerSandboxClient 桩代码)。
  • 真实多模态大模型线上流式交互(需真实 API Key,已在 unit 中覆盖 mock 流程)。

事故反馈

不涉及。

界面变更

不涉及。

关联事项

补充说明

  • 清华源当前最高同步至 deepagents 0.7.7,pyproject.toml 声明 deepagents>=0.7.7,<0.8 以确保国内镜像与 Docker 构建稳定性。
  • torch 固定在 2.13.0 + torchvision 0.28.0 配对,与 PyPI 当前发布状态严格一致。

@xerrors
xerrors merged commit 07034cc into xerrors:main Aug 23, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants