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

Tool、Skill、Sub-Agent 散成一地?PluginDescriptor 一次打成业务插件

「Regnexe Python 实战系列」第 3 篇(共 10 篇),对应仓库examples/readme/03_plugin_packaging.py。上一篇:02. Skill 和 Sub-Agent 到底差在哪?一个借工具,一个有私有工具。

痛点:能力一多,就散成一地变量

前两篇里,我们已经有了 Tool、Skill、Sub-Agent。问题也随之出现:

get_weather estimate_trip_cost travel_advisor expense_estimator

这些能力如果一直散落在构建代码里,很快就会变成“看得见能跑,但没人敢改”的状态。

regnexe-py 的底层抽象是PluginDescriptor一个插件里可以装多个 CapabilityDescriptor,每个能力都有稳定 id

实战代码:一个插件打包三种能力

示例里的核心代码是这段:

trip_plugin=(PluginDescriptor.builder().plugin_id("trip-plugin").version("1.0").name("Trip Plugin").description("Bundles a tool, a skill, and a sub-agent for trip planning").tool(get_weather)# -> trip-plugin.get_weather.skill_config(travel_advisor)# -> trip-plugin.travel_advisor.sub_agent_config(expense_estimator)# -> trip-plugin.expense_estimator.build())

这段代码做了两件事:

  • 把三种不同能力统一包装成 CapabilityDescriptor
  • 自动生成完整能力 id:plugin_id.name

所以get_weather不再只是一个裸函数,而是trip-plugin.get_weather这个业务插件里的能力。

踩坑提醒:Skill 要写完整能力 id

示例里travel_advisor的工具列表是这样写的:

travel_advisor={"name":"travel_advisor","tools":["trip-plugin.get_weather"],}

这里必须是trip-plugin.get_weather,不是get_weather

原因很简单:Skill 借的是完整能力 id。插件化以后,同名工具可能来自不同插件,只写裸名称会失去边界。

怎么接进 Agent

手动构造好的PluginDescriptor可以直接交给with_plugin(...)

agent=(RegnexeAgentBuilder().with_default_model(Vendor.DEEPSEEK,"deepseek-v4-flash").with_plugin(trip_plugin).with_event_listener(ConsoleEventListener()).build())

这样第 3 篇只需要关心“怎么把能力打成一个插件”,不用提前理解 Marketplace。至于能力市场怎么替换、怎么接数据库,后面第 6 篇再单独展开。

小结

PluginDescriptor.builder()适合这些场景:

  • 能力定义来自数据库或配置中心,需要运行时拼装
  • 一个业务插件里混合 Tool、Skill、Sub-Agent
  • 你想手动控制插件 id、版本、名称和描述
  • 需要把能力从“代码变量”升级成“可管理资产”

一句话:PluginDescriptor 是 regnexe-py 能力体系的底层真相


📌 上一篇:02. Skill 和 Sub-Agent 到底差在哪?一个借工具,一个有私有工具 | 下一篇:04. 一个 Python 类,一次注册,搞定 2 个工具 + 1 个 Skill + 1 个 Sub-Agent
📌 项目地址:https://github.com/flower-trees/regnexe-py

http://www.jsqmd.com/news/1171525/

相关文章:

  • ATLAS200 NUP 模块SD卡制卡方法
  • CV智能涌现为何落后NLP?多模态数据与统一架构是关键
  • 执行一条 select 语句,期间发生了什么?
  • 仅限首批认证开发者获取:DeepSeek V3 专属Tokenizer训练套件(含中文法律/医疗/金融领域子词表)
  • 为什么选择openeuler/yocto-meta-virtualization?虚拟化层构建的核心优势解析
  • TEKLauncher:ARK生存进化MOD管理与服务器连接终极解决方案
  • 赛豆科技 AIVA 汽车智能体架构演进面试题与答案
  • 闲谈《道德经》014|夷希入微
  • R语言中1-Way ANOVA与ANCOVA选择指南:从混杂控制到交互诊断
  • C++实现人工势场法机器人路径规划:从原理到可视化仿真实战
  • AI Agent生产级开发实战:基于Hermes框架的工程化实践指南
  • StyleDrive:首个驾驶风格感知的端到端自动驾驶基准
  • Hive 4.2.0 实战:从建表到50道SQL题,3小时掌握核心查询技巧
  • 模板驱动型文档自动化:四维模型重构内容生产
  • 树莓派3音乐播放实战:从无声到稳定播放的完整指南
  • PyInstaller 5.13.2 资源文件打包:3种路径获取方法对比与临时目录解析
  • PyTorch CNN实战手记:从梯度爆炸到部署落地的硬核细节
  • 如何快速配置英雄联盟自动化工具:新手完整入门指南
  • UFT vs Selenium:图书管理系统自动化测试的5个关键决策点对比
  • Copilot PPT智能排版失效的7大陷阱(微软官方未公开的Prompt避坑指南)
  • 多维聚合中的数据操纵本质:维度关系重构与5类高危操作
  • 深耕高空作业装备领域,郑州小金牛新能源打造电动脚手架升降机一体化解决方案
  • STM32G071RB与TC78H653FTG的直流有刷电机控制方案
  • 基于AI的拳击视频智能剪辑:动作识别与自动高光生成技术解析
  • SAP PS 预算管理 3 种容差配置实战:90%告警与100%报错的关键区别
  • ISO 14644-21:2023 与 EU GMP 附录1对比:3个关键差异点与制药洁净室合规实践
  • 提示工程安全实践:防御LLM越狱与恶意提示注入
  • DyscheOS内核性能优化:提升操作系统效率的终极解决方案
  • 别被广告忽悠了!2026智能门锁安全实力TOP10出炉,五大维度拆解谁在真做安全
  • Claude 中转站团队协作方法:统一入口如何提升效率