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

改个 Skill 文案也要重新发版?with_directory 让插件目录直接生效

「Regnexe Python 实战系列」第 5 篇(共 10 篇),对应仓库examples/readme/05_file_directory_loading.py。上一篇:04. 一个 Python 类,一次注册,搞定 2 个工具 + 1 个 Skill + 1 个 Sub-Agent。

一个真实的团队矛盾

开发同学通常喜欢把能力写进代码:类型明确、能测试、能 Review。

但运营或运维同学经常有另一个诉求:

“我只是想改一个 Skill 的提示词,或者加一个插件目录,能不能别重新发版?”

这两个诉求并不冲突。regnexe-py 用with_directory()支持文件系统目录加载,让一部分能力可以脱离 Python 类和发版流程。

目录长什么样

示例里临时创建了一个插件目录,大概结构是这样:

weather-plugin/ plugin.yaml SKILL.md

plugin.yaml负责声明工具能力:

plugin_id:weather-plugincapabilities:-capability_id:weather-plugin.get_weathertype:mcp_toolname:get_weatherdescription:"Get today's weather for a city"tags:[weather]

SKILL.md负责声明 Skill:

--- name: advisor plugin_id: weather-plugin capability_id: weather-plugin.advisor description: "Outdoor activity advisor..." tags: [weather] allowed_tools: [get_weather] --- You are an outdoor activity advisor. 1. Call get_weather for the city the user mentions. 2. Based on the result, give a short go/no-go recommendation.

实战代码

接入目录只需要一行:

agent=(RegnexeAgentBuilder().with_default_model(Vendor.DEEPSEEK,"deepseek-v4-flash").with_tool(get_weather).with_directory(str(plugin_dir)).with_event_listener(ConsoleEventListener()).build())

这里get_weather仍然由代码提供,目录里的plugin.yamlSKILL.md提供能力元数据和 Skill 内容。

Agent 构建时会扫描目录,把这些文件注册成 Marketplace 里的能力。对后续调用来说,它们和代码注册的能力没有区别。

适用场景

with_directory()特别适合:

  • Skill 提示词经常调整
  • 插件由运维目录管理
  • 不同部署环境启用不同能力
  • 不希望每次改 Markdown 都重新发版

但它不适合所有东西。核心业务工具仍然建议写在 Python 代码里,方便测试和类型检查;目录加载更适合描述型、配置型、提示词型能力。

小结

regnexe-py 没有强迫你在“代码插件”和“文件插件”之间二选一。一个应用里完全可以核心能力走@plugin,运营能力走with_directory()

关键是:不管来源是代码还是目录,最后都进入同一个 Marketplace。


📌 上一篇:04. 一个 Python 类,一次注册,搞定 2 个工具 + 1 个 Skill + 1 个 Sub-Agent | 下一篇:06. 能力市场换成数据库要改多少代码?regnexe-py 一个 Marketplace 搞定
📌 项目地址:https://github.com/flower-trees/regnexe-py

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

相关文章:

  • Casbin GORM Adapter 配置完全指南:自定义表结构与字段优化
  • 广州民办高中哪家好:排名前五专业测评 - 服务品牌热点
  • PHP性能优化终极指南:缓存策略与字节码加速全解析 | PHP The Right Way
  • 基于PIC18LF47K42与PAM8904的智能报警系统设计
  • 5个必备函数详解:UltraX如何通过keep/remove/replace操作净化数据?
  • UltraX在FineWeb数据集上的突破性表现:科学图表深度解读
  • 大模型推理优化与可解释性技术实战指南
  • Awesome-Prompt-Adapter-Learning-for-VLMs-CLIP中的5大创新方法:CoOp、CoCoOp、MaPLe深度解析
  • Awesome-Prompt-Adapter-Learning-for-VLMs-CLIP中的适配器学习技术:CLIP-Adapter与Tip-Adapter详解
  • Unity VFX Graph入门:从节点创建到Blackboard参数脚本驱动实战
  • 基于PaddleOCR的扫描文档智能识别与文本提取完整方案
  • NBM5100A与PIC18F86J11的电源管理优化方案
  • ncmdump解密网易云音乐NCM格式:三分钟实现音乐自由播放
  • 【Kali】从零到一:VMware虚拟机环境下的Kali Linux完整安装与初始化配置指南
  • Python AI智能体开发入门:从零构建对话系统
  • 如何在5分钟内上手unizip?从安装到测试的完整入门教程
  • 从零掌握缓冲区溢出:Vulnserver实战与漏洞利用原理详解
  • Korpora高级用法:批量处理与多数据集融合技巧
  • 7z解压大文件时C盘空间告急?剖析临时文件夹机制与三种应对策略
  • RedisFullCheck 源码解析:从 main.go 到核心检查器的实现原理
  • 如何使用ADCSKiller在5分钟内自动化发现Active Directory证书服务漏洞
  • 深层循环神经网络原理与实战优化技巧
  • 如何在Electron中集成Xel:打造原生体验的桌面应用
  • 西南地区适合社区开的零食折扣店 - 中媒介
  • 告别嵌套地狱:wr/write-pythonic-code-demos教你写出扁平优雅的Python代码
  • SmartCharts:革命性数据可视化平台,让大屏开发效率提升10倍的终极解决方案
  • C++装饰器模式实战:动态扩展对象功能的灵活设计
  • Unity集成罗技G29方向盘:从SDK接入到力反馈开发的完整实战指南
  • 地质AI在文物保护中的测试架构与实践
  • 从零到一:用C++手搓一个控制台飞机大战游戏