用途:为 NVIDIA OO 智能体提供三级自我扩展能力,从临时到持久。
主要能力:
- 单元格内辅助函数:在 CodeAct 单元格顶部用普通 def 定义确定性逻辑,仅作为 REPL 局部变量存活于本次方法调用,不会附加到智能体(附加可调用对象到 self 会被校验器拒绝)。
- 独立子调用:用 @strategy(PredictStrategy()) 装饰的 async 函数(nooa.standalone),无 self,每次调用运行在全新智能体桩上,无共享状态、调用后丢弃历史;可在模块代码中使用,是获得 LLM 函数的最轻方式。
- 持久库:SkillWriting(nooa.tools.library_writing_lib)提供受管理的 libs/ 目录,存放真实 Python 包,需 shell 技能(requires = ("nemo.shell",))。生命周期:self.libs.create("stats", "Statistical utilities.") 脚手架;self.shell.write(self.libs.path("stats", "stats.py"), source) 写码;self.libs.reload("stats") 校验并热重载;self.shell.edit(...) 编辑后再 reload;self.libs.run_tests("stats") 跑 pytest;self.libs.list() 与 self.libs.repo_tree() 发现。
技能契约:每个库的 init.py 导出 Skill 子类,注册表自动附加为 self.<lib_name>;无则回退 Skill(module)。重载时 LintReport:E001(禁用内置)与 E003(星号导入)阻断写入,E002 警告未允许导入。库代码为普通 Python,无 self、无 ... 体、无 async 要求。附加通过 SkillRegistry.discover_libs(path) + activate(["local.*"]),或 LibraryManager.install(agent, libs_dir=...)。
LibraryManager(nooa.library_manager)可低层直接使用:install 扫描含 pyproject.toml 的子目录并附加为 agent.<lib_name>;mgr.reload() 热重载全部;discover(path) 仅列出。模块仅作为属性附加,不注入 exec_globals。
斜杠命令:技能可提供 /commands(nooa.slash_dispatch),用 @slash_command("check", argument_hint="<target>", completions=("deps","lint","tests")) 定义,返回值成为用户消息(是给智能体的提示,非展示输出);completions 支持补全,user_only=True 阻止 LLM 调用。技能激活或热重载时自动发现命令。
限制与注意:create() 需有意义的描述(成为包 docstring);应在编排器而非仅提示中强制先 run_tests();一次性逻辑用内联代码,库会永久存在并污染 doc(self);热重载替换模块对象,旧 REPL 局部引用仍指向旧代码,需通过 self.<lib> 重新获取;reload 后应重读 doc(self.<lib>)。相关技能:nooa-tools-and-skills、nooa-codeact-advanced、nooa-agent-authoring。