Extension SDK
Extension 是在自己的后台进程里运行的代码。Cowork 加载它的入口文件,并调用一次 activate(api)。Extension 能做的一切都通过这个 api 对象,以及 Cowork 交给它所注册内容的 ctx 对象完成。本章列出每个模块和函数。
发布状态
标有 尚未发布 的函数已在 Cowork 源码里,但还没有进入已发布的版本。
模块
| 模块 | 函数 | 需要 |
|---|---|---|
| 入口与注册 | activate(api) · api.registerConnector · api.registerService · api.log | — |
| Connector | start(ctx) · stop() · send(reply) · ctx.emit · ctx.log | —(0.1.41 中:列在 connectors 里) |
| 后台任务 | run(ctx) · ctx.status · ctx.log · ctx.readJson · ctx.writeJson · ctx.env · ctx.dataDir · ctx.signal | 能力 service |
| 站点请求 | ctx.site.request · ctx.site.session | service + sites |
| 服务对话 | ctx.agent.handoff | service + agent |
| 浏览器 | ctx.browser.adoptTab · releaseTab · evaluate · inject · uninject · captureAudio · stopAudio · onEvent | 能力 browser(声音需要 audio) |
package.json
这个示例用了尚未发布的 service 和 sites,在 0.1.41 上会被拒绝安装。
json
{
"name": "janeapp-operator",
"version": "0.1.0",
"pi": { "extensions": ["./index.mjs"] },
"dozin": {
"capabilities": ["service"],
"sites": [{ "host": "welladjustedhk.janeapp.com", "methods": ["GET"], "pathPrefixes": ["/admin/api/v2/"], "minIntervalMs": 1000 }]
}
}| 字段 | 说明 |
|---|---|
name | 小写字母、数字和连字符;与文件夹名相同 |
version | 设置 › 扩展 里显示的版本。0.1.41 中必填;从下一个版本起默认为 0.0.0 |
pi.extensions | 只能有一个入口文件。0.1.41 中必填。尚未发布:可以不写,这时用 main,再否则用 index.mjs、index.js、index.ts 中第一个存在的 |
dozin.connectors | 它注册的 Connector 的 ID。列出后,只有这些 id 能注册。在 0.1.41 中,只有列在这里的 id 才能注册 Connector |
dozin.capabilities | browser、audio(需要 browser)、platform-gate-v1,以及 service 尚未发布 |
dozin.origins | 有 browser 时:它能用的 1 到 20 个确切网站(https://example.com)。0.1.41 中有 browser 就必填;从下一个版本起可以不写,这时允许任何 http(s) 网站,但仍然只能在用户交出的标签页里使用 |
dozin.platforms | darwin-arm64、darwin-x64、win32-x64;capabilities 里必须恰好有一个 platform-gate-v1 |
dozin.secrets 尚未发布 | 有 service 时:最多 8 个由用户填写的值,{ env, label };env 须匹配 ^[A-Z][A-Z0-9_]{0,63}$ |
dozin.sites 尚未发布 | 有 service 时:最多 8 个供 ctx.site 使用的站点,{ host, methods, pathPrefixes, minIntervalMs } |
dozin.agent 尚未发布 | 有 service 时:服务对话的 { brief, model?, tools?, secret? } |
类型名在 Cowork 和 Dozin 里都是 DozinAPI,所以同一个 Extension 不用改就能装在任意一个里。
适用于所有模块的规则
- 用户在 设置 › 扩展 里批准这些确切的文件之前,什么都不会运行。改一个文件就要重新批准。
- 一个包最多 200 个文件、5 MB;不安装
dependencies。 - Extension 不能读取 cookie、token 或其他扩展的数据。
相关
- Extension Extension 是什么,怎么上线
- Mini App SDK 同一个包里的 Mini App 可以调用什么
- 扩展 安装、批准和打开开关