当前位置: 首页 > news >正文

子任务想换个便宜模型跑?Sub-Agent 这样设计

「Regnexe 实战系列」第 3 篇(共 10 篇),对应仓库ExampleReadme03SubAgentTest。上一篇:02. Skill:只能借工具不能占。

真实场景:主 Agent 用旗舰模型,子任务想省钱

很多团队做多 Agent 系统会遇到这个成本问题:主任务需要强模型做复杂推理,但拆出来的某个子任务——比如"估算一下这次出差大概花多少钱"——逻辑很简单,用旗舰模型纯属浪费。

理想情况是:主 Agent 用deepseek-v4-flash这种强模型,子任务用更便宜的模型单独跑,互不影响。

上一篇讲的 Skill 做不到这件事——它被设计成强制继承主模型。这篇要讲的Sub-Agent,规则正好反过来。

Sub-Agent 的核心规则:可以拥有,而不是只能借

SubAgentConfig.builder().model("aliyun:qwen-plus")// 自己的模型,跟主 Agent 完全独立.ownTools(List.of(myPrivateTool))// 私有工具,外面看不到.build();

对比一下两种类型的规则差异:

SkillSub-Agent
模型强制继承父 Agent自己的模型,或写"inherit"继承
工具只能借(allowedTools私有拥有(ownTools),外部不可见
适合跟主 Agent 紧耦合的轻量子流程需要隔离、需要独立模型的独立子任务

model字段默认值就是"inherit"——不配就跟 Skill 一样继承父模型;一旦写了具体值(比如"aliyun:qwen-plus"),就会走独立的ModelProvider分支单独构建一个模型实例。

实战代码

仓库里的ExampleReadme03SubAgentTest:一个expense_estimatorSub-Agent,自己的模型aliyun:qwen-plus,自己的私有工具estimate_trip_cost

// 私有工具:只在 SubAgent 内部执行器里可见,通过 ownTools 注入ToolestimateCostTool=Tool.builder().name("estimate_trip_cost").description("Estimates total cost for a multi-day business trip.").params("days: int -- trip length; city: String -- destination city").func(input->"3-day Chengdu trip estimate: flights 1800 CNY, hotel 1200 CNY, meals 600 CNY. Total: 3600 CNY.").build();SubAgentConfigexpenseEstimator=SubAgentConfig.builder().name("expense_estimator").description("Estimates the total cost of a business trip. "+"TRIGGER: Use when the user asks for a trip budget or cost estimate.").model("aliyun:qwen-plus")// 自己的模型,独立于主 Agent 的默认模型.systemPrompt(""" You are a travel expense estimator. 1. Call estimate_trip_cost with the trip length and destination. 2. Report the total and a one-line breakdown. """).ownTools(List.of(estimateCostTool)).build();RegnexeAgentagent=regnexeAgentBuilder.withDefaultModel(Vendor.ALIYUN,"deepseek-v4-flash")// 主 Agent 用的模型.withSubAgent(expenseEstimator).withEventListener(newConsoleEventListener()).withMaxRounds(3).build();AgentResultresult=agent.execute("What would a 3-day business trip to Chengdu cost?");

主 Agent 跑deepseek-v4-flashexpense_estimator内部跑aliyun:qwen-plus——两个模型互不干扰,各自配各自的。

关键点:ownTools 为什么外面看不到

estimate_trip_cost这个工具,从头到尾没有出现在withTool或者 marketplace 的任何注册调用里。它只存在于expenseEstimator.ownTools这一个地方。

这意味着:主 Agent 的 Planner 在 Search 阶段,候选列表里压根不会出现estimate_trip_cost,它没法直接调用这个工具——唯一的入口是先选中expense_estimator这个 Sub-Agent,工具才会在它内部的执行循环里被用上。

这是真正意义上的"私有"——不是权限控制,是从能力市场的可见性上就把它隔离掉了。适合那些你不想让外层 Agent 瞎调用、必须经过子任务封装好的逻辑统一处理的场景。

小结:Skill 还是 Sub-Agent,三秒判断

问自己一句话:这个子能力需要自己的模型,或者需要外部完全看不到的私有工具吗?

  • 要——用 Sub-Agent
  • 不要,就是想复用主 Agent 的模型省成本——用 Skill

两种类型不是谁更高级,是这套 harness 解决不同问题的工具。下一篇会讲怎么把这两种类型连同普通 tool 一起,用注解打包进一个类里,一次注册全搞定。


📌 上一篇:02. Skill:只能借工具不能占 | 下一篇:04. @Plugin 注解打包一切
📌 项目地址:https://github.com/flower-trees/regnexe-agent

http://www.gsyq.cn/news/1618070.html

相关文章:

  • 语音一键转文字超简单!2026多款免费软件详细步骤,新手一看就会
  • 开源视频生成模型选择
  • SpringBoot+Vue 私人西服定制_leabo管理平台源码【适合毕设/课设/学习】Java+MySQL
  • 用最新 GPT-5.6 润色论文是一种怎么样的体验?
  • 一张图讲清楚:Codex上下文
  • SPARK技术:5G/6G无线通信中的辐射模式压缩革命
  • 分布式系统到 AI 创业:架构师转型 CEO 的三个误区
  • 3个步骤深度解析RTL8821CU驱动:完全解决Linux无线网卡兼容性问题
  • Python 异步 检索增强:端到端延迟要按阶段拆开
  • 如何轻松实现跨平台输入法词库转换:深蓝词库转换工具完全指南
  • 2025了钉钉会议转任务还效率低?听脑真能一键解决吗?
  • AI 辅助:刷题系统:如何把题解生成变成可验证流程
  • 英语口语基础语法学习
  • CVPR 2026|AnyVisLoc:为真实低空无人机视觉定位建立统一基准
  • AI 辅助:前端框架反模式:过度封装、状态滥用与副作用失控
  • 【Springboot毕设全套源码+文档】基于springboot+协同过滤课程推荐的线上安全教育平的设计与实现(丰富项目+远程调试+讲解+定制)
  • STM32 printf 串口重定向代码完整解析
  • AI 效率工具产品化:从功能清单到 PMF 验证闭环
  • Vue3 全栈应用架构:组合式 API 不是把逻辑随便抽走
  • Go 并发编程:生产服务里 goroutine 要有退出路径
  • 机器人(狗)、AGV/AMR自动乘梯简易方案(技术解析与补充
  • 字节豆包AI编程助手扩展:深度解析其代码能力边界与实战表现
  • 极简架构设计:少一层抽象,少一类故障
  • 什么是数字工厂全要素智造中枢与适用于哪种企业
  • LeetCode 23.合并K个升序链表
  • Visa、Stripe等140余家机构联合推出Open USD稳定币,剑指Tether
  • HBM Predictor安装与配置教程:简单5步搭建预测环境
  • 年入100亿压缩机龙头IPO!1.66亿诉讼案未决,应收账款质量恶化
  • ChatGPT Plus / Pro 付款后没看到结果,先查这几步
  • 番茄小说下载器终极指南:三分钟打造个人离线图书馆的完整教程