Files
ycode/docs/子智能体调度接入-2026-10-18.md

63 lines
7.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 子智能体调度接入
日期:2026-10-18。用户确认将“智能体团队管理”接为全部子智能体调用的总开关。以下为 YCode 本地实现和验收,不是 WorkBuddy 调度行为的 1:1 等价结论;本轮未采集 WorkBuddy。
## 开关与职责
- 开启时,主模型可以分派具有明确目标、范围和验收要求的任务;简单任务仍自行完成,不强制每轮创建子智能体。
- 关闭时,不向新的模型请求提供创建、补充指令工具,宿主也拒绝通过旧工具名创建或继续调度。当前运行和排队的子任务收到取消信号,主对话继续。可以收取已有状态及结果。
- 去掉页面中的“仅保存偏好”和“专家团队任务不受此设置影响”。单个专家仍是对话角色;所有实际创建本地子智能体的行为均受开关限制。
- 主智能体负责规划、分工、结果整合、验证及最终回复。子智能体是执行成员,其输出不构成新的用户授权。
## 运行方式
新增本地主进程调度器;OMP 与备用 HTTP 使用同一套宿主调度工具:
| 工具 | 行为 |
| --- | --- |
| spawn_agent | 创建并排队子任务,返回当前回合的子智能体 ID |
| list_agents | 查看当前主回合的状态与已完成结果 |
| wait_agent | 等待指定或全部子任务并收取结果,单次最多30秒 |
| send_agent_message | 补充指令;运行中排队,已完成时复用独立上下文继续 |
| cancel_agent | 取消一个子任务,不自动回滚已产生的修改 |
全进程最多并发5个子任务(用户后续要求由3个调整为5个),超出上限排队;每个主回合最多创建16个。每个子智能体最多接受8轮初始/补充指令,最多同时排队4条;每次执行默认10分钟超时。暂不提供嵌套调度或独立模型选择,继承父回合冻结的自定义模型、思考配置和权限上限。规划/问答模式不会开放调度工具。
子智能体只接收任务与明确提供的必要背景,不复制主对话历史。每个成员有独立的 OMP 实例及原生记录,或独立的 HTTP 历史;成员不能读取另一个主回合的调度状态。主模型准备结束时,如果仍有子任务或未收取结果,宿主先等待,再将候选结果送回主模型整合,不能直接将未完成的调度作为完成终态。
主任务结束、取消、删除或应用退出都会清理执行成员及其浏览器等资源。原生记录按父会话目录存放于 userData/subagent-sessions/,删除父会话时一并清理;应用重启不自动恢复运行中的子任务,历史恢复为已取消。
## 权限和文件修改
默认子任务只读。需要修改时必须指定 access=write 和1至32个明确的工作区内文件路径;拒绝目录、通配符和越界路径。读写限制同时应用于提供给模型的工具列表和宿主执行入口。
第一版子智能体可读取文件、加载/读取已有技能资源,并在声明范围内使用写文件工具。命令执行、浏览器、连接器和专家包修改由主智能体处理,不把难以约束写入范围的工具开放给成员。子智能体遇到需要用户决策时向主智能体报告。
文件范围被独占保留,阻止同名兄弟任务及主任务同时覆盖;主任务执行命令或连接器时也检查工作区内的写任务。默认权限下的子任务写入仍走现有审批,审批在主对话显示并标明成员名称;取消或关闭开关可取消尚未回答的审批。
取消后会等待已开始的本地文件操作结束,再释放文件占用,保留实际产生的 before/after 记录。主对话编辑/回退时合并主、子写入记录,并按完成顺序校验恢复,避免漏掉子任务的文件变更。
## 界面与用量
对话中显示每个子任务的名称、状态、耗时、模型和文件范围;运行中即可展开步骤、思考和工具输出,并可单独停止。结束后仍保留结果及事件记录。主回合结束事件在子任务清理及最终快照之后发布,序号保持递增,避免流式页面停留在生成状态。
上游实际报告的 token 按主智能体、子智能体、合计分别展示;这是请求累计,不能拿来当作当前上下文占用。未报告的用量不估算,不显示推算费用。成员事件最多80条,单项展示文本最多4,000字符,结果最多24,000字符,模型工具回传也有完整 JSON 大小预算;截取时标记,不截掉文件回退所需的数据。
## 并发传输修复
并发验收曾出现一次浏览器截图 OMP JSONL 解析异常。检查同时发现上下文观测扩展和 OMP 内核独立写同一 stdout,存在大帧被插入观测数据的竞争路径。现将观测计数改为独立的原子文件通道,由宿主监测并在请求结束前读取;stdout 保留给内核协议。只写计数和身份,不落盘模型请求正文;观测失败不阻断模型执行。
新增7项通道测试,覆盖不写 stdout、不保存正文、用量前读取、去重和停止观察。随后同时运行真实子智能体应用验收与60项浏览器回归通过。单次原始错误帧未完整保留,因此不据此声称已经验收所有高压并发场景。
## 验证与交付
后续并发上限由3改为5:更新后的核心29项通过,包含5个运行、第6个排队、跨主会话共用上限及5个运行实例的取消清理;完整构建通过,日志 .tmp/subagent-limit-5-build.log。此次未重跑真实应用专项,下方应用报告为初版3并发配置的验收记录。
- npm run test:subagents:29项通过,覆盖开关、宿主拒绝、跨回合与全局并发、文件边界和占用、父子取消、超时、补充指令、最终整合、回退及大结果预算。
- npm run test:subagents:app:27项通过,真实 Electron、preload/IPC、已安装 OMP、HTTP 工作成员和回环模型端点验证;检查流式展开、界面停止、终态序号、写入排空、审批、补充指令、用量、持久化与清理。报告 .tmp/subagent-app-3IxrIT/report.json,0 renderer 错误;已查看该目录的 agents-light.png 和 agents-dark.png。
- 智能体设置浅色/深色与开关保存11项通过,报告 .tmp/agents-settings-BrgdVb/report.json;已查看实际对话的浅色和深色子任务截图。
- npm run test:context-observer、npm run test:context-usage、npm run test:conversation、npm run test:conversation-ipc、npm run test:omp、npm run test:chat、npm run test:persistence、npm run test:custom-model-native 通过。
- 完整 npm run build 通过,日志 .tmp/subagent-build-final.log。浏览器最终并发60项通过,报告 .tmp/browser-automation-KOnj4K/report.json,日志 .tmp/browser-subagents-concurrent-final.log。变更文件的 git diff --check 通过。
所有模型端点均为本机回环测试服务,没有请求用户付费 API;原生运行使用本机实际安装的 OMP。当前用户窗口保留,未强制重启,新主进程重启后生效。保留工作区已有修改,未提交代码。