让你的想法,
有一个自己的入口。
熟悉的前端技术,加上一条通往 macOS 底座的连接。
认识 Trove
Trove 是 macOS 上的 Host。Curio 是由 Host 安装、管理和运行的工具。UI 通过 Web Plugin SDK 发起调用,Host 负责身份、权限和消息路由。SDK 不要求使用特定的 UI 框架。
下面的流程适用于已经取得 Trove 开发版的作者。公开安装包尚未发布,发布状态见下载页。
开始开发
- 启动 Trove,在「开发」页面检查并安装 CLI 命令。正式版使用
trove,开发版使用trove-dev,可以并存。 - 在准备存放项目的父目录执行初始化命令。向导会始终创建一个新的项目文件夹,插件 ID 默认跟随你输入的名称。
- 选择 Web 或静态模板;Web 模板会询问包管理器,并可安装依赖。
trove curio init
# 进入刚刚创建的文件夹
cd my-curio
trove curio dev如果使用的是 Trove 开发版,将上述 trove 替换为 trove-dev。Web 工程需要 Node.js 与所选包管理器;静态模板不需要前端构建步骤。
四个核心命令
| 命令 | 负责什么 |
|---|---|
trove curio init | 交互式创建目录、清单与示例代码。 |
trove curio check | 检查项目配置、声明和开发所需依赖。 |
trove curio dev | 连接 Host,启动当前插件的开发会话。 |
trove curio pack | 构建并校验发布内容,生成 .curio 安装包。 |
在不同插件目录的终端分别运行 dev,即可同时开发多个插件。具体参数可通过 trove curio <命令> --help 查看。
连接 SDK
初始化模板已配置 @trove/plugin-sdk。导入客户端,等待连接就绪,再按“服务 ID、方法名、参数”发起调用:
import { trove } from "@trove/plugin-sdk"
await trove.ready()
const response = await trove.call(
"host.runtime",
"echo",
{ message: "Hello, Trove." },
{ timeoutMs: 5_000 },
)
console.log(response)这个示例会收到 Host 原样返回的消息。直接在普通浏览器打开页面时,没有 Host 注入的桥接连接;请通过 trove curio dev 在 Trove 中运行。
调用能力
通过 Host 存储服务写入、读取并清理一段数据。示例使用独立 key,避免覆盖插件已有内容。
await trove.ready()
const storage = trove.service("host.storage")
const key = `demo.${crypto.randomUUID()}`
await storage.call("set", { key, value: "My idea" })
try {
const result = await storage.call("get", { key })
console.log(result)
} finally {
await storage.call("delete", { key })
}在 curio.json 中声明所需服务与能力。不要将临时授权或开发状态当作发布环境的默认条件;敏感系统能力还受 macOS 权限管理。
打包与分发
trove curio check
trove curio packpack 依据项目构建配置生成并验证产物,剥离开发配置,按文件清单打包。包含原生后端时,需要适用于目标平台的自包含可执行文件;Host 不捆绑 Node.js 或 Python 运行时。
软件源以 index.json 描述插件版本和平台产物,包含下载 URL、大小及 SHA-256。发布时先上传安装包,再发布索引,保证用户看到的版本可以下载。