開源 · BYOK · AGPL-3.0

一個人,也能帶一支團隊。

開源的 Agent 與 Bot 工作台。程式開發、科研、辦公與日常任務,裝好就能用,每一處都能改,模型由你來帶。

macOS · Linux · Docker 自行託管 · 從瀏覽器與手機連線

01 · Team

你說要什麼,它們去分工。You set the goal. They split the work.

主 Agent 先把任務拆開,再派給隊友:Worker 寫實作,調研 Agent 查資料,驗證 Agent 跑測試。每位成員都有自己的名字、頭像和對話,彼此直接傳訊息、交接程式碼,完成後向派工的人回報。你可以在協作面板裡看它們討論,也能隨時插話。

  • 成員並行推進,各有自己的對話
  • 彼此直接傳訊息,不必都經過你
  • 交接程式碼附差異,逐個檔案可查
  • 完成後向派工的人回報

02 · Four ways to work

四種做法,一個工作台。模式決定 Agent 手邊先放哪些工具、身邊有哪些隊友。

程式開發CODE

程式碼定位、開發執行與協作工具

讀程式碼、改程式碼、執行指令、開終端機。被修改的檔案按輪次留存,隨時可以還原。

Worker調研 Agent驗證 Agent
「把登入模組重構一下,測試全部通過再叫我。」

科研RESEARCH

調查問題、比較解釋,設計並推進實驗

檢索 OpenAlex 與 Semantic Scholar,閱讀論文與 PDF,把實驗一步步推進下去。

Worker調研 Agent科研夥伴
「找出近兩年這個方向的論文,做一張能篩選的比較表。」

辦公OFFICE

文件、資料、瀏覽器與電腦操作工具

Word、Excel、PowerPoint,以及瀏覽器和電腦上的應用程式,都能直接動手。

Worker調研 Agent
「把上個月的訂單匯出來,整理成附圖表的 Excel。」

通用GENERAL

均衡的基礎工具,按需要使用各類能力

查資料、寫東西、做一個能互動的小工具。日常的事,都接得住。

Worker調研 Agent
「比較這三款相機,做一張能調參數的比較圖。」

03 · Bots

養一個自己的 Bot。A bot of your own.

Bot 是長期在崗的 Agent。它有自己的名字、個性、模型和工作目錄,能同時推進好幾件事,也可以為它分配電腦桌面。它記住了什麼,你都看得到,也可以更正,或者讓它忘掉。讓它睡下,手上的工作就暫停;喚醒後,從原處繼續。

  • 專屬的名字、指示、模型與工作目錄
  • 多件工作並行推進
  • 記憶看得見,能更正,也能忘掉
  • 睡眠與喚醒,工作不遺失
名字小滿模型跟隨預設工作目錄~/bots/xiaoman
  • 每週相依套件巡檢進行中已暫停恢復中…
  • 整理論文筆記進行中已暫停恢復中…
  • 回覆審查意見等你確認已暫停恢復中…
週報用表格,不要長段落更正忘掉別直接推送 main 分支更正忘掉

04 · Harness

模型決定想多深,Harness 決定走多遠。The model thinks. The harness goes the distance.

中間是模型,圍繞它的每一格,都是 Varin 替它備好的:工具、上下文、執行、協作與復原。同一個模型放進來,能接住的工作更長、更複雜。

05 · Ready, and yours

開箱即用,也能改到底。Ready on day one. Yours all the way down.

開箱即用

填一組 Key 就能開始,其餘都已就緒。

個原生工具
近 80
種工作模式
4
個官方工作台
4
個內建語言伺服器
6
種原生模型協定
8
組佈景主題,深淺各一
21
種介面語言
10
種語言離線語音輸入
約 100

改到底

不寫程式碼,也能把每一處調成你的樣子。

  • 每個預設 Agent 都能換模型、改指示、調工具,也能自建 Agent
  • 標題、上下文整理、規劃、生圖、嵌入,各用各的模型
  • 系統指示與記憶可編輯
  • Skills 相容 .claude 與 .agents 目錄,可從 Git 儲存庫安裝
  • MCP 直接開放或按需探索
  • 權限依工具設定規則,重試規則自己寫

帶上你自己的模型。

金鑰只存在你自己的 Host 上,用量依管道和模型逐輪記錄。沒有中間商。

  • OpenAI Responses
  • OpenAI Chat
  • Anthropic
  • Gemini
  • Vertex AI
  • Azure OpenAI
  • Bedrock
  • Mistral
  • 阿里雲百鍊
  • 智譜
  • 階躍星辰
  • Ollama
  • LM Studio
  • 任意相容端點

06 · Extensions

連官方工作台,都是擴充功能寫的。Even our workbenches are extensions.

Agent、IDE、科研、Bot 四個工作台,以及瀏覽器、Office、電腦操作、語言伺服器,都登記在同一個擴充功能目錄裡,用的是你手上的同一套契約。每一個都能停用,工作台還能整套替換。

一個擴充功能長什麼樣

把滑鼠移到左邊的項目上,右邊會標出清單裡對應的部分。

