quvyta-code
qcode
在容器里运行的编码 agent,全程在终端中。配置一次、登录一次,之后在任何工作区里几秒钟就能打开这个 agent,在 agent 与 shell 之间切换就像切换标签页。
curl -fsSL https://raw.githubusercontent.com/quvyta/quvyta/main/install.sh | sh -s -- code测试版。qcode 在 Linux 上可配合 Podman 或 Docker 使用。界面、它写下的文件以及镜像和容器的命名在版本之间仍可能改变。
它运行的 agent
把你已经付过费的 agent 带过来。
| Agent | 登录方式 |
|---|---|
| Claude Code | 订阅、API 密钥或你自己的提供方 |
| opencode | 无需账号、订阅、API 密钥或你自己的提供方 |
| Gemini CLI | API 密钥 |
| Codex CLI | 订阅或 API 密钥 |
| Antigravity IDE | 它自己的 Google 登录,位于其容器内的一个窗口中 |
每个 agent 都在构建配置镜像时从其开发者发布的内容安装;qcode 不附带也不修改其中任何一个。命令行 agent 可以从 qcode 的新标签页列表中接续对话。Antigravity IDE 是一个桌面应用:它的窗口从自己的容器中打开,其标签页显示窗口的当前状态。登录页面在该容器内的一个小窗口中打开,这样 Google 的响应能返回,登录得以完成;每个配置只需登录一次 Google。
思路
把工作隔开的正是容器。
- 每个 agent 一个容器
每个 agent 都运行在按它构建的镜像所生成的容器里。它能看到工作区的文件夹;如果你允许,还能看到工作区的素材文件夹和网络。
- 放手去做
既然由容器把工作与你的机器隔开,agent 就被配置成无需逐步请求许可即可工作。
- 登录一次,每个工作区一份副本
配置通过 agent 自己的流程登录一次。每个工作区都会得到登录信息的独立副本,因此对话历史、记忆和设置绝不会从一个工作区流入另一个。
- 用完即停
最后一个 qcode 关闭时,它启动的容器随之停止。可选的后台服务会在崩溃之后做同样的事。你自己启动的容器永远不会被动到。
- Podman 或 Docker
两个引擎都可以。qcode 会找到它,并在缺失或未运行时告知你。如果机器上两者都没有,首次运行向导会提供安装:它显示适合你系统的命令,你可以自己运行,也可以让 qcode 在向导内的终端中运行同样的命令,你可以看着它执行。qcode 绝不会提升自己的权限。当引擎因 qcode 已知的原因拒绝时,比如服务未运行,或账户不在 docker 组中,你会看到一句大白话和修复它的那一行命令,下面附上引擎自己的原话。
- 更换引擎,你的东西都在
在设置中于 Podman 和 Docker 之间切换,或者让 qcode 发现已保存的引擎不再响应而另一个可以:一个页面列出新引擎缺少镜像的配置,每个都带有“构建”,并提供复制每个配置的家目录(设置和登录信息所在之处)。旧引擎中的任何内容都不会被删除,所以你可以回头。镜像缺失的标签页会说明这一点并提供“现在构建”,显示构建过程,完成后即打开。
- agent 之下的系统
配置的镜像基于 Debian(默认且推荐)、Arch Linux、Ubuntu 24.04 LTS 或 Alpine 构建,向导会显示每一种的大小。Alpine 最小,且标注为不推荐:它基于 musl 而非 glibc,因此 Gemini CLI 无法在其上运行。Antigravity IDE 仅基于 Debian 构建。某个系统缺少工具时,向导会说明;你从文件树中打开的文件仍会在工作区自己的 Debian 容器中打开,因此那方面没有变化。
- 机器上不留多余东西
git 地址在容器里克隆,文件在工作区自己的小型基础容器中打开,因此机器上既不必装 git,也不必装编辑器。
- 标签页之间可以互派任务
一个标签页中的 agent 可以看到该工作区的其他标签页,并给其中一个分配任务。一旦那里没有人正在输入且 agent 已停止输出,消息就会输入到该 agent 自己的提示框中,并注明发送方标签页;这已在 Claude Code 和 opencode 上验证可行。Antigravity IDE 可以给其他标签页派任务,但不能接收任务,因为它的窗口没有可输入的提示框。消息在标签页之间自行传递,不会询问你;在设置的“标签页之间的消息”中选择“第一条消息前先询问”,就能把确认要回来。无论你如何选择,没有网络的标签页永远不会发给有网络的标签页,而且标签页之间的交换总会结束,所以两个 agent 不会永远互相回复;交换结束时,两个标签页都会说明。
- 你自己的提供方
在“服务方”页面里,你添加已经拥有的模型服务:自己网络里的 ollama 服务器,或者 OpenRouter;可以测试连接,并读出每个服务提供哪些模型。之后,Claude Code 或 opencode 的配置就可以用其中之一运行。密钥永远不会进入容器:标签页通过 qcode 在你机器上运行的中继与提供方通信,所以即使是没有网络的容器,也能使用你网络里的模型服务器。密钥保存在只有你能读取的文件里,页面会告诉你它在哪里。
- 服务器真正给出的空间
模型的资料可能承诺比服务器实际接受的更多空间,而悄悄丢掉长提示开头的服务器,会让 agent 显得健忘却看不出原因。qcode 测量服务器实际接受多少,把它和模型声称的数字并排显示,并把测得的大小告诉 agent。
- QCode basic 与 QCode high
两套现成的配置方案。推荐的 QCode basic 按 qcode 运行的方式设置 agent,新标签页直接打开在提示符处。QCode high 另外加入 graphify(agent 读文件之前先查的代码地图)、为 Claude Code 挑选的插件、为 opencode 准备的 oh-my-openagent,并在每个 agent 的指令文件里写入一小节,说明如何联系其他标签页,文件其余部分保持原样。每一部分都可以关掉,向导会说明要下载什么。
- 它发送什么,何时发送
qcode 不保留统计信息,也不会发送任何关于你或你的工作的东西。它只主动问一个问题:启动时,至多每天一次,向 crates.io 询问最新发布的 qcode,并在你的版本较旧时告知你。请求只携带包名和你 qcode 的版本号,不含任何关于你或你的机器的信息。它默认开启,设置中的“有更新时提醒”会一次性为所有 Quvyta 应用关闭它;关闭期间不会发出任何请求。除此之外,只有在你添加了提供方之后 qcode 才会自行联网,而且只连接那个提供方:当你在提供方页面上按下按钮时,或有标签页在它上面运行时。测量窗口会发出几条提示词,收费的提供方会对此计费。agent 一如既往地与它们的开发者通信,构建镜像则会下载构成镜像的内容。
- 九种语言
屏幕上的每个词都来自语言文件,涵盖与本站相同的九种语言。qcode 在第一个画面就询问你的语言,也可以在设置里更改。
界面
每个界面,键盘鼠标都行。
安装
Quvyta 的安装程序用 cargo 从 crates.io 构建 qcode。每一步之前都会询问,缺少 Rust 时用 rustup 安装。只有在缺少 C 链接器、并且你在终端里回答“是”时,它才会用 sudo 安装链接器。
程序会安装为 qcode,同时也安装为 quvyta-code。Windows 以及其他所有安装方式,请看安装。
Linux 和 macOS
curl -fsSL https://raw.githubusercontent.com/quvyta/quvyta/main/install.sh | sh -s -- code或者用 cargo
cargo install quvyta-code需要什么
- 一个容器引擎
Podman(免 root,无需后台服务)或已启动守护进程的 Docker。两者都没装时,首次运行向导会提议安装一个。
- 一个账号,或你自己的模型服务器
来自 agent 开发者的订阅或 API 密钥;对 Claude Code 和 opencode 来说,也可以是你添加的提供方。opencode 不需要账号也能用它的免费模型运行。
- 磁盘空间和网络连接
关于首批镜像:以 Debian 为基础并搭载 Node.js,在其之上运行各配置的 agent。配置也可改用 Arch Linux、Ubuntu 或 Alpine 构建,向导会显示各自的大小。
- Linux
qcode 在 Linux 上开发和测试。macOS 与 Windows 已写入代码,但尚未试过。