Files
goodbuddy/docs/features/direct-model-agent/progress.md
T
mesalogo 74c3ec19b4 fix: retry transient direct model failures
Direct model conversations previously stopped after the first transient network error or request timeout, including TLS setup ECONNRESET failures. Text requests now retry up to three times with cancellable backoff before visible output, while partial streamed responses are never replayed.

Release note: 直连模型遇到临时网络故障或请求超时时,会在尚未输出内容的情况下自动重试最多 3 次,并支持随时取消。
2026-09-03 14:24:09 +08:00

6.8 KiB
Raw Blame History

直连模型 Agent 能力功能进度

文档信息

项目 内容
文档类型 功能进度
状态 已实施,本机验收完成
版本 0.3
日期 2026-09-03
关联入口 直连模型 Agent 能力

当前结论

本机生产路径已经完成源码接线:直连模型 Execute 可运行平台 Shell,Ask/Execute 均可按 父模式委派单层编程 Subagent;OpenCode、Continue、DeepSeek Harness 和托管 SSH 路径不注入 这两个工具。Windows 本机、真实模型和全量项目验证已通过;macOS 与 Linux 真机验证仍需 由对应平台完成。

已确认的当前基线

  • 直连模型当前内置工作区读、目录列表和文本写入,但没有进程工具。
  • 内置 MCP 当前没有 Shell;自定义 MCP 不能替代开箱即用的进程能力。
  • ModelAgentRuntime 已有多轮工具循环、取消、上下文压缩和有界结果。
  • DeepSeek Harness 已按 Windows PowerShell、macOS/Linux Bash 注册原生 Shell。
  • OpenCode 和 Continue 使用各自原生执行工具。
  • 当前专家 Subagent 是只读协作流程,不是直连模型可调用的编程工具。
  • Task/Job 领域文档已经明确 Subagent 不是新的顶层 Task 或 Conversation。
  • 当前跨平台进程树清理已经覆盖 Windows taskkill /T /F 和 POSIX 进程组。

已完成设计

  • 工具只注入直连模型,不注入 Agent Runtime。
  • 统一 process_execute 契约和三平台 Shell 决策。
  • Ask/Execute、执行空间、工作目录和非零退出规则。
  • 输出、超时、取消、环境和进程树边界。
  • 单层 subagent_delegate、继承规则、并发和结果模型。
  • 不创建 Child Task/独立 Conversation 的领域归属。
  • 设置能力目录、聊天活动、错误和无障碍行为。
  • 本机、真实模型和项目验证方案。

实施状态

阶段 1:进程服务

  • Shared 工具和 schema。
  • 本机 Shell 探测与能力状态。
  • 工作目录解析。
  • 跨平台前台进程、输出边界、超时和取消。
  • 当前筛选 PATH 和凭据环境过滤。

阶段 2:直连模型接入

  • ModelToolProvider 注册与调用。
  • Ask/Execute、Runtime target 和本机执行空间双重检查。
  • DeepSeek Harness、OpenCode 和 Continue 隔离。
  • 通用工具活动和“设置 > MCP > 直连模型”编程能力目录。
  • 普通问答、工具轮次和上下文摘要的瞬时网络错误及请求超时最多自动重试 3 次。
  • 递增退避、重试状态、取消传播和已显示输出不重放。

阶段 3:编程 Subagent

  • 编程 Subagent 服务和同 Provider 深度过滤。
  • 父子模式、模型、执行空间和能力继承。
  • 深度、全局并发、队列、超时和取消。
  • 新 Subagent actor 契约和旧专家事件兼容读取。
  • 用量、部分输出、实时活动和终态归并。

阶段 4:端到端验收

  • Windows PowerShell 真实命令。
  • macOS Bash/Sh 真实命令。
  • Linux x64/arm64 Bash/Sh 真实命令。
  • 直连模型“修改 → 测试 → 修复”真实闭环。
  • 假模型端到端 Subagent 编程委派、真实本机命令和父模型综合。
  • 真实模型 Subagent 编程委派和父模型综合。
  • Runtime 隔离、取消、会话释放和进程树回收聚焦测试。
  • 全量测试、类型检查、Lint 和生产构建。