examples/extensions/agent-authored-panel/
varin.extension.json

一份契約。探索、啟用、權限審查和工具 schema 都讀它,不執行程式碼就能被找到。

身分入口服務與工具介面貢獻
package.json

一般的 npm 中繼資料,版本與清單一致,可宣告建置入口。

host.js

Host 端:工具、模型協定、上下文演算法、Agent 策略。這裡以 Brokered 方式在獨立子行程中執行。

surface.cjs

介面端:面板、編輯器,乃至整套工作台。可以純宣告,也可以託管執行,或放進隔離的 iframe、Worker。

panel.css · panel.svg

資源檔。圖示、樣式,或隨套件散布的可執行檔,都在不可變的套件內解析。

{
  "schemaVersion": 1,
  "id": "example.agent-authored-panel",
  "version": "1.0.0",
  "engines": { "varin": "*" },
  "entrypoints": {
    "host": { "file": "host.js", "mode": "brokered",
              "activation": ["service-request"] },
    "surfaces": [{ "id": "panel", "file": "surface.cjs", "mode": "managed",
      "supports": ["web", "desktop"], "activation": ["application-startup"] }]
  },
  "provides": { "services": [{
    "id": "example.agent-authored-panel.count", "version": 1,
    "tool": { "name": "authored_text_count", "completion": "result",
              "operation": "read", "inputSchema": { … } }
  }] },
  "contributions": [{
    "id": "example.agent-authored-panel.summary", "kind": "panel",
    "entrypoint": "panel", "supports": ["web", "desktop"],
    "placement": { "slot": "workbench.secondary.after", "order": 20 }
  }]
}
import { defineHostExtension, provideTool } from '@varin/extension-sdk';
import manifest from './varin.extension.json' with { type: 'json' };
 
export default defineHostExtension({
  activate(context) {
    // 使用清單裡宣告的同一個服務:探索和啟用讀的是同一份描述
    provideTool(context, manifest.provides.services[0], async (input, call) => {
      // 在新工具裡呼叫內建工具,原回執完整保留
      const memory = await call.tools.invoke({
        callId: 'memory', name: 'memory', arguments: input.memory,
      });
      return { memory };
    });
  },
});

清單節錄自 examples/extensions/agent-authored-panel,已省略較長的 schema;host.ts 簡化自 nested-tools。

三層各司其職,能接的地方很多

介面不持有特權,特權工作留在可信的一側。

介面端SURFACE

只拿到有型別的回呼和掛載點。換外殼、換編輯器,也換不到額外的權限。

宣告式託管隔離 iframe / Worker原生

應用 HostAPPLICATION HOST

工具、語言伺服器、除錯和測試在這裡執行。Brokered 擴充功能有自己的行程和生命週期,出了問題只回收它自己。

Brokered 子行程原生

Rust 執行環境RUNTIME

為每次呼叫固定所用的實作;憑證、模型請求、執行紀錄和復原都留在這裡。

工具目錄模型配接器組合登錄

介面貢獻16 種

整套工作台切換轉場檢視編輯器面板側欄頁面設定頁指令快捷鍵選單項目輸入框動作狀態列對話標記訊息呈現工具呈現

Agent 契約附版本

工具varin.models@1varin.context.fragments@1varin.context.budget@1varin.context.compaction@1varin.retrieval.plan@1varin.agent.policy@4執行活動觀察

工作區由 Host 執行

語言支援除錯配接測試

為什麼這樣設計

擴充功能再多,工作台也要穩、要可控。

一份清單就是契約

探索、啟用、審查讀的都是同一份 varin.extension.json。還沒執行任何一行程式碼,擴充功能就能被找到、顯示和檢查。

申請不等於授權

權限依版本、依執行層逐項審核。同一個擴充功能升級,不會順帶繼承新權限;撤銷權限立即生效。

先暫存,再一起發布

一次更新裡的貢獻、服務和狀態一起生效。失敗就停留在上一版,不會只裝上一半。

更新不中斷工作

正在執行的呼叫固定在原本的實作上,直到完成;之後的呼叫才使用新版本。

出錯有邊界

Brokered 擴充功能在獨立子行程中執行,出錯只回收它自己。選定的工作台無法啟動時,還有復原外殼接手。

Agent 能寫,不能自己核准

Agent 可以讀契約、寫擴充功能、打包安裝,但首次安裝一律停用,等你審查後再啟用。

SDKCLI:init · check · build · test7 種專案範本16 個範例一致性測試套件SDK 正式發布前,請從儲存庫安裝。擴充功能開發指南 →瀏覽範例 →

07 · Control

放手,不失控。

被修改的檔案按輪次排成時間軸,一鍵還原,還原本身也能撤銷;你手動改過的檔案不會被覆寫。結果不明的操作,不會偷偷再做一次。

08 · Anywhere

在哪都能接上。

桌面、瀏覽器、手機連著同一個 Varin。掃碼配對;不在同一個網路時,透過端對端加密的中繼連線,中繼看不到你的內容。

Open source · AGPL-3.0

開源,歸你。

程式碼、資料、模型和擴充功能,都在你自己手裡。