<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN"><generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator><link href="https://ifuryst.github.io/feed.xml" rel="self" type="application/atom+xml"/><link href="https://ifuryst.github.io/" rel="alternate" type="text/html" hreflang="zh-CN"/><updated>2026-05-10T04:12:31+00:00</updated><id>https://ifuryst.github.io/feed.xml</id><title type="html">ifuryst</title><subtitle>📝 &amp; 💭 </subtitle><entry xml:lang="zh"><title type="html">Browser Use详解</title><link href="https://ifuryst.github.io/blog/2026/open-browser-use/" rel="alternate" type="text/html" title="Browser Use详解"/><published>2026-05-09T00:00:00+00:00</published><updated>2026-05-09T00:00:00+00:00</updated><id>https://ifuryst.github.io/blog/2026/open-browser-use</id><content type="html" xml:base="https://ifuryst.github.io/blog/2026/open-browser-use/"><![CDATA[<h1 id="缘起">缘起</h1> <p>一切的源头还是源于前面我们开源的<a href="https://github.com/iFurySt/open-codex-computer-use">Open-Computer-Use</a>，背后的故事可以看这篇<a href="https://www.ifuryst.com/blog/2026/the-urge-to-solve/"><strong>解决问题的原始冲动</strong></a>。</p> <p>这次是因为OpenAI的Codex.app上有release出了Browser Use的能力</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327226_1-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327226_1-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327226_1-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327226_1.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>分析了一下，又有很多收获，也补齐了一些之前未曾主动去了解的认知缺失部分。收获很大，我觉得值得写一篇文章聊一下。行文依然是关注过程重于结果，方法论或者思维的跃迁才是最重要的。</p> <h1 id="探索">探索</h1> <p>整个探索过程依然和之前在<a href="https://www.ifuryst.com/blog/2026/the-urge-to-solve/"><strong>解决问题的原始冲动</strong></a>里分析的是类似的，我们首先依然是拉<a href="https://github.com/iFurySt/harness-template">Harness Template</a>（PS：现在我会用更加便捷的方式<a href="https://github.com/iFurySt/harness-cli"><code class="language-plaintext highlighter-rouge">harness-cli</code></a> ：</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>➜ harness-cli open-browser-use
Select template language:
  1. English
  2. Chinese
Choice <span class="o">[</span>1]: 2
Using Chinese template from https://github.com/iFurySt/harness-template-cn.git
copy 53 file<span class="o">(</span>s<span class="o">)</span>
Initialized git repository
</code></pre></div></div> <p>然后开始分析官方的，这样可以把整个探索的过程不断留存下来，未来需要的时候可以不断查询和溯源。</p> <p>这次的起手是：</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>➜  <span class="nb">cd</span> ~/.codex/plugins/cache/openai-bundled/browser-use
➜  browser-use tree <span class="nt">-I</span> <span class="s1">'node_modules'</span>
<span class="nb">.</span>
└── 0.1.0-alpha2
    ├── assets
    │   ├── browser.png
    │   └── composer-icon.png
    ├── docs
    │   └── capabilities
    │       ├── browser
    │       │   ├── viewport.md
    │       │   └── visibility.md
    │       └── tab
    ├── scripts
    │   └── browser-client.mjs
    └── skills
        └── browser
            ├── agents
            │   └── openai.yaml
            └── SKILL.md

11 directories, 7 files
</code></pre></div></div> <p>可以看到，主要是一个<code class="language-plaintext highlighter-rouge">skill</code>+<code class="language-plaintext highlighter-rouge">browser-client.mjs</code>这个client。所以我们可以快速从这里分析切入。话不多说，我直接丢一个架构图</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327227_2-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327227_2-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327227_2-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327227_2.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>总体而言iab（in-app browser）是Codex.app自己抽象的一个浏览器，用windowId+sessionId作唯一id，整体表现为单窗口单会话只有一个浏览器窗口。</p> <p>展开之前，先聊一点浏览器相关的</p> <h2 id="chrome">Chrome</h2> <p>我们从下往上看，首先是<a href="https://www.chromium.org/chromium-projects/">Chromium</a>，是一个开源的浏览器内核项目，Chrome就是基于这个项目构建的商业浏览器，现在市面上很多（AI）浏览器都是基于此二开的。后续我们都统一看待，表述为Chrome。理解好Chrome对于我们在上层构建Browser Use事半功倍，也能很清晰的知道现在各种操作浏览器的手法有什么差异</p> <p>先丢一张全局的架构图：</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327227_3-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327227_3-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327227_3-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327227_3.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>里面细节比较多，感兴趣可以扫一眼，这个主要关注点事外围大框。有个大概概念，现在我们一路走下来看看：</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327228_4-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327228_4-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327228_4-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327228_4.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>首先Chrome是多进程架构的，按照不同的类型用不同的进程来承载。比如浏览器打开一个页面会涉及到诸如以下这些进程</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327229_5-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327229_5-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327229_5-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327229_5.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>这个我们在Chrome自带的任务管理器里可以看到对应的进程</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327229_6-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327229_6-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327229_6-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327229_6.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>我们也可以直接命令行统计一下现在的进程情况</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327229_7-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327229_7-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327229_7-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327229_7.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>这样做的好处是隔离和安全，比如一个tab爆炸对应的进程挂了，也不会影响别的tab页面</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327229_8-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327229_8-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327229_8-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327229_8.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>安全方面借助进程来实现沙盒隔离的能力，比如Renderer Process着重处理用户输入的进程会限制针对系统文件的访问，这样有助于提高安全性</p> <p>其中我们最主要关心的还是Browser Process和Renderer Process了。Browser负责全局（进程）调度的大脑，能管理所有的进程。而Renderer Process是负责渲染的，通常情况下每个tab/iframe都是一个独立的进程，也就是所谓的<a href="https://developer.chrome.com/blog/inside-browser-part1#site-isolation">站点隔离（Site Isolation）</a>。因此平时最重要也是进程最多的就是Renderer ，比如一个tab有一个main frame，这个tab里还有2个iframe，这个情况下就会有3个Renderer Process（实际是会受same site影响的）</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327229_9-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327229_9-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327229_9-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327229_9.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>在此之外，我们需要了解的一个东西是Service Worker，普通的页面都会对应到tab，但是Service Worker是独立在页面之外的，现在的v3浏览器插件基于Service Worker的机制之上了，简单表示为：</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Browser Process
 ├── Renderer Process <span class="o">(</span>网页<span class="o">)</span>
 │     ├── DOM
 │     ├── JS
 │     └── 页面逻辑
 │
 └── Service Worker Process
       ├── fetch 拦截
       ├── cache
       ├── push
       ├── background <span class="nb">sync</span>
       └── extension background logic