当前阻塞项

  • 当前没有实现阻塞项。
  • 本机工具环境仍处于计划阶段;在其实施前,进程工具可以使用当前筛选 PATH,但不能宣称 GoodBuddy 托管 Node/Python 已可用。
  • 远端直连模型进程执行不在首版,后续需要独立增加 Agent 进程协议和真机验证。

2026-09-01 至 2026-09-02 实施与验证证据

  • 新增 direct-model-process-service.ts:PowerShell/Bash/Sh 探测、工作区目录校验、96 KiB 首尾输出、超时、取消、进程树回收和环境过滤。
  • 新增 direct-model-subagent-service.ts:单层委派、共享并发 3、队列 20、10 分钟上限、 192 KiB 输出、父请求取消和临时会话释放。
  • ModelToolProvider 只在直连模型上下文注册工具;Ask 隐藏进程工具,深度 1 隐藏委派工具, 远端工作区拒绝本机进程。
  • ModelAgentRuntime 复用同一已解析模型和 Tool Provider 运行子级,并把子级工具、用量和 Subagent 活动实时归并到父请求。
  • 新 actor 联合类型兼容既有专家/OpenCode 记录;编程 Subagent 不创建 Assistant Task。
  • 聚焦验证:
    • 进程、Provider、Runtime、共享契约与聊天 UI:290 passed, 1 skipped。
    • 设置与 Runtime 隔离:216 passed。
    • Main/Shared 聚焦持久化与 Subagent:188 passed, 1 skipped。
    • Node 与 Web TypeScript no-emit 检查通过。
  • 假模型端到端场景实际启动 Windows PowerShell,子级运行命令后返回父模型;该场景的 Runtime 模型调用数为 4 次。
  • 真实 DeepSeek 兼容连接端到端通过:模型创建失败程序、观察非零退出、修复并观察退出码 0、委派编程 Subagent 再次运行最终程序并综合结果;最终源码成功验收运行包含 8 次真实 模型调用。
  • BigToken 连接的首次验收在 TLS 建立前被 ECONNRESET 中断,未进入模型工具路径;切换 到仓库已有的 DeepSeek 连接后完成验证。2026-09-03 已针对该故障补充统一模型请求重试。

2026-09-03 模型请求重试验证证据

  • ModelAgentRuntime 对普通问答、工具轮次和上下文摘要统一处理瞬时 Node/Undici 网络错误 与请求超时;首次失败后最多重试 3 次,退避为 500 ms、1 s、2 s。

  • 聚焦测试覆盖嵌套 fetch failed → ECONNRESET 恢复、工具轮次恢复、四次尝试后终止、 退避取消,以及已显示部分流式输出时不重放。

  • npm test -- --run src/main/agent/model-runtime.test.ts: 72 passed, 1 skipped。

  • 全量 npm test:3484 passed, 51 skipped。

  • npm run typecheck、npm run lint 和 npm run build:通过。

  • 最小真实直连文本模型验证:1 passed, 13 skipped,实际模型调用 1 次。

  • 全量 npm test:3410 passed, 50 skipped。

  • npm run typecheck:通过。

  • npm run lint:通过。

  • npm run build:Main、Preload、Renderer 和控制面安装器均成功构建。2026-09-02 按产品 决策移除未对应实际性能问题的 Renderer bundle 基线门禁后复验通过。

进度维护要求

  • 只有真实生产路径完成并验证后才能勾选实施项。
  • 平台模拟单元测试不能替代对应平台真实命令测试。
  • 真实模型验证必须记录准确调用次数且不得记录凭据。
  • 需求变化回写 PRD、User Stories 和功能逻辑;实现事实只写本文件。