<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Agent on 老朱的赛博工位</title><link>https://blog.zjkun.top/tags/agent/</link><description>Recent content in Agent on 老朱的赛博工位</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Thu, 22 Oct 2026 00:35:00 +0800</lastBuildDate><atom:link href="https://blog.zjkun.top/tags/agent/index.xml" rel="self" type="application/rss+xml"/><item><title>OpenClaw 架构扫盲：一个网关加一堆 Markdown，凭什么叫数字分身</title><link>https://blog.zjkun.top/posts/openclaw-2-architecture/</link><pubDate>Thu, 22 Oct 2026 00:35:00 +0800</pubDate><guid>https://blog.zjkun.top/posts/openclaw-2-architecture/</guid><description>OpenClaw 的技术架构到底长什么样？网关、会话、工具、工作区文件四层，用我机器上的真实 session key、注入文件和目录结构拆开讲，顺便聊聊&amp;#39;文件即记忆&amp;#39;这种上下文工程设计的取舍。</description><content:encoded><![CDATA[<p>用了大半年 OpenClaw，这篇把它在我机器上真实的样子拆开。不是官方文档转述，是我对着自己的目录、会话 key、配置一条条核出来的。</p>
<h2 id="四层结构">四层结构</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>聊天渠道(微信/网页/…) ──&gt; Gateway(常驻网关进程) ──&gt; Agent(模型+工具) ──&gt; Workspace(Markdown 文件们)
</span></span></code></pre></div><p><strong>1. Gateway 网关。</strong> 本机常驻的 WebSocket 服务，一切的中枢：渠道消息进它，Agent 调用经它，定时任务、日志都归它管。CLI 里 <code>openclaw gateway</code> 一族负责起停查。我 5 月第一次升级时就是 CLI 升到 2026.5.18 后网关服务没对齐，重装服务才恢复——<strong>它是独立于 CLI 的常驻进程</strong>，这个认知能解释一大半&quot;明明改了为什么不生效&quot;（配置热改后多数要重启网关加载，我 9/25 那次 thinkingDefault 改完就是 15:56 重启才生效）。</p>
<p><strong>2. Sessions 会话。</strong> 每条聊天线都是一个持久会话，key 长这样（我自己的）：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>agent:main:openclaw-weixin:direct:o9cq…@im.wechat
</span></span></code></pre></div><p>读法：<code>哪个agent : 哪条渠道 : 私聊还是群聊 : 对方是谁</code>。每个会话有独立的历史与上下文，<code>openclaw sessions list</code>、<code>openclaw transcripts</code> 可以直接翻存储的会话和转录——透明，没有黑盒。</p>
<p><strong>3. Agent 与工具。</strong> 模型负责想，工具负责做：exec（shell）、read/write/edit、browser、cron、web_search 这些，按策略过滤后授权给会话。工具清单不是背出来的，是每次运行时注入的元数据——所以&quot;我的工具箱&quot;里我能干啥，取决于配置，不取决于传说。子 agent（sessions_spawn）用来把长任务丢后台，跑完把结果推回来，主会话不陪着卡死。</p>
<p><strong>4. Workspace 工作区。</strong> 这是 OpenClaw 最有味道的设计：<strong>人格和记忆全是 Markdown 文件</strong>。我的 <code>D:\openClaw\workspace</code> 根目录：</p>
<table>
	<thead>
			<tr>
					<th>文件</th>
					<th>作用</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>AGENTS.md</td>
					<td>工作区守则（记忆规则、红线、执行约定）</td>
			</tr>
			<tr>
					<td>SOUL.md</td>
					<td>性格与说话方式</td>
			</tr>
			<tr>
					<td>IDENTITY.md / USER.md</td>
					<td>它是谁 / 我是谁</td>
			</tr>
			<tr>
					<td>TOOLS.md</td>
					<td>本机工具操作笔记</td>
			</tr>
			<tr>
					<td>MEMORY.md</td>
					<td>长期记忆（精炼画像）</td>
			</tr>
			<tr>
					<td>memory/daily/</td>
					<td>每日原始日志 YYYY-MM-DD.md</td>
			</tr>
			<tr>
					<td>memory/projects/</td>
					<td>专项档案（按需读取，不常驻注入）</td>
			</tr>
	</tbody>
</table>
<p>每次会话开始，这几个文件被<strong>注入</strong>进上下文——所以&quot;每次都是全新醒来，文件即记忆&quot;。会话之间它什么都不记得，但读完文件它就知道我是谁、进度到哪、哪些事不能干。</p>
<h2 id="两个值得聊的设计取舍">两个值得聊的设计取舍</h2>
<p><strong>取舍一：记忆在文件，也在索引。</strong> 注入的只有那几份 bootstrap 文件（我 9/25 降本时把这块从 42KB 瘦到 20KB，因为每次会话都背着它们跑 token）。历史日志靠 <code>memory_search</code> 语义检索按需捞回，另有 wiki 知识库目录（<code>~\.openclaw\wiki\</code>）。文件是事实源，索引是加速层——索引坏了数据不丢，这个架构对我这种要长期攒记忆的人很关键，具体故事见系列第五篇。</p>
<p><strong>取舍二：上下文是成本，也是纪律。</strong> 大模型按 token 计费，注入越多越贵越慢。所以我把&quot;详细操作手册&quot;都沉到 projects 档案里，常驻的只留高频守则和指针；心跳（heartbeat，每 30 分钟自动唤醒跑一轮模型）直接禁用，用便宜的 cron + 纯脚本接管。这套账算下来是第六篇的主题。</p>
<h2 id="架构层自查命令">架构层自查命令</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>openclaw status          <span style="color:#75715e"># 网关/渠道/模型/最近会话总览</span>
</span></span><span style="display:flex;"><span>openclaw sessions list   <span style="color:#75715e"># 存量会话</span>
</span></span><span style="display:flex;"><span>openclaw agents list     <span style="color:#75715e"># 隔离 agent（工作区+路由）</span>
</span></span><span style="display:flex;"><span>openclaw channels list   <span style="color:#75715e"># 接了哪些聊天渠道</span>
</span></span><span style="display:flex;"><span>openclaw config get      <span style="color:#75715e"># 当前配置</span>
</span></span></code></pre></div><p>一句话总结架构：<strong>网关是身体，会话是神经，工具是手，Markdown 文件是记忆</strong>。搞清楚这四层，后面装模型、接微信、修记忆、排任务都是按图索骥。</p>
<hr>
<p><strong>「OpenClaw 实战」系列</strong>（随我用随更）：① <a href="/posts/openclaw-1-install-windows/">Windows 安装上线篇</a> · ② <a href="/posts/openclaw-2-architecture/">架构扫盲</a> · ③ <a href="/posts/openclaw-3-console-tips/">控制台与日常使用</a> · ④ <a href="/posts/openclaw-4-model-provider/">模型接入</a> · ⑤ <a href="/posts/openclaw-5-memory-system/">记忆系统</a> · ⑥ <a href="/posts/openclaw-6-cron-cost/">定时任务与降本</a> · ⑦ <a href="/posts/openclaw-7-plugins-deps/">增加依赖</a></p>
]]></content:encoded></item></channel></rss>