63 lines
7.0 KiB
Markdown
63 lines
7.0 KiB
Markdown
# 子智能体调度接入
|
||
|
||
日期: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。当前用户窗口保留,未强制重启,新主进程重启后生效。保留工作区已有修改,未提交代码。
|