跳轉到主要內容

設定

每個 Kazzle 應用程式在專案根目錄都有一個 kazzle.config.ts。此檔案定義應用程式包含的內容 — 元件、技能和中繼資料。

快速開始

import { defineConfig } from './kazzle.types';

export default defineConfig({
  components: [
    { name: 'My App', type: 'ui', path: '.' }
  ]
});
defineConfig 輔助函式提供 TypeScript 自動完成和驗證。型別來自 kazzle.types.ts,它是自動生成的,並包含在每個範本中。

頂層欄位

欄位型別必需說明
iconstring應用程式圖示檔案相對於儲存庫根目錄的路徑 (png、jpg、svg、webp、ico)。發佈時上傳至 CDN。
componentsobject[]可執行元件 — UI 前端或背景程序
skillsobject[]AI 技能定義 — AI 讀取的 markdown 檔案以獲取領域知識
capabilitiesobject選用的桌面整合功能,例如快速鍵、通知和狀態列顯示

元件欄位

components[] 中的每個項目:
欄位型別必需說明
namestring應用程式內的唯一元件名稱
type"ui" | "process"元件型別 — ui (最多 1 個) 或 process
pathstring應用程式目錄內的進入路徑
runtimeobject命令:{ dev?, build?, run? }
runtime.devstring啟動開發伺服器的命令 (例如 "bun run dev")
runtime.buildstring為生產環境建置的命令 (例如 "vite build")
runtime.runstring在生產環境中啟動的命令 (例如 "bun run start")
schedulestring程序元件的 Cron 排程 (例如 "*/5 * * * *")
trigger"webhook" | "event"程序元件的觸發模式
envobject密碼集合 + 環境用於環境變數注入
env.collectionstring是 (如果有 env)密碼集合 slug
env.environmentstring是 (如果有 env)環境 slug
env.includestring[]僅注入這些環境變數名稱。如果省略,則注入集合+環境中的所有變數。

技能欄位

skills[] 中的每個項目:
欄位型別必需說明
namestring技能名稱
pathstringSKILL.md 檔案相對於應用程式根目錄的路徑

限制

  • 每個應用程式最多 1 個 UI 元件
  • 元件 name 值在應用程式內必須是唯一的

範本範例

ui 應用程式

import { defineConfig } from './kazzle.types';

export default defineConfig({
  /** 應用程式圖示相對於儲存庫根目錄的路徑。發佈時上傳至 CDN。 */
  icon: 'components/ui/public/favicon.svg',
  /** 應用程式元件 — 每個項目定義一個可部署單位。最多 1 個 UI 元件。 */
  components: [
    { name: 'My App', type: 'ui', path: './components/ui' },
  ],
});

程序應用程式

import { defineConfig } from './kazzle.types';

export default defineConfig({
  /** 應用程式圖示相對於儲存庫根目錄的路徑。發佈時上傳至 CDN。 */
  icon: 'icon.svg',
  /** 應用程式元件 — 每個項目定義一個可部署單位。 */
  components: [
    {
      name: 'My App',
      type: 'process',
      path: './components/process/index.ts',
      runtime: { dev: 'bun run dev', run: 'bun run start' },
      // 持久程序是長時間執行的伺服器。平台在每個觸發器的 `path` 處
      // 將觸發器發佈到執行中的伺服器,並使用
      // `Authorization: Bearer ${KAZZLE_TRIGGER_SECRET}`。客戶程式碼
      // 在執行工作前驗證標頭。
      processMode: 'persistent',
      triggers: [
        // 範例 cron — 取消註解並調整。5 欄位,分鐘解析度。
        // { name: 'hourly-sync', kind: 'schedule', schedule: '0 * * * *', path: '/cron/hourly-sync' },
        // 範例 webhook — POST 至 /webhooks/{spaceId}/{appId}/My App/incoming
        // { name: 'incoming', kind: 'webhook', path: '/webhook/incoming' },
      ],
    },
  ],
});

空應用程式

import { defineConfig } from './kazzle.types';

export default defineConfig({
  /** 應用程式圖示相對於儲存庫根目錄的路徑。發佈時上傳至 CDN。 */
  icon: 'icon.svg',
  /** 應用程式元件 — 每個項目定義一個可部署單位。 */
  components: [],
});