genOffice办公软件与AI能力 1. 整体边界2. Harness编辑器 AI 面板│ 创建并持有▼AgentLoop控制一次任务的执行├─ AgentSkill提示词、上下文、工具与执行器├─ AgentTransport模型请求与流式事件接口└─ Events / Snapshot界面反馈与回退挂钩│▼Electron IPC → ai-provider├─ Genspark 模型网关├─ 直接连接其他模型供应商└─ Codex app-server没有依托于langchain langgraph进行agent构建而是用typeScript直接实现。三个接口把循环、模型和文档操作分开接口职责替换时的影响AgentLoop历史、循环、停止条件、错误恢复决定任务如何运行AgentTransport发起模型请求回传文本和工具调用可以更换模型供应商AgentSkill提示词、工具定义、上下文、工具执行可以接入不同文档类型AgentLoop 是真正的运行控制器它实现的是典型的“模型—工具—结果反馈”循环用户指令文档上下文 → 请求模型 → 得到工具调用 → 本地依次执行工具 → 将结果追加到历史 → 再次请求模型 → 无工具调用时结束AgentSkill是把一组能力接入AgentLoop的代码接口。它同时包含给模型看的说明以及本地实际执行操作的函数。composeSkills()则把多个能力对象包装成一个对象让同一个 AgentLoop 使用。3. 这个产品实际有几个 agent基于当前核查版本在非测试代码中找到了7 个new AgentLoop(...)创建位置创建位置用途Docs AI 面板Word 文档主 agentSheets 编辑器Excel 主 agentSlides AI 面板PPT 主 agentPDF AI 面板PDF 主 agentMarkdown AI 面板Markdown 主 agentHTML AI 面板HTML 主 agentSlidesslide-qc.ts幻灯片质检与修复 agent可以归纳为6 类编辑器主 agent加上 1 类按需创建的 Slides 质检 agent。但不是产品运行时固定只有 7 个实例每个被创建的编辑面板可以持有自己的 AgentLoop。打开多个文档可能产生多个同类型实例。Slides 质检流程按需创建临时循环。未打开、未触发的功能不一定存在对应运行实例。不代表产品启动时固定创建7个agent。打开或新建文档→ 渲染文档对应的 AiPanel→ loopRef 为空→ 创建 AgentLoop→ 等待用户指令或自动运行的预设任务→ 调用 loop.run(...)Slides 的质检循环生命周期更短。进入需要模型参与的质检修复分支时代码直接创建并运行。所以主编辑循环是随编辑面板存活的运行时质检循环是为一次质检修复任务创建的临时运行时。重新打开文档时代码会查找文档关联的聊天再加载历史将这些信息恢复到新实例。Brief Writer Page Writer把“拟定页面设计方案”和“按方案写出完整 HTML”拆成两次专门的模型请求避免把大段所以它把主模型生成一个包含超长 HTML 参数的工具调用改成主模型发出简短的 plan_page 调用 → 工具代码再发普通文本生成请求 → 接收流式 JSON / HTMLJSON或者整页HTML放进工具调用参数里。