使用扩展

August 31, 2026 · View on GitHub

工具、适配器、Preset、MCP 接入和产品 UI Slot 都属于同一 Extension 体系。当前公开产品优先支持本地动态创造闭环,尚未开放社区市场。

动态创造流程

  1. 为目标智能体开启动态创造权限;
  2. 在该智能体的频道里,用日常语言描述需要的新工具或界面;
  3. 频道中出现扩展开发任务后,打开创造工作台查看当前候选、运行阶段和真实预览;
  4. 普通智能体第一次运行含界面的候选时,在任务画布内确认风险;同一任务的后续候选没有扩大页面、权限或资源风险时会自动继续。审批策略设为完全自动的智能体始终自动运行;
  5. Host、Client、工具调用、页面声明和权限全部验证成功后,任务进入可保存状态。失败会显示准确阶段和错误,并把结果交回原智能体自动修复,不需要再发送“继续”;
  6. 可以把当前候选保存成新扩展,也可以给 scope 相同的现有扩展增加不可变修订;
  7. 工具或智能体界面在扩展详情为指定智能体启用;Adapter 与专属页面安装到本机。

动态运行、保存扩展版本、给智能体启用和把 Adapter 安装到本机是独立提交点。试跑成功不等于已经保存,保存也不等于已经启用或安装。

候选通过运行验证后,智能体还会收到一次 Host 结果并完成收尾。创造工作台在智能体回到空闲前显示“正在核对结果”,不会开放保存;Server 保存入口也会等待该任务的自动续跑静止,再重新核对用户选择的精确候选。收尾期间如果智能体追加了新候选,旧候选保存请求会被拒绝,不能把已过时的页面悄悄写成本地扩展。

每个开发任务和候选都写入本机持久账本,源码位于该智能体的 workspaces/<agentId>/authoring/。Host 重启会从精确候选源码恢复仍在进行的任务;无法恢复的任务明确标记为中断。停止任务会先静止当前 Runtime,删除任务会把源码原子移入受管回收目录后再删除账本,任一步失败都不会留下“界面已删、运行或源码仍失控”的半完成状态。保存使用任务和候选身份,不再由页面猜测当前 Episode 里的某个 Package。

任务摘要中的当前候选始终指向最后一次 Attempt;它通过验证后可以同时成为当前运行版本,因此 candidateAttemptactiveAttempt 可以是同一身份。含界面的候选在浏览器刷新后会从 Host 的精确 active Run 重新加载源码和页面,不重复启动 Host 或审批。页面 CSS 作为候选资源统一预检,动态预览由 Host 自动注入到隔离根,保存时自动接入 Revision 的 Client 构建;用户不需要在动态源码中编写构建期 import。

Adapter Revision 只包含一个稳定平台 key,不能和智能体工具、RPC 或智能体界面混装。安装后平台进入“添加连接”目录;更新和回滚都显式选择 Revision。卸载会停止该平台收发并移除富消息渲染器,但保留连接、凭据引用、频道和历史;重新安装相同 key 后自动恢复。

专属页面 Revision 使用 host-ui scope。动态预览在创造工作台内运行,不会提前占用侧栏;保存后仍处于未安装状态。用户在扩展详情查看页面入口、对象列模式和整组权限,批准并安装后,入口才进入侧栏。页面可以使用声明式对象列或全宽主画布,不能替换系统图标轨、系统对象列、页头、Composer 或会话画布。“扩展 → 页面入口”统一管理全部 Extension 与 DSH 页面,可调整 Host 共享的显隐和跨扩展顺序。

专属页面必须使用 NekroNXT UI Kit 和语义 Token。Host 统一提供页面背景、安全边距、根滚动和对象列,扩展从透明内容区开始组织当前视图,不自行复制页面外壳。动态 Client 声明 inject: ['pages', 'ui'],从 ctx.ui 取得页头、区块、按钮、字段、状态、反馈和表格组件;浏览器会对真实预览采集组件、页面边距、内容轴、标题和溢出证据。裸按钮、输入框、选择器、文本域、表格、标题重复或页面几何不合格会让候选验证失败,不能进入可保存状态。明暗主题、桌面端紧凑密度和相邻宿主页面的层级一致性属于功能验收的一部分。

页面权限绑定所选 Revision 的精确内容摘要。普通读取、高敏消息/资源读取、非破坏性产品写入和网络 origin 会在安装前完整展示;升级增加权限时,现有 Revision 保持运行,直到用户批准新权限。页面不能删除产品对象、卸载扩展、读取 Credential 明文、访问 SQLite 或宿主路径。扩展状态使用 owner 隔离的受管命名空间;网络请求由 Server 校验获准 origin 和实际公网地址。

本地扩展详情可以选择任意修订,内容、验证记录和导出对象都跟随该选择。单个修订可导出为 .nxt-extension 分享包;导入支持文件选择和拖放,预检身份、scope、摘要、文件清单和压缩包安全,并在本机重新构建;导入结果默认未启用。同一身份和摘要重复导入是幂等操作,同一身份对应不同内容时拒绝覆盖。扩展详情底部的“删除本地扩展”会关闭全部智能体启用关系或卸载 Adapter,然后把源码移入受管回收目录并删除扩展、修订、验证和诊断;任一步失败都会恢复原状态。

安全边界

动态创造本身不授予开发 Shell、文件读写或完整文件访问。Adapter 动态验证使用无网络 Fake Host/HTTP/WebSocket,证明 Host 契约成立,不代表真实平台已经验收。Adapter 仍在 Server 进程内运行,当前安装来源应视为受信任本地代码。

DSH 兼容

NekroNXT 优先通过 DSH 公开 Plugin、Service、Tool、Provider、Settings、Scope、Bundle 和 Preset 接缝运行能力插件。产品元数据和中文界面只增强体验,不应成为加载 DSH 能力的前提。

“设置 → DSH 扩展”支持检查并安装精确 npm 版本、npm tgz 和 DSH .nxt-extension。依赖安装默认禁用脚本;只有检测到被阻止的构建依赖时才逐项请求批准。插件安装后处于关闭状态,普通入口由用户选择本机或指定智能体作用域,Bundle 的每个入口独立选择。关闭、配置更新、冷启动恢复和移除均由 DSH Loader 执行,并以官方 Inventory 的真实状态作为结果。

插件 Config 优先使用可序列化 Schema 表单;没有 Schema 时提供高级 JSON。含 secretcredential-ref 的 Config 不兼容这条持久化路径,插件应改用 DSH Settings/Credentials。DSH 原生 WebUI 不在当前产品中加载;检测到 Client UI 时显示说明,不影响 Host 能力。DSH 包只有显式声明 nekroNxt.hostUi,并且对应 Host 入口成功启用和完成权限批准后,才发布 NXT 页面;浏览器 Client 故障形成页面诊断,不撤销已经生效的 DSH Host 能力。已安装 DSH 插件可以导出分享包,目标机器按锁摘要联网重装依赖,不携带 node_modules 或跨平台原生构建产物。