Varin

模型之外的一切都已備妥,開箱即用,也能深度自訂。

v0.9.32WindowsmacOSLinuxDocker 自行託管

01 · Harness

同一個模型,在 Varin 裡走得更遠。

中間是模型,周圍每一格都是 Varin 為它準備的:工具、上下文、執行、協作與復原。同一個模型放進來,能完成更長、更複雜的任務。

    • 長輸出也好讀依結構裁剪,原文隨時翻頁
    • 背景預整理提前整理上下文,對話不中斷
    • 精確計數本機分詞計算 token,依實際用量校準
    • 記憶記住的內容可查看、可修改
    • 工具按需常用工具常駐,其餘按需載入
    • 上下文自整理自動寫摘要,保留關鍵原文
    • MCP 雙模式直接開放,或按需探索
    • 隔離副本子 Agent 在自己的副本裡改程式碼
    • 團隊協作分配、對話、交接、回報
    • 模型負責思考,可自由選擇
    • 持久執行每一步都有紀錄,重啟後從中斷處繼續
    • 提問不阻塞等你回覆時,其他工作照常進行
    • 多模型並行同一任務交給多個模型分別執行
    • 目標與接續目標附預算,條件滿足時自動繼續
    • 不重複執行結果不明時先停下核對
    • 自動重試依退避策略重試,規則可自訂
    • 腳本編排一段腳本呼叫多個工具,呼叫樹可查
    • 檔案時間軸按輪次還原,還原也能撤銷
    • 權限規則依工具允許、詢問或拒絕

02 · Ready, and yours

預設就好用,也能深度自訂。

開箱即用

填上 API Key 就能開始,其餘都已就緒。

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

深度自訂

不寫程式碼,也能依自己的習慣調整各個環節。

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

用你自己的 API Key。

金鑰只存在你自己的 Host 上,請求直接送往你設定的服務商,用量依管道和模型逐輪記錄。

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

03 · 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
「比較這三款相機,做一張能調參數的比較圖。」

04 · Team

一個任務,幾位 Agent 分頭做。

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

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

05 · Bots

長期在崗的 Bot。

Bot 有自己的名字、個性、模型和工作目錄,能同時推進好幾件事,也可以為它分配電腦桌面。它記住的內容你都看得到,可以更正,也可以讓它忘掉。讓它睡眠,手上的工作會暫停;喚醒後從原處繼續。

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

06 · 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

從第一個任務開始。

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