<?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>开发者工具 on MyBrew</title>
    <link>https://aibrew.ai/zh/tags/%E5%BC%80%E5%8F%91%E8%80%85%E5%B7%A5%E5%85%B7/</link>
    <description>Recent content in 开发者工具 on MyBrew</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Mon, 29 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://aibrew.ai/zh/tags/%E5%BC%80%E5%8F%91%E8%80%85%E5%B7%A5%E5%85%B7/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>AI-Native Workspace：用四层架构把 Coding Agent 变成个人操作系统</title>
      <link>https://aibrew.ai/zh/2026/06/ai-native-workspace%E7%94%A8%E5%9B%9B%E5%B1%82%E6%9E%B6%E6%9E%84%E6%8A%8A-coding-agent-%E5%8F%98%E6%88%90%E4%B8%AA%E4%BA%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/</link>
      <pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://aibrew.ai/zh/2026/06/ai-native-workspace%E7%94%A8%E5%9B%9B%E5%B1%82%E6%9E%B6%E6%9E%84%E6%8A%8A-coding-agent-%E5%8F%98%E6%88%90%E4%B8%AA%E4%BA%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — &lt;a href=&#34;https://github.com/RedDragonHQ/ai-native-workspace&#34;&gt;AI-Native Workspace&lt;/a&gt; 是一个开源框架，用来把 AI coding agent 真正接入长期运行的研究或工程工作区。它的核心思路很简单：把 &lt;strong&gt;Model、Agent、Protocol、Application&lt;/strong&gt; 四层拆开，让 Claude、DeepSeek、Codex、Cursor、MCP 服务、项目文档和知识管理流程可以独立替换，而不是绑死在同一个生态里。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;大多数 AI coding 工作流一开始都像一堆有用但松散的碎片：一个 &lt;code&gt;CLAUDE.md&lt;/code&gt;，几段 prompt，几个 shell 脚本，也许还有 &lt;code&gt;.cursorrules&lt;/code&gt;，再加一句“记得更新 TODO”。&lt;/p&gt;
