编程CODE
代码定位、开发执行与协作工具
读代码、改代码、跑命令、开终端。被改的文件按轮次留档,随时回退。
「把登录模块重构一下,测试全部通过再叫我。」
01 · Harness
中间是模型,周围每一格都是 Varin 为它准备的:工具、上下文、执行、协作与恢复。同一个模型放进来,能完成更长、更复杂的任务。
02 · Ready, and yours
填上 API Key 就能开始,其余都已就位。
不写代码,也能按自己的习惯调整各个环节。
密钥只保存在你自己的 Host 上,请求直接发往你配置的服务商,用量按渠道和模型逐轮记录。
03 · Four ways to work
代码定位、开发执行与协作工具
读代码、改代码、跑命令、开终端。被改的文件按轮次留档,随时回退。
「把登录模块重构一下,测试全部通过再叫我。」
调查问题、比较解释,设计并推进实验
检索 OpenAlex 与 Semantic Scholar,阅读论文和 PDF,一步步推进实验。
「找近两年这个方向的论文,做一张能筛选的对比表。」
文档、数据、浏览器与电脑操作工具
可以直接操作 Word、Excel、PPT,以及浏览器和电脑上的应用。
「把上个月的订单导出来,整理成带图表的 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
代码开源,数据、模型和扩展都在你自己手里。