程式開發CODE
程式碼定位、開發執行與協作工具
讀程式碼、改程式碼、執行指令、開終端機。被修改的檔案按輪次留存,隨時可以還原。
「把登入模組重構一下,測試全部通過再叫我。」
開源 · BYOK · AGPL-3.0
開源的 Agent 與 Bot 工作台。程式開發、科研、辦公與日常任務,裝好就能用,每一處都能改,模型由你來帶。
macOS · Linux · Docker 自行託管 · 從瀏覽器與手機連線
01 · Team
主 Agent 先把任務拆開,再派給隊友:Worker 寫實作,調研 Agent 查資料,驗證 Agent 跑測試。每位成員都有自己的名字、頭像和對話,彼此直接傳訊息、交接程式碼,完成後向派工的人回報。你可以在協作面板裡看它們討論,也能隨時插話。
02 · Four ways to work
程式碼定位、開發執行與協作工具
讀程式碼、改程式碼、執行指令、開終端機。被修改的檔案按輪次留存,隨時可以還原。
「把登入模組重構一下,測試全部通過再叫我。」
調查問題、比較解釋,設計並推進實驗
檢索 OpenAlex 與 Semantic Scholar,閱讀論文與 PDF,把實驗一步步推進下去。
「找出近兩年這個方向的論文,做一張能篩選的比較表。」
文件、資料、瀏覽器與電腦操作工具
Word、Excel、PowerPoint,以及瀏覽器和電腦上的應用程式,都能直接動手。
「把上個月的訂單匯出來,整理成附圖表的 Excel。」
均衡的基礎工具,按需要使用各類能力
查資料、寫東西、做一個能互動的小工具。日常的事,都接得住。
「比較這三款相機,做一張能調參數的比較圖。」
03 · Bots
Bot 是長期在崗的 Agent。它有自己的名字、個性、模型和工作目錄,能同時推進好幾件事,也可以為它分配電腦桌面。它記住了什麼,你都看得到,也可以更正,或者讓它忘掉。讓它睡下,手上的工作就暫停;喚醒後,從原處繼續。
04 · Harness
中間是模型,圍繞它的每一格,都是 Varin 替它備好的:工具、上下文、執行、協作與復原。同一個模型放進來,能接住的工作更長、更複雜。
05 · Ready, and yours
填一組 Key 就能開始,其餘都已就緒。
不寫程式碼,也能把每一處調成你的樣子。
金鑰只存在你自己的 Host 上,用量依管道和模型逐輪記錄。沒有中間商。
06 · Extensions
Agent、IDE、科研、Bot 四個工作台,以及瀏覽器、Office、電腦操作、語言伺服器,都登記在同一個擴充功能目錄裡,用的是你手上的同一套契約。每一個都能停用,工作台還能整套替換。
varin.builtin.agent-workspacevarin.builtin.ide-workbenchvarin.builtin.research-workbenchvarin.builtin.bot-workspacevarin.builtin.browservarin.builtin.officevarin.builtin.computervarin.builtin.language-servers把滑鼠移到左邊的項目上,右邊會標出清單裡對應的部分。
varin.extension.json一份契約。探索、啟用、權限審查和工具 schema 都讀它,不執行程式碼就能被找到。
package.json一般的 npm 中繼資料,版本與清單一致,可宣告建置入口。
host.jsHost 端:工具、模型協定、上下文演算法、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。
介面不持有特權,特權工作留在可信的一側。
只拿到有型別的回呼和掛載點。換外殼、換編輯器,也換不到額外的權限。
工具、語言伺服器、除錯和測試在這裡執行。Brokered 擴充功能有自己的行程和生命週期,出了問題只回收它自己。
為每次呼叫固定所用的實作;憑證、模型請求、執行紀錄和復原都留在這裡。
varin.models@1varin.context.fragments@1varin.context.budget@1varin.context.compaction@1varin.retrieval.plan@1varin.agent.policy@4執行活動觀察擴充功能再多,工作台也要穩、要可控。
探索、啟用、審查讀的都是同一份 varin.extension.json。還沒執行任何一行程式碼,擴充功能就能被找到、顯示和檢查。
權限依版本、依執行層逐項審核。同一個擴充功能升級,不會順帶繼承新權限;撤銷權限立即生效。
一次更新裡的貢獻、服務和狀態一起生效。失敗就停留在上一版,不會只裝上一半。
正在執行的呼叫固定在原本的實作上,直到完成;之後的呼叫才使用新版本。
Brokered 擴充功能在獨立子行程中執行,出錯只回收它自己。選定的工作台無法啟動時,還有復原外殼接手。
Agent 可以讀契約、寫擴充功能、打包安裝,但首次安裝一律停用,等你審查後再啟用。
07 · Control
被修改的檔案按輪次排成時間軸,一鍵還原,還原本身也能撤銷;你手動改過的檔案不會被覆寫。結果不明的操作,不會偷偷再做一次。
08 · Anywhere
桌面、瀏覽器、手機連著同一個 Varin。掃碼配對;不在同一個網路時,透過端對端加密的中繼連線,中繼看不到你的內容。
Open source · AGPL-3.0
程式碼、資料、模型和擴充功能,都在你自己手裡。