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、PPT,以及浏览器和电脑上的应用。

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

从第一个任务开始。

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