入口與註冊
activate(api)
你的入口檔案匯出的函式。Cowork 每次啟動 Extension 的程序時呼叫它一次。
js
export function activate(api) {
api.registerService({ id: 'sync', start: 'auto', async run(ctx) { /* ... */ } });
return () => { /* optional cleanup */ };
}參數
| 名稱 | 類型 | 說明 |
|---|---|---|
api | DozinAPI | 下面的註冊函式 |
回傳值
不回傳、回傳一個清理函式(可以是 async),或回傳兩者之一的 promise。清理函式在程序停止時執行,多次呼叫必須安全。
限制
activate有 5 秒時間。定時器和連線放在 Connector 的start或任務的run裡啟動,不要放在這裡。- 如果它拋出錯誤或逾時,Extension 會在 設定 › 擴充功能 裡顯示為失敗。
api.registerConnector(definition)
註冊一個 Connector:在外部渠道和 Cowork 的 Gateway 之間傳遞訊息的那一部分。
參數
| 名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
definition | ConnectorDefinition | 是 | 見 Connector |
回傳值
不回傳任何值。
拋出
| 錯誤 | 時機 |
|---|---|
TypeError | 缺少 start、stop 或 send;id 不是小寫字母、數字和連字元;systemPrompt 超過 4000 個字元;chat 無效 |
CapabilityDeniedError | 在 activate 回傳後才呼叫;dozin.connectors 列出了 id,而這個 id 不在其中;同一個 id 註冊兩次;未提供 dozin.connectors 時註冊超過 16 個 Connector |
在 0.1.41 中,id 必須列在 dozin.connectors 裡(清單為空時所有 Connector 都會被拒絕),而且還沒有 systemPrompt 和 chat。
示例
js
api.registerConnector({ id: 'demo', start(ctx) {}, stop() {}, async send() { return { ok: true }; } });api.registerService(definition) 尚未發布
註冊一個背景任務。它顯示在 設定 › 擴充功能 裡該 Extension 的下方,使用者(或有 local_service 的 AI)可以在那裡啟動和停止它。
參數
| 名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
definition | ServiceDefinition | 是 | 見 背景任務 |
回傳值
不回傳任何值。
拋出
| 錯誤 | 時機 |
|---|---|
TypeError | 沒有 run 函式,或定義裡的某個欄位無效(錯誤訊息會指出是哪個) |
CapabilityDeniedError | 在 activate 回傳後才呼叫;service 不在 dozin.capabilities 裡;同一個 id 註冊兩次;超過 8 個任務 |
示例
js
api.registerService({ id: 'sync', name: 'Sync', start: 'auto', async run(ctx) { /* ... */ } });api.log(text)
在 Extension 的日誌寫一行;使用者可以從 設定 › 擴充功能 開啟這份日誌。
| 名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
text | string | 是 | 這一行內容 |
不回傳任何值。
js
api.log('activated');