Skip to content

外掛

外掛

外掛用來增加動作。重點在於它不被允許成為什麼。

外掛實際上是什麼

動作外掛在 Jint——一個用 C# 寫的 JavaScript 直譯器——中執行,回傳一段 shell。它不執行工作,是 Walis 去跑它產生出來的那段 shell。

就是這一個限制讓外掛可讀:安裝之前,你看得到它究竟會往你的建置裡放什麼。對照 Jenkins,外掛在 controller 的 JVM 裡無沙箱執行,controller 做得到的事它都做得到。

能力

外掛只有 manifest 宣告過的能力:

  • 連外——只放行指定網域,其餘一律不通。
  • 機密——外掛可以要求把某個機密填進請求標頭(withSecret),但讀不到值

沒宣告的能力就是不存在,沒有任何預設權限。

資源上限

限制數值
逾時10 秒
記憶體8 MB
語句數50 萬
遞迴層數64

這些限制的是產生 snippet 的過程,不是產生出來的 shell 後續跑的建置。

AI 產生草稿

外掛頁可以依需求敘述產生外掛草稿。產生出來的東西一律權限清空、類型與版本強制寫死、絕不自動安裝——模型輸出跟陌生人貼進來的文字被一視同仁,因為它本來就是。

誰能安裝

/api/plugins 僅限管理員。安裝外掛等於在這台機器上加入一段會被執行的程式碼,所以不下放給 operator。

開發

介面上的開發指南分頁帶有目前的 host API。專案的 Docs/plugin-development.md 記錄威脅模型,@walisayu/plugin-sdk 提供型別、本機測試 harness、esbuild 打包與 walis-plugin CLI。

跳脫規則、參數預設值語意與網域比對必須與 host 完全一致——兩邊都有測試釘住,因為不一致正是沙箱逃逸的起點。

以 MIT 授權釋出。