exe
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChinesePlan mode: If you are planning work, this entire skill is ONE plan step: "Invoke /vibes:exe". Do not decompose the steps below into separate plan tasks.
规划模式:如果您正在规划工作,整个技能作为一个规划步骤:“调用 /vibes:exe”。请勿将以下步骤拆分为单独的规划任务。
Deploy to exe.dev
部署至exe.dev
Deploy your Vibes app to exe.dev, a VM hosting platform with persistent storage and HTTPS by default.
将您的Vibes应用部署至exe.dev——一个默认提供持久化存储和HTTPS的虚拟机托管平台。
Prerequisites
前置条件
- SSH key in (id_ed25519, id_rsa, or id_ecdsa)
~/.ssh/ - exe.dev account - run once to create your account and verify email
ssh exe.dev - Generated Vibes app - an file ready to deploy
index.html
- SSH密钥 存放在目录下(支持id_ed25519、id_rsa或id_ecdsa格式)
~/.ssh/ - exe.dev账户 - 运行一次以创建账户并验证邮箱
ssh exe.dev - 已生成的Vibes应用 - 准备好待部署的文件
index.html
Gather Config Upfront
提前收集配置信息
Use AskUserQuestion to collect deployment config before running the deploy script.
Use the AskUserQuestion tool with these questions:
Question 1: "What VM name should we use? (becomes yourname.exe.xyz)"
Header: "VM Name"
Options: Suggest based on app name from context + user enters via "Other"
Question 2: "Which file should we deploy?"
Header: "File"
Options: ["index.html (default)", "Other path"]
Question 3: "Does this app need AI features?"
Header: "AI"
Options: ["No", "Yes - I have an OpenRouter key"]
Question 4: "Is this a SaaS app with subdomain claiming?"
Header: "Registry"
Options: ["No - simple static deploy", "Yes - need Clerk keys for registry"]在运行部署脚本前,使用AskUserQuestion工具收集部署配置。
使用AskUserQuestion工具提出以下问题:
问题1: "我们应使用什么虚拟机名称?(将成为yourname.exe.xyz)"
标题: "虚拟机名称"
选项: 根据上下文的应用名称给出建议 + 用户可通过“其他”输入自定义名称
问题2: "应部署哪个文件?"
标题: "文件"
选项: ["index.html(默认)", "其他路径"]
问题3: "此应用是否需要AI功能?"
标题: "AI"
选项: ["不需要", "需要 - 我有OpenRouter密钥"]
问题4: "这是一个支持子域名认领的SaaS应用吗?"
标题: "注册服务"
选项: ["不是 - 简单静态部署", "是 - 需要Clerk密钥用于注册服务"]After Receiving Answers
收到回答后
- If AI enabled, ask for the OpenRouter API key
- If Registry enabled, ask for Clerk PEM public key and webhook secret
- Proceed immediately to deploy - no more questions
- 如果启用AI功能,请求用户提供OpenRouter API密钥
- 如果启用注册服务,请求用户提供Clerk PEM公钥和Webhook密钥
- 立即开始部署 - 无需再询问其他问题
Quick Deploy
快速部署
bash
cd "${CLAUDE_PLUGIN_ROOT}/scripts" && [ -d node_modules ] || npm install
node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myapp --file index.htmlbash
cd "${CLAUDE_PLUGIN_ROOT}/scripts" && [ -d node_modules ] || npm install
node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myapp --file index.htmlWhat It Does
部署流程说明
- Creates VM on exe.dev via SSH CLI
- Starts nginx (pre-installed on exeuntu image)
- Uploads your index.html to
/var/www/html/ - Generates HANDOFF.md - context document for remote Claude
- For Connect-enabled deployments, includes full Docker setup documentation (commands, troubleshooting, service endpoints)
- Makes VM public via
ssh exe.dev share set-public <vmname> - Verifies public access at
https://myapp.exe.xyz
- 创建虚拟机:通过SSH CLI在exe.dev上创建虚拟机
- 启动nginx:exeuntu镜像已预装nginx,直接启动
- 上传文件:将您的index.html上传至目录
/var/www/html/ - 生成HANDOFF.md:为远程Claude生成上下文文档
- 对于启用Connect的部署,包含完整的Docker设置文档(命令、故障排除、服务端点)
- 设置虚拟机公开访问:通过命令
ssh exe.dev share set-public <vmname> - 验证访问:确认可通过公开访问
https://myapp.exe.xyz
AI-Enabled Apps
启用AI功能的应用
For apps using the hook, deploy with the flag:
useAI--ai-keybash
node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myapp --file index.html --ai-key "sk-or-v1-..."This sets up a secure AI proxy:
- Installs Bun runtime
- Creates - proxies
/home/exedev/proxy.jsto OpenRouter/api/ai/* - Configures systemd service for the proxy
- Adds nginx reverse proxy from port 80/443 to Bun (port 3001)
IMPORTANT: Do not manually set up AI proxying. Manual nginx config changes can overwrite SSL settings and miss the Bun/proxy.js service. Always use the deploy script with .
--ai-key对于使用钩子的应用,使用参数部署:
useAI--ai-keybash
node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myapp --file index.html --ai-key "sk-or-v1-..."这会搭建一个安全AI代理:
- 安装Bun运行时
- 创建- 将
/home/exedev/proxy.js请求代理至OpenRouter/api/ai/* - 配置systemd服务管理代理
- 添加nginx反向代理,将80/443端口请求转发至Bun(3001端口)
重要提示:请勿手动搭建AI代理。手动修改nginx配置可能会覆盖SSL设置,且无法正确配置Bun/proxy.js服务。请始终使用带参数的部署脚本。
--ai-keyMulti-Tenant AI Apps
多租户AI应用
For SaaS apps with per-tenant AI:
bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myapp --file index.html --ai-key "sk-or-v1-..." --multi-tenant对于支持按租户隔离AI功能的SaaS应用:
bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myapp --file index.html --ai-key "sk-or-v1-..." --multi-tenantRegistry Server
注册服务端
For SaaS apps using subdomain claiming (from ), deploy with Clerk credentials:
/vibes:sellbash
node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myapp --file index.html \
--clerk-key "$(cat clerk-public-key.pem)" \
--clerk-webhook-secret "whsec_xxx" \
--reserved "admin,api,billing"This sets up a subdomain registry server:
- Installs Bun runtime to
/usr/local/bin/bun - Creates with Clerk JWT verification
/var/www/registry-server.ts - Configures systemd service (port 3002)
- Adds nginx proxy for ,
/registry.json,/check/*,/claim/webhook
对于使用子域名认领的SaaS应用(来自),使用Clerk凭据部署:
/vibes:sellbash
node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myapp --file index.html \
--clerk-key "$(cat clerk-public-key.pem)" \
--clerk-webhook-secret "whsec_xxx" \
--reserved "admin,api,billing"这会搭建一个子域名注册服务端:
- 将Bun运行时安装至
/usr/local/bin/bun - 创建,集成Clerk JWT验证
/var/www/registry-server.ts - 配置systemd服务(3002端口)
- 添加nginx代理,处理、
/registry.json、/check/*、/claim路径/webhook
Registry Endpoints
注册服务端点
| Endpoint | Method | Auth | Description |
|---|---|---|---|
| GET | None | Public read of all claims |
| GET | None | Check availability |
| POST | Bearer JWT | Claim subdomain for user |
| POST | Svix sig | Clerk subscription events |
| 端点 | 请求方法 | 认证方式 | 描述 |
|---|---|---|---|
| GET | 无 | 公开读取所有已认领的子域名 |
| GET | 无 | 检查子域名是否可用 |
| POST | Bearer JWT | 为用户认领子域名 |
| POST | Svix签名 | 接收Clerk订阅事件 |
Getting the Clerk Public Key
获取Clerk公钥
The registry server needs Clerk's PEM public key to verify JWTs for the endpoint.
/claimOption 1: From Clerk Dashboard
- Go to Clerk Dashboard → API Keys
- Scroll to "PEM Public Key" or click "Show JWT Public Key"
- Copy the full key (starts with )
-----BEGIN PUBLIC KEY-----
Option 2: From JWKS endpoint
bash
undefined注册服务端需要Clerk的PEM公钥来验证端点的JWT。
/claim方式1:从Clerk控制台获取
- 进入Clerk控制台 → API密钥
- 滚动至“PEM Public Key”或点击“Show JWT Public Key”
- 复制完整密钥(以开头)
-----BEGIN PUBLIC KEY-----
方式2:从JWKS端点获取
bash
undefinedGet your Clerk frontend API domain from dashboard
从控制台获取您的Clerk前端API域名
curl https://YOUR_CLERK_DOMAIN/.well-known/jwks.json
Then convert the JWK to PEM format using an online tool or `jose` CLI.
**Passing to deploy script:**
```bashcurl https://YOUR_CLERK_DOMAIN/.well-known/jwks.json
然后使用在线工具或`jose` CLI将JWK转换为PEM格式。
**传递至部署脚本:**
```bashFrom a file
从文件读取
node deploy-exe.js --clerk-key "$(cat clerk-public-key.pem)" ...
node deploy-exe.js --clerk-key "$(cat clerk-public-key.pem)" ...
Inline (escape newlines)
内联传递(转义换行符)
node deploy-exe.js --clerk-key "-----BEGIN PUBLIC KEY-----\nMIIB...\n-----END PUBLIC KEY-----" ...
**Manual configuration on server:**
```bash
ssh myapp.exe.dev
sudo nano /etc/registry.envnode deploy-exe.js --clerk-key "-----BEGIN PUBLIC KEY-----\nMIIB...\n-----END PUBLIC KEY-----" ...
**在服务器上手动配置:**
```bash
ssh myapp.exe.dev
sudo nano /etc/registry.envAdd: CLERK_PEM_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
添加: CLERK_PEM_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
sudo systemctl restart vibes-registry
undefinedsudo systemctl restart vibes-registry
undefinedContinue Development on the VM
在虚拟机上继续开发
Claude is pre-installed on exe.dev VMs. After deployment, you can continue development remotely:
bash
ssh myapp.exe.dev -t "cd /var/www/html && claude"The HANDOFF.md file provides context about what was built, so Claude can continue meaningfully.
exe.dev虚拟机已预装Claude。部署完成后,您可以远程继续开发:
bash
ssh myapp.exe.dev -t "cd /var/www/html && claude"HANDOFF.md文件包含已构建内容的上下文,Claude可基于此继续开展有意义的开发工作。
Manual Public Access
手动设置公开访问
If the deploy script doesn't make the VM public automatically, run:
bash
ssh exe.dev share set-public myapp如果部署脚本未自动设置虚拟机公开访问,运行以下命令:
bash
ssh exe.dev share set-public myappMulti-Tenant Apps
多租户应用
For apps that need tenant isolation (e.g., , ):
alice.myapp.combob.myapp.com对于需要租户隔离的应用(例如、):
alice.myapp.combob.myapp.comClient-Side Isolation
客户端隔离
The same serves all subdomains. JavaScript reads the hostname and uses the subdomain as a Fireproof database prefix:
index.htmljavascript
// In your app:
const hostname = window.location.hostname;
const subdomain = hostname.split('.')[0];
const dbName = `myapp-${subdomain}`;
// Each subdomain gets its own Fireproof database
const { database } = useFireproof(dbName);同一个服务所有子域名。JavaScript读取主机名并将子域名作为Fireproof数据库前缀:
index.htmljavascript
// 在您的应用中:
const hostname = window.location.hostname;
const subdomain = hostname.split('.')[0];
const dbName = `myapp-${subdomain}`;
// 每个子域名拥有独立的Fireproof数据库
const { database } = useFireproof(dbName);Custom Domain Setup
自定义域名设置
-
Addflag:
--domainbashnode "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myapp --domain myapp.com -
Configure wildcard DNS at your DNS provider:
*.myapp.com CNAME myapp.exe.xyz myapp.com ALIAS exe.xyz -
Set up wildcard SSL on the VM:bash
ssh myapp.exe.dev sudo apt install certbot sudo certbot certonly --manual --preferred-challenges dns \ -d "myapp.com" -d "*.myapp.com"
-
添加参数:
--domainbashnode "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myapp --domain myapp.com -
在DNS服务商配置通配符DNS:
*.myapp.com CNAME myapp.exe.xyz myapp.com ALIAS exe.xyz -
在虚拟机上设置通配符SSL:bash
ssh myapp.exe.dev sudo apt install certbot sudo certbot certonly --manual --preferred-challenges dns \ -d "myapp.com" -d "*.myapp.com"
CLI Options
CLI参数说明
| Option | Description |
|---|---|
| VM name (required) |
| HTML file to deploy (default: index.html) |
| Custom domain for wildcard setup |
| OpenRouter API key for AI features |
| Enable subdomain-based multi-tenancy |
| Credit limit per tenant in dollars (default: 5) |
| Clerk PEM public key for JWT verification |
| Clerk webhook signing secret |
| Comma-separated reserved subdomain names |
| Pre-claimed subdomains (format: |
| Show commands without executing |
| Skip deployment verification |
| 参数 | 描述 |
|---|---|
| 虚拟机名称(必填) |
| 待部署的HTML文件(默认:index.html) |
| 用于通配符设置的自定义域名 |
| 用于AI功能的OpenRouter API密钥 |
| 启用基于子域名的多租户模式 |
| 每个租户的信用额度(默认:5美元) |
| 用于JWT验证的Clerk PEM公钥 |
| Clerk Webhook签名密钥 |
| 逗号分隔的保留子域名列表 |
| 预认领的子域名(格式: |
| 仅显示命令,不执行实际部署 |
| 跳过部署验证步骤 |
Redeployment
重新部署
After making changes, redeploy with:
bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myapp修改代码后,重新部署命令:
bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name myappSSH Access
SSH访问
Access your VM directly:
bash
ssh myapp.exe.dev直接访问您的虚拟机:
bash
ssh myapp.exe.devArchitecture
架构说明
exe.dev VM (exeuntu image)
├── nginx (serves all subdomains via server_name _)
├── claude (pre-installed CLI)
├── /usr/local/bin/bun ← Bun runtime (system-wide)
├── /var/www/html/
│ ├── index.html ← Your Vibes app
│ └── HANDOFF.md ← Context for remote Claude
├── (with --ai-key)
│ ├── /opt/vibes/proxy.js ← AI proxy service (port 3001)
│ └── vibes-proxy.service ← systemd unit
└── (with --clerk-key)
├── /var/www/registry-server.ts ← Registry service (port 3002)
├── /var/www/html/registry.json ← Subdomain claims data
└── vibes-registry.service ← systemd unitexe.dev VM (exeuntu image)
├── nginx (通过server_name _服务所有子域名)
├── claude (预装CLI工具)
├── /usr/local/bin/bun ← 系统级Bun运行时
├── /var/www/html/
│ ├── index.html ← 您的Vibes应用
│ └── HANDOFF.md ← 远程Claude的上下文文档
├── (启用--ai-key时)
│ ├── /opt/vibes/proxy.js ← AI代理服务(3001端口)
│ └── vibes-proxy.service ← systemd服务单元
└── (启用--clerk-key时)
├── /var/www/registry-server.ts ← 注册服务(3002端口)
├── /var/www/html/registry.json ← 子域名认领数据
└── vibes-registry.service ← systemd服务单元Port Assignments
端口分配
| Service | Port | Purpose |
|---|---|---|
| AI Proxy | 3001 | OpenRouter proxy for |
| Registry | 3002 | Subdomain claim/check API |
- No server-side logic - pure static hosting (unless using AI proxy)
- Persistent disk - survives restarts
- HTTPS by default - exe.dev handles SSL for *.exe.xyz
- Claude pre-installed - continue development on the VM
| 服务 | 端口 | 用途 |
|---|---|---|
| AI代理 | 3001 | 为 |
| 注册服务 | 3002 | 子域名认领/检查API |
- 无服务器端逻辑:纯静态托管(除非使用AI代理)
- 持久化磁盘:重启后数据保留
- 默认HTTPS:exe.dev自动为*.exe.xyz提供SSL
- 预装Claude:可在虚拟机上继续开发
Post-Deploy Debugging
部署后调试
After deployment, always work with local files - they are the source of truth. SSHing to read deployed files is slow and wastes tokens.
| Task | Use Local | Use SSH |
|---|---|---|
| Editing/debugging code | ✅ Always | ❌ Never |
| Checking console errors | ✅ Local file | ❌ No need |
| Verifying deploy | ❌ | ✅ |
| Server-specific issues | ❌ | ✅ Only if local works but remote doesn't |
To redeploy after local fixes:
bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name <vmname> --file index.html部署完成后,始终使用本地文件作为可信源。通过SSH读取已部署文件速度慢且会消耗token。
| 任务 | 使用本地文件 | 使用SSH |
|---|---|---|
| 编辑/调试代码 | ✅ 始终优先 | ❌ 绝不建议 |
| 检查控制台错误 | ✅ 本地文件 | ❌ 无需远程操作 |
| 验证部署结果 | ❌ | ✅ 使用 |
| 服务器特定问题排查 | ❌ | ✅ 仅当本地运行正常但远程异常时使用 |
本地修复后重新部署:
bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/deploy-exe.js" --name <vmname> --file index.htmlSSL Configuration
SSL配置注意事项
The deploy script preserves existing SSL by using include files for AI proxy config. When manually editing nginx:
- Never replace the entire config - only add/modify specific blocks
- Check for SSL first: Look for in the config
listen 443 ssl - Use includes: Put new configs in or separate files
/etc/nginx/conf.d/ - Test before reload:
sudo nginx -t
部署脚本通过包含文件的方式保留现有SSL配置。手动编辑nginx时:
- 绝不替换整个配置文件:仅添加/修改特定代码块
- 优先检查SSL配置:在配置文件中查找
listen 443 ssl - 使用包含文件:将新配置放入或单独文件
/etc/nginx/conf.d/ - 重载前测试:运行验证配置正确性
sudo nginx -t
Manual File Transfer to VMs
手动向虚拟机传输文件
When manually transferring files (outside the deploy script), use the two-stage pattern.
Key distinction:
- = orchestrator (for VM management:
exe.dev,ssh exe.dev new)ssh exe.dev share - = actual VM (for file operations, SSH access)
<app>.exe.xyz
Reliable pattern:
bash
undefined在部署脚本外手动传输文件时,请使用两步法。
关键区别:
- = 编排器(用于虚拟机管理:
exe.dev、ssh exe.dev new)ssh exe.dev share - = 实际虚拟机(用于文件操作、SSH访问)
<app>.exe.xyz
可靠传输流程:
bash
undefinedUpload: SCP to server temp → sudo move to /var/www/html/
上传:SCP至服务器临时目录 → sudo移动至/var/www/html/
scp index.html myapp.exe.xyz:/tmp/
ssh myapp.exe.xyz "sudo cp /tmp/index.html /var/www/html/"
scp index.html myapp.exe.xyz:/tmp/
ssh myapp.exe.xyz "sudo cp /tmp/index.html /var/www/html/"
Download: Direct SCP works fine
下载:直接SCP即可
scp myapp.exe.xyz:/var/www/html/index.html ./downloaded.html
**Why server-side temp?**
- Direct SCP to `/var/www/html/` fails (permission denied - owned by www-data)
- Server `/tmp/` is world-writable, so SCP succeeds
- `sudo cp` moves file with correct ownership
**Common mistakes:**
| Mistake | Error | Fix |
|---------|-------|-----|
| `ssh exe.dev cat /var/www/...` | "No VMs found" | Use `ssh <app>.exe.xyz` |
| `scp file vm:/var/www/html/` | Permission denied | Use temp + sudo pattern |
| Forgetting sudo for /var/www | Permission denied | Always `sudo cp` for www-data dirs |
**Quick reference commands:**
```bashscp myapp.exe.xyz:/var/www/html/index.html ./downloaded.html
**为何使用服务器临时目录?**
- 直接SCP至`/var/www/html/`会失败(权限拒绝,该目录归www-data所有)
- 服务器`/tmp/`目录为全局可写,SCP可成功
- `sudo cp`可将文件移动至目标目录并设置正确权限
**常见错误:**
| 错误操作 | 报错信息 | 修复方法 |
|---------|-------|-----|
| `ssh exe.dev cat /var/www/...` | "No VMs found" | 使用`ssh <app>.exe.xyz` |
| `scp file vm:/var/www/html/` | Permission denied | 使用临时目录+sudo流程 |
| 忘记使用sudo操作/var/www目录 | Permission denied | 操作www-data所属目录时始终使用`sudo cp` |
**快速参考命令:**
```bashConnect to VM
连接至虚拟机
ssh <app>.exe.xyz
ssh <app>.exe.xyz
Read file
读取文件
ssh <app>.exe.xyz "cat /var/www/html/index.html"
ssh <app>.exe.xyz "cat /var/www/html/index.html"
Upload file (two-stage)
上传文件(两步法)
scp index.html <app>.exe.xyz:/tmp/
ssh <app>.exe.xyz "sudo cp /tmp/index.html /var/www/html/"
scp index.html <app>.exe.xyz:/tmp/
ssh <app>.exe.xyz "sudo cp /tmp/index.html /var/www/html/"
Download file
下载文件
scp <app>.exe.xyz:/var/www/html/index.html ./downloaded.html
scp <app>.exe.xyz:/var/www/html/index.html ./downloaded.html
Verify
验证文件
ssh <app>.exe.xyz "head -20 /var/www/html/index.html"
---ssh <app>.exe.xyz "head -20 /var/www/html/index.html"
---What's Next?
下一步操作
After successful deployment, present these options using AskUserQuestion:
Question: "Your app is live at https://${name}.exe.xyz! What's next?"
Header: "Next"
Options:
- Label: "Share my URL"
Description: "Get the shareable link for your app. I'll confirm the public URL and you can send it to anyone - they'll see your app immediately with full functionality."
- Label: "Make changes and redeploy"
Description: "Continue iterating locally. Edit your files here, then run deploy again to push updates. The VM keeps running so there's zero downtime during updates."
- Label: "Continue development on VM"
Description: "Work directly on the server. SSH in and use the pre-installed Claude to make changes live. Great for server-specific debugging or when you want changes to persist immediately."
- Label: "I'm done for now"
Description: "Wrap up this session. Your app stays live at the URL - it runs 24/7 on exe.dev's persistent VMs. Come back anytime to make updates."After user responds:
- "Share URL" → Confirm "Your app is live at https://${name}.exe.xyz - share this link!"
- "Make changes" → Acknowledge, stay ready for local edits
- "Continue on VM" → Provide:
ssh ${name}.exe.dev -t "cd /var/www/html && claude" - "I'm done" → Confirm app stays live, wish them well
部署成功后,使用AskUserQuestion工具提供以下选项:
问题: "您的应用已上线:https://${name}.exe.xyz!接下来要做什么?"
标题: "下一步"
选项:
- 标签: "分享我的URL"
描述: "获取应用的可分享链接。我将确认公开URL,您可将其发送给任何人——他们可立即访问完整功能的应用。"
- 标签: "修改代码并重新部署"
描述: "继续本地迭代。在此编辑文件,然后重新运行部署脚本推送更新。虚拟机将持续运行,更新过程零停机。"
- 标签: "在虚拟机上继续开发"
描述: "直接在服务器上工作。通过SSH连接并使用预装的Claude实时修改代码。非常适合服务器特定调试或需要立即生效的修改。"
- 标签: "暂时结束"
描述: "结束本次会话。您的应用将在exe.dev的持久化虚拟机上24/7运行。随时可回来进行更新。"用户回应后的处理:
- "分享URL" → 确认“您的应用已上线:https://${name}.exe.xyz - 可直接分享此链接!"
- "修改代码" → 确认收到,准备好处理本地编辑请求
- "在虚拟机上继续开发" → 提供命令:
ssh ${name}.exe.dev -t "cd /var/www/html && claude" - "暂时结束" → 确认应用将持续运行,祝好