开源 · 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、PPT,浏览器和电脑上的应用,都能直接动手。

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

开源,归你。

代码、数据、模型和扩展,都在你自己手里。