创作与小程序

Agent Desktop 小程序

NomiFun 的小程序是由 Agent 生成并托管在本机的单文件网页工具。它适合把一次性的 会话产物变成一个可以随时打开的本地应用:例如计时器、表单、计算器、项目面板或内部 工作流工具。

小程序的核心约束是:最终产物是一个自包含的 miniapp.html,CSS 与 JavaScript 写在 文件内部,需要第三方库时可以引用 CDN,不需要额外的构建步骤。

当前 v3 的会话模型已经回归统一:创建小程序和继续迭代都使用普通会话,不为每个小程序 绑定一条隐藏的长期会话。会话正常出现在会话列表中,删除会话也不会自动删除已经发布的 小程序。

从会话创建

  1. 在会话启动页打开创建小程序模式,也可以使用 /guid?miniapp=1
  2. 描述你想要的工具,NomiFun 会创建一段普通会话,并要求 Agent 在会话工作区根目录 写入 miniapp.html
  3. Agent 每轮完成后都应留下一个完整、可运行的 HTML 文档。右侧预览会在文件更新后显示 当前工作版本。
  4. 在预览面板点击发布为小程序,填写名称、描述和可选图标,发布后才会出现在 /mini-apps 库中。

创建过程中的文件是工作副本,还没有进入小程序库;如果不满意,可以继续在原会话中 修改,不会产生一堆未命名的小程序记录。

已发布版本与继续迭代

小程序库保存的是一个明确发布的快照。打开 /mini-apps 后,可以进入 /mini-apps/:id 运行,也可以从卡片或运行页选择继续迭代

继续迭代时,NomiFun 会先为该小程序准备工作副本:

{工作目录}/miniapps/{miniapp_id}/miniapp.html

随后创建一段新的普通会话,并把源码文件的绝对路径写入首条消息。Agent 会先完整读取 文件,再只修改这个文件。这样既保留了普通会话的搜索、历史和删除语义,也让小程序 源码与创建它的会话解耦。

迭代中的改动不会自动上线。库页和运行页会显示有未发布改动,确认无误后点击 发布,工作副本才会替换正在运行的版本。发布时可以:

  • 发布为新的小程序;
  • 替换一个已有小程序;
  • 在详情页继续使用已经发布的版本。

导入已有网页

在小程序库中可以使用导入

  • 桌面应用支持选择单个 HTML 文件,或选择包含 index.html 的文件夹;
  • WebUI 浏览器模式支持上传单个 HTML 文件;
  • 导入前会检查文档是否为空、是否为 HTML、大小是否超过 4 MiB,以及是否引用了无法 随单文件提供的本地文件;
  • 缺少 html / body 外壳等问题可以在导入时自动修复;
  • 严重问题无法直接导入时,可以选择用会话改造,让 NomiFun 把它重写成自包含单文件, 然后从预览发布。

外部 CDN 资源允许使用,但离线或 CDN 不可达时应用可能降级。关键的 CSS、JavaScript 和小图片最好直接内联到文件中。

沙箱与数据边界

小程序在沙箱 iframe 中运行,使用不透明 origin,避免生成的脚本直接获得桌面页面的 Cookie、存储和宿主权限。由于这个安全边界,localStorage 等浏览器存储 API 可能抛错 或只在当前运行期间有效;读写必须放在 try/catch 中,核心功能不能依赖持久化存储。

发布的 HTML 和小程序工作副本都由 NomiFun Desktop 管理,默认留在本机。若小程序主动 请求外部 CDN、API 或模型服务,数据是否外发取决于它的代码以及你配置的网络服务;这 不改变 NomiFun 默认本地优先的安全取舍。

相关入口

完整实现与变更记录 → NomiFun Desktop GitHub