虚拟机拟真 + Claude Code。0 提示词注入。
许可:个人学习与非商用自建可用。商用必须先取得书面授权。联系 Telegram @VM2API。全文见 LICENSE。
💬 加入讨论:Telegram @VM2API
- 🧼 0 提示词注入:不再靠改 system / 注入人设去“像官方”。身份在凭证形态上就已经是 Console。
- 🖥️ Docker 或真虚拟机:一槽一台机器。拟真物理机指纹仍在攻克,欢迎方案。
- 📡 全量遥测:目标是 Claude 认为你是一台完全独立的电脑,并且无其余特征。
- 🌐 出口可选:每槽一条远程 SOCKS5,或代理池「添加本地出口」。
- 🎛️ 管理台:
GET /console。环境变量 admin 登录,没有用户管理页。 - 🔌 协议口:
POST /v1/messages(Anthropic),以及 Chat / Completions / Responses 兼容入口。
| 项 | 建议 |
|---|---|
| OS | Ubuntu 24.04(glibc 够新;Debian 12 上新内核常常起不来) |
| 运行时 | Node 22、Docker、iptables |
| 本机构建 | Rust stable、Go 1.25、pnpm 10 |
| 网 | 每槽一条出口:远程 SOCKS5,或本地出口 |
生产就用这条。拉预构建镜像,不在服务器上构建;安装目录任意。
一键安装 / 更新(保留已有非空 .env 字段 / vms/ / data/,不 docker rm 槽)。空密码默认 admin / 123456,登录 http://<ip>:8787/cc#/login。
curl -sSL https://raw.githubusercontent.com/dofastted/vm2api/main/deploy/install.sh | sudo bash
# 以后更新
curl -sSL https://raw.githubusercontent.com/dofastted/vm2api/main/deploy/install.sh | sudo bash -s -- upgrade
sudo bash /opt/vm2api/deploy/install.sh check管理台 设置 → 关于 会对照 GitHub Release,并给出同一条命令。
运行形态(不是一个父容器里一堆子进程):
- Compose 只起 1 个
vm2api控制面(面板、/v1、调度) - 每个已启动的槽另起 1 个宿主机容器
kin-<槽>(独立家目录 / 出口 / 指纹 / 遥测) - 未启动的槽不占容器。
docker ps里其它名字是同机别的项目,不是 vm2api
mkdir -p /opt/vm2api && cd /opt/vm2api
curl -sSLO https://raw.githubusercontent.com/dofastted/vm2api/main/docker-compose.yml
curl -sSL -o .env https://raw.githubusercontent.com/dofastted/vm2api/main/.env.example
chmod 600 .env
# 空密码默认 admin / 123456;空 API key / DB secret 由入口生成
docker compose pull && docker compose up -d
curl -sS --noproxy '*' http://127.0.0.1:8787/health镜像自带 bin/kin-{kernel,egress,worker,codex-kernel,cookie-auth} 与 share/wrap-cli,入口写进挂载目录,服务器上不编 Rust/Go/前端。槽位 OS 镜像先 docker pull ghcr.io/dofastted/kin-os-*,拉不到时建槽阶段兜底构建。槽 UID 是 10000+序号,bin/kin-* 必须 755。
改代码自己构建:docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build(一键脚本用 --from-source)。
Docker Desktop(含 WSL2)的 host 网络在 Desktop Linux VM 里,WSL/macOS 的 127.0.0.1:8787 可能连不上。改用:
docker exec vm2api python3 -c 'import urllib.request; print(urllib.request.urlopen("http://127.0.0.1:8787/health").read().decode())'生产请用 Ubuntu 24.04 + Docker Engine。完整约束:DEPLOY.md · Docker。
-
克隆并安装
git clone https://github.com/dofastted/vm2api.git /opt/vm2api cd /opt/vm2api npm ci pnpm -C web install --frozen-lockfile npm run build:web内核 / 网关:仓内
bin/kin-*已是 linux amd64。也可本机重编或从 Release 覆盖。 -
写环境变量和占位槽
cp docs/deploy/env.example /etc/vm2api.env chmod 600 /etc/vm2api.env # 必填:VM2API_API_KEY / VM2API_ADMIN_PASSWORD / VM2API_DB_SECRET # 自建请把 KIN_*_BIN 指到 /opt/vm2api/bin/ mkdir -p vms data bin printf '%s\n' '{ "active_vm": "vm-01" }' > vms/active.json
还要有
vms/vm-01.json,抄本见 部署说明。没有vms/active.json进程会退出。 -
启动
set -a && source /etc/vm2api.env && set +a node src/server.mjs
生产用 systemd:docs/deploy/vm2api.service。
启动成功后:
| 入口 | 地址 |
|---|---|
| 探活 | http://127.0.0.1:8787/health |
| 管理台 | http://127.0.0.1:8787/console(VM2API_ADMIN_PASSWORD) |
| 协议 | POST /v1/messages(master key 或 sk-vm-…) |
上线后:代理池绑出口 → 建 Claude 槽 → 导入 Setup Token → 官方初装 → 再打 /v1。完整步骤:DEPLOY.md。
curl -sS http://127.0.0.1:8787/v1/messages \
-H "Authorization: Bearer $VM2API_API_KEY" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":128000,"messages":[{"role":"user","content":"hello"}]}'用户请求
→ 协议清洗
→ POST /v1/messages
→ 接入 Claude Code
→ TCP 转发
→ endpoint
→ 透明转发给用户
- 槽位可以是 Docker,也可以是 真虚拟机
- 槽内 Claude Code 原生 subagent,最大 20 并发
- 拟真物理机指纹 仍在攻克。欢迎开 Issue / PR
遥测全量发送。一槽一台机器。身份、遥测、指纹都按单机收敛。
展开说明:docs/技术路线.md
客户端 / Claude Code / 兼容 SDK
│ Bearer / x-api-key
▼
Node 控制面 :8787
协议清洗 · 调度 · 管理台 /console
│ cli-hop
▼
槽(Docker 或真虚拟机)
Rust 内核 + Claude Code 原生 subagent(≤20)
│ SOCKS5 或本地出口
▼
Console API endpoint → 原样回传给调用方
| 目录 | 做什么 |
|---|---|
src/config/routing.json |
控制面开关。设置页只写这里 |
vms/<id>/run/kernel.json |
槽内 kernel 热读副本。只投影人设、system_layout、缓存 TTL、时区 |
src/ |
Node 控制面、/v1、面板 API |
web/ |
Vite 管理台,构建后 GET /console |
bin/kin-kernel |
Claude Code 槽内核(预编译 ELF) |
worker/cmd/kin-egress |
远程 SOCKS5 透明网关 |
worker/cmd/kin-worker |
只 telemetry,不是推理 hop |
docs/ |
路线、部署、构建、契约 |
kernel / wrap 只带预编译 ELF。不要提交凭证。
生产推荐:仓库放到 /opt/vm2api,写 .env,docker compose up -d --build。前面可以 nginx 反代 /v1 /api /console /health。本机 Node + systemd 是备选,见 DEPLOY.md。
最少三项,缺 VM2API_API_KEY 或面板密码进程起不来:
VM2API_API_KEY= # master key,/v1 + 面板 + /admin
VM2API_ADMIN_PASSWORD= # 管理台登录
VM2API_DB_SECRET= # 库加密VM2API_* 优先,没有再读 KIN_*。完整表和 nginx 抄本:DEPLOY.md · env.example
当前发布:v1.3.14
git tag -a v1.3.14 -m "vm2api v1.3.14"
git push origin v1.3.14v* tag 会触发 Release 工作流,再挂一份 linux amd64 ELF。仓内 bin/ 已可直接部署。步骤:BUILD.md
| 文档 | 内容 |
|---|---|
| 技术路线 | 产品主路线(图) |
| DEPLOY.md | Docker Compose(推荐)、环境变量、占位槽、systemd、反代 |
| BUILD.md | 本机构建、Release、升级 |
| API.md | /v1 客户端契约 |
| PROTOCOL.md | 协议行为 |
| PANEL_API.md | 管理台 API |
| OAUTH.md | 导入与换票(主凭证是 Setup Token) |
| CHANGELOG.md | 版本记录 |
-
进程立刻退出,提示
VM2API_API_KEY not set或读不到 JSON?
Compose 写仓库.env;本机 Node 写/etc/vm2api.env,再准备vms/active.json。抄本在 DEPLOY.md。 -
/console是空白或 404?
Compose 镜像里已带web/dist。本机 Node 先npm run build:web。静态页更新不必重启 Node。 -
槽建好了但不调度?
先绑出口(远程 SOCKS5 或管理台 添加本地出口),再导入 Setup Token。没凭证是no_credential,不会入池。 -
Debian 12 上内核起不来?
优先 Ubuntu 24.04。过旧的 glibc 跑不了当前 wrap / Claude kernel。 -
还要不要跑 Go hop /
kin-worker当推理?
不要。hop 服务端已删除。kin-worker不带参数会退出,只接受telemetry。 -
密钥写进 git 了怎么办?
立刻轮换VM2API_*、Setup Token、面板密码。不要把密钥贴到 Issue。 -
Compose 起来了但建不了槽 /
egress network missing?
bin/kin-*为 755、挂了docker.sock、控制面容器名与VM2API_CONTAINER_NAME一致(自省宿主路径用)。先添加本地出口再启动槽——首次启动会自动补一个本机出口px-local。 -
exec: "/usr/local/bin/kin-kernel": permission denied?
chmod 755 bin/kin-kernel bin/kin-egress bin/kin-worker bin/kin-codex-kernel bin/kin-cookie-auth。不要用700。 -
本机
curl 127.0.0.1:8787失败,容器却是 healthy?
Docker Desktop 的network_mode: host不在 WSL/macOS localhost。用docker exec vm2api …探活,或改 Ubuntu + Docker Engine。 -
docker ps怎么这么多容器?
vm2api 只要vm2api+ 每个已启动槽一个kin-*。postgres / newapi / hermes 等同机其它栈,不是本项目子进程。不能把多槽塞进一个容器当多进程,否则指纹/遥测糊成一台。
Telegram 群组:t.me/VM2API(@VM2API)
开源维护需要时间。扫码进群或支持一下,谢谢。
感谢 liunx do 论坛支持。
欢迎 Issue / PR。提交前请勿带上 .env、槽 JSON 里的票、或 Release 二进制。
开源版仅覆盖个人学习、研究与非商用自建,须保留 LICENSE 全文。
商用必须先取得书面授权(对外收费、作为付费服务、公司生产营收、收费再分发等)。未授权商用禁止。申请:Telegram @VM2API。
vm2api 不是 Anthropic 官方项目,与其无关联。Claude、Claude Code、Anthropic 等均为其权利人的商标。



