add §19 延伸思考:VPS+Claude Code+面板 = Cloud Agent Runtime

对话中推演出的 6 节内容:
- §19 Cloud Runtime 定位
- §19.1 Sandbox ⊂ Runtime 拆分
- §19.2 '能干任何事'的 4 个边界
- §19.3 长久记忆的 4 层(用户/项目 CLAUDE.md + auto-memory + 会话历史)
- §19.4 Claude Code vs Desktop/Web 权衡表
- §19.5 合成路径 4 种

原 §19 阅读路径 → §20。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-24 22:07:04 +08:00
parent 5755ad7c18
commit 636e39a778

View File

@@ -1360,8 +1360,297 @@ results = <span class="kw">await</span> asyncio.<span class="fn">gather</span>(*
</table>
</section>
<!-- ========= 延伸思考 ========= -->
<section id="cloud-runtime">
<h2><span class="sec-num">§19</span>延伸思考 · 从 ARES 沙箱到私人 Cloud Agent Runtime</h2>
<p class="sec-lead">
拆完 ARES 之后冒出来的一个念头:<strong>"我在 VPS 上装 Linux + Claude Code + 做个面板,是不是就等于 ARES 那种沙箱?能干任何事 + 有长久记忆?"</strong>
答案是"基本对,但有几个概念要拆清楚"。下面是把这个思路推完整的全过程。
</p>
<div class="highlight-box">
<h4>🎯 本节一句话结论</h4>
<p>
<strong>"VPS + Linux + Claude Code + Web 面板" ≈ 一个 24×7 在线、跨设备、有累积记忆、隔离可控的私人 Agent 工作台。</strong>
这和 ARES 的"训练沙箱"不是一回事(那是 ephemeral 的跑分考场),但共享同一个底层隔离技术栈。"能干任何事"的真正门槛不在架构,在 <strong>沙箱权限 + 工具桥</strong>
</p>
</div>
</section>
<section id="sandbox-vs-runtime">
<h2><span class="sec-num">§19.1</span>沙箱 ⊂ Agent Runtime</h2>
<p class="sec-lead">"沙箱"这个词在 Agent 语境里经常被跟"整套 Agent 工作环境"混用。拆清楚。</p>
<div class="ascii">┌──────────────────────────────────────────────┐
<span class="hl-blue">Agent Runtime</span>(整套工作环境) │
│ ┌────────────────────────────────┐ │
│ │ <span class="hl-violet">Sandbox</span>(隔离执行环境) │ │
│ │ ├─ Claude Code 跑这里 │ │
│ │ ├─ 工具 / bash / 文件 / git │ │
│ │ └─ ~/.claude/(记忆 + 凭证)│ │
│ └────────────────────────────────┘ │
│ ─ <span class="hl-cyan">Web UI</span>(用户操作入口) │
│ ─ <span class="hl-cyan">LLM Key</span>Claude API
│ ─ <span class="hl-cyan">持久化</span>(项目 / 历史 / 文件) │
│ ─ <span class="hl-cyan">鉴权</span>(谁能进) │
└──────────────────────────────────────────────┘</div>
<p><strong>关键区分</strong></p>
<ul>
<li><strong>Sandbox</strong>(沙箱) = 隔离盒子,防 agent 把宿主搞坏。LXC / Docker / VM 都是实现。</li>
<li><strong>Container</strong>(容器) = 沙箱的一种实现。</li>
<li><strong>Agent Runtime</strong> = 沙箱 + UI + 鉴权 + 持久化 + 工具桥。</li>
</ul>
<h3>ARES 的沙箱 vs 你说的"VPS + Claude Code"</h3>
<table>
<tr><th>维度</th><th>ARES 沙箱(训练用)</th><th>VPS + Claude Code你想做的</th></tr>
<tr><td>生命周期</td><td>ephemeral每任务一个跑完就删</td><td>长寿命,跨会话保留</td></tr>
<tr><td>目标</td><td>产 reward 给训练器算梯度</td><td>给真人干活</td></tr>
<tr><td>谁是用户</td><td>训练框架trl / verl</td><td>你自己</td></tr>
<tr><td>状态</td><td>无状态reset 重来)</td><td>有状态(项目 / 历史 / 凭证)</td></tr>
<tr><td>隔离粒度</td><td>每任务独立容器</td><td>一个 runtime 跑一段时间</td></tr>
<tr><td>UI</td><td>CLI 跑分</td><td>必须有</td></tr>
<tr><td>类比</td><td>健身房器械</td><td>出租公寓</td></tr>
</table>
<div class="callout green">
<strong>结论</strong>:你问的那个东西 ≈ <strong>Cloud Agent Runtime</strong><strong>里面包含沙箱</strong>,但不只是沙箱。和 ARES 不是同一个层次的东西。
</div>
</section>
<section id="anything-boundary">
<h2><span class="sec-num">§19.2</span>"能干任何事"的 4 个边界</h2>
<p class="sec-lead">能干多少事,跟你用几个 Claude Code 无关,取决于 4 个维度:</p>
<table>
<tr><th>维度</th><th>决定</th><th>可调</th></tr>
<tr><td>🔓 <strong>沙箱权限</strong></td><td>能摸什么(挂了哪些目录、有没有 sudo</td><td><code>/workspace</code> 只能祸害工作区;挂 <code>/</code> 能改系统</td></tr>
<tr><td>🛠 <strong>工具桥</strong></td><td>能做什么MCP / CLI 工具 / API</td><td>装 Playwright → 操作浏览器;装 adb → 操作手机;加 HA MCP → 控家电</td></tr>
<tr><td>🌐 <strong>外网出口</strong></td><td>能碰谁VPS 网络 / 防火墙 / VPN</td><td>公网全开 = 爬网页 / 调 API 都行;不通内网 = 摸不到 NAS</td></tr>
<tr><td>💳 <strong>API 配额</strong></td><td>能跑多久Anthropic / OpenAI 账号限流)</td><td>订阅等级决定长任务能不能跑通</td></tr>
</table>
<div class="compare">
<div class="compare-col a">
<h5>默认就能干</h5>
<ul>
<li>✅ 写代码 / 改文件 / 跑脚本</li>
<li>✅ 部署服务 / 管 git 仓库</li>
<li>✅ 爬公网 / 调任意 API</li>
<li>✅ 长任务(几小时)</li>
<li>✅ 跨设备接续(手机 / iPad / 别的电脑)</li>
</ul>
</div>
<div class="compare-col b">
<h5>加工具桥才能干</h5>
<ul>
<li>🛠 浏览器操作 → Playwright / browser-use</li>
<li>🛠 手机控制 → adb / scrcpy</li>
<li>🛠 家电控制 → Home Assistant MCP</li>
<li>🛠 邮件 / 日历 → Gmail MCP / Google Calendar MCP</li>
<li>🛠 设计 → Figma MCP / Pencil MCP</li>
</ul>
</div>
</div>
<div class="callout red">
<strong>永远干不了</strong>:碰你家局域网(除非 VPN· 操作你本机显示器 · 绕过 API 限流 · 物理世界(除非接机器人 / IoT
</div>
</section>
<section id="memory-layers">
<h2><span class="sec-num">§19.3</span>"长久记忆"的 4 层</h2>
<p class="sec-lead">
关键事实:<strong>ClaudeLLM 本身)每次 API 调用都是从 0 开始</strong>,没有任何内生记忆。
"长久记忆"完全靠<strong>文件系统 + prompt 注入</strong>
</p>
<div class="ascii">┌─────────────────────────────────────────────────────────┐
<span class="hl-blue">Claude Code 的记忆分层</span>
│ │
<span class="hl-green">1. 用户级 CLAUDE.md</span> ~/.claude/CLAUDE.md │
│ → 每次打开 Claude Code 自动加载(所有项目共用) │
│ │
<span class="hl-green">2. 项目级 CLAUDE.md</span> &lt;project&gt;/CLAUDE.md │
│ → 进入该项目时加载 │
│ │
<span class="hl-violet">3. Auto-memory</span> ~/.claude/projects/&lt;slug&gt;/memory/ │
│ → <span class="hl-yellow">当前会话就在用</span>!每个 memory 是独立 md 文件 │
│ 索引在 MEMORY.md自动加载 │
│ │
<span class="hl-cyan">4. 会话历史</span> ~/.claude/projects/&lt;slug&gt;/*.jsonl │
│ → 本次对话完整 transcript下次 /continue 能接 │
└─────────────────────────────────────────────────────────┘</div>
<div class="highlight-box">
<h4>💡 活例子:你正在读的这份报告</h4>
<p>
Claude Code在这个会话里之所以"记得"你做过法考、AutoScan、LobeChat、Hermes、HiClaw、ARES 这几十个项目,知道你用 Coolify + Traefik知道 Gitea 用户名是 <code>kangwan</code> 不是 <code>kangwang</code> ——
<strong>全部从 <code>~/.claude/projects/-Users-kangwan/memory/</code> 读出来的</strong>。这就是"长久记忆"的实体。
</p>
</div>
<p><strong>VPS 场景下的结论</strong>:只要沙箱内的 <code>~/.claude/</code> 目录<strong>持久化</strong>记忆就一直在。用得越久Claude 对你的工作习惯、项目、凭证、偏好、决策风格的了解越深。</p>
<h3>⚠️ 三个实际的坑</h3>
<ol>
<li><strong>登录凭证也在沙箱里</strong><code>~/.claude/.credentials.json</code> —— 沙箱销毁 = 登录失效。沙箱必须私有 + 持久化,别放 ephemeral 卷。</li>
<li><strong>多窗口并发抢 API 配额</strong>VPS 一套 + 手机 + Mac 三个会话共享一个 Anthropic 账号的限流。</li>
<li><strong>跟本机 Claude Code 相比</strong>VPS 合盖不断 / 跨设备好,但 CPU 慢 / 网络 IO 慢 / VPS 供应商理论能看数据。</li>
</ol>
</section>
<section id="cc-vs-desktop">
<h2><span class="sec-num">§19.4</span>Claude Code vs Claude Desktop / Web</h2>
<p class="sec-lead">
两个工具共享同一个 Claude 模型API 层),但<strong>上层设计目标完全不同</strong>,决定了擅长什么、不擅长什么。
</p>
<div class="ascii"> ┌──────────────────────────────┐
<span class="hl-blue">Claude API</span>
Anthropic 云端模型) │
└──────────────────────────────┘
↑ ↑ ↑
┌────────────┼───┼───┴────────────┐
│ │ │ │
<span class="hl-violet">Claude Code</span> <span class="hl-cyan">Claude Desktop</span> <span class="hl-green">Claude.ai 网页</span>
CLI+工具) (桌面聊天) (浏览器)
│ │ │
自带客户端 无头 Linux 浏览器打开
能力 VPS 装不了 即可
(要 GUI</div>
<h3>两种设计取向的对比</h3>
<table>
<tr><th></th><th>Claude Desktop / Web</th><th>Claude Code</th></tr>
<tr><td>设计目标</td><td>聊天 + 多模态展示</td><td>工程任务 + 工具调用</td></tr>
<tr><td>前端</td><td>✨ 漂亮 UI / Artifacts / 图表</td><td>📟 终端(文字为主)</td></tr>
<tr><td>上下文</td><td>几百 K看订阅</td><td>🔥 <strong>1M token</strong>(本报告生成会话就是)</td></tr>
<tr><td>长任务</td><td>❌ 容易丢早期内容</td><td>✅ 自动压缩 + 断点续传</td></tr>
<tr><td>文件系统</td><td>❌ 只能上传片段</td><td>✅ 随便读写</td></tr>
<tr><td>跑命令</td><td>❌ 不能</td><td>✅ bash / git / apt 随便</td></tr>
<tr><td>并行子任务</td><td>❌ 一条线</td><td>✅ Subagent 并发(本次报告用了 3 个)</td></tr>
<tr><td>MCP 生态</td><td>✅ 同样支持</td><td>✅ 同样支持</td></tr>
<tr><td>视觉资产</td><td>✅ Artifacts 实时渲染</td><td>⚠️ 要开浏览器看</td></tr>
<tr><td>连续 8 小时工作</td><td>❌ 会断 / 会丢</td><td>✅ 稳</td></tr>
</table>
<h3>为什么 Claude Code 擅长长任务(不是偶然,是设计)</h3>
<div class="card-grid">
<div class="card">
<h4>1M context</h4>
<p>1 小时对话里积累的文件 / 日志 / 截图都记得住。</p>
</div>
<div class="card">
<h4>自动压缩</h4>
<p>逼近 context 极限自动摘要历史,不打断任务。</p>
</div>
<div class="card">
<h4>Subagent 并行</h4>
<p>大任务拆小任务同时跑,省 token 省时间。</p>
</div>
<div class="card">
<h4>Task / Todo 持久化</h4>
<p>任务列表跨轮次不丢。</p>
</div>
<div class="card">
<h4>Auto-memory</h4>
<p>跨会话的偏好 / 约定记得。</p>
</div>
<div class="card">
<h4>File-first</h4>
<p>长产出写文件不堆 context下次直接读。</p>
</div>
<div class="card">
<h4>Hooks / Skills</h4>
<p>自动化流程 / 钩子 / 专家模块可配置。</p>
</div>
<div class="card">
<h4>Plan mode</h4>
<p>复杂任务先规划后执行,不盲目动手。</p>
</div>
</div>
<div class="callout">
<strong>观察</strong>Claude Desktop 功能广MCP 集成 / Artifacts / Project<strong>编写程序 + 长任务</strong> 差很多。Claude Code 正相反:前端简陋,但对工程任务和持久工作有专门优化。
</div>
</section>
<section id="synthesis-path">
<h2><span class="sec-num">§19.5</span>合成路径 · Desktop 的体验 + Claude Code 的能力</h2>
<p class="sec-lead">
这是自然会冒出来的念头:
<strong>能不能把 Claude Desktop 的漂亮 UI 和 Claude Code 的长任务 / 工具 / 文件 / 稳定合在一起?</strong>
可以,有 4 条路径,工程量不等。
</p>
<div class="ascii">┌─────────────────────────────────────────────┐
│ 理想态: │
│ ┌─────────────────────────────────────┐ │
│ │ 前台:漂亮聊天 UIDesktop 体验) │ │
│ │ ↓ 下发任务 │ │
│ │ 后台Claude Code 干活 │ │
│ │ (长任务 / 工具 / 文件 / 稳) │ │
│ └─────────────────────────────────────┘ │
└─────────────────────────────────────────────┘</div>
<table>
<tr><th>路径</th><th>做法</th><th>成本</th><th>优 / 劣</th></tr>
<tr>
<td>🟢 <strong>本机并用</strong></td>
<td>Claude Desktop 聊天 + 开终端跑 Claude Code。手动搬任务。</td>
<td>0现在就能用</td>
<td>优:零成本;劣:两 session 不联动</td>
</tr>
<tr>
<td>🟡 <strong>Desktop 前台 + MCP 后台</strong></td>
<td>Desktop 配 MCP serverMCP 背后是 Claude Code / 自写 agent。Desktop 判断"需要长任务"时丢过去。</td>
<td>中(要写 MCP server</td>
<td>优:看起来像"Desktop 内嵌 Claude Code";劣:当前没有成熟现成的方案</td>
</tr>
<tr>
<td>🟠 <strong>自建 Web UI 套 Claude Code</strong></td>
<td>做 Web 聊天界面(像 LobeChat / Chatbot UI后端跑 Claude Code。</td>
<td>中(几天 UI 开发)</td>
<td>优:完全自控 / 能跑云端 / 跨设备UI 工程</td>
</tr>
<tr>
<td>🔴 <strong>魔改 Claude Code 做 Agent 平台</strong></td>
<td>Fork Claude Code把 TUI 换成 Web UI嵌进自己的壳。</td>
<td>高(大工程)</td>
<td>优:能力最完整;劣:跟不上 Claude Code 上游迭代</td>
</tr>
</table>
<h3>你的最经济路径</h3>
<p>如果已有下面这些积累(大部分开发者都有某种变体):</p>
<ul>
<li>一个 <strong>Web UI 聊天壳</strong>LobeChat / Chatbot UI / 自写的)</li>
<li>一个 <strong>VPS + 容器平台</strong>Coolify / Dokploy / K8s</li>
<li>熟悉 <strong>LXC / Docker / 鉴权 / 反代</strong></li>
</ul>
<p>那么合成路径其实就是<strong>路径 3 的简化版</strong></p>
<div class="ascii">Web UI 聊天壳(已有)
↓ 发消息
后端网关
↓ 路由判断
├─ 简单聊天 → 直接调 <span class="hl-blue">Claude API</span>(现做法)
└─ 复杂任务 → spawn <span class="hl-violet">Claude Code 进程</span> → 返回结果</div>
<p>改动只在后端加一个"长任务分流到 Claude Code"的路由。UI 不动。</p>
<div class="highlight-box">
<h4>🧭 这就是 Manus / Devin / OpenHands / Cursor 在做的事</h4>
<p>
这些商业产品的核心逻辑都是:<strong>把 Claude Code 那种工程能力包装成 Chat UI</strong>
你自建的好处 = 私有 + 数据留自己手里 + 不用每月付费 + 能接你特有的工具桥(公司内网 / 私有 API / 私有 MCP
</p>
</div>
</section>
<!-- ========= 延伸思考结束 ========= -->
<section id="reading-path">
<h2><span class="sec-num">§19</span>阅读路径推荐</h2>
<h2><span class="sec-num">§20</span>阅读路径推荐</h2>
<p class="sec-lead">想理解 ARES按以下顺序读最省脑。</p>
<ol style="font-size: 0.92rem;">