Agent Desktop 小程序
NomiFun 的小程序是由 Agent 生成并托管在本机的单文件网页工具。它适合把一次性的 会话产物变成一个可以随时打开的本地应用:例如计时器、表单、计算器、项目面板或内部 工作流工具。
小程序的核心约束是:最终产物是一个自包含的 miniapp.html,CSS 与 JavaScript 写在
文件内部,需要第三方库时可以引用 CDN,不需要额外的构建步骤。
当前 v3 的会话模型已经回归统一:创建小程序和继续迭代都使用普通会话,不为每个小程序 绑定一条隐藏的长期会话。会话正常出现在会话列表中,删除会话也不会自动删除已经发布的 小程序。
从会话创建
- 在会话启动页打开创建小程序模式,也可以使用
/guid?miniapp=1。 - 描述你想要的工具,NomiFun 会创建一段普通会话,并要求 Agent 在会话工作区根目录
写入
miniapp.html。 - Agent 每轮完成后都应留下一个完整、可运行的 HTML 文档。右侧预览会在文件更新后显示 当前工作版本。
- 在预览面板点击发布为小程序,填写名称、描述和可选图标,发布后才会出现在
/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