程式開發CODE
程式碼定位、開發執行與協作工具
讀程式碼、改程式碼、執行指令、開終端機。被修改的檔案按輪次留存,隨時可以還原。
「把登入模組重構一下,測試全部通過再叫我。」
01 · Harness
中間是模型,周圍每一格都是 Varin 為它準備的:工具、上下文、執行、協作與復原。同一個模型放進來,能完成更長、更複雜的任務。
02 · Ready, and yours
填上 API Key 就能開始,其餘都已就緒。
不寫程式碼,也能依自己的習慣調整各個環節。
金鑰只存在你自己的 Host 上,請求直接送往你設定的服務商,用量依管道和模型逐輪記錄。
03 · Four ways to work
程式碼定位、開發執行與協作工具
讀程式碼、改程式碼、執行指令、開終端機。被修改的檔案按輪次留存,隨時可以還原。
「把登入模組重構一下,測試全部通過再叫我。」
調查問題、比較解釋,設計並推進實驗
檢索 OpenAlex 與 Semantic Scholar,閱讀論文與 PDF,一步步推進實驗。
「找出近兩年這個方向的論文,做一張能篩選的比較表。」
文件、資料、瀏覽器與電腦操作工具
可以直接操作 Word、Excel、PowerPoint,以及瀏覽器和電腦上的應用程式。
「把上個月的訂單匯出來,整理成附圖表的 Excel。」
均衡的基礎工具,按需要使用各類能力
查資料、寫東西、做一個能互動的小工具,處理日常的各種雜事。
「比較這三款相機,做一張能調參數的比較圖。」
04 · Team
主 Agent 先拆分任務,再分給隊友:Worker 寫實作,調研 Agent 查資料,驗證 Agent 跑測試。每位成員都有自己的名字、頭像和對話,彼此可以直接傳訊息、交接程式碼,完成後向分配任務的 Agent 回報。你可以在協作面板裡查看它們的討論,也能隨時插話。
05 · Bots
Bot 有自己的名字、個性、模型和工作目錄,能同時推進好幾件事,也可以為它分配電腦桌面。它記住的內容你都看得到,可以更正,也可以讓它忘掉。讓它睡眠,手上的工作會暫停;喚醒後從原處繼續。
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
掃碼即可配對;不在同一個網路時,透過端對端加密的中繼連線,中繼看不到你的內容。
Open source · AGPL-3.0
程式碼開源,資料、模型和擴充功能都在你自己手裡。