</code></pre></div></div> <p>这个后续我们讲浏览器插件里会重点提到。</p> <p>到这里我们对于Chrome的整体机制有个初步的认知了，我不打算完全讲到透，内容量比较多，对大部分人来说也不一定有价值，有兴趣的可以自己看我最后贴的一些链接自行深入去了解</p> <h2 id="codex-browser-use">Codex Browser Use</h2> <p>回归到Codex APP本身的Browser Use能力，主要由Browser Use（iab，应用内部浏览器页面）和Chrome（浏览器插件）组成，还是这张架构图：</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327227_2-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327227_2-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327227_2-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327227_2.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>两者各有优缺点。Codex通过抽象封装好的<code class="language-plaintext highlighter-rouge">browser-client.mjs</code> 去调用，等于对使用方屏蔽了，通过Skill的差异来控制。</p> <p>这里值得注意的是，Codex内置了node runtime，因此实际使用中可以编排出类似这样的命令去调用：</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>await tab.goto<span class="o">(</span><span class="s1">'https://github.com/iFurySt/open-codex-computer-use/issues'</span><span class="o">)</span><span class="p">;</span>
await tab.playwright.waitForLoadState<span class="o">({</span> state: <span class="s1">'domcontentloaded'</span>, timeoutMs: 15000 <span class="o">})</span><span class="p">;</span>
const snap3 <span class="o">=</span> await tab.playwright.domSnapshot<span class="o">()</span><span class="p">;</span>
const relevant3 <span class="o">=</span> snap3.split<span class="o">(</span><span class="s1">'\n'</span><span class="o">)</span>.filter<span class="o">(</span>l <span class="o">=&gt;</span> /Open|Closed|Issues|issue|No results|open-codex-computer-use|Pull requests|Starred/.test<span class="o">(</span>l<span class="o">))</span><span class="p">;</span>
nodeRepl.write<span class="o">(</span>relevant3.slice<span class="o">(</span>0, 160<span class="o">)</span>.join<span class="o">(</span><span class="s1">'\n'</span><span class="o">))</span><span class="p">;</span>
</code></pre></div></div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327230_11-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327230_11-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327230_11-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327230_11.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>这样可以让使用方进入一种有状态的上下文中，可以不断操作，而不需要反复去获取和定位一些诸如tab和元素等</p> <p>接下去分别看看两者</p> <h3 id="iabin-app-browser">IAB(In-App Browser)</h3> <p>这个在Codex.app里表现为Browser Use插件</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327230_12-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327230_12-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327230_12-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327230_12.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>就是右侧边栏那个内置的网页</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327230_13-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327230_13-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327230_13-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327230_13.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>这个方案是因为Codex.app本身就是Electron写的，内置的就已经有浏览器的能力了，他的做法是在中间自己抽象了一层业务层，以单个codex.app的窗口（window）+会话（session）唯一对应到一个浏览器页面，这个页面对应到Electron的WebContents，细节对上层屏蔽了。</p> <p>这里就对应到我们前面聊Chrome里提到的部分，这个对于本身已经有类似产品的，是有不错的参考意义的。不过我不打算展开聊，有需要的人自行深入，有需要或问题也可以email我，我可以分享一些DeepDive时候的一些见解。</p> <p>iab的一个优点是相对简单，且对于用户来说丝滑一些，直接在APP里就可以预览正在操作的浏览器</p> <p>但是弊端也很明显：</p> <ul> <li>目前设计只能打开一个页面，打开其他页面会顶掉前面的页面</li> <li>内置的无法安装一些浏览器插件，尤其是针对某些操作依赖某些浏览器插件时</li> <li>无法无缝接入用户的浏览器</li> </ul> <h3 id="chrome-extension">Chrome Extension</h3> <p>在Codex.app里放在了Computer Use里的Google Chrome（不知道为什么放在这里🤡）</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327231_14-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327231_14-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327231_14-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327231_14.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327231_15-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327231_15-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327231_15-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327231_15.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>搭配<a href="https://chromewebstore.google.com/detail/codex/hehggadaopoacecdllhhajmbjkdcmajg">Chrome插件</a>使用</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327231_16-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327231_16-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327231_16-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327231_16.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>浏览器插件的形态会更加通用，适应力更强。一些Chrome内核的浏览器也都可以用，而且可以做到在浏览器里模拟cursor的操作。</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327232_17-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327232_17-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327232_17-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327232_17.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>这里不得不提一下OpenAI的巧思，或者说产品力</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327232_18-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327232_18-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327232_18-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327232_18.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>任务会以分组Group来聚合，这点就非常妙，这个任务下的tab都集中在这个分组，这样任务结束的时候直接整个分组关了就不会污染用户的tab。</p> <p>在此期间，这些tab都是非激活状态的，也就是这个浏览器插件是具备后台操作能力的，和Computer Use的Background能力一致，非常丝滑的产品体验！</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327232_19-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327232_19-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327232_19-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327232_19.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>操作过程如果去查看tab，也能看到和Computer Use类似的鼠标悬浮和移动，让人可以直观感受到在做什么</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327232_20-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327232_20-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327232_20-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327232_20.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>结束后除了收掉Group和内部的tab以外，还有可能出现移交tab到Codex这个通用分组下。这些都是写在skill里的指导。</p> <h3 id="cdpchrome-devtools-protocol">CDP（Chrome DevTools Protocol）</h3> <p>这个是第三种方式，我不详细展开了，本质上是通过CDP协议去连到Chrome，是最技术的方案，需要Chrome以Remote Debugging / CDP监听的方式去启动的，对于普通用户几乎不可能，对于研发人员接触的比较多。</p> <p>现在Chrome官方也提供了<a href="https://github.com/ChromeDevTools/chrome-devtools-mcp">MCP</a>，以及配套的<a href="https://github.com/ChromeDevTools/chrome-devtools-mcp/tree/main/skills/chrome-devtools-cli">chrome-devtool-cli</a>。类似Playwright、Selenium、puppeteer本质上都是基于CDP做的。也是最根源的方式，包括很多云端Sandbox里包装了Chrome的也都是通过CDP去交互的</p> <p>至此我们对于codex拥有的整个浏览器操作已经有了全局的认知了，很多技术细节没有再额外展开，有兴趣的可以按需找AI一点通一下。</p> <h1 id="open-browser-use">Open Browser Use</h1> <p>为什么我们需要一个开源替代方案呢？</p> <ul> <li>因为甚至连Codex CLI都无法用Codex.app的这两个Browser Use的能力，我们需要一个平台中立的方案，可以让所有的AI Agent轻易使用，可以让所有的AI应用轻易集成</li> <li>技术实现不等于产品实现。我会尽量用产品的角度来推进这个开源项目，因为技术方案前面CDP一节里提到了好几个，但是他们对于AI开箱即用的能力太弱了，或者他们天然的定位就不是面向AI的。Chrome MCP好一点点，但是也有很多痛点在里面。</li> </ul> <p>Open Browser Use的实现方案和Codex.app的extension路线是一致的，我希望的定位是打造成超集的存在，就是在满足原有的一切能力以外还能有一些额外的能力可以赋能上层业务的开箱即用</p> <p><a href="https://github.com/iFurySt/open-codex-browser-use">https://github.com/iFurySt/open-codex-browser-use</a></p> <p>目前是以浏览器插件的形式存在（插件商店版本还在审核，目前直接通过<a href="https://github.com/iFurySt/open-codex-browser-use/releases">zip/crx</a>安装）</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327233_21-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327233_21-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327233_21-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327233_21.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-05-09-open-browser-use/1778327233_22-480.webp 480w,/assets/img/2026-05-09-open-browser-use/1778327233_22-800.webp 800w,/assets/img/2026-05-09-open-browser-use/1778327233_22-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-05-09-open-browser-use/1778327233_22.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>具体使用方式参见GitHub里，这边就不展开赘述了。</p> <h1 id="尾声">尾声</h1> <p>其实这篇文章我愿称之为半成品，因为很多原来我预想和规划的内容我没有完整的展现出来，最近的时间精力也不够完全支撑我写完这篇文章到我满意的程度，但是又不希望因为不完美而不完成，因此还是决定发出来，因为我相信哪怕它不完美，依然可以触达很多的人。做人和做事都是如此，追求完成应是第一要务，在此之上，能追求完美的人，才有机会成为传奇。</p> <p>回到Codex和OAI本身，OpenAI虽然人才流失了很多，但是依然妨碍不了继续牛逼，或许是组织足够厉害，也可能是现在还在的人里充满了人才，不管怎样，最近这段时间持续给大家递送更好的产品，喜闻乐见。在这背后，也不断激发我对于产品力的思考。</p> <p><strong>Coding≠Engineering, Technology≠Product.</strong></p> <p>AI带给我们的很多，但是还有很多东西其（暂时）无法带给我们。我依然相信持续保持好奇心、敢于尝试的勇气，以及立刻行动的执行力，是支撑着我们探索无尽未知的原始动力</p> <h1 id="references">References</h1> <p>想了解现代浏览器的可以看Chrome这四篇Post文章，简单易懂：</p> <ol> <li><a href="https://developer.chrome.com/blog/inside-browser-part1">Inside look at modern web browser (part 1)</a></li> <li><a href="https://developer.chrome.com/blog/inside-browser-part2">Inside look at modern web browser (part 2)</a></li> <li><a href="https://developer.chrome.com/blog/inside-browser-part3">Inside look at modern web browser (part 3)</a></li> <li><a href="https://developer.chrome.com/blog/inside-browser-part4">Inside look at modern web browser (part 4)</a></li> </ol>]]></content><author><name></name></author><category term="AI"/><category term="AI"/><summary type="html"><![CDATA[缘起]]></summary></entry><entry xml:lang="zh"><title type="html">解决问题的原始冲动</title><link href="https://ifuryst.github.io/blog/2026/the-urge-to-solve/" rel="alternate" type="text/html" title="解决问题的原始冲动"/><published>2026-04-21T00:00:00+00:00</published><updated>2026-04-21T00:00:00+00:00</updated><id>https://ifuryst.github.io/blog/2026/the-urge-to-solve</id><content type="html" xml:base="https://ifuryst.github.io/blog/2026/the-urge-to-solve/"><![CDATA[<p>AI时代改变的只是解决问题的方法，但是Geek或者说解决问题的人，依然是不变的。</p> <p>今天就借助这两天做<a href="https://github.com/iFurySt/open-codex-computer-use">Open Computer Use</a>的经历来聊聊这个。</p> <p>背景是周五OpenAI发了一片文章<a href="https://openai.com/index/codex-for-almost-everything/">https://openai.com/index/codex-for-almost-everything/</a>，然后Codex APP也更新了，其中Background Computer Use，着实让我和我的小伙伴震惊了，我们对于其带来的非抢占式Computer Use和那个灵动又自然的鼠标样式深深震撼了。在此之前我们的认知都是Connectors(比如Gmail之类的)+GUI（鼠标和键盘）去实现的Computer Use。但是OAI还是交出了一份牛逼的作业。</p> <p>我们花了一天的时间分析和复刻，成功实现并开源了这个版本，对外通过MCP的方式可以给到所有的AI Agent去直接拥有非抢占式Computer Use的能力，录屏丢油管了：</p> <figure> <iframe src="https://www.youtube.com/embed/2s6aVpGiwaQ" class="img-fluid rounded z-depth-1" style="width: 100%;aspect-ratio: 16 / 9; height: auto; display: block;" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" width="auto" height="auto"/> </figure> <p>这一版我们把功能性的都做掉了，也就是open-computer-use可以无缝的替换掉官方的computer-use，除了那个灵动的鼠标样式。我们先来说说这个过程，记得是早上11点开始处理，到凌晨2点正式发掉，差不多12个小时的时间，我们完成了这个曾经几乎不可能完成的。这背后的故事，我有话要说</p> <h1 id="解决问题的原始冲动">解决问题的原始冲动</h1> <p>回顾ChatGPT发布前的年代，从学生时代起，捣鼓就成了主旋律，也是我一直在说的，just for fun，也正是这样，就算把自己的喜好玩成了自己的职业，内核一直没有变化过，就是发现问题，尝试解决，最后获得满足和喜悦。和玩游戏或者刷短视频在本质上没有太大的区别，都是人在满足自身的生化需求</p> <p>但是过程还是有一定的差异的。我们会分析问题，收集信息，解决问题，验证结果并交付，整个过程可以按部就班，也可以充满了各种奇思妙想。</p> <p>回到09年的时光，那时候除了灰鸽子、肉鸡之类的流行的东西以外，还有二进制逆向也很火，加密混淆脱壳这些字眼能勾起不少的回忆，还记得当时为了能逆向一个二进制，研究各种脱壳、汇编和OllyDbg等等，对着枯燥无味的界面津津有味的调试</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746581_18-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746581_18-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746581_18-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746581_18.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>回忆杀一波。再加上后来做安全，攻防更加对于解决（未知）问题的能力提出了新的视角。虽然我很菜，但是我学到了很多，不是工具使用技巧，而是那个思想。</p> <p>现在仔细想想，其实也不是那个时间培养的所有的这些习惯和能力，我能回忆起更加老的经历，似乎从小就喜欢用自己感悟的野家拳去整活，不喜欢从寻常路，这个内核一直跟随着我，直到今天</p> <p>就好像Logan昨天repost了他在前年Devin刚出来时写的文章附带的那个核心观点：</p> <blockquote> <p>It’s been two years since I wrote this article, and the premise is still true: software engineers are paid to solve problems. Coding is just a tool to do so.</p> </blockquote> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746581_19-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746581_19-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746581_19-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746581_19.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>如果有人觉得AI的Coding能力可以抬走自己，那其实只是把自己当作一个Coder。有2个方向可以聊：</p> <ol> <li>从AI所有的角度思考，确实可以抬走自己，而不是因为Coding</li> <li>把自己当作解决问题的人，或者提出解决方案的人，那AI的Coding能力，只是其中很小的一部分</li> </ol> <p>这也是为什么我们会很兴奋的在一天内把这个东西搞定的原因，因为我们都保留了解决问题的原始冲动，而且AI为我们提供了更加强大的军火库，能阻碍我们的，只有我们的思维。</p> <h1 id="打破一切的墙">打破一切的墙</h1> <p>首先就是执行，也是一样的方法，在开始之前，我们需要足够的信息支撑我们（或者AI）的下一步行动。那我们就从我们想要的这个开始。</p> <p>我依然选择从我们沉淀出来的<a href="https://github.com/iFurySt/harness-template">harness-template</a>开始，作为一个template开启一个新的repo，好处是不再需要额外写什么东西了，直接拉过来用，AI在分析和执行过程中会持续把一些内容沉淀到这个repo里的docs里，这何尝不是Karpathy提出的LLM Wiki呢？</p> <p>其实我已经不知道一开始是如何发掘的，就是自然而然的，我们分析出了Codex APP是靠着一个独立的MCP服务来实现Computer Use的，在这个位置<code class="language-plaintext highlighter-rouge">~/.codex/plugins/cache/openai-bundled/computer-use/1.0.750/Codex Computer Use.app</code></p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746582_20-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746582_20-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746582_20-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746582_20.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>小小的26.5MB，承载了这个牛逼的功能，不仅感到欣喜，因为分析它的工作量不会特别大。后来我们进一步分析出其中有个Client服务<code class="language-plaintext highlighter-rouge">SkyComputerUseClient</code> ，然后我们就打算开始了，我已经不记得了，但是好在我们有template</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746582_21-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746582_21-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746582_21-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746582_21.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>翻看下历史记录，可以很明确的知道，我们一开始就是让Codex去帮忙分析这两个，然后内容不断落到了这个repo里了。期间并行的几个session都在做不通的工作，关于Codex Computer Use的全貌也开始慢慢浮现了：</p> <ul> <li>基于Swift写的。知道这个后，我们也直接用swift实现（还记得以前学swift的艰难，现在AI分分钟写完）</li> <li>整体对外是MCP提供的，有9个工具。知道后直接复刻</li> <li>原理是通过Accessibility（AX）去和UI树交互，从而达到可以在后台与APP交互，并附带截图回来做多模态推理下一个Action。在AX不行的时候会回推到osascript（Apple script），甚至是鼠标操作。</li> </ul> <p>一开始我们并不打算直接提供MCP，这就是神奇所在。Usoon上完厕所回来跟我说，我们应该直接做一个MCP服务，听完他解释的，我立马表示认可，这或许就是人类的蜂巢智慧，一个人再牛逼，也永远有偏见。</p> <p>一开始我们是通过让codex将他上下文里的9个工具的描述和参数输出，实际上是有点出入的，不是100%严格对齐的，后来我们直接给codex配齐了mitmdump，然后让其调用自己的codex去实现抓包dump，里面有大量的system prompt和tools，一下就能严格获取描述和参数定义。</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746584_22-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746584_22-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746584_22-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746584_22.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>这就是CLI的魅力，套娃获取，后续我们对比评测也是走了一样的方式，query里明确指定叫他走computer-use或者走open-computer-use去做任务，就能达到对比并且dump过程得到数据，这个就是eval和改进最需要的东西！</p> <p>在忙碌之余，我甚至还拉了一个独立的session，叫他直接设计LOGO，通过直接生成几份SVG，往来几下，就得到了一个我们要的LOGO了（现在看来，回头要换一下那个鼠标，换成无柄的）</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746585_23-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746585_23-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746585_23-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746585_23.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746587_24-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746587_24-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746587_24-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746587_24.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>ffmpeg/magick之类的工具用得比谁都溜，而且拥有多模态能力，自己可以验收结果，这点非常舒服</p> <p>在往后其实是对工具执行结果做一个校验，一开始是通过让codex对computer-use的9个工具分别做3个调用输出samples来迭代，后来发现这样其实也不太严格对齐，因为又单独开了一个独立的session，去分析为什么不能通过mcp client直接调用Codex Computer Use，本质上它就是一个符合MCP协议的，前面试了一下一连上进程就死。这次分析发现，实际上是因为SkyComputerUseClient只认同样签名的父进程调用，因为我们让Codex用go直接拉一个cli，通过一定的手段直接吃Codex app的签名过去，顺利执行了，现在我们就拥有了通过CLI执行官方MCP的能力了。</p> <p>有了这个能力后，可以非常方便的让Codex去校验两边的输入输出做对齐了，这也是经常在实践中遇到的问题，当AI一直解决不了一个问题的时候，你叫他再试试，努力什么的都没用，因为他缺少你想要的那个东西的相关上下文，因此能提供上下文给AI，是人的责任和义务，也是最终AI能走到什么地步的关键。（这个贯穿在这篇文章或者说这次整活的全过程）</p> <p>至此我们的功能性都解决了， 其他是给流程和丝滑度加分的产品力。因为是一个独立的服务（APP），因此需要单独获取Accessibility和Screen &amp; System Audio Recording的权限，所以为了体验好，OpenAI借助Software.inc（被前者收购了）的能力，做了一个体验超级丝滑的浮窗，只要拖动就行，这个东西也花费了我们一点时间去调试和改造，但是效果还是很棒的（具体参见YouTube里的录屏）</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746587_25-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746587_25-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746587_25-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746587_25.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>以及发布到npmjs，通过npm i -g open-computer-use就能一键安装，这些全都是AI做的，给一个gh，帮忙点击一些东西就完事了。</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746590_26-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746590_26-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746590_26-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746590_26.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>还包括一键安装到codex的mcp或者codex.app的plugin，也包装了plugin。方便一键启用，而不需要复制json之类的去对应的配置里配置。这些都是丝滑的体现</p> <p>后来的迭代中，我们直接用了自己的open-computer-use做dog fooding，结果是非常丝滑，很有效，功能性上和官方的没啥差别了。</p> <p>最后就是传统艺能了，录屏和剪辑，问AI要了音频网站，随便捞了一个配乐，至此这个开源项目就可以发布了。</p> <p>但是故事到此还没结束，功能性满足之后，我们还是放不下那个鼠标，到X上逛了一下发现Software.inc的Ari发的：</p> <p>他们是3个人实现的这个，我就把视频下载下来，丢给codex去抽帧分析，开始了单独实现一个StandaloneCursorLab的项目，几个小时后，我们有了一个还算过得去的初始版本：</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746591_27-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746591_27-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746591_27-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746591_27.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>这个版本还是调优过的，也让codex去找一些相关的paper和开源项目做参考和借鉴，里面最关键的就是曲线的绘制和选择以及cursor移动速度的控制。</p> <p>就这个版本直接上，其实是没问题的，但是还是没有刻画出原版的那种灵动的感觉！我又让grok帮忙基于那个推文去挖掘一下信息，看看能否找到一些开源的方案，</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746596_28-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746596_28-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746596_28-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746596_28.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746598_29-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746598_29-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746598_29-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746598_29.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>只能整体从他们的推文和其他的评论里推断出一些关键字，其中：</p> <blockquote> <p>calculates natural and aesthetic motion paths 是我最想要的，但是计算出几个都不是很理想。然后我又新开了一个独立的session，开始逆向工程，因为我想要的一切算法都在二进制里，然后就看到了这些画面：</p> </blockquote> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746600_30-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746600_30-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746600_30-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746600_30.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746601_31-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746601_31-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746601_31-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746601_31.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746601_32-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746601_32-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746601_32-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746601_32.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-21-the-urge-to-solve/1776746602_33-480.webp 480w,/assets/img/2026-04-21-the-urge-to-solve/1776746602_33-800.webp 800w,/assets/img/2026-04-21-the-urge-to-solve/1776746602_33-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-21-the-urge-to-solve/1776746602_33.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>不敢想一个人要去逆向分析这些东西，需要耗费多久？AI就可以自主的去完成，然后实现并验证。</p> <figure> <iframe src="https://www.youtube.com/embed/KRUq5GUHv1Q" class="img-fluid rounded z-depth-1" style="width: 100%;aspect-ratio: 16 / 9; height: auto; display: block;" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" width="auto" height="auto"/> </figure> <p>至此艺术已成</p> <h1 id="尾声">尾声</h1> <p>一段小旅程，也是一段奇幻冒险。</p> <p>想象力和行动加起来，是一个很厉害的组合能力，在畅想诗和远方的同时，也能稳稳把住方向盘，用力踩油门。</p>]]></content><author><name></name></author><category term="AI"/><category term="AI"/><category term="Product"/><summary type="html"><![CDATA[AI时代改变的只是解决问题的方法，但是Geek或者说解决问题的人，依然是不变的。]]></summary></entry><entry xml:lang="zh"><title type="html">我们是如何在AI Era飙车的</title><link href="https://ifuryst.github.io/blog/2026/speedrunning-the-ai-era/" rel="alternate" type="text/html" title="我们是如何在AI Era飙车的"/><published>2026-04-02T00:00:00+00:00</published><updated>2026-04-02T00:00:00+00:00</updated><id>https://ifuryst.github.io/blog/2026/speedrunning-the-ai-era</id><content type="html" xml:base="https://ifuryst.github.io/blog/2026/speedrunning-the-ai-era/"><![CDATA[<h1 id="写在前面">写在前面</h1> <p>好久没有沉下心来好好写点有价值的文章分享了，最近连续战斗了3周多，也是时候稍微松下油门，讲讲我们在做的事情，从个人和团队以及组织的角度来讲讲我们对于AI横行的时代下，如何应对变化并拥抱变化。</p> <p>我们是在火山下的<strong>AgentSphere</strong>团队，主要面向B端市场去递送SuperApp，目前我的看法是可以斗胆的对标一下OpenAI目前在推进的Frontier和SuperApp，也就是以ChatGPT+Codex（CodingAgent）+B端市场的逻辑。$840B的第二大Startup因为第三的Anthropic的缘故，目前也押宝Coding市场和B端市场，这是非常确定性的收入，有利于财报和IPO，因此我们也在锚定这个方向使劲推进，相信未来B端的大市场下，Applied AI会以应用层Agent为核心，辅以各类面向AI的服务去不断提升，这也是B端有别于C端的逻辑所在。</p> <p>今年以来以OpenClaw风靡全球为开端，让整个市场一下子火爆起来，个人到企业也顺利的完成了教育，现在*Claw都能轻松的售卖了，所有人的心智一下子都被打开了，在这狂欢的背后，有自媒体的狂欢，有Geek的狂欢，有MaaS、云服务云计算的狂欢，也有个人和公司的FOMO。市场被教育了，机会多了，竞争也大了，一片光怪陆离的野蛮生长，同时也充满了机会。</p> <p>在这期间我们做了什么？首先是革命自己，展开之前，先来说一个东西：OpenClaw这些概念都是旧的，没什么新奇的，就那样，2年前就存在的。这种话很多人会说，也很多人会想，包括我。我喜欢先尝试打自己的脸：那为什么我们没有呢？可以马上交出这个东西么？</p> <p>这就是我喜欢打自己脸的原因，不习惯打自己脸，一定会有别人打，自己不淘汰昨天的自己，一定会有人在市场上淘汰自己。确实OpenClaw的一切理念都不新，2年前(24年3月)Devin出来后，我们在做OpenHands的时候很多东西都已经有了，一些理念也在后续陆陆续续的发展。OpenClaw的出圈就好像奇点（Singularity）到了，模型能力到了，一切能力都整合了，开箱即用，简单直接，适合传播，符合各方的利益。这不是偶然，是必然。</p> <p>透过现象看本质，能勇敢的下山就是我们攀登下一座山峰的开始。我们也思考并讨论了很多，甚至在春节假期期间，在飞往瑞士的飞机上，我几乎无眠，看了很多资讯，想了很多东西，也写下了很多。回到工位后，我们开始尝试去做出一些改变。</p> <h1 id="歪脖扣腚百废待兴">歪脖扣腚，百废待兴</h1> <p>3月4日早上的这个会是一个很重要的转折点，我们的三人Momentum小队出现了。或许只有德国不限速高速能形容这段时间以来我们的状态了：那是车的极限，不是速度的极限。</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142780_8-480.webp 480w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142780_8-800.webp 800w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142780_8-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142780_8.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>这是人的极限，不是AI的极限 脱敏专用：大体是平均每天30个Commits的水平 我关注Peter哥很久了，从他开始做OpenClaw之前就已经关注了，因为他做了很多东西，开源了很多东西，在我看来非常Cool，也是我一直在践行的理念。</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142781_9-480.webp 480w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142781_9-800.webp 800w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142781_9-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142781_9.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>现在我们有一点很重要的特质就是对标他的速度（虽然目前依然不是一个数量级的，这个也不是一个客观的衡量标准</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142784_10-480.webp 480w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142784_10-800.webp 800w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142784_10-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142784_10.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>就像我们内部在传播的一张图</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142784_11-480.webp 480w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142784_11-800.webp 800w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142784_11-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142784_11.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>我们以速度为最高优先级，开启了新的敏捷迭代和协作方式的探索，并且以AI Native的方式开启了我们的探索。我们不单单是为了构建一个产品，而是为了探索一套面向AI的方式，因为这个方式可以支撑我们去迭代出N个产品。</p> <p>大家都在谈AI Native，那么来看看我们是怎么做的吧：</p> <ul> <li>定调：服务AI&gt;服务人。如果这个原则没有确立，没有后续的了，现代的一切基础设施都是面向人，服务于人，未来不是</li> <li>组织方式，我坚持采用Monorepo的方式来组织和管理。为什么呢？因为我们是AI-oriented（不是面向过程，也不是面向对象，是面向AI），如果你的服务是散落在各种repo下，那么你就需要不断给AI上下文，在不同repo里协作，亲身痛过，知道其间速度会差多少</li> <li>架构：服务能少则少，链路不负责则不复杂，less is more这个原则已经被多少伟大的产品证明了。C端同学别捶我。这个是有一个平衡点的，自我取舍，原则还是服务AI。</li> </ul> <p>发现想要总结出来还真不容易，就跟着我一路听我碎碎念。</p> <h1 id="mindset开天眼">Mindset开天眼</h1> <p>当你第一次访问我们的Repo就会发现，映入眼帘的是一些比较奇特的东西：</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142785_12-480.webp 480w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142785_12-800.webp 800w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142785_12-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142785_12.jpg" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>这是我们面对每个进来贡献的人的准则，我自己花了10分钟手写的，主要还是希望能在意识层面就能让新加入的人对齐。叠个甲，支持我们的code模型还有Trae之类的产品的发展，我们也会用coco（trae-cli）做一些事情，也希望我们的code模型和coding plan能发展的更好，这样我们也可以在面向B端客户的时候拥有强大的Coding能补齐我们的Coding这块拼图来实现某种意义上的“AGI”。</p> <p>这里面很值得提的是<code class="language-plaintext highlighter-rouge">./docs/histories</code>这个东西，先来看看我们的AGENTS.md和CLAUDE.md吧，在项目伊始，这两个文件是最先被加入的。因为这个repo的一切东西（无限接近100%）都应是AI带来的，所以我们从一开始就不断在写并完善这份文件</p> <p>这个能做什么呢？就是能在脱敏和去噪后保留用户的query，以及本次改动的原因，改动到的文件，以及用的是什么AI Agent，是什么模型。这比在git commit里或者PR/MR里加的信息都有用太多了，可追溯，上下文源于此也留于此。未来不管是新人Onboarding还是追查某个feat的变迁史，都有迹可循！</p> <p>这里的用户Query也很值得一提。Codex的起源也是类似这样的方式，现在有新人加入早上半天是shadow的时间</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142785_13-480.webp 480w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142785_13-800.webp 800w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142785_13-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142785_13.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>可以理解为新人找个老人，坐在他旁边看他干活半天，为什么要这样？因为学习！我们在做的事情就是这个，我们很难通过一次两次的分享告诉某些人我们应该怎么做，怎样才能像我一样能这么快，最好的方法就是让他看看我是怎么做的，我怎么Prompt的，我怎么做端到端验收的，遇到问题的时候我是怎么处理的。这个就是我们每个走在前面的人的无私奉献，我们愿意付出我们自己的收获去造福后来的新人。正常的情况下这是一个人的竞争力的一部分，但是我们的底气在于，我们拥有很强的学习和适应能力，我们也希望自己的Peer，自己的战友能更加牛逼，从整体的角度去看待这个问题。因此我们选择留下自己的Query。</p> <p>关于看代码这个事情会有较多争议，长远看，不看是更好的选择，拥有的context从业务逻辑+代码细节+架构设计到产品定义+业务逻辑+架构设计。AI产AI看AI改，从概率的角度看，比人这个变量加入后带来的熵增会更好一些。我们现在的时间也更多花在了Dog fooding，端到端验收，产品讨论和设计，思考并不断推翻之前的一些设想，我们的方案就是执行，我们要用结果来验证方案。</p> <p>以前的草创以及之前很长一段时间的SideProject里从IndieDev学会的就是Idea is cheap。这个在现在更加放大了，知易行难，说的很容易，做的都很难。因此我们不喜欢长篇累牍的出一个方案，who cares?我们在意的是你的实际想法和快速行动，我们可以快速10分钟会议听你讲方案，从不同的角度质疑一下发表一下自己的想法，然后就可以开干了。我们在意的是最后的效果，在意的是你用了1h递送出来的新feat，不行或者不合适，直接干掉，只留下了2个histories/*.md，没有一行妥协的代码留下</p> <p>另外我们会在快速迭代的几天做一次refactor，当管理者听到重构，面色大变，值得投入么？要多少人天？似乎这个东西也不适合提到meego上，这个不应该是你之前就考虑好的么？现在有什么理由需要重构么？相信很多人都会有同样的感受和经历吧？</p> <p>现在的情况是？我们可以用1、2个小时直接重构掉一大块东西，一点灰都不留下，追求速度的同时本身就带债（强如Codex也经常带债），那不是我们担心的东西，但是我们需要对产品负责，我们就要时不时还债。这也是不断质疑和挑战几天前的自己的一个点，当时的设计对么？这两个功能组合起来没问题么？现在最新的方案是这样实现的么？新的证据表明这个或许要调整？这个才是传统意义上的敏捷迭代。</p> <p>再谈一点反直觉的东西，继重构之后第二个雷点：复用。相信Allhands上已经充分被讨论过了，也欣赏一些发言者的态度，make sense。但是不分情况只提倡复用就是耍流氓。简单的例子，我们发现langsmith不开源，我们又习惯用了，我们就花了2天的时间造了一个专用的inhouse版本，如果我们寻求复用的话，或许能找到，但是会只是花费2天的时间么？因为现在造轮子的成本，太低了，开源慢慢走向死亡的讨论由来就是这样的，如果你已经知道一个东西是怎么运作的，你知道以前你需要花1个月投入人力资源去造出来，现在你只需要花上1、2天，你会怎么选择呢？但凡复用一定有妥协，看哪一方的话语权大。用的人喷（不一定是喷产品不好），服务的人傲慢（叠个甲，我也曾经服务过别人，我也傲慢过，也吃过教训），硬凑的结果就是沟通成本巨大，速度进一步拉慢。当然这些堆人都能解决，也是“大厂管理游戏不能说的秘密”</p> <p>我承认我的看法一定会有偏见的，我只就我们的场景论证，我觉得这个不是一刀切的，该复用的时候复用，但是应该回归第一性原理，先谈清楚追求的是什么东西，再来谈这个问题。就好像前年写的</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142785_14-480.webp 480w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142785_14-800.webp 800w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142785_14-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142785_14.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>应该追求通用还是专用？或许市场给出了一些答案。</p> <p>到这里其实我们已经掀开了第一层面纱了，我们继续往前看。我们是如何Coding的呢？</p> <h1 id="就让我来rapcode">就让我来<del>Rap</del>Code</h1> <p>以我个人为例，同一时间我一般会开3-6个会话同时进行（我不用worktree，但我觉得有些人会需要它），我喜欢用CLI，从Claude Code出来后就陆续在其与Codex之间不断切换使用，CLI有个好处就是同时可以多个会话，所有的IDE包括Codex App都很难拥有这种全局掌控的能力表现，一眼就知道什么结束了，马上就可以继续Query或者提交相关改动（that’s where the magic happens）了。</p> <p>其次是万物皆可CLI，举个例子，我们的服务除了本地跑以外一些minio之类的服务都在k8s里了，kubectl/ssh/mysql这类cli可以解万物，当某个会话有什么问题的时候，直接给session id，其就会自动连接到本地mysql和开发环境里去查看对应的问题，<strong>一切能验证的问题都能被解决</strong>。如果一个问题AI一直解决不了，那大概率是因为它无法验证！我们要做的就是帮它补齐验证的能力。（有没有一些熟悉的味道？就好像一个领导者，不会去怪自己兄弟太笨，要做的是为他们扫平一切的roadblock，让大家可以更加舒服的战斗和成长）</p> <p>另外就是前端实现，我们通常是figma+截图+人话直接原地飞升，最后配合一些细节调控去做修正，期间有时候我们会利用chrome-devtools-mcp或者playwright之类的工具连到浏览器，直接做DOM/Styles或者截图的获取，甚至进一步到Console里取log。这些本质上都是在为AI的验证环节做闭环。</p> <p>这里的Coding其实是广义Coding，因为除了Coding外，还有大量的东西都是借助此完成了，包括前面提到的排查定位问题和测试等等，这个展开就有很多东西可以说了。</p> <p>我们从简单的单测、端到端测试、冒烟测试、性能测试、安全测试和评估测试都是让AI完成的，我们会编排好这一系列动作，下班的时候就发射一波，明早来已经有报告在等我们了，这好比开快车的时候，系好安全带、握好方向盘、擦亮眼睛一样。同时我们也在不断探索Ralph Loop这类形态，通过永远的循环来持续达成一些目的，这块我们也在积极探索融入到我们的产品之中</p> <p>大概就rap这些吧，接下去小小看下产品吧</p> <h1 id="产品">产品</h1> <p>敏感缘故就不放产品了。有兴趣的小伙伴可以找我聊</p> <p>我浅谈一下一些思路吧。我觉得现在很多东西大家都能做，现在harness满天飞，昨天被强制开源的claude code是其中之一，还有codex、gemini-cli、pi、opencode、deepagents、deerflow 2.0等等。从技术的角度来看，早已不缺任何技术了，从产品的角度来看，最重要的依然是模型即产品，也是为什么现在这些人薪酬这么顶的缘故，不可否认。</p> <p>除此之外，其实在做产品的时候我们会反复强调两条线：显学和隐学。</p> <p>显学永远是吸引人注意的东西，就好比我们会轻视一些自媒体发的内容，但是不妨碍其带来的巨大影响力。就是这样的道理，产品里一定要时刻显学，MCP、Skills、Mem、Self-Improving、IM渠道，这些都是例子，还有更多比如UIUX上的体现，看着就很棒的卡片效果，Gen-UI的使用，工具调用的渲染，多Agent的可视化等等。没有显学，再牛逼的产品就像一个小石子丢到海里，毫无波澜。显学也不一定是产品本身，一些外部的影响力、声量等等也可以是显学的一部分。</p> <p>隐学则是初见杀之后的立世之本。效果要好，底盘要稳。各种Fancy的技术手段，都抵不够这两点。怎么做到这些的？就是靠各种技术去架构出这一套系统，人们不需要知道其间用了什么技术，只需要知道它牛逼好用就完事了，很多技术人往往就是在追逐隐学的过程中倒地而亡，但是我们也不能不追求这个东西，否则就是看起来大猪样打下去小猪声了。丢一张meme：</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142786_15-480.webp 480w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142786_15-800.webp 800w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142786_15-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142786_15.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>能支撑产品，支持口碑，支撑售卖，支撑不断前行的就是这个。广义的隐学还有背后的人和团队，不断的自我提升适应新的环境，追求完成且会继续追求完美。</p> <p>最后就是产品一定要dog fooding，不是在造电子垃圾，要从客户出发。你自己用一下看看难用么，如果自己都不想用还妄想忽悠别人买，杀猪盘没跑了</p> <h1 id="关于组织">关于组织</h1> <p>组织的形态怎么变化我没什么发言权，随性谈点自己的想法吧</p> <p>信息能更透明的流通或许是最重要的，尤其是大变革的时候，往往是自下而上的，由外向里的，如何能让各种信息能上下左右流通，是管理者们应该思考和行动的。AI能带来的是更高效的信息流通，在市场层面这就对各种主体带来很大的要求，但是也增加了很多机会。外部信息流通加大的同时，好保持信息流通速度的不变化，相对而言就是退步，失去竞争力或淘汰指日可待。</p> <p>允许让一部分先快起来（或者换个角度：允许一部分人慢下来）。我相信不是每一个人都上快车道的，有些人可以马上，有些人需要一段时间，有的人则需要一生。当然也不是都要快起来，这里先丢一张前天看到的图，当梗图看吧</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142786_16-480.webp 480w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142786_16-800.webp 800w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142786_16-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142786_16.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>一句话，资本永不眠，技术的进步初衷以及在引领者的嘴里大多是正向的，但是现实会告诉我们答案。因此不要逼着每个人都快起来，快慢刀才是点睛之笔。</p> <p>跑题了。就好像新的浪潮来了，一部分人要先下水弄潮，这部分人去探索时候每个团队/部门的新协作形态，反哺回去，最终带动整个大盘，这样会是一个不那么容易扯到蛋的方案。说来简单，实现不易，找到合适的人，用合适的方式去尝试，有合理的机制保障等等，都是难的部分。</p> <p>提供合适的土壤。这个怎么说呢？巧妇难为无米之炊，我们如果追求的是有市场价值的产品，SOTA的产品，那么就应该让所有人都能轻松获取SOTA工具/产品。也是知易行难的一个东西。简单举例，或许因为我们本身就是模型厂，我们有自己的模型，我们无限制供应给内部去孵化，但是除此之外的很多外部的API绝大部分部门和团队都特别难拿到，复杂的流程，繁琐的手续，让一切可能性束之高阁。当然这点反过来说，dog fooding是支持自家模型/产品进步所需要的，合规和安全也需要考量，成本也需要留意，但如果这些是重重阻力的话，会让很多人丧失顶尖产品的Sense和创造下一个优秀产品的机会。别小看获取难度这个点，在安全攻防里，有种说法，没有绝对的安全，一些都是相对的，防守方就是无限拉高入侵成本以抵御攻击方的入侵。在获取SOTA工具上，难度达到一定阈值就会极大抑制人的主观能动以及随之而来的潜在创新。里面还有太多复杂敏感的东西就不展开了，但从组织层面，或许该重视这个问题。</p> <p>暂时先写这些吧。</p> <h1 id="尾声">尾声</h1> <p>愚人节的夜晚，早上10点的咖啡因似乎还有点后劲，亦或者只是高亢的神经不曾放松。写下这些东西是希望能让更多人的mindset有一些改变吧，不提倡什么，你能看懂什么学到什么，全凭你自己。</p> <p>最后的最后，我一直是个乐观主义者，但是偶尔也会有点小悲观，或许我们在努力拼搏的东西，在某一天会把我们彻底抬走，但愿我们还能一直拥有快乐的能力。</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142789_17-480.webp 480w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142789_17-800.webp 800w,/assets/img/2026-04-02-speedrunning-the-ai-era/1775142789_17-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-04-02-speedrunning-the-ai-era/1775142789_17.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p><em>PS：因为脱敏，文中多处地方已删去对应的图片和文字</em></p>]]></content><author><name></name></author><category term="Thoughts"/><category term="Thoughts"/><category term="AI"/><category term="Insights"/><summary type="html"><![CDATA[写在前面]]></summary></entry><entry xml:lang="zh"><title type="html">前奏曲</title><link href="https://ifuryst.github.io/blog/2026/prelude/" rel="alternate" type="text/html" title="前奏曲"/><published>2026-03-12T00:00:00+00:00</published><updated>2026-03-12T00:00:00+00:00</updated><id>https://ifuryst.github.io/blog/2026/prelude</id><content type="html" xml:base="https://ifuryst.github.io/blog/2026/prelude/"><![CDATA[<p>当普通人都在谈论龙虾🦞的时候，我进一步确信了，这是一个新的时代，不管你承不承认，我们已经身在其中了。</p> <p>称其为AI Agent的DeepSeek Moment也不为过（另我震惊的是其超过了Linux和React，成为GitHub上非资源聚合类Star数最多的软件项目，我刚听到这个消息的时候是挺震惊的），当然我不太会展开去聊这个东西，我觉得信息已经够多了，没必要再增加一些重复的东西了。</p> <p>我们已经身处于生产关系变化的节点，但是很多人视而不见，哪怕是从业者也视而不见。造纸和印刷术带来的是口口相传变成书面流传，打字机、个人电脑和互联网带来的是信息化，AI带来的影响面会更大，会深入到各行各业去影响。</p> <p>因此当我看到最优秀的公司里优秀的同事们还没成功地调整过来心态以及与AI共舞的能力时，我知道这场变革和过往的那些重要节点一样，只有极个别人能意识到，只有极个别人能引领，只有一小部份人可以参与，大部分人是不会有意识的。</p> <p>我们谁都无法保证自己一定是引领的那一小波人，但是我们能做到的是尽量不要成为被抛在后面的那批人。在飞瑞士的飞机上，XM6的降噪带来了难得的宁静感，十几个小时思绪蔓延下随手写了一些东西：</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-03-12-prelude/1773328383_3-480.webp 480w,/assets/img/2026-03-12-prelude/1773328383_3-800.webp 800w,/assets/img/2026-03-12-prelude/1773328383_3-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-03-12-prelude/1773328383_3.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-03-12-prelude/1773328384_4-480.webp 480w,/assets/img/2026-03-12-prelude/1773328384_4-800.webp 800w,/assets/img/2026-03-12-prelude/1773328384_4-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-03-12-prelude/1773328384_4.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-03-12-prelude/1773328384_5-480.webp 480w,/assets/img/2026-03-12-prelude/1773328384_5-800.webp 800w,/assets/img/2026-03-12-prelude/1773328384_5-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-03-12-prelude/1773328384_5.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-03-12-prelude/1773328385_6-480.webp 480w,/assets/img/2026-03-12-prelude/1773328385_6-800.webp 800w,/assets/img/2026-03-12-prelude/1773328385_6-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-03-12-prelude/1773328385_6.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>适当脱敏了一下。</p> <p>之前看的一篇写<a href="https://campedersen.com/singularity">奇点（Singularity）的文章</a>，里面有很多关键的描述都试图在表明奇点已至，这两年来我已经感受了好几次，不是那种一闪而逝的感受，而是在重要的节点有重要的感受，亲身经历的感受。过完年后，有更强的感受。</p> <p>我知道自己必须要做点什么，人生没有几次这种机会，如果错失了，那会很可惜！</p> <p>庆幸的是，我处在一个合适的节点，有合适的环境，有不错的人和资源，同时经过多年自我强化训练得来的能力，让我拥有无比强大的自信心，一切的一切似乎都在暗示我，Just Do It!</p> <p>回首自己走过的路，我发现自己玩的是野家拳，同时自己很擅长在一些机会来临的时候，抓住机会。这个能力已经帮我赢得了一些财富，赢得了一段美好的关系，赢得了一些朋友，也赢得了摸到下一次机会的可能性。</p> <p>这个东西是务虚的，但是却又是真实存在的，清晰的看明这个世界运作的逻辑，明白自己有什么、要什么，自己能给予别人什么，自己有能获得什么，擅长玩游戏，擅长玩成年人的游戏，别搞砸，这些就是方法。</p> <p>和老友聊天的片段</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-03-12-prelude/1773328385_7-480.webp 480w,/assets/img/2026-03-12-prelude/1773328385_7-800.webp 800w,/assets/img/2026-03-12-prelude/1773328385_7-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-03-12-prelude/1773328385_7.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>can’t agree more. 往四周看，AI没有给自己带来任何优势增强，那么就是问题所在了。不管是帮你做更好的投资决策，帮你更好的提升自我，还是帮你更好的工作等等。如果这一两年来你没有任何的明显感觉，那你或许有较大的概率落到最后那批人群里。</p> <p>或许也不是人人都争当弄潮儿，这也不应该是一篇卷说谁改正归邪的文章。只是感觉最近从书面输出的变少了，口头的变多了，还是需要随手写点东西当随笔，落点想法。</p> <p>写到这里，似乎都和标题没有任何关系？相信我，等你看明白之后，一切皆已尘埃落定</p> <p>呼吸不停，战斗不止</p>]]></content><author><name></name></author><category term="AI"/><category term="AI"/><category term="Thoughts"/><category term="Insights"/><summary type="html"><![CDATA[当普通人都在谈论龙虾🦞的时候，我进一步确信了，这是一个新的时代，不管你承不承认，我们已经身在其中了。]]></summary></entry><entry xml:lang="zh"><title type="html">Back Online! Let’s Rock 2026</title><link href="https://ifuryst.github.io/blog/2026/lets-rock-2026/" rel="alternate" type="text/html" title="Back Online! Let’s Rock 2026"/><published>2026-03-05T00:00:00+00:00</published><updated>2026-03-05T00:00:00+00:00</updated><id>https://ifuryst.github.io/blog/2026/lets-rock-2026</id><content type="html" xml:base="https://ifuryst.github.io/blog/2026/lets-rock-2026/"><![CDATA[<p>好像好久没写东西了，刚好今天是从瑞士回来的第一周。想想去年也是过完年后写了一篇<a href="https://www.ifuryst.com/blog/2025/lets-rock-2025/"><strong>Back Online! Let’s Rock 2025</strong></a>。我发现，我把这篇文章里的2024换成2025，2025换成2026，大部分都还是成立的！</p> <p>这次依然是Going Offline了半个月，每年有这样的时间段真的是很好的。很多时候我们出门旅行并不是为了特定的目的，而是为了体验在路上的那种感觉。和追求爱情和事业的在路上是不同的体验</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-03-05-lets-rock-2026/1772725379_1-480.webp 480w,/assets/img/2026-03-05-lets-rock-2026/1772725379_1-800.webp 800w,/assets/img/2026-03-05-lets-rock-2026/1772725379_1-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-03-05-lets-rock-2026/1772725379_1.jpg" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>飞机绕开乌克兰的领土让我直接感知到了下面依然是战区的事实，对于世界的认识不再是简单的新闻了。17小时的飞行时间，睡得不多，一路上依然用了很多的时间看着拖欠很多的资讯，不断思考个人、团队、公司、AI和未来</p> <p>但是在北欧几个国家自驾，经历了漫天大雪荒无人烟的自然，看到了山顶小镇人们穿上传统表演服饰聚在一起Party，在雪山上看到被白雪覆盖着的阿尔卑斯山脉，和只懂法语的当地人各说各的交流，也看到了小镇的人是如何在远离AI的一隅生活着，原来还是有很多人并不在乎AI的发展。欧洲这些年在AI上的发展情况虽然来源于大量的法规，但这次的旅行让我窥见了这些表象背后的根源。</p> <p>去年说的：</p> <blockquote> <p>我觉得这两年似乎站在了一个时代变革的节点，我还是挺相信AI能给这个社会和个人带来很多价值的，今天看newsletter，里面有说到未来可能会出现一人的独角兽公司，我觉得还是有一定的可能的。以前说逆水行舟不进则退，现在我倒是感觉在时代的长河里，我们不是逆流，只是水流的速度越来越快，如果我们一直以一样的速度前行，相对而言我们就是一直在往后走，所以这个时代告诉变化本身就给不断向前的人一些无形的压力，有一点像是爱丽丝梦游仙境里那个意思了，我们努力奔跑只是为了留在原地。希望不要被时代抛下啊</p> </blockquote> <p>现在很多东西已经是客观事实了。我们在时代的变革中了，AI给个人和社会带来了很多改变。想想去年那个时候ClaudeCode还没出来呢，更别说Codex的反超，当时大家还在讨论Cursor，现在大家只聊OpenClaw。</p> <p>有多少人因为没有持续往前奔跑或者跑得不够快而从原地极速后退消失了？我相信有很多，有些人自知，有些人依然无意识。</p> <p>现在我的坚信自己没有被时代抛弃，有的只有更高的能量、更强的战斗力、更强的认知、以及攀峰的勇气和行动力。</p> <p>最后的那段话也非常经典</p> <blockquote> <p>AI时代，每个人的边界都极大扩大了，本来不太可能的东西也变得更加有可能了，我坚信AI必定能带我去到更高的地方</p> </blockquote> <p>每一句话都精准的走进现实。AI带来的是超级个体的诞生，但是现在我很爱喜欢用反面来思考，现在反而进入了一种FOMO+内卷的模式，大家都在无所不用其极的宣传鼓吹，无所不用其极的Vibe各种项目和产品</p> <p>从个体来看，超级个体是牛逼了，但是绝对不会更闲的，更闲的基础是在你拥有很厉害的AI但是别人没有，或者你很会用这个AI，别人不会，但是这些大部分情况下都很难成立，60美元就能拿到御三家SOTA，只要多看多想不断使用，很难出现特别大的差距。市场层面，一定会有公司抢跑，其他公司不跑不行，市场不可避免进入混乱状态。所以有时候不是自己不想停下来，而是想活着，就不能停下来。</p> <p>不管怎样，25年不管是对这个世界还是对我，都是大变革，我也相信这个趋势在26年会继续，我已重新整装，再出发！Let’s Rock 2026!</p> <p>最后的最后，经过了无数的山峰，我们永远不知道我们会在哪座山停下来，在此之前尽情享受旅途中的风景❤️</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-03-05-lets-rock-2026/1772725381_2-480.webp 480w,/assets/img/2026-03-05-lets-rock-2026/1772725381_2-800.webp 800w,/assets/img/2026-03-05-lets-rock-2026/1772725381_2-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-03-05-lets-rock-2026/1772725381_2.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div>]]></content><author><name></name></author><category term="PersonalUpdate"/><category term="PersonalUpdate"/><category term="Thoughts"/><summary type="html"><![CDATA[好像好久没写东西了，刚好今天是从瑞士回来的第一周。想想去年也是过完年后写了一篇Back Online! Let’s Rock 2025。我发现，我把这篇文章里的2024换成2025，2025换成2026，大部分都还是成立的！]]></summary></entry><entry xml:lang="zh"><title type="html">高峰不常有</title><link href="https://ifuryst.github.io/blog/2026/peaks-r-rare/" rel="alternate" type="text/html" title="高峰不常有"/><published>2026-01-29T00:00:00+00:00</published><updated>2026-01-29T00:00:00+00:00</updated><id>https://ifuryst.github.io/blog/2026/peaks-r-rare</id><content type="html" xml:base="https://ifuryst.github.io/blog/2026/peaks-r-rare/"><![CDATA[<p>这两天听到一个高峰不常有的观点，非常的认可。这句话可以表述为时代，也可以表述为人生，两种语境下都对味。</p> <p>相信很多人已经知道想聊的是什么了，就是现在红极一时的AI。相信非常多人都会觉得现在是一个史无前例的技术变革时期，甚至远超过往的PC、互联网和移动互联网。我同样也坚信这是一个或许我这辈子不会再遇到的一次技术变革。</p> <p>这就是第一个叙事背景，总归人类历史，能称得上真正的高峰不多，一个人能赶上趟的也不多。人类历史的信息和发展是呈指数级增长的，相信我们也可以从这20年来感受到。2025年刚过，能非常明显感受到比2024年的变化来得更加密集，想想以亿美元为单位的SOTA大模型，都能在数周内不断更迭，这个速度十分的惊人，大量的AI Infra带来的急速增长的Capex也是人类历史上史无前例的。大量FOMO的气氛充斥在社交媒体和人们的对话交流里。</p> <p>狄更斯那句被说烂的话，这是最好的时代，这是最坏的时代。代表了两面，代表了不同视角和态度的人。我也是高峰不常有的认可者，对于能遇到一次攀爬高峰的机会，会让人有种兴奋和欣慰感。很奇怪的感觉，但是就是很欣慰，自己能遇上，虽然不知道最终能爬到什么高度，能做出什么成就，能遇到什么人，能结识什么朋友，但是光是想想就觉得挺兴奋的。</p> <p>反观以个人人生的视角来看，其实也是受限于大背景和时代周期，但是个人的年龄和不同阶段能做的事情是有一定的受限的，受限程度取决于个人和家庭等因素。</p> <p>从世俗的角度来看，我们走完教育这条路，需要耗费人生前30年的绝大部分时间，越是往后留下的时间窗口越窄，理想是好的，现实是残酷的，普通人多囿于学历和年龄。这也是很矛盾的一点，这也不禁让我时常想起，一个人要是能在年轻的时候就知道自己想要成为什么样的人，那该多好。因为那样可以很早就开始准备了。似乎也能看到很多“大人物”聊过往能有这种现象，我也发现现在年轻群体身上开始出现这个现象，或许是信息传播的速度更快了，信息的获取更容易了。</p> <p>不管怎样，从踏入社会之后，留给每个人的试错窗口太小了，更遑论还要去积累经验、积累人脉、积累原始资本。因此人生的高峰更加不可预测，每个人都能在不同的阶段遇到高峰，这个和大环境正相关，但是不是绝对相关的。</p> <p>这也是我的价值观导向之一，我希望自己能在遇到高峰时，能有能力去攀登。在过往我会做一些或有用或无用的东西，这也是让我持续做好准备的基础。现在的游戏规则似乎已经转变了，我们不再是做好一些准备就足够了，我们要做的是快速适应、快速学习、快速试错的能力。</p> <p>我很喜欢Always Day 1这句话，可以有很多含义体现，比如和The One能Always Day 1的话，那会很幸福。换到前面的语境回来，如果我们能持续保持Always Day 1的心态，那么我们就能保持持续尝试的心态和能力，想想自己什么都不懂的时候，什么都敢试，创业里年轻人群体很多都是以空杯心态进入的，不会瞻前顾后思虑过多，或者OG群体，连续创业者或者早已度过资本原始积累的那批人，他们也能在某种程度上做到空杯心态。</p> <p>这次的山峰有多高呢？目前还看不到被云雾遮挡的峰顶，我选择继续往上爬</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-01-29-peaks-r-rare/1769698209_1-480.webp 480w,/assets/img/2026-01-29-peaks-r-rare/1769698209_1-800.webp 800w,/assets/img/2026-01-29-peaks-r-rare/1769698209_1-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-01-29-peaks-r-rare/1769698209_1.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p><em>Morro Rock, Morro Bay, CALI. Jan 2025</em></p>]]></content><author><name></name></author><category term="Blog"/><category term="Blog"/><category term="微信公众号"/><category term="Substack"/><summary type="html"><![CDATA[这两天听到一个高峰不常有的观点，非常的认可。这句话可以表述为时代，也可以表述为人生，两种语境下都对味。]]></summary></entry><entry xml:lang="zh"><title type="html">快节奏慢生活</title><link href="https://ifuryst.github.io/blog/2026/fast-pace-slow-life/" rel="alternate" type="text/html" title="快节奏慢生活"/><published>2026-01-24T00:00:00+00:00</published><updated>2026-01-24T00:00:00+00:00</updated><id>https://ifuryst.github.io/blog/2026/fast-pace-slow-life</id><content type="html" xml:base="https://ifuryst.github.io/blog/2026/fast-pace-slow-life/"><![CDATA[<p>还有一个月就过年了，时间过得飞快，我也成功地再续订一年，离2077或许还能再续订51年。</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-01-24-fast-pace-slow-life/1769270658_1-480.webp 480w,/assets/img/2026-01-24-fast-pace-slow-life/1769270658_1-800.webp 800w,/assets/img/2026-01-24-fast-pace-slow-life/1769270658_1-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-01-24-fast-pace-slow-life/1769270658_1.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>年末了，在事业上，大家的节奏也开始稍微慢下来了一点，这个节点算是一个回顾去年，展望新一年的时候，各种AllHands, KickOff, 团建等会议和活动也接踵而至，算是把最后一把土盖到了2025年的坟头堆上然后开铲2026了。</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-01-24-fast-pace-slow-life/1769270658_2-480.webp 480w,/assets/img/2026-01-24-fast-pace-slow-life/1769270658_2-800.webp 800w,/assets/img/2026-01-24-fast-pace-slow-life/1769270658_2-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-01-24-fast-pace-slow-life/1769270658_2.jpg" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-01-24-fast-pace-slow-life/1769270661_3-480.webp 480w,/assets/img/2026-01-24-fast-pace-slow-life/1769270661_3-800.webp 800w,/assets/img/2026-01-24-fast-pace-slow-life/1769270661_3-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-01-24-fast-pace-slow-life/1769270661_3.jpg" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>大寒这天，见到了上海十来年里最大的一场雪，作为南方沿海长大的小孩，直到这几年才在旅行的时候见过雪，这次是第一次在日常生活中看见雪，慢慢走在路上感受着雪花飘落的那种寂静感，Inner Peace具像化了。或许就像常年看海已经看腻了，但是海和雪这种有地域属性的自然现象带给我们的永远不是看过还是没看过，是一种对习以为常的生活的一种破坏，以一种自然的方式产生令一种自然的感觉。或许未来的51次版本升级中，还可以看到无数次的雪和海，虽然现实可能是只有屈指可数的次数，且行且珍惜</p> <p>这几天也迎来了第一次团建，大型网友面基会，人脑是会模拟形成一个自己认为的世界，用fancy一点的说法是世界模型，面基就产生一个有趣的现象，很多你以为是那样的人，实际上是这样，所以你对于这个人的看法是源于字里行间的模拟推演，但是当一个人站在你面前用视觉效果向你展示更多元的信息时，或许你原来认知的那个人，不再是那个人。这也会影响你未来怎么和另一个人进行协作联动的姿势，这是团建的意义，也是WFH或者Remote在现阶段很难比肩线下协同的一点。</p> <p>直到我写这些的时候，我才意识到，我们竟然一张合照也没有拍，失算了。成年人的世界缺乏太多仪式感和记忆了。越长大我们越发开始关注自己的一亩三分田，自己的爱人自己的家庭，越少的人能有机会成为朋友，对外部的很多事情开始淡然，开始变得从容。</p> <p>最近也在思考26年，站在时代变革的节点，这股浪潮已经翻涌了3年，今年个体、团队和企业要押注什么？如果运气好的话，能想明白并看清楚一部分。为什么大家喜欢用Bet来这个词呢？因为这就是在下注，尤其是在速度极快的时候，每次轻微转动方向盘都能带来巨大的变化。在这场无限游戏里，能让自己和团队留在牌桌上的唯一办法就是尽可能看得更远，提前做好准备，即使调整方向盘。</p> <p>最近对于游戏也有一些更深的想法。就拿大厂的语境来说，分为外部游戏和内部游戏，前面的互联网行业已经沉寂多年了，没有什么太多的外部游戏了，但是现在这个阶段，新的外部游戏出现了。另一边的内部游戏是永恒存在的，一个公司的兴衰更迭都甩不掉内部游戏，只是程度的大小。从道德高尚的角度来说，每个人在明面上追求的都是外部游戏，说起来好听，但是事实往往不是这么理想和二元论调的。</p> <p>尤其是大厂这个平台，人员和团队的规模和数量已经达到了一个小型社会的存在了，其中错综复杂的关系就算是金字塔尖的人也不见得能理得清。在这种背景之下，需要平衡好外部游戏和内部游戏。这里说的内部游戏不等价于内部互卷互相攻击，那是过于肤浅的理解。内部游戏可以理解为，你不一定需要把他踢出局，你只是需要跑得比其他人快一点点，你就获胜了，对个人和对团队而言都是一个道理。这是一种抽象的表述，具体到现实中，仁者见仁智者见智，也是个人和团队能力体现。</p> <p>从这里延伸出来的观点是，+1不应是敌人。从更大的格局去思考这些东西，+1也有+1，个体努力表现自己，只是为了战胜Peers，拿到更好的绩效。这种做法无可厚非，但是这不是一个好的玩法。更好的方式是帮助+1成功，如果注意观察会发现，内部游戏在很多地方充分体现，帮助团队取得更大的成就，获得更大的蛋糕，而不是在现有的蛋糕里去切走别人的蛋糕，make no sense。管理者的极高境界是成就他人成就自己，非管理者也可以有这个境界，成就Leader成就自己，或者更加进一步可以泛化成成就团队成就公司成就社会成就全人类。当然前面的论调取决于个人、团队和公司都在同个方向上，是同频的，是Same Page的，如果一个地方呆着不舒服，没必要展开这些了。</p> <p>人是复杂动物，这个世界永远不是二元论调，我们可以有主流叙事手法，也可以有亚文化圈层，可以有受众广泛的语调，也可以有尖锐深化的思想。从头到尾把自己当成出来混的，会是对自己负责对他人负责的一个心态。我们不是来混一个工作一个岗位，我们是希望在不同的平台不同的资源不同的团队配置下能做出在那个条件下能做出的最好的成绩，也是希望能借助更大的平台成就自己。星辰大海，不应泯灭在每个日常的daily routine里。</p> <p>对于26年的个人和事业，初步有了一些端倪，在此之余，生活可以慢下来，尝试做一些看似“无用”的东西吧</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-01-24-fast-pace-slow-life/1769270661_4-480.webp 480w,/assets/img/2026-01-24-fast-pace-slow-life/1769270661_4-800.webp 800w,/assets/img/2026-01-24-fast-pace-slow-life/1769270661_4-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-01-24-fast-pace-slow-life/1769270661_4.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-01-24-fast-pace-slow-life/1769270662_5-480.webp 480w,/assets/img/2026-01-24-fast-pace-slow-life/1769270662_5-800.webp 800w,/assets/img/2026-01-24-fast-pace-slow-life/1769270662_5-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-01-24-fast-pace-slow-life/1769270662_5.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>小半年来，做了17次公益</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-01-24-fast-pace-slow-life/1769270664_6-480.webp 480w,/assets/img/2026-01-24-fast-pace-slow-life/1769270664_6-800.webp 800w,/assets/img/2026-01-24-fast-pace-slow-life/1769270664_6-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-01-24-fast-pace-slow-life/1769270664_6.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>从捐书这种小事做起，到每次花一个小时和在读书的青年群体聊未来人生和职业规划，给他们很多建议的同时也收获了很多年轻力的表现，很有趣的交流和思想碰撞，妹子做了好多个猫窝给流浪猫猫们，也织了围巾给偏远地区的小学生，也做了新春礼物给困境儿童，还帮新就业群体女性修了人生第一张写真。我们没做过公益，不过通过一点空余时间做一些帮助世界变得更加美好的事情，是一种很棒的体验。</p> <p>最近的周末，每天都会去探索一家咖啡馆，点一杯咖啡，做一些自己觉得有趣的项目，写一些东西，放空一下自己，阅读和思考，都是非常棒的体验！</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-01-24-fast-pace-slow-life/1769270665_7-480.webp 480w,/assets/img/2026-01-24-fast-pace-slow-life/1769270665_7-800.webp 800w,/assets/img/2026-01-24-fast-pace-slow-life/1769270665_7-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-01-24-fast-pace-slow-life/1769270665_7.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>一尺花园的每家店都很有特色，今天来的这家门店，有种走入自己家客厅的感觉。从安静的早晨，到陆陆续续的人流进入，再到夜幕降临座位陆续清空，咖啡馆是一个更小尺度的人类在现代盒子里流动变迁的见证者</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-01-24-fast-pace-slow-life/1769270667_8-480.webp 480w,/assets/img/2026-01-24-fast-pace-slow-life/1769270667_8-800.webp 800w,/assets/img/2026-01-24-fast-pace-slow-life/1769270667_8-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-01-24-fast-pace-slow-life/1769270667_8.jpeg" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>最近很喜欢伏蒿的歌，加上今天下午吵杂的咖啡馆，晚上直接闪现到淮海中路，反手一个1000XM6</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-01-24-fast-pace-slow-life/1769270668_9-480.webp 480w,/assets/img/2026-01-24-fast-pace-slow-life/1769270668_9-800.webp 800w,/assets/img/2026-01-24-fast-pace-slow-life/1769270668_9-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-01-24-fast-pace-slow-life/1769270668_9.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-01-24-fast-pace-slow-life/1769270669_10-480.webp 480w,/assets/img/2026-01-24-fast-pace-slow-life/1769270669_10-800.webp 800w,/assets/img/2026-01-24-fast-pace-slow-life/1769270669_10-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-01-24-fast-pace-slow-life/1769270669_10.jpg" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>音乐真的是生活中必不可少的东西，没有音乐的一天，是没有灵魂的。想起之前网易云的年度报告里写了我再12年4234天里听了70403分钟的歌</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-01-24-fast-pace-slow-life/1769270669_11-480.webp 480w,/assets/img/2026-01-24-fast-pace-slow-life/1769270669_11-800.webp 800w,/assets/img/2026-01-24-fast-pace-slow-life/1769270669_11-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-01-24-fast-pace-slow-life/1769270669_11.jpg" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>我还记得我刚来上海的时候，就买了一台STANMORE III，实在无法忍受房间里没有音乐，也无法忍受电脑和手机极差的外放</p> <p>不管如何，依然坚信快节奏慢生活的方式，坦诚接受自己的Workaholic，也尽量让自己慢下来，快慢之间，松弛有度，慢慢内化成一种生活方式。还是那句话：若要如何，全凭自己。</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-01-24-fast-pace-slow-life/1769270669_12-480.webp 480w,/assets/img/2026-01-24-fast-pace-slow-life/1769270669_12-800.webp 800w,/assets/img/2026-01-24-fast-pace-slow-life/1769270669_12-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-01-24-fast-pace-slow-life/1769270669_12.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div>]]></content><author><name></name></author><category term="PersonalUpdate"/><category term="PersonalUpdate"/><summary type="html"><![CDATA[还有一个月就过年了，时间过得飞快，我也成功地再续订一年，离2077或许还能再续订51年。]]></summary></entry><entry xml:lang="zh"><title type="html">十年</title><link href="https://ifuryst.github.io/blog/2026/10-yrs/" rel="alternate" type="text/html" title="十年"/><published>2026-01-18T00:00:00+00:00</published><updated>2026-01-18T00:00:00+00:00</updated><id>https://ifuryst.github.io/blog/2026/10-yrs</id><content type="html" xml:base="https://ifuryst.github.io/blog/2026/10-yrs/"><![CDATA[<p>元旦回去发现了一个有趣的东西</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2026-01-18-10-yrs/1768741652_1-480.webp 480w,/assets/img/2026-01-18-10-yrs/1768741652_1-800.webp 800w,/assets/img/2026-01-18-10-yrs/1768741652_1-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2026-01-18-10-yrs/1768741652_1.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>33封来自10年前的信。</p> <p>本就是黄色的封皮看不出变化，但是上面的胶水早已干透，信封壳可以轻易的打开取出里面的信件。一种空间交错的感觉涌上心头。</p> <p>我拍下每一张封面，发给每一个我现在还有好友的同学，问她/他们是否想看看十年前的自己写了什么？有一半的人要了。大部分女同学都要了，大部分男同学都不要。很有趣的一个现象。</p> <p>这本是一封写给毕业的自己的一封信，也是学生时代不知道哪来的奇怪仪式感作祟让大家在一个晚自习的时间写的。毕业前后和学校和同学联系非常不紧密，这些信被压箱底直到今日了。</p> <p>10年的时间在现代生活里只需要半日一日至多2、3日便可走完，信陆续到了每个写下的人手里，除了一开始就不想要的人以外，剩下人的感想大抵分为2类：</p> <ol> <li>当时怎么不认真写</li> <li>非常有意义</li> </ol> <p>被十年前的回旋镖打到，有的人发现自己十年前就非常务实的在畅想了自己的未来生活或就业，并且惊奇的发现现在的人生轨迹在当时看来非常不可思议的畅想下，居然实现了，算是一个跨越十年的遥远回应了。</p> <p>也有人觉得非常珍贵，是一份失而复得的记忆。</p> <p>也有人觉得羞耻，但是同时又被十年前的自己感动到了</p> <p>进入社会后或许会经历开心快乐、幸福美满的时刻，也可能发现现实与自己的预期有出入，有低谷，有艰难的岁月，但是通过字里行间，依稀可以窥见在那段长大和长不大的夹缝时光里，我们曾经是怎样活着，怎样思考的。或许意义不在于过于自己写下的东西是否都实现了，不在于自己是幼稚还是务实，而是笔触之间提醒我们不要忘记曾经那个或许棱角分明、年少轻狂，或许满怀理想、远大抱负的自己。</p> <p>如果你相信时间能带来很多很棒的东西，下个十年的起点是现在。</p>]]></content><author><name></name></author><category term="PersonalUpdate"/><category term="PersonalUpdate"/><summary type="html"><![CDATA[元旦回去发现了一个有趣的东西]]></summary></entry><entry><title type="html">无题</title><link href="https://ifuryst.github.io/blog/2025/untitled/" rel="alternate" type="text/html" title="无题"/><published>2025-12-27T00:00:00+00:00</published><updated>2025-12-27T00:00:00+00:00</updated><id>https://ifuryst.github.io/blog/2025/untitled</id><content type="html" xml:base="https://ifuryst.github.io/blog/2025/untitled/"><![CDATA[<p>我发现，想写点东西的时候，最难想的总是题目，为什么文章需要有题目？为了让读者能预先感知到要写的东西？对于小众窄传播的Blog Post来说，似乎有无都没必要了，能看到的无外乎是关注你的人，或者随缘看到。</p> <p>借着今天和前同事小聚喝了两杯asahi，随便写点东西。</p> <p>经过今年的自我测验和观察，我发现出我对于一些东西的试验时间周期是3个月，这个和三分钟热度有点异曲同工之妙。虽然不是所有的，但是有几个项目是与到了这个情况，识别到了问题之后，是去遏制它还是利用它？我觉得人性或者先天及早期后天习得的一些东西会在很长周期甚至一生下影响一个人。在谈论前面这个点之前，是需要先确认这是缺点么？</p> <p>我认为一个有强大Ego的人，是应该先有自我判断的能力，其次才是其次。现在ego这个词已经被大家当作贬义词了，但是回归这个词的本意，我觉得可以是一个中性词，笼统的表述为一个人的行为尊则，ego强的人内核更强。当然凡事必有两面性，稍有不慎基本走向过于自信甚至是自负。</p> <p>回归正题，我不觉得这是一个缺点。互联网时代我听过的一句话，快鱼吃慢鱼而不是大鱼吃小鱼，表示这个时代需要快。反观现在AI时代，我觉得真的做到了日新月异。回头想想，这一年来发生的事情太多了，太多新的东西在今年出现。在这样的背景直线，跑得快，能快速试错，勇敢停止，承认自己的失败尝试，是一种勇气，也是一种能力。</p> <p>换个角度想，我更想利用好这个特质，大脑的构成和过往的经历（学习/训练）决定了我们的多巴胺和血清素的分泌规律，如果要与之对着干，那大抵没有什么好下场。这也是为什么有些人会劝你努力，劝你吃苦，劝你少吃，劝你少玩。每个人都可以轻松的站在自己的立场下随意指点与自己不一样情况的他人，我相信这也是现在流行的登味和爹味的由来。我相信信息流通之迅速的今天，有网感的人，没有一个是缺乏信息和认知的人，大家都知道很多大道理，但是很多人依然过不好一生（或许是别人定义的一生）。因此我觉得对于给人讲大道理，不如跟别人分享故事，分享想法，做好在这个世界上你劝不动任何一个人，但是你可以让你的内容被很多人接收到，主动或被动的。</p> <p>我可以借助这个特质去连续探索一些东西的可能性，但是我依然还是要留意一些陷阱，避免我在本来可以有更好成果的路径上，因为减少持续的投入导致无法取得，这个非常考验判断力和意志力。</p> <p>另外一点是最近比较忙，有一天忙得比较晚比较累，情绪似乎进入了一个低点，这种情况以往出现过几次，一般我的解压方式是打开PS5或者Xbox，沉浸在某个第九艺术中，于我是非常行之有效的释压和rebalance的对冲手段。但是现在这边暂时没有这个条件，因此我陷入了一种无意义感的状态。还好因为太累顺利的睡着。现在我发现一旦陷入这种情绪之中，去休息或者去做点开心的事情，先让身体和精神恢复正常，这样这种无意义感就会消散，多想无益。</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2025-12-27-untitled/1766848282_1-480.webp 480w,/assets/img/2025-12-27-untitled/1766848282_1-800.webp 800w,/assets/img/2025-12-27-untitled/1766848282_1-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2025-12-27-untitled/1766848282_1.jpeg" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>最近在看的智能简史里，大量的内容讲到了人的大脑、情感等东西，或许我们的无意义感更多是诸如血清素之类的化学物质抑制了我们，进入一种低敏状态。从非常理性的角度看待这个问题就是这样，人是复杂的，但是也是简单的。</p> <p>最后，分享一张早上我去浦美看毕加索展览时，在展览入口处看到的一个展览装置</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2025-12-27-untitled/1766848282_2-480.webp 480w,/assets/img/2025-12-27-untitled/1766848282_2-800.webp 800w,/assets/img/2025-12-27-untitled/1766848282_2-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2025-12-27-untitled/1766848282_2.jpg" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>我不知道原意想表达什么，但是我的理解是，在人群中坚持做那个不一样的自己，You only live once.</p>]]></content><author><name></name></author><category term="Thoughts"/><category term="Thoughts"/><summary type="html"><![CDATA[我发现，想写点东西的时候，最难想的总是题目，为什么文章需要有题目？为了让读者能预先感知到要写的东西？对于小众窄传播的Blog Post来说，似乎有无都没必要了，能看到的无外乎是关注你的人，或者随缘看到。]]></summary></entry><entry><title type="html">LeoTalk AI周知 13: AI这一年</title><link href="https://ifuryst.github.io/blog/2025/leotalk-ai-weekly-13-year-of-ai/" rel="alternate" type="text/html" title="LeoTalk AI周知 13: AI这一年"/><published>2025-12-15T00:00:00+00:00</published><updated>2025-12-15T00:00:00+00:00</updated><id>https://ifuryst.github.io/blog/2025/leotalk-ai-weekly-13-year-of-ai</id><content type="html" xml:base="https://ifuryst.github.io/blog/2025/leotalk-ai-weekly-13-year-of-ai/"><![CDATA[<p>时代杂志发布了The Architects of AI. 八个在AI领域重要的人（欧美为视角的国际视野）。</p> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2025-12-15-leotalk-ai-weekly-13-year-of-ai/1765811447_69-480.webp 480w,/assets/img/2025-12-15-leotalk-ai-weekly-13-year-of-ai/1765811447_69-800.webp 800w,/assets/img/2025-12-15-leotalk-ai-weekly-13-year-of-ai/1765811447_69-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2025-12-15-leotalk-ai-weekly-13-year-of-ai/1765811447_69.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <div class="row mt-3"> <div class="col-sm mt-0 mb-0"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/2025-12-15-leotalk-ai-weekly-13-year-of-ai/1765811451_70-480.webp 480w,/assets/img/2025-12-15-leotalk-ai-weekly-13-year-of-ai/1765811451_70-800.webp 800w,/assets/img/2025-12-15-leotalk-ai-weekly-13-year-of-ai/1765811451_70-1400.webp 1400w," sizes="95vw" type="image/webp"/> <img src="/assets/img/2025-12-15-leotalk-ai-weekly-13-year-of-ai/1765811451_70.png" class="img-fluid rounded z-depth-1" width="100%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> </div> </div> </div> </div> <p>2025年也接近尾声了，大家也纷纷在做Recap了，去回顾这一年来的情况。从AI的角度来看，1年的变化非常的大。有些东西真的去回顾了才恍然，才一年不到啊。</p> <p>今年过年期间DeepSeek开源，轩然大波，目前看来，最大的意义是直接带动全世界的企业（尤其国内企业）的AI发展进程（中大企业无需投入资源去练基模，中小企业可以直接享用在当时非常不错的推理模型），更是直接把推理模型达成事实标准（在这个事件之后OpenAI才跟进免费开放o1推理模型，现在推理模型成为各家基模厂商的免费标配了），也进一步推动今年AI Agent普遍利用推理去做CoT等Test Time Scaling。</p> <p>今年以千问、DeepSeek、Kimi、GLM、MiniMax为首的这些模型厂，通过开源的势头，已经陆续追上世界第一梯队的能力，现在和闭源头部模型的差距越来越小了，也成功接过Meta的开源大棒。</p> <p>阿里虽然因为打外卖战浪费掉很多资源，尤其是现金，也损失了一些风评，但是在下半年可以感觉到在整个组织层面调整战略方向，现在重新重视AI，包括现在重构推出千问APP（原来通义全部合并进去）以期望能在C端流量入口去和豆包、DeepSeek以及元宝竞争。另外不得不说千问在开源领域的牛逼，今年发布无数的开源模型，一个比一个牛，现在Qwen的模型已经成为很多厂商微调或者特点垂类任务的事实标准，基本上大家都用，这点基本上和DeepSeek的开源一样，只是一个是一战成名，一个是持续输出，这些势必会在人工智能里的历史上留下浓墨重彩的一笔！现在投资人和市场也开始重新审视阿里，不再把阿里当成单纯的电商公司了，开始用AI公司来看待，也愿意给到20倍PE的高估值。</p> <p>Anthropic在今年也进一步分化，更专注于Coding领域，这个领域的市场规模和利润空间已经被证明了，Anthropic也靠着大量的toB、toD稳步拿到利润，正在进一步推进明年的IPO。</p> <p>反观OpenAI，GPT-5没有出现Aha Moment，融资也开始承压，包括大厂（尤以Google为首）的挤压，今年（尤其H2）OpenAI明显在应用层持续发力，开始卷日活，希望通过生态位来对抗大厂的挤压。但是这几个月受到Gemini持续的冲击，现在想对收敛了一下应用层的探索，但是依然还是会往这个方向。可以发想OAI和Anthropic的方向彻底不同</p> <p>Google这边组织架构也持续调整，今年持续在Gemini发力，Veo等视频模型也是有非常大的建树，包括今年反垄断法的胜利，让投资人减少了很多顾虑，加之对于ChatGPT抢走Google的搜索流量的担忧，在现在看来似乎不是一个很需要担心的点，至少目前Google的搜索量依然健康，Google也在大力革命自己的搜索，现在AI Mode+Gemini，全面下场。</p> <p>也可以看到今年不仅仅只有以Transformer为主的语言模型在发展，现在也出现了包括世界模型在内的探索方向，以LeCun和李飞飞在内的就是典型代表。</p> <p>另外在今年我们也可以看到Nvidia以5万亿美元的市值规模登顶全球市值第一。现在也在大量的对外投资（虽然引发了循环投资和泡沫化的讨论）。AI公司也纷纷下场卷数据中心，卷机房，重资产投资。</p> <p>今年也可以说是Agent元年，虽然市面上能看到的只有类似Manus、Lovart之类的产品走出来，但是其实在非C端领域，已经有非常多的实际应用，甚至不乏很有价值的应用。并且其实可以说Agent不是一个单独的概念，理论上应该是一种技术，所有的现有产品都可以将AI Agent这个技术融入进去，到每个环节，所以目前看不到杀手级应用也是合理的。</p> <p>今年还有太多都关系没办法一一列出来了，只能说今年实在太精彩了。很喜欢这种每周甚至没天都有新的东西出现的日子和节奏。</p> <h1 id="研究报告">研究报告</h1> <ul> <li>微软基于去年的3千万Copilot会话得出的<a href="https://microsoft.ai/wp-content/uploads/2025/12/What_people_do_with_Copilot-8.pdf">报告</a>，移动端与健康有关的问题为主。深夜时段更容易出现哲学、宗教和存在主义之类的形而上话题。年初编程和技术为主，年中后社会和生活话题上升。总体而言看起来像是在表达Copilot从技术全往外走</li> <li>麦肯锡<a href="https://www.mckinsey.com/featured-insights/year-in-review/year-in-charts">今年报告</a></li> </ul> <h1 id="产品模型发布">产品&amp;模型发布</h1> <ul> <li>OpenAI<a href="https://openai.com/index/introducing-gpt-5-2/">发布</a>GPT5.2，知识拉到2025年8月31日了，5.1的1.4倍花费，视觉能力提升多。Code Red之后还是更聚焦，更有危机意识了</li> <li>Mistral<a href="https://mistral.ai/news/devstral-2-vibe-cli">发布</a>Devstral2和Mistral Vibe CLI</li> <li>Adobe<a href="https://news.adobe.com/news/2025/12/adobe-photoshop-express-acrobat-chatgpt">宣布</a>可以在ChatGPT里免费使用Photoshop、Adobe Express和Acrobat，比如P图、编辑PDF等</li> <li>Google Labs<a href="https://blog.google/technology/google-labs/gentabs-gemini-3">推出</a><a href="https://labs.google/disco">disco</a>，还有GenTab。新的浏览器形态探索，还挺有意思的！</li> <li>Google Labs更新了<a href="https://labs.google.com/mixboard/welcome">Mixboard</a>和<a href="https://labs.google/doppl">Doppl</a>。只能说Google Labs现在探索新的应用形态的速度还是相当可以的，希望能看到更多新时代产品走出来</li> <li>Cursor<a href="https://cursor.com/blog/browser-visual-editor">推出</a>Visual Editor，可视化设计工具，类似拖拉拽低代码</li> </ul> <h1 id="投资商业">投资&amp;商业</h1> <ul> <li>Fed还是继续降息了</li> <li>MiniMax和智谱计划在几周内完成港股IPO</li> <li>OAI取消了6个月的Vesting Cliff，进一步吸引顶尖人才的手段</li> </ul> <h1 id="其他阅读">其他阅读</h1> <ul> <li>MCP进Linux Foundation了</li> </ul>]]></content><author><name></name></author><category term="AI"/><category term="AI"/><category term="Tech"/><category term="LeoTalkAIWeekly"/><summary type="html"><![CDATA[时代杂志发布了The Architects of AI. 八个在AI领域重要的人（欧美为视角的国际视野）。]]></summary></entry></feed>