&lt;p&gt;单项目时这能跑。等工作区长到五六个项目、三四个模型供应商、一个 wiki、一个 inbox、几组本地服务和几个月的历史决策时，它就开始变形。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI-Native Workspace&lt;/strong&gt; 是我们把这堆经验整理成架构的尝试。&lt;/p&gt;
&lt;p&gt;它不是另一个 dotfiles dump。它的出发点是：把 workspace 本身看成操作系统；model 提供推理能力，agent 像进程一样运行，protocol 是系统调用，application layer 才是真正的工作产物。&lt;/p&gt;
&lt;p&gt;这个比喻听起来有点抽象，但它解决的是一个很实际的问题：&lt;strong&gt;当模型、agent 和工具每几个月就变化一次时，怎样让一个 AI 工作区保持可迁移？&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;问题大多数-agent-工作流耦合太重&#34;&gt;问题：大多数 Agent 工作流耦合太重&lt;/h2&gt;
&lt;p&gt;现在很多 “AI workflow” 配置都绑定在一个单一生态里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个模型供应商，&lt;/li&gt;
&lt;li&gt;一个 coding agent，&lt;/li&gt;
&lt;li&gt;一种配置格式，&lt;/li&gt;
&lt;li&gt;一套项目结构，&lt;/li&gt;
&lt;li&gt;一组工具集成。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这能让你很快开始，但后续成本会慢慢出现。模型涨价了，脚本要改。agent 换了配置格式，规则要改。加第二个项目后，根目录说明开始变成垃圾桶。聊天记录断了，agent 就失去了过去决策的原因。&lt;/p&gt;
&lt;p&gt;AI-Native Workspace 从相反的假设出发：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;workspace 应该比任何单个模型、agent、供应商或工具活得更久。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;所以它把整个系统拆成四层。&lt;/p&gt;
&lt;h2 id=&#34;四层架构&#34;&gt;四层架构&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;┌─────────────────────────────────────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│  Application                                            │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│  Projects · Inbox · Wiki · workflows                    │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├─────────────────────────────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│  Protocol                                               │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│  CLAUDE.md conventions · CLI tools · MCP servers        │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├─────────────────────────────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│  Agent                                                  │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│  Claude Code · Codex · Cursor · markdown-aware agents   │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├─────────────────────────────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│  Model                                                  │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│  DeepSeek · Claude · Qwen · OpenAI · local models       │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;└─────────────────────────────────────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;每层只负责一件事。更重要的是，每层都可以替换，而不强迫其他层一起重写。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<blockquote>
<p><strong>TL;DR</strong> — <a href="https://github.com/RedDragonHQ/ai-native-workspace">AI-Native Workspace</a> 是一个开源框架，用来把 AI coding agent 真正接入长期运行的研究或工程工作区。它的核心思路很简单：把 <strong>Model、Agent、Protocol、Application</strong> 四层拆开，让 Claude、DeepSeek、Codex、Cursor、MCP 服务、项目文档和知识管理流程可以独立替换，而不是绑死在同一个生态里。</p>
</blockquote>
<hr>
<p>大多数 AI coding 工作流一开始都像一堆有用但松散的碎片：一个 <code>CLAUDE.md</code>，几段 prompt，几个 shell 脚本，也许还有 <code>.cursorrules</code>，再加一句“记得更新 TODO”。</p>
<p>单项目时这能跑。等工作区长到五六个项目、三四个模型供应商、一个 wiki、一个 inbox、几组本地服务和几个月的历史决策时，它就开始变形。</p>
<p><strong>AI-Native Workspace</strong> 是我们把这堆经验整理成架构的尝试。</p>
<p>它不是另一个 dotfiles dump。它的出发点是：把 workspace 本身看成操作系统；model 提供推理能力，agent 像进程一样运行，protocol 是系统调用，application layer 才是真正的工作产物。</p>
<p>这个比喻听起来有点抽象，但它解决的是一个很实际的问题：<strong>当模型、agent 和工具每几个月就变化一次时，怎样让一个 AI 工作区保持可迁移？</strong></p>
<h2 id="问题大多数-agent-工作流耦合太重">问题：大多数 Agent 工作流耦合太重</h2>
<p>现在很多 “AI workflow” 配置都绑定在一个单一生态里：</p>
<ul>
<li>一个模型供应商，</li>
<li>一个 coding agent，</li>
<li>一种配置格式，</li>
<li>一套项目结构，</li>
<li>一组工具集成。</li>
</ul>
<p>这能让你很快开始，但后续成本会慢慢出现。模型涨价了，脚本要改。agent 换了配置格式，规则要改。加第二个项目后，根目录说明开始变成垃圾桶。聊天记录断了，agent 就失去了过去决策的原因。</p>
<p>AI-Native Workspace 从相反的假设出发：</p>
<blockquote>
<p><strong>workspace 应该比任何单个模型、agent、供应商或工具活得更久。</strong></p>
</blockquote>
<p>所以它把整个系统拆成四层。</p>
<h2 id="四层架构">四层架构</h2>
<div class="highlight"><div style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>┌─────────────────────────────────────────────────────────┐
</span></span><span style="display:flex;"><span>│  Application                                            │
</span></span><span style="display:flex;"><span>│  Projects · Inbox · Wiki · workflows                    │
</span></span><span style="display:flex;"><span>├─────────────────────────────────────────────────────────┤
</span></span><span style="display:flex;"><span>│  Protocol                                               │
</span></span><span style="display:flex;"><span>│  CLAUDE.md conventions · CLI tools · MCP servers        │
</span></span><span style="display:flex;"><span>├─────────────────────────────────────────────────────────┤
</span></span><span style="display:flex;"><span>│  Agent                                                  │
</span></span><span style="display:flex;"><span>│  Claude Code · Codex · Cursor · markdown-aware agents   │
</span></span><span style="display:flex;"><span>├─────────────────────────────────────────────────────────┤
</span></span><span style="display:flex;"><span>│  Model                                                  │
</span></span><span style="display:flex;"><span>│  DeepSeek · Claude · Qwen · OpenAI · local models       │
</span></span><span style="display:flex;"><span>└─────────────────────────────────────────────────────────┘
</span></span></code></pre></td></tr></table>
</div>
</div><p>每层只负责一件事。更重要的是，每层都可以替换，而不强迫其他层一起重写。</p>
<h3 id="第一层model">第一层：Model</h3>
<p>Model layer 是提供推理能力的 LLM：Claude、DeepSeek、Qwen、OpenAI、Gemini，通过 Ollama 或 vLLM 跑的本地模型，或者第三方 relay。</p>
<p>AI-Native Workspace 把模型视为最容易替换的一层。这是刻意设计的。模型质量和价格一直在变。一个只能在单一供应商上工作的流程很脆弱。</p>
<p>实际使用中，框架倾向于通过环境配置切换 provider。日常编辑可以用便宜模型，深度架构任务再切强推理模型。workspace 本身不需要知道当前跑的是哪一个。</p>
<h3 id="第二层agent">第二层：Agent</h3>
<p>Agent layer 是读取指令、理解任务并调用工具的软件。今天可能是 Claude Code，明天可能是 Codex CLI、Cursor、Aider、Continue，或者一个自定义 LangGraph agent。</p>
<p>这里的关键设计是：工作区指令用普通 markdown 写。文件名可以叫 <code>CLAUDE.md</code>，但内容并不天然只属于 Claude。任何能读 markdown 的 agent 都能理解这套约定。</p>
<p>这让 <code>CLAUDE.md</code> 变成 agent 的运行时配置，而不只是 README。它告诉 agent：有哪些项目，状态放在哪里，如何结束一次会话，如何恢复工作，哪些文档是权威来源。</p>
<h3 id="第三层protocol">第三层：Protocol</h3>
<p>Protocol layer 定义 agent 如何跟外部世界交互。</p>
<p>这里分三档：</p>
<ol>
<li><strong>File protocol</strong> — <code>CLAUDE.md</code>、<code>inbox/TODO.md</code>、<code>wiki/MANIFEST.md</code> 这类 markdown 约定。</li>
<li><strong>CLI tools</strong> — git、curl、docker、Python、Node、Hugo，或者任何本地命令行工具。</li>
<li><strong>MCP servers</strong> — 可选扩展，用来接搜索、数据库、API、游戏服务器、内部系统等。</li>
</ol>
<p>重点是：MCP 不是前提。最低可用协议是一份能读的文件。哪怕没有任何 MCP server，只要 agent 能读 markdown，它仍然可以运行这个 workspace 的核心流程。</p>
<p>这是项目里最实用的约束之一：<strong>file protocol 是地板，MCP 是天花板。</strong></p>
<h3 id="第四层application">第四层：Application</h3>
<p>Application layer 才是真正的工作区：项目、inbox、wiki、work log 和累积下来的知识。</p>
<p>一个最小工作区大概长这样：</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>workspace/
</span></span><span style="display:flex;"><span>├── CLAUDE.md              # workspace-level cognitive config
</span></span><span style="display:flex;"><span>├── inbox/                 # low-friction capture buffer
</span></span><span style="display:flex;"><span>│   ├── README.md
</span></span><span style="display:flex;"><span>│   └── TODO.md
</span></span><span style="display:flex;"><span>├── projects/              # concrete work
</span></span><span style="display:flex;"><span>│   ├── project-a/
</span></span><span style="display:flex;"><span>│   │   └── CLAUDE.md
</span></span><span style="display:flex;"><span>│   └── project-b/
</span></span><span style="display:flex;"><span>│       └── CLAUDE.md
</span></span><span style="display:flex;"><span>└── wiki/                  # matured knowledge base
</span></span><span style="display:flex;"><span>    └── MANIFEST.md        # progressive-loading index
</span></span></code></pre></td></tr></table>
</div>
</div><p>这一层让 AI-Native Workspace 不只是 agent 配置模板，而是一套实际的知识生命周期。</p>
<h2 id="亮点一先-inbox后-wiki">亮点一：先 Inbox，后 Wiki</h2>
<p>这个项目里最有价值的想法可能也是最简单的：<strong>不要要求每条记录一开始就进入结构化知识库。</strong></p>
<p><code>inbox/</code> 是草稿缓冲区。会话总结、临时笔记、半成型想法、TODO、会议碎片都可以先放进去。第一天不需要完美分类。</p>
<p>只有当某个信息反复变得有用时，它才应该沉淀进 <code>wiki/</code>。</p>
<p>这比“永远保持一个干净知识库”的想法更适合真实 AI-agent 工作流。Agent 会产生大量中间状态，人类也会在跨会话时忘掉细节。Inbox 给双方一个低成本的上下文缓冲区，先保存，再判断哪些东西值得长期存在。</p>
<h2 id="亮点二渐进式上下文加载">亮点二：渐进式上下文加载</h2>
<p>AI agent 经常不是因为上下文太少失败，而是因为加载了太多无关上下文而失焦。一个有几百篇笔记的 workspace 不可能每次都塞进 prompt。</p>
<p>AI-Native Workspace 用 <code>wiki/MANIFEST.md</code> 做轻量索引。Agent 先读 manifest，看每个文件的一行摘要，再只加载真正相关的文件。</p>
<p>这跟数据库索引是同一个思想：</p>
<ul>
<li>先扫便宜的 index，</li>
<li>选出少数相关条目，</li>
<li>需要细节时再读取正文。</li>
</ul>
<p>结果是，workspace 可以扩展，而不会把每次会话都变成 context dump。</p>
<h2 id="亮点三分层-claudemd">亮点三：分层 <code>CLAUDE.md</code></h2>
<p>框架在多个层级使用 <code>CLAUDE.md</code>：</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>~/.claude/CLAUDE.md              # global preferences
</span></span><span style="display:flex;"><span>&lt;workspace&gt;/CLAUDE.md            # workspace map and shared workflows
</span></span><span style="display:flex;"><span>&lt;workspace&gt;/&lt;project&gt;/CLAUDE.md  # project-specific instructions
</span></span></code></pre></td></tr></table>
</div>
</div><p>这避免根目录文件变成 500 行的杂物间。</p>
<p>根 <code>CLAUDE.md</code> 应该是 router：告诉 agent 有什么、去哪看、哪些规则全局适用。项目级细节留在各项目自己的文档里。稳定知识进入项目文档或 wiki。临时状态留在 inbox。</p>
<p>这个分离很朴素，但非常重要。它让一个用了几个月的 workspace 仍然可读。</p>
<h2 id="亮点四面向-agent-优化但人类也能接手">亮点四：面向 Agent 优化，但人类也能接手</h2>
<p>AI-Native Workspace 是为 agent 设计的，但没有把系统藏在人类看不懂的自动化后面。</p>
<p>这很重要，因为人类是 fallback operator。API 会挂，模型会退化，工具会坏，agent 有时也会迷路。这时，人类应该能读同一组文件，理解当前状态，并继续推进工作。</p>
<p>所以框架尽量避免魔法。普通 markdown，普通目录，普通 CLI 工具，显式协议。</p>
<h2 id="亮点五把反模式当成一等设计对象">亮点五：把反模式当成一等设计对象</h2>
<p>这个 repo 很明确地写了“不应该做什么”。比如：</p>
<table>
  <thead>
      <tr>
          <th>避免</th>
          <th>更好的做法</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>一上来就做多 Agent 编排</td>
          <td>先用单 Agent，只有上下文真的不够时再拆</td>
      </tr>
      <tr>
          <td>启动时加载整个 workspace</td>
          <td>先读索引，再按需深入</td>
      </tr>
      <tr>
          <td>所有东西直接写进 wiki</td>
          <td>先进入 inbox，让知识自然沉淀</td>
      </tr>
      <tr>
          <td>把根 <code>CLAUDE.md</code> 写得很长</td>
          <td>根文件做 router，细节下沉</td>
      </tr>
      <tr>
          <td>把 <code>TODO.md</code> 当成绝对命令队列</td>
          <td>执行前验证 TODO 是否过期</td>
      </tr>
      <tr>
          <td>核心流程依赖 MCP</td>
          <td>文件协议做核心，MCP 按需添加</td>
      </tr>
  </tbody>
</table>
<p>这说明项目不是从白板上画出来的，而是从真实使用中长出来的。这里的反模式基本都是日常运行多项目 AI workspace 后留下的伤疤。</p>
<h2 id="谁适合用">谁适合用？</h2>
<p>AI-Native Workspace 适合这些人：</p>
<ul>
<li>每天都用 AI coding agent，</li>
<li>同时推进多个项目，</li>
<li>在意跨会话连续性，</li>
<li>希望在不同模型供应商之间切换而不重写 workflow，</li>
<li>工作会在几个月内持续积累知识。</li>
</ul>
<p>如果你只有一个短期项目，它可能有点重。那种情况下，一个简单的 <code>CLAUDE.md</code> 就够了。</p>
<h2 id="bootstrap-文件就是产品的一部分">Bootstrap 文件就是产品的一部分</h2>
<p>这个 repo 里有一个很有意思的文件：<code>BOOTSTRAP.md</code>。它不是写给人看的，而是写给 AI agent 看的。</p>
<p>预期用法很直接：</p>
<ol>
<li>创建一个空 workspace 目录。</li>
<li>打开 Claude Code、Codex、Cursor 或其他 agent。</li>
<li>把 <code>BOOTSTRAP.md</code> 作为第一条 prompt 粘进去。</li>
<li>让 agent 自己生成初始结构。</li>
</ol>
<p>这让项目有点“自举”的味道：框架把自己解释给那个将要搭建它的 agent。</p>
<h2 id="最后">最后</h2>
<p>AI-Native Workspace 不想做一个重型平台。它的赌注几乎相反：AI-native 工作流里真正耐用的部分，应该是简单文件、明确约定和清晰边界。</p>
<p>模型会变，agent 会变，MCP server 会增减。但一个结构良好的 workspace 可以穿过这些变化。</p>
<p>核心洞察是：</p>
<blockquote>
<p><strong>不要把 workflow 建在某个模型上。把它建在一个能替换模型的 workspace 架构上。</strong></p>
</blockquote>
<p>如果你想把 AI coding agent 变成一个长期运行的研究或工程伙伴，这个区别很关键。</p>
<p>项目链接：<a href="https://github.com/RedDragonHQ/ai-native-workspace">RedDragonHQ/ai-native-workspace</a></p>
<p>如果你有任何疑虑，或者想进一步了解这套架构如何在真实工作区里运行，欢迎随时联系：<a href="mailto:contact@aibrew.ai">contact@aibrew.ai</a>。</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
