王福强的个人博客:一个架构士的思考与沉淀

王福强的个人博客:一个架构士的思考与沉淀

TVP 走进 宁德时代(CATL) 杂记

<!doctype html> <html lang="zh" class="motion-safe:scroll-smooth 2xl:text-[20px]"> <head> <meta charset="utf-8"> <meta name="keywords" content="TVP 走进 宁德时代(CATL) 杂记 - 架构师, 架构士,架构教练, 教练, 个人成长, 组织成长, 独立顾问, architecture, book author, thinker, fighter, 架构, 思考, 技术, 武术, 哲学"> <meta name="description" content="TVP 走进 宁德时代(CATL) 杂记 - 福强说,扶墙老师说,王福强的个人博客, 一个架构士的思考与沉淀"> <meta name="author" content="王福强"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="robots" content="index,follow"> <title>TVP 走进 宁德时代(CATL) 杂记 -王福强的个人博客:一个架构士的思考与沉淀</title> <meta name="date" content="2026-08-21"> <meta property="og:title" content="TVP 走进 宁德时代(CATL) 杂记"> <meta property="og:type" content="landing page"> <meta property="og:url" content="https://afoo.me/posts/2026-08-21-TVP-CATL-visit.html"> <meta property="og:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-08-21-TVP-CATL-visit.html"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="TVP 走进 宁德时代(CATL) 杂记"> <meta name="twitter:site" content="@afoo_me"> <meta name="twitter:creator" content="@afoo_me"> <meta name="twitter:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-08-21-TVP-CATL-visit.html"> <meta name="twitter:description" content="TVP 走进 宁德时代(CATL) 杂记 - 王福强的个人博客, 一个架构士的思考与沉淀"> <link rel="shortcut icon" href="/favicon.ico"> <link rel="canonical" href="https://afoo.me/posts/2026-08-21-TVP-CATL-visit.html"> <link rel="icon" type="image/svg+xml" href="https://afoo.me/favicon.svg"> <link rel="mask-icon" href="https://afoo.me/favicon.svg" color="#3383F8"> <script src="https://afoo.me/js/htmx.min.js"></script> <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css"> <script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script> <script src="https://afoo.me/js/popper.min.js"></script> <script src="https://afoo.me/js/tippy.min.js"></script> <link rel="stylesheet" href="/css/af.css"> <link rel="stylesheet" href="/css/components.css"> <link ref="stylesheet" href="/css/pygments.css"> <style type="text/css"> pre > code{ white-space: pre-wrap; font-family: monospace; font-size: 14px; /* border-left: blueviolet; border-left-width: thick; border-left-style: double; padding-left: 1rem !important; */ } .x-indicator{ display:none; } .htmx-request .x-indicator{ display:inline; } .htmx-request.x-indicator{ display:inline; } </style> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "NewsArticle", "headline": "TVP 走进 宁德时代(CATL) 杂记", "image": [ "https://afoo.me/images/fb_subscribe.jpg" ], "datePublished": "2026-08-21", "author": [{ "@type": "Person", "name": "王福强", "url": "https://afoo.me" }] } </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3687639021943715" crossorigin="anonymous"></script> </head> <body class="antialiased text-slate-800 dark:text-slate-300 tracking-tight bg-slate-50 dark:bg-gray-900 vsc-initialized"> <header class="sticky top-0 z-40 flex-none mx-auto w-full bg-slate-50 md:bg-slate-50/90 dark:bg-gray-900 dark:md:bg-gray-900/90 md:backdrop-blur-sm border-b border-slate-200 dark:border-b-0" id="header"> <div class="py-3 px-3 mx-auto w-full md:flex md:justify-between max-w-6xl md:px-4"> <div class="flex justify-between"> <a class="flex items-center" href="https://afoo.me"> <span class="self-center ml-2 text-2xl font-extrabold text-slate-800 whitespace-nowrap dark:text-white"> <img src="/images/afoo.PNG" alt="logo" style="height:60px;"> </span> </a> <div class="flex items-center md:hidden"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <button type="button" class="ml-1.5 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center transition" aria-label="Toggle Menu" data-toggle-menu=""> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveaspectratio="xMidYMid meet" viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:menu"> <g class="icon-tabler" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 8h16"></path> <path d="M4 16h16"></path> </g> </svg> </button> </div> </div> <nav class="items-center w-full md:w-auto hidden md:flex text-gray-600 dark:text-slate-200 h-screen md:h-auto" aria-label="Main navigation"> <ul class="flex flex-col pt-8 md:pt-0 md:flex-row md:self-center w-full md:w-auto text-xl md:text-base"> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://kb.afoo.me/">福强私学</a></li> <li> <a id="aiedu" class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://ai.afoo.me"> 福强AI学堂</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://jiagoubaike.com">架构百科</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/posts.html">博客文章 </a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/books.html">创作出版</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://store.afoo.me">产品与服务</a> </li> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://auth.afoo.me/user.html">登录信息</a></li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/crosslinks.html">更多链接</a> </li> </ul> <div class="md:self-center flex items-center mb-4 md:mb-0 ml-2"> <div class="hidden items-center md:flex"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="RSS Feed" href="http://afoo.me/feeds.xml"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:rss"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="5" cy="19" r="1"></circle> <path d="M4 4a16 16 0 0 1 16 16M4 11a9 9 0 0 1 9 9"></path> </g> </svg> </a> </div> </div> </nav> </div> </header> <main> <div id="leftSlot" class="visible md:invisible fixed top-0 left-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- left --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="3581141418" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div id="rightSlot" class="visible md:invisible fixed top-0 right-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- right --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7030836806" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <section class="text-gray-600 body-font relative"> <div class="max-w-4xl mx-auto px-5 py-24 mb-12 prose prose-lg dark:prose-invert"> <p class="lead"> </p> <h1 class="title">TVP 走进 宁德时代(CATL) 杂记</h1> <small> <h3 class="author">王福强</h3> <div style="text-align: left;"> 2026-08-21 </div> </small> <p></p> <!-- random --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="2722720851" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <p>上半年基本上埋头拉车</p> <p>恰好 <a href="https://cloud.tencent.com/tvp">TVP</a> 组织了走访宁德时代的活动</p> <p>遂报名参加</p> <p>也要经常抬头看路不是?😉</p> <p>下面是一些杂记,没有章法和逻辑,想到哪儿说到哪儿…</p> <h2 id="产线与工序">产线与工序</h2> <p>本次带我们参观的是2016年的厂(车间),不算最新,所以,没多少惊艳</p> <p>但已经是自动化程度很高了</p> <p>除了工序最后几个质检环节看到几个人</p> <p>整个工厂(车间)里几乎看不到人</p> <p>看到的只有机器</p> <p>偶尔几台轨道机器人</p> <p>主要是帮助物料衔接</p> <p>另外就是看到kuka机械臂堆垛,这应该是工厂里的常规场景吧?🤣</p> <p>我猜测</p> <p>宁德时代有三个代际的工厂</p> <ol type="1"> <li>最早的工厂,更多是靠人工(因为我在宁德时代附近酒店里刷短视频的时候,刷到很多厂妹厂哥儿的视频,应该是不是研发,而是生产,但按照我们参观的工厂生产情况,明显用不了那么多人)</li> <li>第二代工厂,也就是我们参观的这个工厂,自动化+少量人工</li> <li>最新的工厂,自动化程度更高,但怕泄密,所以,不对外开放参观。 (毕竟, 我们参观工厂环节也是不让拍照的,更不要说最新的工厂细节)</li> </ol> <p>当然,以上纯个人猜测😉</p> <h2 id="ab电池组">AB电池组</h2> <p>参观展厅的时候,有一个展示台挺有意思,用来展示不同材料电池的组合,比如可以用磷酸锂铁+三元锂组成一个组合电池,这个让我想起架构里的组合原则,更让我想起hybrid search或者fusion search之类的方案。</p> <p>看来架构或者说产品思想很多都是相通的。</p> <p>另外就是这个展示台的设计值得称赞,可以手动挑选电池块儿插入拼接,然后实时触发不同电池组合的演示视频介绍。</p> <h2 id="vent-安全阀">vent 安全阀</h2> <p>电芯层面的安全设计,如果有废气或者泄漏,vent安全阀破损后就意味着这个电芯废了。</p> <h2 id="formation">formation</h2> <p>我不知道你看到这个词儿能不能直觉性的了解它是什么意思?</p> <p>那“化成”呢?</p> <p>其实说实话,我听到介绍“化成”工序的时候,我认识这俩字儿,但我不知道啥意思</p> <p>然后我看到演示屏幕右上角对应的单词是“Fromation”,</p> <p>然后我心里反而有底了,因为我怀疑这个地方这个单词拼错了(typo)</p> <p>我就站着看了会儿视频,当看到视频里下面字幕里是formation的时候,我就确定了</p> <p>其实就是“成形”🤣</p> <p>整个参观过程,我自己有一个很强烈的感受</p> <p>当我看不懂汉字在说啥的时候,我看英文反而一眼就看懂了</p> <p>比如:</p> <ul> <li>麒麟凝聚态电池,凝聚态啥意思? 看英文是condensed battery,哦,原来就是更密集(浓缩的)电池🤣</li> <li>无人车,其实就是自动车辆/自主运行的车辆,Autonomous Vehicle</li> </ul> <p>所以,当有人告诉你说学英语没用的时候</p> <p>你是不是再考虑考虑?😉</p> <h2 id="桂花云贝">桂花云贝</h2> <p>今天晚宴上有道朴实无华的菜</p> <p>第一眼看上去是炒饭</p> <p>第二眼看上去又像是炒粉</p> <p>但一吃又特别鲜美,绝对不是炒饭的口感</p> <p>拍照问了豆包</p> <p>菜名叫“桂花云贝”</p> <p>别说,金灿灿的,是挺招人稀罕</p> <h2 id="自动驾驶">自动驾驶</h2> <p>下午分享交流环节,</p> <p>广汽的总师(介绍上这么写的,我不确定是不是就是这个职位称呼,还是总架构师/总工程师的缩写)给我们介绍了汽车自动驾驶的发展历史</p> <p>了解到业界现在的真实水平和营销水平</p> <p>最主要的是</p> <p>肯定了百度在这个领域的贡献</p> <p>你们不是天天骂百度吗?</p> <p>其实人家也有在干实事。😉</p> <h2 id="最后">最后</h2> <p>比较尴尬也比较巧合的是</p> <p>在这里遇到了原来在挖财的一个同事</p> <p>其实当时我们俩关系并不好</p> <p>甚至是水火不容</p> <p>我把他早拉黑了</p> <p>今天居然在现场遇到了😂</p> <p>但过去的就是过去了</p> <p>Let it be.</p> <p>况且,他应该是冲着腾讯云安全老大去的,碰到我真就是个巧合😂</p> <!-- tail --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7874087130" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <div> <a href="/posts.html"> <b> &gt;&gt;&gt;&gt;&gt;&gt; 更多阅读 &lt;&lt;&lt;&lt;&lt;&lt; </b></a> </div> <div id="random_posts"> <div class="alert alert-light" role="alert"> <a href="/posts/2005-00-00-launch-excel-with-jacob2.html">Excel</a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2025-05-30-why-say-so.html">为啥是“爱学不学”? </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2007-07-07-great-minds-think-alike.html">Great minds think alike </a> </div> </div> <hr> <div id="comments"></div> <hr> <!-- Section CTA --> <section class="overflow-x-clip bg-zinc-50 py-16 md:py-24"> <div class="relative mx-auto w-full max-w-screen-xl px-4"> <div class="relative z-10 w-full"> <!-- 福强私学推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://afoo.me/kb.html" class="border-b">「福强私学」</a>来一个?</h2> <p class="mx-auto mb-8 w-full text-center text-lg leading-8 text-zinc-700 md:w-5/6 md:text-xl">「福强私学」, 一部沉淀了个人成长、技术与架构、组织与管理以及商业上的方法与心法的百科全书。</p> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://afoo.me/kb.html"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="https://og.afoo.me/?url=footer"> </a> </div> <!-- 小报童推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mt-8 mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://xiaobot.net/p/aifd" class="border-b">福强老师的 AI 通识课</a></h2><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> </div><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://xiaobot.net/p/aifd" class="border-b"> </a><a href="https://xiaobot.net/p/aifd"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="/images/xbt-footer.webp"> </a> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <img alt="footer img for kb.afoo.me" loading="lazy" decoding="async" data-nimg="1" class="mx-auto p-3" style="color:transparent" src="/images/footer-links-2025.webp"> </div> </div> </div> </section> <hr> <p> <span style="font-size: xx-large;"> 开天窗,拉认知,订阅「福报」,即刻拥有自己的全模态人工智能。 </span> </p> <a href="https://wfq.gumroad.com/l/fb"> <img src="/images/fb_subscribe_v2.jpg" alt="订阅「福报」"> </a> <hr> <div hx-get="https://toolfooter.afoo.me/" hx-trigger="revealed" htmx-indicator="#tfloader"> <div id="tfloader" class="x-indicator"> <svg width="57" height="57" viewbox="0 0 57 57" xmlns="http://www.w3.org/2000/svg" stroke="#3F83F8"> <g fill="none" fill-rule="evenodd"> <g transform="translate(1 1)" stroke-width="2"> <circle cx="5" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="27" cy="5" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="49" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcmode="linear" repeatcount="indefinite" /> </circle> </g> </g> </svg> </div> </div> </div> </section> </main> <div style="position: fixed; left: 0; bottom: 0; padding: 10px; z-index: 1000;"> <img src="/icons/Written-By-Human-Not-By-AI-Badge-black@2x.png" alt loading="lazy"> </div> <footer class="border-t border-gray-200 dark:border-slate-800"> <div class="max-w-6xl mx-auto px-4 sm:px-6"> <div class="md:flex md:items-center md:justify-between py-6 md:py-8"> <ul class="flex mb-4 md:order-1 -ml-2 md:ml-4 md:mb-0"> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Twitter" href="https://twitter.com/afoo_me"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-twitter"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M22 4.01c-1 .49-1.98.689-3 .99-1.121-1.265-2.783-1.335-4.38-.737S11.977 6.323 12 8v1c-3.245.083-6.135-1.395-8-4 0 0-4.182 7.433 4 11-1.872 1.247-3.739 2.088-6 2 3.308 1.803 6.913 2.423 10.034 1.517 3.58-1.04 6.522-3.723 7.651-7.742a13.84 13.84 0 0 0 .497-3.753C20.18 7.773 21.692 5.25 22 4.009z"> </path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Facebook" href="https://www.facebook.com/fujohnwang/"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-facebook"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 10v4h3v7h4v-7h3l1-4h-4V8a1 1 0 0 1 1-1h3V3h-3a5 5 0 0 0-5 5v2H7"></path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Github" href="https://github.com/fujohnwang"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-github"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2 4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21"> </path> </svg> </a> </li> </ul> <div class="text-sm text-gray-700 mr-4 dark:text-slate-400"> <span class="w-5 h-5 md:w-6 md:h-6 md:-mt-0.5 bg-cover mr-1.5 float-left rounded-sm"> <img src="https://afoo.me/favicon.svg" class="rounded-md" alt> </span> Copyright © 王福强个人版权所有 - Since 2004 (Everything is homebrewed with <a href="https://pandoc.org/">Pandoc</a> and Markdown, little <a href="https://www.scala-lang.org/">Scala</a> also included.) </div> </div> </div> </footer> <script> // Set "light" theme as default if (!localStorage.theme) { localStorage.theme = "light"; } if ( localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) ) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } function attachEvent(selector, event, fn) { const matches = document.querySelectorAll(selector); if (matches && matches.length) { matches.forEach((elem) => { elem.addEventListener(event, () => fn(elem), false); }); } } window.onload = function () { attachEvent('[data-toggle-menu]', 'click', function (elem) { elem.classList.toggle('expanded'); document.body.classList.toggle('overflow-hidden'); document.getElementById('header')?.classList.toggle('h-screen'); document.querySelector('#header nav')?.classList.toggle('hidden'); }); attachEvent("[data-toggle-color-scheme]", "click", function () { document.documentElement.classList.toggle("light"); localStorage.theme = "light"; }); }; window.onpageshow = function () { const elem = document.querySelector('[data-toggle-menu]'); if (elem) { elem.classList.remove('expanded'); } document.body.classList.remove('overflow-hidden'); document.getElementById('header')?.classList.remove('h-screen'); document.querySelector('#header nav')?.classList.add('hidden'); }; </script> <script type="text/javascript"> var gitalk = new Gitalk({ clientID: '518a605d711883414ac0', clientSecret: '69fb8ccc0616c5bcbc64d24ece0d06d279da91ff', repo: 'afoo.me.comments', owner: 'fujohnwang', admin: ['fujohnwang'], id: location.pathname.substring(0, 49), // Ensure uniqueness and length less than 50 distractionFreeMode: false // Facebook-like distraction free mode }) gitalk.render('comments') </script> <script src="https://formspree.io/js/formbutton-v1.min.js" defer></script> <script> /* paste this line in verbatim */ window.formbutton=window.formbutton||function(){(formbutton.q=formbutton.q||[]).push(arguments)}; /* customize formbutton below*/ formbutton("create", { action: "https://formspree.io/f/xknlpkkd", title: "有什么可以帮到您?💕💕💕 How can I help you?", buttonImg: "<img src='https://afoo.me/hero3/70.webp' alt/>", fields: [ { type: "email", label: "您的电子邮箱(方便与您联系):", name: "email", required: true, placeholder: "your@email.com" }, { type: "textarea", label: "您想提交的反馈和询问信息:", name: "message", placeholder: "What's on your mind?", }, { type: "submit" } ], styles: { title: { backgroundColor: "blue" }, button: { backgroundColor: "blue" } } }); </script> <script> // tooltips tippy('#aiedu', { content: "As to AI nowadays, LLM and Stable Diffusion are hot even hottest among them, If your want to both know-why and know-how with them, instead of only know-how which can't repeat itself, you should get you to https://ai.afoo.me right now ❗" }); </script> </body> </html>

2026/8/20
阅读更多

这些 AI 产品的定位其实不一样

<!doctype html> <html lang="zh" class="motion-safe:scroll-smooth 2xl:text-[20px]"> <head> <meta charset="utf-8"> <meta name="keywords" content="这些 AI 产品的定位其实不一样 - 架构师, 架构士,架构教练, 教练, 个人成长, 组织成长, 独立顾问, architecture, book author, thinker, fighter, 架构, 思考, 技术, 武术, 哲学"> <meta name="description" content="这些 AI 产品的定位其实不一样 - 福强说,扶墙老师说,王福强的个人博客, 一个架构士的思考与沉淀"> <meta name="author" content="王福强"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="robots" content="index,follow"> <title>这些 AI 产品的定位其实不一样 -王福强的个人博客:一个架构士的思考与沉淀</title> <meta name="date" content="2026-08-14"> <meta property="og:title" content="这些 AI 产品的定位其实不一样"> <meta property="og:type" content="landing page"> <meta property="og:url" content="https://afoo.me/posts/2026-08-14-ai-products-positioning.html"> <meta property="og:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-08-14-ai-products-positioning.html"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="这些 AI 产品的定位其实不一样"> <meta name="twitter:site" content="@afoo_me"> <meta name="twitter:creator" content="@afoo_me"> <meta name="twitter:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-08-14-ai-products-positioning.html"> <meta name="twitter:description" content="这些 AI 产品的定位其实不一样 - 王福强的个人博客, 一个架构士的思考与沉淀"> <link rel="shortcut icon" href="/favicon.ico"> <link rel="canonical" href="https://afoo.me/posts/2026-08-14-ai-products-positioning.html"> <link rel="icon" type="image/svg+xml" href="https://afoo.me/favicon.svg"> <link rel="mask-icon" href="https://afoo.me/favicon.svg" color="#3383F8"> <script src="https://afoo.me/js/htmx.min.js"></script> <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css"> <script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script> <script src="https://afoo.me/js/popper.min.js"></script> <script src="https://afoo.me/js/tippy.min.js"></script> <link rel="stylesheet" href="/css/af.css"> <link rel="stylesheet" href="/css/components.css"> <link ref="stylesheet" href="/css/pygments.css"> <style type="text/css"> pre > code{ white-space: pre-wrap; font-family: monospace; font-size: 14px; /* border-left: blueviolet; border-left-width: thick; border-left-style: double; padding-left: 1rem !important; */ } .x-indicator{ display:none; } .htmx-request .x-indicator{ display:inline; } .htmx-request.x-indicator{ display:inline; } </style> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "NewsArticle", "headline": "这些 AI 产品的定位其实不一样", "image": [ "https://afoo.me/images/fb_subscribe.jpg" ], "datePublished": "2026-08-14", "author": [{ "@type": "Person", "name": "王福强", "url": "https://afoo.me" }] } </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3687639021943715" crossorigin="anonymous"></script> </head> <body class="antialiased text-slate-800 dark:text-slate-300 tracking-tight bg-slate-50 dark:bg-gray-900 vsc-initialized"> <header class="sticky top-0 z-40 flex-none mx-auto w-full bg-slate-50 md:bg-slate-50/90 dark:bg-gray-900 dark:md:bg-gray-900/90 md:backdrop-blur-sm border-b border-slate-200 dark:border-b-0" id="header"> <div class="py-3 px-3 mx-auto w-full md:flex md:justify-between max-w-6xl md:px-4"> <div class="flex justify-between"> <a class="flex items-center" href="https://afoo.me"> <span class="self-center ml-2 text-2xl font-extrabold text-slate-800 whitespace-nowrap dark:text-white"> <img src="/images/afoo.PNG" alt="logo" style="height:60px;"> </span> </a> <div class="flex items-center md:hidden"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <button type="button" class="ml-1.5 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center transition" aria-label="Toggle Menu" data-toggle-menu=""> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveaspectratio="xMidYMid meet" viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:menu"> <g class="icon-tabler" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 8h16"></path> <path d="M4 16h16"></path> </g> </svg> </button> </div> </div> <nav class="items-center w-full md:w-auto hidden md:flex text-gray-600 dark:text-slate-200 h-screen md:h-auto" aria-label="Main navigation"> <ul class="flex flex-col pt-8 md:pt-0 md:flex-row md:self-center w-full md:w-auto text-xl md:text-base"> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://kb.afoo.me/">福强私学</a></li> <li> <a id="aiedu" class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://ai.afoo.me"> 福强AI学堂</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://jiagoubaike.com">架构百科</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/posts.html">博客文章 </a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/books.html">创作出版</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://store.afoo.me">产品与服务</a> </li> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://auth.afoo.me/user.html">登录信息</a></li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/crosslinks.html">更多链接</a> </li> </ul> <div class="md:self-center flex items-center mb-4 md:mb-0 ml-2"> <div class="hidden items-center md:flex"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="RSS Feed" href="http://afoo.me/feeds.xml"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:rss"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="5" cy="19" r="1"></circle> <path d="M4 4a16 16 0 0 1 16 16M4 11a9 9 0 0 1 9 9"></path> </g> </svg> </a> </div> </div> </nav> </div> </header> <main> <div id="leftSlot" class="visible md:invisible fixed top-0 left-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- left --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="3581141418" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div id="rightSlot" class="visible md:invisible fixed top-0 right-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- right --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7030836806" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <section class="text-gray-600 body-font relative"> <div class="max-w-4xl mx-auto px-5 py-24 mb-12 prose prose-lg dark:prose-invert"> <p class="lead"> </p> <h1 class="title">这些 AI 产品的定位其实不一样</h1> <small> <h3 class="author">王福强</h3> <div style="text-align: left;"> 2026-08-14 </div> </small> <p></p> <!-- random --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="2722720851" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <p>什么是Coding Agents?</p> <p>即定位专注于写代码场景的AI Agents, 比如Claude Code, Codex,Grok Build, Pi,以及最新出来的DeepSeek Harness…</p> <h2 id="小龙虾-与-coding-agents">小龙虾 与 Coding Agents</h2> <p>小龙虾(OpenClaw)跟 Coding Agents 其实不完全一样。</p> <ul> <li>小龙虾偏服务器端,偏Remote, 用户访问它的时候,是通过其它外围channels,比如telegram,飞书之类IM产品;但Coding Agents更偏Local,通常跑在开发者使用的开发机上,虽然现在很多人喜欢结合UU/Tailscale/Paseo/Herdr等工具远程访问这些Coding Agents,但Coding Agents骨子里还是偏Local开发机上的Agents实现。</li> <li>小龙虾更偏通用Agents, Coding Agents更偏Coding;</li> <li>小龙虾的受众更广, Coding Agents的受众通常是研发;</li> </ul> <h2 id="workbuddy-与-coding-agents">WorkBuddy 与 Coding Agents</h2> <p>WorkBuddy的产品定位更偏办公, Coding Agents的产品定位还是Coding。</p> <h2 id="clitui-与-gui">CLI,TUI 与 GUI</h2> <p>同为Coding Agents,</p> <p>但Coding Agent跟Coding Agent其实也不一样</p> <p>比如Claude Code更偏重CLI产品形式</p> <p>而Codex更偏GUI产品形式(虽然也有rust版的CLI版)</p> <p>而像Herdr之类agents管理类的CLI工具,其实有点儿向TUI偏移了。</p> <!-- tail --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7874087130" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <div> <a href="/posts.html"> <b> &gt;&gt;&gt;&gt;&gt;&gt; 更多阅读 &lt;&lt;&lt;&lt;&lt;&lt; </b></a> </div> <div id="random_posts"> <div class="alert alert-light" role="alert"> <a href="/posts/2009-03-03-required-rate-of-return.html">必要回报率(Required Rate Of Return) </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2025-08-22-kvectors-intro.html">KVectors 向量数据库基本成型! </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2023-06-20-ali-reorg.html">啥?阿里巴巴又做组织结构调整了?! </a> </div> </div> <hr> <div id="comments"></div> <hr> <!-- Section CTA --> <section class="overflow-x-clip bg-zinc-50 py-16 md:py-24"> <div class="relative mx-auto w-full max-w-screen-xl px-4"> <div class="relative z-10 w-full"> <!-- 福强私学推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://afoo.me/kb.html" class="border-b">「福强私学」</a>来一个?</h2> <p class="mx-auto mb-8 w-full text-center text-lg leading-8 text-zinc-700 md:w-5/6 md:text-xl">「福强私学」, 一部沉淀了个人成长、技术与架构、组织与管理以及商业上的方法与心法的百科全书。</p> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://afoo.me/kb.html"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="https://og.afoo.me/?url=footer"> </a> </div> <!-- 小报童推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mt-8 mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://xiaobot.net/p/aifd" class="border-b">福强老师的 AI 通识课</a></h2><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> </div><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://xiaobot.net/p/aifd" class="border-b"> </a><a href="https://xiaobot.net/p/aifd"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="/images/xbt-footer.webp"> </a> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <img alt="footer img for kb.afoo.me" loading="lazy" decoding="async" data-nimg="1" class="mx-auto p-3" style="color:transparent" src="/images/footer-links-2025.webp"> </div> </div> </div> </section> <hr> <p> <span style="font-size: xx-large;"> 开天窗,拉认知,订阅「福报」,即刻拥有自己的全模态人工智能。 </span> </p> <a href="https://wfq.gumroad.com/l/fb"> <img src="/images/fb_subscribe_v2.jpg" alt="订阅「福报」"> </a> <hr> <div hx-get="https://toolfooter.afoo.me/" hx-trigger="revealed" htmx-indicator="#tfloader"> <div id="tfloader" class="x-indicator"> <svg width="57" height="57" viewbox="0 0 57 57" xmlns="http://www.w3.org/2000/svg" stroke="#3F83F8"> <g fill="none" fill-rule="evenodd"> <g transform="translate(1 1)" stroke-width="2"> <circle cx="5" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="27" cy="5" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="49" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcmode="linear" repeatcount="indefinite" /> </circle> </g> </g> </svg> </div> </div> </div> </section> </main> <div style="position: fixed; left: 0; bottom: 0; padding: 10px; z-index: 1000;"> <img src="/icons/Written-By-Human-Not-By-AI-Badge-black@2x.png" alt loading="lazy"> </div> <footer class="border-t border-gray-200 dark:border-slate-800"> <div class="max-w-6xl mx-auto px-4 sm:px-6"> <div class="md:flex md:items-center md:justify-between py-6 md:py-8"> <ul class="flex mb-4 md:order-1 -ml-2 md:ml-4 md:mb-0"> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Twitter" href="https://twitter.com/afoo_me"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-twitter"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M22 4.01c-1 .49-1.98.689-3 .99-1.121-1.265-2.783-1.335-4.38-.737S11.977 6.323 12 8v1c-3.245.083-6.135-1.395-8-4 0 0-4.182 7.433 4 11-1.872 1.247-3.739 2.088-6 2 3.308 1.803 6.913 2.423 10.034 1.517 3.58-1.04 6.522-3.723 7.651-7.742a13.84 13.84 0 0 0 .497-3.753C20.18 7.773 21.692 5.25 22 4.009z"> </path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Facebook" href="https://www.facebook.com/fujohnwang/"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-facebook"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 10v4h3v7h4v-7h3l1-4h-4V8a1 1 0 0 1 1-1h3V3h-3a5 5 0 0 0-5 5v2H7"></path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Github" href="https://github.com/fujohnwang"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-github"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2 4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21"> </path> </svg> </a> </li> </ul> <div class="text-sm text-gray-700 mr-4 dark:text-slate-400"> <span class="w-5 h-5 md:w-6 md:h-6 md:-mt-0.5 bg-cover mr-1.5 float-left rounded-sm"> <img src="https://afoo.me/favicon.svg" class="rounded-md" alt> </span> Copyright © 王福强个人版权所有 - Since 2004 (Everything is homebrewed with <a href="https://pandoc.org/">Pandoc</a> and Markdown, little <a href="https://www.scala-lang.org/">Scala</a> also included.) </div> </div> </div> </footer> <script> // Set "light" theme as default if (!localStorage.theme) { localStorage.theme = "light"; } if ( localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) ) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } function attachEvent(selector, event, fn) { const matches = document.querySelectorAll(selector); if (matches && matches.length) { matches.forEach((elem) => { elem.addEventListener(event, () => fn(elem), false); }); } } window.onload = function () { attachEvent('[data-toggle-menu]', 'click', function (elem) { elem.classList.toggle('expanded'); document.body.classList.toggle('overflow-hidden'); document.getElementById('header')?.classList.toggle('h-screen'); document.querySelector('#header nav')?.classList.toggle('hidden'); }); attachEvent("[data-toggle-color-scheme]", "click", function () { document.documentElement.classList.toggle("light"); localStorage.theme = "light"; }); }; window.onpageshow = function () { const elem = document.querySelector('[data-toggle-menu]'); if (elem) { elem.classList.remove('expanded'); } document.body.classList.remove('overflow-hidden'); document.getElementById('header')?.classList.remove('h-screen'); document.querySelector('#header nav')?.classList.add('hidden'); }; </script> <script type="text/javascript"> var gitalk = new Gitalk({ clientID: '518a605d711883414ac0', clientSecret: '69fb8ccc0616c5bcbc64d24ece0d06d279da91ff', repo: 'afoo.me.comments', owner: 'fujohnwang', admin: ['fujohnwang'], id: location.pathname.substring(0, 49), // Ensure uniqueness and length less than 50 distractionFreeMode: false // Facebook-like distraction free mode }) gitalk.render('comments') </script> <script src="https://formspree.io/js/formbutton-v1.min.js" defer></script> <script> /* paste this line in verbatim */ window.formbutton=window.formbutton||function(){(formbutton.q=formbutton.q||[]).push(arguments)}; /* customize formbutton below*/ formbutton("create", { action: "https://formspree.io/f/xknlpkkd", title: "有什么可以帮到您?💕💕💕 How can I help you?", buttonImg: "<img src='https://afoo.me/hero3/70.webp' alt/>", fields: [ { type: "email", label: "您的电子邮箱(方便与您联系):", name: "email", required: true, placeholder: "your@email.com" }, { type: "textarea", label: "您想提交的反馈和询问信息:", name: "message", placeholder: "What's on your mind?", }, { type: "submit" } ], styles: { title: { backgroundColor: "blue" }, button: { backgroundColor: "blue" } } }); </script> <script> // tooltips tippy('#aiedu', { content: "As to AI nowadays, LLM and Stable Diffusion are hot even hottest among them, If your want to both know-why and know-how with them, instead of only know-how which can't repeat itself, you should get you to https://ai.afoo.me right now ❗" }); </script> </body> </html>

2026/8/13
阅读更多

录音硬件类产品随想

<!doctype html> <html lang="zh" class="motion-safe:scroll-smooth 2xl:text-[20px]"> <head> <meta charset="utf-8"> <meta name="keywords" content="录音硬件类产品随想 - 架构师, 架构士,架构教练, 教练, 个人成长, 组织成长, 独立顾问, architecture, book author, thinker, fighter, 架构, 思考, 技术, 武术, 哲学"> <meta name="description" content="录音硬件类产品随想 - 福强说,扶墙老师说,王福强的个人博客, 一个架构士的思考与沉淀"> <meta name="author" content="王福强"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="robots" content="index,follow"> <title>录音硬件类产品随想 -王福强的个人博客:一个架构士的思考与沉淀</title> <meta name="date" content="2026-08-13"> <meta property="og:title" content="录音硬件类产品随想"> <meta property="og:type" content="landing page"> <meta property="og:url" content="https://afoo.me/posts/2026-08-13-open-recorder-product-thought.html"> <meta property="og:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-08-13-open-recorder-product-thought.html"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="录音硬件类产品随想"> <meta name="twitter:site" content="@afoo_me"> <meta name="twitter:creator" content="@afoo_me"> <meta name="twitter:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-08-13-open-recorder-product-thought.html"> <meta name="twitter:description" content="录音硬件类产品随想 - 王福强的个人博客, 一个架构士的思考与沉淀"> <link rel="shortcut icon" href="/favicon.ico"> <link rel="canonical" href="https://afoo.me/posts/2026-08-13-open-recorder-product-thought.html"> <link rel="icon" type="image/svg+xml" href="https://afoo.me/favicon.svg"> <link rel="mask-icon" href="https://afoo.me/favicon.svg" color="#3383F8"> <script src="https://afoo.me/js/htmx.min.js"></script> <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css"> <script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script> <script src="https://afoo.me/js/popper.min.js"></script> <script src="https://afoo.me/js/tippy.min.js"></script> <link rel="stylesheet" href="/css/af.css"> <link rel="stylesheet" href="/css/components.css"> <link ref="stylesheet" href="/css/pygments.css"> <style type="text/css"> pre > code{ white-space: pre-wrap; font-family: monospace; font-size: 14px; /* border-left: blueviolet; border-left-width: thick; border-left-style: double; padding-left: 1rem !important; */ } .x-indicator{ display:none; } .htmx-request .x-indicator{ display:inline; } .htmx-request.x-indicator{ display:inline; } </style> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "NewsArticle", "headline": "录音硬件类产品随想", "image": [ "https://afoo.me/images/fb_subscribe.jpg" ], "datePublished": "2026-08-13", "author": [{ "@type": "Person", "name": "王福强", "url": "https://afoo.me" }] } </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3687639021943715" crossorigin="anonymous"></script> </head> <body class="antialiased text-slate-800 dark:text-slate-300 tracking-tight bg-slate-50 dark:bg-gray-900 vsc-initialized"> <header class="sticky top-0 z-40 flex-none mx-auto w-full bg-slate-50 md:bg-slate-50/90 dark:bg-gray-900 dark:md:bg-gray-900/90 md:backdrop-blur-sm border-b border-slate-200 dark:border-b-0" id="header"> <div class="py-3 px-3 mx-auto w-full md:flex md:justify-between max-w-6xl md:px-4"> <div class="flex justify-between"> <a class="flex items-center" href="https://afoo.me"> <span class="self-center ml-2 text-2xl font-extrabold text-slate-800 whitespace-nowrap dark:text-white"> <img src="/images/afoo.PNG" alt="logo" style="height:60px;"> </span> </a> <div class="flex items-center md:hidden"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <button type="button" class="ml-1.5 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center transition" aria-label="Toggle Menu" data-toggle-menu=""> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveaspectratio="xMidYMid meet" viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:menu"> <g class="icon-tabler" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 8h16"></path> <path d="M4 16h16"></path> </g> </svg> </button> </div> </div> <nav class="items-center w-full md:w-auto hidden md:flex text-gray-600 dark:text-slate-200 h-screen md:h-auto" aria-label="Main navigation"> <ul class="flex flex-col pt-8 md:pt-0 md:flex-row md:self-center w-full md:w-auto text-xl md:text-base"> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://kb.afoo.me/">福强私学</a></li> <li> <a id="aiedu" class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://ai.afoo.me"> 福强AI学堂</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://jiagoubaike.com">架构百科</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/posts.html">博客文章 </a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/books.html">创作出版</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://store.afoo.me">产品与服务</a> </li> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://auth.afoo.me/user.html">登录信息</a></li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/crosslinks.html">更多链接</a> </li> </ul> <div class="md:self-center flex items-center mb-4 md:mb-0 ml-2"> <div class="hidden items-center md:flex"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="RSS Feed" href="http://afoo.me/feeds.xml"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:rss"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="5" cy="19" r="1"></circle> <path d="M4 4a16 16 0 0 1 16 16M4 11a9 9 0 0 1 9 9"></path> </g> </svg> </a> </div> </div> </nav> </div> </header> <main> <div id="leftSlot" class="visible md:invisible fixed top-0 left-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- left --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="3581141418" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div id="rightSlot" class="visible md:invisible fixed top-0 right-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- right --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7030836806" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <section class="text-gray-600 body-font relative"> <div class="max-w-4xl mx-auto px-5 py-24 mb-12 prose prose-lg dark:prose-invert"> <p class="lead"> </p> <h1 class="title">录音硬件类产品随想</h1> <small> <h3 class="author">王福强</h3> <div style="text-align: left;"> 2026-08-13 </div> </small> <p></p> <!-- random --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="2722720851" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <p>我​⁣⁣⁣‌‌⁣⁣⁣⁣‌⁣‌‌⁣⁣‌⁣‌‌‌⁣⁣⁣⁣⁣⁣⁣‌‌⁣‌⁣⁣‌⁣⁣⁣⁣‌‌⁣‌⁣⁣⁣‌⁣‌‍对录音卡之类的产品需求其实挺简单的:</p> <ol type="1"> <li>录音设备极简化设计,只有开关按钮和故障灯,剩下就是充电接口,绝不能有各种状态、显示屏等乱七八糟的设计。</li> <li>录音设备的充电和数据传输最好一条线搞定,因为我需要根据这条线来判断充电状态和数据传输</li> <li>录音设备插到专用dock上后,自动备份数据并上传到云端(产品原型是一台macbook pro + hammerspoon 自定义脚本);</li> </ol> <p>整个产品架构中, 录音设备 和 专用dock 是关键。</p> <p>如果要商业化,也是专注在专用dock层面, 通过硬件加管理app形成附加价值, 允许用户配置类似于是否要做ASR(自动转录)、是否上传云端后自动清理录音设备、是否要配置多个云端存储等等。</p> <p>专用dock尽量轻量化设计,只负责充电和数据传输,不拥有大容量存储,否则就偏NAS了。</p> <p>整个产品组合的核心理念是,每日routine + fire&amp;forget。</p> <p>具体来说就是,每天从dock上取下录音设备后即开机,全天录音,让录音设备成为自己的增强电子耳朵,到家或者休息之前,把录音设备插到dock上,dock自动上传数据并充电。</p> <p>这样,对于用户来说可以很快形成习惯,又没有太多执行和认知负担,很容易持续落实。</p> <p>至于像什么转录分析啥的,大部分时候不需要,但因为有dock和对应的app,也很容易扩展,但从来不是这套产品体系的关键诉求。</p> <!-- tail --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7874087130" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <div> <a href="/posts.html"> <b> &gt;&gt;&gt;&gt;&gt;&gt; 更多阅读 &lt;&lt;&lt;&lt;&lt;&lt; </b></a> </div> <div id="random_posts"> <div class="alert alert-light" role="alert"> <a href="/posts/2025-10-17-vector-db-training-delivery-successfully.html">向量数据库系列第二期企业培训圆满落幕! </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2024-05-11-java-not-dead.html">没想到!Java真不行了! </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2011-05-31-multiple_mysql_slaves_with_same_serverid.html">mysql多个slave使用同一个server id会怎样? </a> </div> </div> <hr> <div id="comments"></div> <hr> <!-- Section CTA --> <section class="overflow-x-clip bg-zinc-50 py-16 md:py-24"> <div class="relative mx-auto w-full max-w-screen-xl px-4"> <div class="relative z-10 w-full"> <!-- 福强私学推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://afoo.me/kb.html" class="border-b">「福强私学」</a>来一个?</h2> <p class="mx-auto mb-8 w-full text-center text-lg leading-8 text-zinc-700 md:w-5/6 md:text-xl">「福强私学」, 一部沉淀了个人成长、技术与架构、组织与管理以及商业上的方法与心法的百科全书。</p> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://afoo.me/kb.html"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="https://og.afoo.me/?url=footer"> </a> </div> <!-- 小报童推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mt-8 mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://xiaobot.net/p/aifd" class="border-b">福强老师的 AI 通识课</a></h2><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> </div><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://xiaobot.net/p/aifd" class="border-b"> </a><a href="https://xiaobot.net/p/aifd"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="/images/xbt-footer.webp"> </a> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <img alt="footer img for kb.afoo.me" loading="lazy" decoding="async" data-nimg="1" class="mx-auto p-3" style="color:transparent" src="/images/footer-links-2025.webp"> </div> </div> </div> </section> <hr> <p> <span style="font-size: xx-large;"> 开天窗,拉认知,订阅「福报」,即刻拥有自己的全模态人工智能。 </span> </p> <a href="https://wfq.gumroad.com/l/fb"> <img src="/images/fb_subscribe_v2.jpg" alt="订阅「福报」"> </a> <hr> <div hx-get="https://toolfooter.afoo.me/" hx-trigger="revealed" htmx-indicator="#tfloader"> <div id="tfloader" class="x-indicator"> <svg width="57" height="57" viewbox="0 0 57 57" xmlns="http://www.w3.org/2000/svg" stroke="#3F83F8"> <g fill="none" fill-rule="evenodd"> <g transform="translate(1 1)" stroke-width="2"> <circle cx="5" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="27" cy="5" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="49" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcmode="linear" repeatcount="indefinite" /> </circle> </g> </g> </svg> </div> </div> </div> </section> </main> <div style="position: fixed; left: 0; bottom: 0; padding: 10px; z-index: 1000;"> <img src="/icons/Written-By-Human-Not-By-AI-Badge-black@2x.png" alt loading="lazy"> </div> <footer class="border-t border-gray-200 dark:border-slate-800"> <div class="max-w-6xl mx-auto px-4 sm:px-6"> <div class="md:flex md:items-center md:justify-between py-6 md:py-8"> <ul class="flex mb-4 md:order-1 -ml-2 md:ml-4 md:mb-0"> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Twitter" href="https://twitter.com/afoo_me"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-twitter"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M22 4.01c-1 .49-1.98.689-3 .99-1.121-1.265-2.783-1.335-4.38-.737S11.977 6.323 12 8v1c-3.245.083-6.135-1.395-8-4 0 0-4.182 7.433 4 11-1.872 1.247-3.739 2.088-6 2 3.308 1.803 6.913 2.423 10.034 1.517 3.58-1.04 6.522-3.723 7.651-7.742a13.84 13.84 0 0 0 .497-3.753C20.18 7.773 21.692 5.25 22 4.009z"> </path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Facebook" href="https://www.facebook.com/fujohnwang/"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-facebook"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 10v4h3v7h4v-7h3l1-4h-4V8a1 1 0 0 1 1-1h3V3h-3a5 5 0 0 0-5 5v2H7"></path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Github" href="https://github.com/fujohnwang"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-github"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2 4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21"> </path> </svg> </a> </li> </ul> <div class="text-sm text-gray-700 mr-4 dark:text-slate-400"> <span class="w-5 h-5 md:w-6 md:h-6 md:-mt-0.5 bg-cover mr-1.5 float-left rounded-sm"> <img src="https://afoo.me/favicon.svg" class="rounded-md" alt> </span> Copyright © 王福强个人版权所有 - Since 2004 (Everything is homebrewed with <a href="https://pandoc.org/">Pandoc</a> and Markdown, little <a href="https://www.scala-lang.org/">Scala</a> also included.) </div> </div> </div> </footer> <script> // Set "light" theme as default if (!localStorage.theme) { localStorage.theme = "light"; } if ( localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) ) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } function attachEvent(selector, event, fn) { const matches = document.querySelectorAll(selector); if (matches && matches.length) { matches.forEach((elem) => { elem.addEventListener(event, () => fn(elem), false); }); } } window.onload = function () { attachEvent('[data-toggle-menu]', 'click', function (elem) { elem.classList.toggle('expanded'); document.body.classList.toggle('overflow-hidden'); document.getElementById('header')?.classList.toggle('h-screen'); document.querySelector('#header nav')?.classList.toggle('hidden'); }); attachEvent("[data-toggle-color-scheme]", "click", function () { document.documentElement.classList.toggle("light"); localStorage.theme = "light"; }); }; window.onpageshow = function () { const elem = document.querySelector('[data-toggle-menu]'); if (elem) { elem.classList.remove('expanded'); } document.body.classList.remove('overflow-hidden'); document.getElementById('header')?.classList.remove('h-screen'); document.querySelector('#header nav')?.classList.add('hidden'); }; </script> <script type="text/javascript"> var gitalk = new Gitalk({ clientID: '518a605d711883414ac0', clientSecret: '69fb8ccc0616c5bcbc64d24ece0d06d279da91ff', repo: 'afoo.me.comments', owner: 'fujohnwang', admin: ['fujohnwang'], id: location.pathname.substring(0, 49), // Ensure uniqueness and length less than 50 distractionFreeMode: false // Facebook-like distraction free mode }) gitalk.render('comments') </script> <script src="https://formspree.io/js/formbutton-v1.min.js" defer></script> <script> /* paste this line in verbatim */ window.formbutton=window.formbutton||function(){(formbutton.q=formbutton.q||[]).push(arguments)}; /* customize formbutton below*/ formbutton("create", { action: "https://formspree.io/f/xknlpkkd", title: "有什么可以帮到您?💕💕💕 How can I help you?", buttonImg: "<img src='https://afoo.me/hero3/70.webp' alt/>", fields: [ { type: "email", label: "您的电子邮箱(方便与您联系):", name: "email", required: true, placeholder: "your@email.com" }, { type: "textarea", label: "您想提交的反馈和询问信息:", name: "message", placeholder: "What's on your mind?", }, { type: "submit" } ], styles: { title: { backgroundColor: "blue" }, button: { backgroundColor: "blue" } } }); </script> <script> // tooltips tippy('#aiedu', { content: "As to AI nowadays, LLM and Stable Diffusion are hot even hottest among them, If your want to both know-why and know-how with them, instead of only know-how which can't repeat itself, you should get you to https://ai.afoo.me right now ❗" }); </script> </body> </html>

2026/8/12
阅读更多

FSCloud 面向个人有自部署能力的用户开放试用啦~

<!doctype html> <html lang="zh" class="motion-safe:scroll-smooth 2xl:text-[20px]"> <head> <meta charset="utf-8"> <meta name="keywords" content="FSCloud 面向个人有自部署能力的用户开放试用啦~ - 架构师, 架构士,架构教练, 教练, 个人成长, 组织成长, 独立顾问, architecture, book author, thinker, fighter, 架构, 思考, 技术, 武术, 哲学"> <meta name="description" content="FSCloud 面向个人有自部署能力的用户开放试用啦~ - 福强说,扶墙老师说,王福强的个人博客, 一个架构士的思考与沉淀"> <meta name="author" content="王福强"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="robots" content="index,follow"> <title>FSCloud 面向个人有自部署能力的用户开放试用啦~ -王福强的个人博客:一个架构士的思考与沉淀</title> <meta name="date" content="2026-08-11"> <meta property="og:title" content="FSCloud 面向个人有自部署能力的用户开放试用啦~"> <meta property="og:type" content="landing page"> <meta property="og:url" content="https://afoo.me/posts/2026-08-11-open-fscloud-trial-for-hackers.html"> <meta property="og:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-08-11-open-fscloud-trial-for-hackers.html"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="FSCloud 面向个人有自部署能力的用户开放试用啦~"> <meta name="twitter:site" content="@afoo_me"> <meta name="twitter:creator" content="@afoo_me"> <meta name="twitter:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-08-11-open-fscloud-trial-for-hackers.html"> <meta name="twitter:description" content="FSCloud 面向个人有自部署能力的用户开放试用啦~ - 王福强的个人博客, 一个架构士的思考与沉淀"> <link rel="shortcut icon" href="/favicon.ico"> <link rel="canonical" href="https://afoo.me/posts/2026-08-11-open-fscloud-trial-for-hackers.html"> <link rel="icon" type="image/svg+xml" href="https://afoo.me/favicon.svg"> <link rel="mask-icon" href="https://afoo.me/favicon.svg" color="#3383F8"> <script src="https://afoo.me/js/htmx.min.js"></script> <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css"> <script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script> <script src="https://afoo.me/js/popper.min.js"></script> <script src="https://afoo.me/js/tippy.min.js"></script> <link rel="stylesheet" href="/css/af.css"> <link rel="stylesheet" href="/css/components.css"> <link ref="stylesheet" href="/css/pygments.css"> <style type="text/css"> pre > code{ white-space: pre-wrap; font-family: monospace; font-size: 14px; /* border-left: blueviolet; border-left-width: thick; border-left-style: double; padding-left: 1rem !important; */ } .x-indicator{ display:none; } .htmx-request .x-indicator{ display:inline; } .htmx-request.x-indicator{ display:inline; } </style> <style type="text/css"> pre > code.sourceCode { white-space: pre; position: relative; } pre > code.sourceCode > span { line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } div.sourceCode { margin: 1em 0; } pre.sourceCode { margin: 0; } @media screen { div.sourceCode { overflow: auto; } } @media print { pre > code.sourceCode { white-space: pre-wrap; } pre > code.sourceCode > span { display: inline-block; text-indent: -5em; padding-left: 5em; } } pre.numberSource code { counter-reset: source-line 0; } pre.numberSource code > span { position: relative; left: -4em; counter-increment: source-line; } pre.numberSource code > span > a:first-child::before { content: counter(source-line); position: relative; left: -1em; text-align: right; vertical-align: baseline; border: none; display: inline-block; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; padding: 0 4px; width: 4em; color: #aaaaaa; } pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } div.sourceCode { } @media screen { pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } } code span.al { color: #ff0000; font-weight: bold; } /* Alert */ code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */ code span.at { color: #7d9029; } /* Attribute */ code span.bn { color: #40a070; } /* BaseN */ code span.bu { color: #008000; } /* BuiltIn */ code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */ code span.ch { color: #4070a0; } /* Char */ code span.cn { color: #880000; } /* Constant */ code span.co { color: #60a0b0; font-style: italic; } /* Comment */ code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */ code span.do { color: #ba2121; font-style: italic; } /* Documentation */ code span.dt { color: #902000; } /* DataType */ code span.dv { color: #40a070; } /* DecVal */ code span.er { color: #ff0000; font-weight: bold; } /* Error */ code span.ex { } /* Extension */ code span.fl { color: #40a070; } /* Float */ code span.fu { color: #06287e; } /* Function */ code span.im { color: #008000; font-weight: bold; } /* Import */ code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */ code span.kw { color: #007020; font-weight: bold; } /* Keyword */ code span.op { color: #666666; } /* Operator */ code span.ot { color: #007020; } /* Other */ code span.pp { color: #bc7a00; } /* Preprocessor */ code span.sc { color: #4070a0; } /* SpecialChar */ code span.ss { color: #bb6688; } /* SpecialString */ code span.st { color: #4070a0; } /* String */ code span.va { color: #19177c; } /* Variable */ code span.vs { color: #4070a0; } /* VerbatimString */ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */ </style> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "NewsArticle", "headline": "FSCloud 面向个人有自部署能力的用户开放试用啦~", "image": [ "https://afoo.me/images/fb_subscribe.jpg" ], "datePublished": "2026-08-11", "author": [{ "@type": "Person", "name": "王福强", "url": "https://afoo.me" }] } </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3687639021943715" crossorigin="anonymous"></script> </head> <body class="antialiased text-slate-800 dark:text-slate-300 tracking-tight bg-slate-50 dark:bg-gray-900 vsc-initialized"> <header class="sticky top-0 z-40 flex-none mx-auto w-full bg-slate-50 md:bg-slate-50/90 dark:bg-gray-900 dark:md:bg-gray-900/90 md:backdrop-blur-sm border-b border-slate-200 dark:border-b-0" id="header"> <div class="py-3 px-3 mx-auto w-full md:flex md:justify-between max-w-6xl md:px-4"> <div class="flex justify-between"> <a class="flex items-center" href="https://afoo.me"> <span class="self-center ml-2 text-2xl font-extrabold text-slate-800 whitespace-nowrap dark:text-white"> <img src="/images/afoo.PNG" alt="logo" style="height:60px;"> </span> </a> <div class="flex items-center md:hidden"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <button type="button" class="ml-1.5 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center transition" aria-label="Toggle Menu" data-toggle-menu=""> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveaspectratio="xMidYMid meet" viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:menu"> <g class="icon-tabler" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 8h16"></path> <path d="M4 16h16"></path> </g> </svg> </button> </div> </div> <nav class="items-center w-full md:w-auto hidden md:flex text-gray-600 dark:text-slate-200 h-screen md:h-auto" aria-label="Main navigation"> <ul class="flex flex-col pt-8 md:pt-0 md:flex-row md:self-center w-full md:w-auto text-xl md:text-base"> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://kb.afoo.me/">福强私学</a></li> <li> <a id="aiedu" class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://ai.afoo.me"> 福强AI学堂</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://jiagoubaike.com">架构百科</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/posts.html">博客文章 </a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/books.html">创作出版</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://store.afoo.me">产品与服务</a> </li> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://auth.afoo.me/user.html">登录信息</a></li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/crosslinks.html">更多链接</a> </li> </ul> <div class="md:self-center flex items-center mb-4 md:mb-0 ml-2"> <div class="hidden items-center md:flex"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="RSS Feed" href="http://afoo.me/feeds.xml"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:rss"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="5" cy="19" r="1"></circle> <path d="M4 4a16 16 0 0 1 16 16M4 11a9 9 0 0 1 9 9"></path> </g> </svg> </a> </div> </div> </nav> </div> </header> <main> <div id="leftSlot" class="visible md:invisible fixed top-0 left-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- left --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="3581141418" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div id="rightSlot" class="visible md:invisible fixed top-0 right-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- right --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7030836806" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <section class="text-gray-600 body-font relative"> <div class="max-w-4xl mx-auto px-5 py-24 mb-12 prose prose-lg dark:prose-invert"> <p class="lead"> </p> <h1 class="title">FSCloud 面向个人有自部署能力的用户开放试用啦~</h1> <small> <h3 class="author">王福强</h3> <div style="text-align: left;"> 2026-08-11 </div> </small> <p></p> <!-- random --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="2722720851" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <p>安装部署很简单,</p> <p>首先确保本地已经安装了Docker(Docker Desktop或者OrbStack等都可以)</p> <p>然后<a href="https://keevol.cn/fscloud/docker-compose.yml">下载</a>或者保存如下<code>docker-compose.yaml</code>配置内容到本地任意目录(保存到文件名依然需要是<code>docker-compose.yaml</code>):</p> <div class="sourceCode" id="cb1"> <pre class="sourceCode yml"><code class="sourceCode yaml"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">x-app-env</span><span class="kw">:</span><span class="at"> </span><span class="ot">&amp;app-env</span></span> <span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FSCLOUD_PROFILE</span><span class="kw">:</span><span class="at"> development</span></span> <span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_DATABASE__URL</span><span class="kw">:</span><span class="at"> postgres://fscloud:fscloud@postgres:5432/fscloud?sslmode=disable</span></span> <span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_REDIS__ADDR</span><span class="kw">:</span><span class="at"> redis:6379</span></span> <span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_REDIS__PASSWORD</span><span class="kw">:</span><span class="at"> fscloud</span></span> <span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_REDIS__DB</span><span class="kw">:</span><span class="at"> </span><span class="st">"0"</span></span> <span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_MINIO__ENDPOINT</span><span class="kw">:</span><span class="at"> minio:9000</span></span> <span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_MINIO__ACCESS_KEY</span><span class="kw">:</span><span class="at"> minioadmin</span></span> <span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_MINIO__SECRET_KEY</span><span class="kw">:</span><span class="at"> minioadmin</span></span> <span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_MINIO__BUCKET</span><span class="kw">:</span><span class="at"> fscloud</span></span> <span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_MINIO__USE_SSL</span><span class="kw">:</span><span class="at"> </span><span class="st">"false"</span></span> <span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_MINIO__REGION</span><span class="kw">:</span><span class="at"> us-east-1</span></span> <span id="cb1-13"><a href="#cb1-13" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_JWT__ACCESS_SECRET</span><span class="kw">:</span><span class="at"> ${FS_JWT_SECRET:-fscloud-trial-jwt-secret}</span></span> <span id="cb1-14"><a href="#cb1-14" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_JWT__REFRESH_SECRET</span><span class="kw">:</span><span class="at"> ${FS_JWT_SECRET:-fscloud-trial-jwt-secret}</span></span> <span id="cb1-15"><a href="#cb1-15" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_NODE__REGION</span><span class="kw">:</span><span class="at"> local</span></span> <span id="cb1-16"><a href="#cb1-16" aria-hidden="true" tabindex="-1"></a></span> <span id="cb1-17"><a href="#cb1-17" aria-hidden="true" tabindex="-1"></a><span class="fu">services</span><span class="kw">:</span></span> <span id="cb1-18"><a href="#cb1-18" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">postgres</span><span class="kw">:</span></span> <span id="cb1-19"><a href="#cb1-19" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> postgres:16-alpine</span></span> <span id="cb1-20"><a href="#cb1-20" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">environment</span><span class="kw">:</span></span> <span id="cb1-21"><a href="#cb1-21" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">POSTGRES_USER</span><span class="kw">:</span><span class="at"> fscloud</span></span> <span id="cb1-22"><a href="#cb1-22" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">POSTGRES_PASSWORD</span><span class="kw">:</span><span class="at"> fscloud</span></span> <span id="cb1-23"><a href="#cb1-23" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">POSTGRES_DB</span><span class="kw">:</span><span class="at"> fscloud</span></span> <span id="cb1-24"><a href="#cb1-24" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">volumes</span><span class="kw">:</span></span> <span id="cb1-25"><a href="#cb1-25" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> postgres-data:/var/lib/postgresql/data</span></span> <span id="cb1-26"><a href="#cb1-26" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">healthcheck</span><span class="kw">:</span></span> <span id="cb1-27"><a href="#cb1-27" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">test</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="st">"CMD-SHELL"</span><span class="kw">,</span><span class="at"> </span><span class="st">"pg_isready -U fscloud -d fscloud"</span><span class="kw">]</span></span> <span id="cb1-28"><a href="#cb1-28" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">interval</span><span class="kw">:</span><span class="at"> 5s</span></span> <span id="cb1-29"><a href="#cb1-29" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">timeout</span><span class="kw">:</span><span class="at"> 3s</span></span> <span id="cb1-30"><a href="#cb1-30" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">retries</span><span class="kw">:</span><span class="at"> </span><span class="dv">20</span></span> <span id="cb1-31"><a href="#cb1-31" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">restart</span><span class="kw">:</span><span class="at"> unless-stopped</span></span> <span id="cb1-32"><a href="#cb1-32" aria-hidden="true" tabindex="-1"></a></span> <span id="cb1-33"><a href="#cb1-33" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">migrate</span><span class="kw">:</span></span> <span id="cb1-34"><a href="#cb1-34" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> ${IMAGE_REGISTRY:-fujohnwang}/fscloud-migrations:${IMAGE_TAG:-latest}</span></span> <span id="cb1-35"><a href="#cb1-35" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">environment</span><span class="kw">:</span></span> <span id="cb1-36"><a href="#cb1-36" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">POSTGRES_USER</span><span class="kw">:</span><span class="at"> fscloud</span></span> <span id="cb1-37"><a href="#cb1-37" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">POSTGRES_PASSWORD</span><span class="kw">:</span><span class="at"> fscloud</span></span> <span id="cb1-38"><a href="#cb1-38" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">POSTGRES_DB</span><span class="kw">:</span><span class="at"> fscloud</span></span> <span id="cb1-39"><a href="#cb1-39" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">PGHOST</span><span class="kw">:</span><span class="at"> postgres</span></span> <span id="cb1-40"><a href="#cb1-40" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">PGPORT</span><span class="kw">:</span><span class="at"> </span><span class="st">"5432"</span></span> <span id="cb1-41"><a href="#cb1-41" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">PGPASSWORD</span><span class="kw">:</span><span class="at"> fscloud</span></span> <span id="cb1-42"><a href="#cb1-42" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">depends_on</span><span class="kw">:</span></span> <span id="cb1-43"><a href="#cb1-43" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">postgres</span><span class="kw">:</span></span> <span id="cb1-44"><a href="#cb1-44" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">condition</span><span class="kw">:</span><span class="at"> service_healthy</span></span> <span id="cb1-45"><a href="#cb1-45" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">restart</span><span class="kw">:</span><span class="at"> </span><span class="st">"no"</span></span> <span id="cb1-46"><a href="#cb1-46" aria-hidden="true" tabindex="-1"></a></span> <span id="cb1-47"><a href="#cb1-47" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">redis</span><span class="kw">:</span></span> <span id="cb1-48"><a href="#cb1-48" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> redis:7-alpine</span></span> <span id="cb1-49"><a href="#cb1-49" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">command</span><span class="kw">:</span></span> <span id="cb1-50"><a href="#cb1-50" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> redis-server</span></span> <span id="cb1-51"><a href="#cb1-51" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> --requirepass</span></span> <span id="cb1-52"><a href="#cb1-52" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> fscloud</span></span> <span id="cb1-53"><a href="#cb1-53" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> --appendonly</span></span> <span id="cb1-54"><a href="#cb1-54" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> </span><span class="st">"yes"</span></span> <span id="cb1-55"><a href="#cb1-55" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> --appendfsync</span></span> <span id="cb1-56"><a href="#cb1-56" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> everysec</span></span> <span id="cb1-57"><a href="#cb1-57" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> --maxmemory-policy</span></span> <span id="cb1-58"><a href="#cb1-58" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> noeviction</span></span> <span id="cb1-59"><a href="#cb1-59" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">volumes</span><span class="kw">:</span></span> <span id="cb1-60"><a href="#cb1-60" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> redis-data:/data</span></span> <span id="cb1-61"><a href="#cb1-61" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">healthcheck</span><span class="kw">:</span></span> <span id="cb1-62"><a href="#cb1-62" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">test</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="st">"CMD"</span><span class="kw">,</span><span class="at"> </span><span class="st">"redis-cli"</span><span class="kw">,</span><span class="at"> </span><span class="st">"-a"</span><span class="kw">,</span><span class="at"> </span><span class="st">"fscloud"</span><span class="kw">,</span><span class="at"> </span><span class="st">"ping"</span><span class="kw">]</span></span> <span id="cb1-63"><a href="#cb1-63" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">interval</span><span class="kw">:</span><span class="at"> 5s</span></span> <span id="cb1-64"><a href="#cb1-64" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">timeout</span><span class="kw">:</span><span class="at"> 3s</span></span> <span id="cb1-65"><a href="#cb1-65" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">retries</span><span class="kw">:</span><span class="at"> </span><span class="dv">20</span></span> <span id="cb1-66"><a href="#cb1-66" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">restart</span><span class="kw">:</span><span class="at"> unless-stopped</span></span> <span id="cb1-67"><a href="#cb1-67" aria-hidden="true" tabindex="-1"></a></span> <span id="cb1-68"><a href="#cb1-68" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">minio</span><span class="kw">:</span></span> <span id="cb1-69"><a href="#cb1-69" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> pgsty/minio:RELEASE.2026-04-17T00-00-00Z</span></span> <span id="cb1-70"><a href="#cb1-70" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">command</span><span class="kw">:</span><span class="at"> server /data --console-address ":9001"</span></span> <span id="cb1-71"><a href="#cb1-71" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">environment</span><span class="kw">:</span></span> <span id="cb1-72"><a href="#cb1-72" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">MINIO_ROOT_USER</span><span class="kw">:</span><span class="at"> minioadmin</span></span> <span id="cb1-73"><a href="#cb1-73" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">MINIO_ROOT_PASSWORD</span><span class="kw">:</span><span class="at"> minioadmin</span></span> <span id="cb1-74"><a href="#cb1-74" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">volumes</span><span class="kw">:</span></span> <span id="cb1-75"><a href="#cb1-75" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> minio-data:/data</span></span> <span id="cb1-76"><a href="#cb1-76" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">healthcheck</span><span class="kw">:</span></span> <span id="cb1-77"><a href="#cb1-77" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">test</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="st">"CMD"</span><span class="kw">,</span><span class="at"> </span><span class="st">"mc"</span><span class="kw">,</span><span class="at"> </span><span class="st">"ready"</span><span class="kw">,</span><span class="at"> </span><span class="st">"local"</span><span class="kw">]</span></span> <span id="cb1-78"><a href="#cb1-78" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">interval</span><span class="kw">:</span><span class="at"> 5s</span></span> <span id="cb1-79"><a href="#cb1-79" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">timeout</span><span class="kw">:</span><span class="at"> 3s</span></span> <span id="cb1-80"><a href="#cb1-80" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">retries</span><span class="kw">:</span><span class="at"> </span><span class="dv">20</span></span> <span id="cb1-81"><a href="#cb1-81" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">restart</span><span class="kw">:</span><span class="at"> unless-stopped</span></span> <span id="cb1-82"><a href="#cb1-82" aria-hidden="true" tabindex="-1"></a></span> <span id="cb1-83"><a href="#cb1-83" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">gateway</span><span class="kw">:</span></span> <span id="cb1-84"><a href="#cb1-84" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> ${IMAGE_REGISTRY:-fujohnwang}/fscloud-gateway:${IMAGE_TAG:-latest}</span></span> <span id="cb1-85"><a href="#cb1-85" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">ports</span><span class="kw">:</span></span> <span id="cb1-86"><a href="#cb1-86" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> </span><span class="st">"${FS_HTTP_PORT:-4432}:4432"</span></span> <span id="cb1-87"><a href="#cb1-87" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> </span><span class="st">"${FS_QUIC_PORT:-4433}:4433/udp"</span></span> <span id="cb1-88"><a href="#cb1-88" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> </span><span class="st">"${FS_WEBDAV_PORT:-4434}:4434"</span></span> <span id="cb1-89"><a href="#cb1-89" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">environment</span><span class="kw">:</span></span> <span id="cb1-90"><a href="#cb1-90" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">&lt;&lt;</span><span class="kw">:</span><span class="at"> </span><span class="ot">*app-env</span></span> <span id="cb1-91"><a href="#cb1-91" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_QUIC__LISTEN_ADDR</span><span class="kw">:</span><span class="at"> 0.0.0.0:4433</span></span> <span id="cb1-92"><a href="#cb1-92" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_QUIC__ADVERTISE_ADDR</span><span class="kw">:</span><span class="at"> ${FS_QUIC_ADVERTISE_ADDR:-localhost:4433}</span></span> <span id="cb1-93"><a href="#cb1-93" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_TLS__CERT_FILE</span><span class="kw">:</span><span class="at"> </span><span class="st">""</span></span> <span id="cb1-94"><a href="#cb1-94" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FS_TLS__KEY_FILE</span><span class="kw">:</span><span class="at"> </span><span class="st">""</span></span> <span id="cb1-95"><a href="#cb1-95" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">depends_on</span><span class="kw">:</span></span> <span id="cb1-96"><a href="#cb1-96" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">migrate</span><span class="kw">:</span></span> <span id="cb1-97"><a href="#cb1-97" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">condition</span><span class="kw">:</span><span class="at"> service_completed_successfully</span></span> <span id="cb1-98"><a href="#cb1-98" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">redis</span><span class="kw">:</span></span> <span id="cb1-99"><a href="#cb1-99" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">condition</span><span class="kw">:</span><span class="at"> service_healthy</span></span> <span id="cb1-100"><a href="#cb1-100" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">minio</span><span class="kw">:</span></span> <span id="cb1-101"><a href="#cb1-101" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">condition</span><span class="kw">:</span><span class="at"> service_healthy</span></span> <span id="cb1-102"><a href="#cb1-102" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">restart</span><span class="kw">:</span><span class="at"> unless-stopped</span></span> <span id="cb1-103"><a href="#cb1-103" aria-hidden="true" tabindex="-1"></a></span> <span id="cb1-104"><a href="#cb1-104" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">admin</span><span class="kw">:</span></span> <span id="cb1-105"><a href="#cb1-105" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">image</span><span class="kw">:</span><span class="at"> ${IMAGE_REGISTRY:-fujohnwang}/fscloud-admin:${IMAGE_TAG:-latest}</span></span> <span id="cb1-106"><a href="#cb1-106" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">ports</span><span class="kw">:</span></span> <span id="cb1-107"><a href="#cb1-107" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> </span><span class="st">"${FS_ADMIN_PORT:-4431}:4431"</span></span> <span id="cb1-108"><a href="#cb1-108" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">environment</span><span class="kw">:</span></span> <span id="cb1-109"><a href="#cb1-109" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">FSCLOUD_PROFILE</span><span class="kw">:</span><span class="at"> development</span></span> <span id="cb1-110"><a href="#cb1-110" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">API_BASE</span><span class="kw">:</span><span class="at"> http://gateway:4432</span></span> <span id="cb1-111"><a href="#cb1-111" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">DATABASE_URL</span><span class="kw">:</span><span class="at"> postgres://fscloud:fscloud@postgres:5432/fscloud?sslmode=disable</span></span> <span id="cb1-112"><a href="#cb1-112" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">ADMIN_COOKIE_SECURE</span><span class="kw">:</span><span class="at"> </span><span class="st">"false"</span></span> <span id="cb1-113"><a href="#cb1-113" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">depends_on</span><span class="kw">:</span></span> <span id="cb1-114"><a href="#cb1-114" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">migrate</span><span class="kw">:</span></span> <span id="cb1-115"><a href="#cb1-115" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">condition</span><span class="kw">:</span><span class="at"> service_completed_successfully</span></span> <span id="cb1-116"><a href="#cb1-116" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">gateway</span><span class="kw">:</span></span> <span id="cb1-117"><a href="#cb1-117" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">condition</span><span class="kw">:</span><span class="at"> service_started</span></span> <span id="cb1-118"><a href="#cb1-118" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">restart</span><span class="kw">:</span><span class="at"> unless-stopped</span></span> <span id="cb1-119"><a href="#cb1-119" aria-hidden="true" tabindex="-1"></a></span> <span id="cb1-120"><a href="#cb1-120" aria-hidden="true" tabindex="-1"></a><span class="fu">volumes</span><span class="kw">:</span></span> <span id="cb1-121"><a href="#cb1-121" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">postgres-data</span><span class="kw">:</span></span> <span id="cb1-122"><a href="#cb1-122" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">redis-data</span><span class="kw">:</span></span> <span id="cb1-123"><a href="#cb1-123" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">minio-data</span><span class="kw">:</span></span></code></pre> </div> <p>然后到<code>docker-compose.yaml</code>所在目录下执行:<code>docker compose up -d</code></p> <p>即可启动FSCloud各项服务。</p> <p>启动成功后:</p> <ul> <li>访问 <a href="http://localhost:4432" class="uri">http://localhost:4432</a> 注册新用户并登录web端</li> <li>访问 <a href="http://localhost:4432/cfg" class="uri">http://localhost:4432/cfg</a> 可以下载macOS版客户端,native 客户端支持实时同步等高级功能。</li> <li>【可选】访问 <a href="http://localhost:4431" class="uri">http://localhost:4431</a> 设置初始管理员账号,并登录和管理FSCloud</li> </ul> <p>Enjoy ~</p> <!-- tail --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7874087130" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <div> <a href="/posts.html"> <b> &gt;&gt;&gt;&gt;&gt;&gt; 更多阅读 &lt;&lt;&lt;&lt;&lt;&lt; </b></a> </div> <div id="random_posts"> <div class="alert alert-light" role="alert"> <a href="/posts/2009-03-26-tech-concepts-and-theory-never-change.html">“换汤不换药”的技术概念或者理念 </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2018-08-06-cloud-is-not-your-savior.html">云不是万能药, 治不了你的无知与懒惰 </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2017-10-15-find-a-successor-instead-of-backup.html">扶墙老师谈管理:到底应不应该找backup </a> </div> </div> <hr> <div id="comments"></div> <hr> <!-- Section CTA --> <section class="overflow-x-clip bg-zinc-50 py-16 md:py-24"> <div class="relative mx-auto w-full max-w-screen-xl px-4"> <div class="relative z-10 w-full"> <!-- 福强私学推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://afoo.me/kb.html" class="border-b">「福强私学」</a>来一个?</h2> <p class="mx-auto mb-8 w-full text-center text-lg leading-8 text-zinc-700 md:w-5/6 md:text-xl">「福强私学」, 一部沉淀了个人成长、技术与架构、组织与管理以及商业上的方法与心法的百科全书。</p> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://afoo.me/kb.html"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="https://og.afoo.me/?url=footer"> </a> </div> <!-- 小报童推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mt-8 mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://xiaobot.net/p/aifd" class="border-b">福强老师的 AI 通识课</a></h2><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> </div><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://xiaobot.net/p/aifd" class="border-b"> </a><a href="https://xiaobot.net/p/aifd"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="/images/xbt-footer.webp"> </a> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <img alt="footer img for kb.afoo.me" loading="lazy" decoding="async" data-nimg="1" class="mx-auto p-3" style="color:transparent" src="/images/footer-links-2025.webp"> </div> </div> </div> </section> <hr> <p> <span style="font-size: xx-large;"> 开天窗,拉认知,订阅「福报」,即刻拥有自己的全模态人工智能。 </span> </p> <a href="https://wfq.gumroad.com/l/fb"> <img src="/images/fb_subscribe_v2.jpg" alt="订阅「福报」"> </a> <hr> <div hx-get="https://toolfooter.afoo.me/" hx-trigger="revealed" htmx-indicator="#tfloader"> <div id="tfloader" class="x-indicator"> <svg width="57" height="57" viewbox="0 0 57 57" xmlns="http://www.w3.org/2000/svg" stroke="#3F83F8"> <g fill="none" fill-rule="evenodd"> <g transform="translate(1 1)" stroke-width="2"> <circle cx="5" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="27" cy="5" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="49" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcmode="linear" repeatcount="indefinite" /> </circle> </g> </g> </svg> </div> </div> </div> </section> </main> <div style="position: fixed; left: 0; bottom: 0; padding: 10px; z-index: 1000;"> <img src="/icons/Written-By-Human-Not-By-AI-Badge-black@2x.png" alt loading="lazy"> </div> <footer class="border-t border-gray-200 dark:border-slate-800"> <div class="max-w-6xl mx-auto px-4 sm:px-6"> <div class="md:flex md:items-center md:justify-between py-6 md:py-8"> <ul class="flex mb-4 md:order-1 -ml-2 md:ml-4 md:mb-0"> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Twitter" href="https://twitter.com/afoo_me"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-twitter"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M22 4.01c-1 .49-1.98.689-3 .99-1.121-1.265-2.783-1.335-4.38-.737S11.977 6.323 12 8v1c-3.245.083-6.135-1.395-8-4 0 0-4.182 7.433 4 11-1.872 1.247-3.739 2.088-6 2 3.308 1.803 6.913 2.423 10.034 1.517 3.58-1.04 6.522-3.723 7.651-7.742a13.84 13.84 0 0 0 .497-3.753C20.18 7.773 21.692 5.25 22 4.009z"> </path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Facebook" href="https://www.facebook.com/fujohnwang/"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-facebook"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 10v4h3v7h4v-7h3l1-4h-4V8a1 1 0 0 1 1-1h3V3h-3a5 5 0 0 0-5 5v2H7"></path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Github" href="https://github.com/fujohnwang"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-github"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2 4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21"> </path> </svg> </a> </li> </ul> <div class="text-sm text-gray-700 mr-4 dark:text-slate-400"> <span class="w-5 h-5 md:w-6 md:h-6 md:-mt-0.5 bg-cover mr-1.5 float-left rounded-sm"> <img src="https://afoo.me/favicon.svg" class="rounded-md" alt> </span> Copyright © 王福强个人版权所有 - Since 2004 (Everything is homebrewed with <a href="https://pandoc.org/">Pandoc</a> and Markdown, little <a href="https://www.scala-lang.org/">Scala</a> also included.) </div> </div> </div> </footer> <script> // Set "light" theme as default if (!localStorage.theme) { localStorage.theme = "light"; } if ( localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) ) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } function attachEvent(selector, event, fn) { const matches = document.querySelectorAll(selector); if (matches && matches.length) { matches.forEach((elem) => { elem.addEventListener(event, () => fn(elem), false); }); } } window.onload = function () { attachEvent('[data-toggle-menu]', 'click', function (elem) { elem.classList.toggle('expanded'); document.body.classList.toggle('overflow-hidden'); document.getElementById('header')?.classList.toggle('h-screen'); document.querySelector('#header nav')?.classList.toggle('hidden'); }); attachEvent("[data-toggle-color-scheme]", "click", function () { document.documentElement.classList.toggle("light"); localStorage.theme = "light"; }); }; window.onpageshow = function () { const elem = document.querySelector('[data-toggle-menu]'); if (elem) { elem.classList.remove('expanded'); } document.body.classList.remove('overflow-hidden'); document.getElementById('header')?.classList.remove('h-screen'); document.querySelector('#header nav')?.classList.add('hidden'); }; </script> <script type="text/javascript"> var gitalk = new Gitalk({ clientID: '518a605d711883414ac0', clientSecret: '69fb8ccc0616c5bcbc64d24ece0d06d279da91ff', repo: 'afoo.me.comments', owner: 'fujohnwang', admin: ['fujohnwang'], id: location.pathname.substring(0, 49), // Ensure uniqueness and length less than 50 distractionFreeMode: false // Facebook-like distraction free mode }) gitalk.render('comments') </script> <script src="https://formspree.io/js/formbutton-v1.min.js" defer></script> <script> /* paste this line in verbatim */ window.formbutton=window.formbutton||function(){(formbutton.q=formbutton.q||[]).push(arguments)}; /* customize formbutton below*/ formbutton("create", { action: "https://formspree.io/f/xknlpkkd", title: "有什么可以帮到您?💕💕💕 How can I help you?", buttonImg: "<img src='https://afoo.me/hero3/70.webp' alt/>", fields: [ { type: "email", label: "您的电子邮箱(方便与您联系):", name: "email", required: true, placeholder: "your@email.com" }, { type: "textarea", label: "您想提交的反馈和询问信息:", name: "message", placeholder: "What's on your mind?", }, { type: "submit" } ], styles: { title: { backgroundColor: "blue" }, button: { backgroundColor: "blue" } } }); </script> <script> // tooltips tippy('#aiedu', { content: "As to AI nowadays, LLM and Stable Diffusion are hot even hottest among them, If your want to both know-why and know-how with them, instead of only know-how which can't repeat itself, you should get you to https://ai.afoo.me right now ❗" }); </script> </body> </html>

2026/8/10
阅读更多

KeeNotes 完整开源啦~

<!doctype html> <html lang="zh" class="motion-safe:scroll-smooth 2xl:text-[20px]"> <head> <meta charset="utf-8"> <meta name="keywords" content="KeeNotes 完整开源啦~ - 架构师, 架构士,架构教练, 教练, 个人成长, 组织成长, 独立顾问, architecture, book author, thinker, fighter, 架构, 思考, 技术, 武术, 哲学"> <meta name="description" content="KeeNotes 完整开源啦~ - 福强说,扶墙老师说,王福强的个人博客, 一个架构士的思考与沉淀"> <meta name="author" content="王福强"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="robots" content="index,follow"> <title>KeeNotes 完整开源啦~ -王福强的个人博客:一个架构士的思考与沉淀</title> <meta name="date" content="2026-07-21"> <meta property="og:title" content="KeeNotes 完整开源啦~"> <meta property="og:type" content="landing page"> <meta property="og:url" content="https://afoo.me/posts/2026-07-21-keenotes-is-fully-opensourced.html"> <meta property="og:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-07-21-keenotes-is-fully-opensourced.html"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="KeeNotes 完整开源啦~"> <meta name="twitter:site" content="@afoo_me"> <meta name="twitter:creator" content="@afoo_me"> <meta name="twitter:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-07-21-keenotes-is-fully-opensourced.html"> <meta name="twitter:description" content="KeeNotes 完整开源啦~ - 王福强的个人博客, 一个架构士的思考与沉淀"> <link rel="shortcut icon" href="/favicon.ico"> <link rel="canonical" href="https://afoo.me/posts/2026-07-21-keenotes-is-fully-opensourced.html"> <link rel="icon" type="image/svg+xml" href="https://afoo.me/favicon.svg"> <link rel="mask-icon" href="https://afoo.me/favicon.svg" color="#3383F8"> <script src="https://afoo.me/js/htmx.min.js"></script> <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css"> <script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script> <script src="https://afoo.me/js/popper.min.js"></script> <script src="https://afoo.me/js/tippy.min.js"></script> <link rel="stylesheet" href="/css/af.css"> <link rel="stylesheet" href="/css/components.css"> <link ref="stylesheet" href="/css/pygments.css"> <style type="text/css"> pre > code{ white-space: pre-wrap; font-family: monospace; font-size: 14px; /* border-left: blueviolet; border-left-width: thick; border-left-style: double; padding-left: 1rem !important; */ } .x-indicator{ display:none; } .htmx-request .x-indicator{ display:inline; } .htmx-request.x-indicator{ display:inline; } </style> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "NewsArticle", "headline": "KeeNotes 完整开源啦~", "image": [ "https://afoo.me/images/fb_subscribe.jpg" ], "datePublished": "2026-07-21", "author": [{ "@type": "Person", "name": "王福强", "url": "https://afoo.me" }] } </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3687639021943715" crossorigin="anonymous"></script> </head> <body class="antialiased text-slate-800 dark:text-slate-300 tracking-tight bg-slate-50 dark:bg-gray-900 vsc-initialized"> <header class="sticky top-0 z-40 flex-none mx-auto w-full bg-slate-50 md:bg-slate-50/90 dark:bg-gray-900 dark:md:bg-gray-900/90 md:backdrop-blur-sm border-b border-slate-200 dark:border-b-0" id="header"> <div class="py-3 px-3 mx-auto w-full md:flex md:justify-between max-w-6xl md:px-4"> <div class="flex justify-between"> <a class="flex items-center" href="https://afoo.me"> <span class="self-center ml-2 text-2xl font-extrabold text-slate-800 whitespace-nowrap dark:text-white"> <img src="/images/afoo.PNG" alt="logo" style="height:60px;"> </span> </a> <div class="flex items-center md:hidden"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <button type="button" class="ml-1.5 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center transition" aria-label="Toggle Menu" data-toggle-menu=""> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveaspectratio="xMidYMid meet" viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:menu"> <g class="icon-tabler" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 8h16"></path> <path d="M4 16h16"></path> </g> </svg> </button> </div> </div> <nav class="items-center w-full md:w-auto hidden md:flex text-gray-600 dark:text-slate-200 h-screen md:h-auto" aria-label="Main navigation"> <ul class="flex flex-col pt-8 md:pt-0 md:flex-row md:self-center w-full md:w-auto text-xl md:text-base"> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://kb.afoo.me/">福强私学</a></li> <li> <a id="aiedu" class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://ai.afoo.me"> 福强AI学堂</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://jiagoubaike.com">架构百科</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/posts.html">博客文章 </a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/books.html">创作出版</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://store.afoo.me">产品与服务</a> </li> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://auth.afoo.me/user.html">登录信息</a></li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/crosslinks.html">更多链接</a> </li> </ul> <div class="md:self-center flex items-center mb-4 md:mb-0 ml-2"> <div class="hidden items-center md:flex"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="RSS Feed" href="http://afoo.me/feeds.xml"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:rss"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="5" cy="19" r="1"></circle> <path d="M4 4a16 16 0 0 1 16 16M4 11a9 9 0 0 1 9 9"></path> </g> </svg> </a> </div> </div> </nav> </div> </header> <main> <div id="leftSlot" class="visible md:invisible fixed top-0 left-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- left --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="3581141418" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div id="rightSlot" class="visible md:invisible fixed top-0 right-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- right --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7030836806" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <section class="text-gray-600 body-font relative"> <div class="max-w-4xl mx-auto px-5 py-24 mb-12 prose prose-lg dark:prose-invert"> <p class="lead"> </p> <h1 class="title">KeeNotes 完整开源啦~</h1> <small> <h3 class="author">王福强</h3> <div style="text-align: left;"> 2026-07-21 </div> </small> <p></p> <!-- random --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="2722720851" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <p>开源地址 ↝ https://github.com/fujohnwang/keenotes-mobile</p> <p>KeeNotes 是一个闪念记录应用,就是你脑子里有啥想法要马上记下来的那种。</p> <p>专业术语叫Fleeting Notes。</p> <p>本项目作为一个monorepo,</p> <p>完整包含了KeeNotes所有客户端的生产代码。</p> <ul> <li>基于 JavaFX 技术打造的桌面端应用, 可在MacOS/Windows/Linux等桌面造作系统下稳定运行;(同时, 也上架了Windows Store,但更新不及时,最新版本建议直接通过github release下载)</li> <li>基于 iOS 原生技术打造的iphone与ipad客户端app,已经上架Apple App Store(中国区和法国区除外)</li> <li>基于 Android 原生技术打造的 Android 客户端 app, 已经上架Google Play;</li> </ul> <p>功能和特性方面:</p> <ul> <li>记录/回忆/查找等基本功能</li> <li>基于图片海报和视频的note分享,让发蝴蝶号/某音/小某书…更容易</li> <li>端到端加密(E2EE),主打安全私密,不信的可以审计代码 ;)</li> <li>隐水印</li> <li>往年今日回忆和回顾</li> <li>内置 MCP 服务, 与Agent智能体无缝协作</li> <li>更多…</li> </ul> <p>另外,本项目完全基于Vibe Coding打造,</p> <p>所以,也包含一些个人的Vibe Coding最佳实践,</p> <p>如果感兴趣,</p> <p>也可以扒拉一下 ;)</p> <p>项目开发在春节期间集中2个月高强度突击</p> <p>一直到现在依然在持续打磨</p> <p>充分体现了Vibe Coding的特点,即:</p> <p>原型(PoC)很容易,但细节打磨很难。</p> <p>虽然Vibe Coding让软件开发的效率极大提升了</p> <p>但要打磨一款成熟的软件产品依然很难…</p> <p>最后,欢迎试用:</p> <p>https://keenotes.afoo.me</p> <!-- tail --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7874087130" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <div> <a href="/posts.html"> <b> &gt;&gt;&gt;&gt;&gt;&gt; 更多阅读 &lt;&lt;&lt;&lt;&lt;&lt; </b></a> </div> <div id="random_posts"> <div class="alert alert-light" role="alert"> <a href="/posts/2022-03-09-svelte_with_tailwind_and_daisyui.html">Svelte with tailwind and daisyui </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2026-07-21-keenotes-is-fully-opensourced.html">KeeNotes 完整开源啦~ </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2012-09-17-vertical_stack_in_one.html">检车大厅所见所闻对软件架构设计的联想 </a> </div> </div> <hr> <div id="comments"></div> <hr> <!-- Section CTA --> <section class="overflow-x-clip bg-zinc-50 py-16 md:py-24"> <div class="relative mx-auto w-full max-w-screen-xl px-4"> <div class="relative z-10 w-full"> <!-- 福强私学推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://afoo.me/kb.html" class="border-b">「福强私学」</a>来一个?</h2> <p class="mx-auto mb-8 w-full text-center text-lg leading-8 text-zinc-700 md:w-5/6 md:text-xl">「福强私学」, 一部沉淀了个人成长、技术与架构、组织与管理以及商业上的方法与心法的百科全书。</p> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://afoo.me/kb.html"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="https://og.afoo.me/?url=footer"> </a> </div> <!-- 小报童推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mt-8 mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://xiaobot.net/p/aifd" class="border-b">福强老师的 AI 通识课</a></h2><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> </div><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://xiaobot.net/p/aifd" class="border-b"> </a><a href="https://xiaobot.net/p/aifd"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="/images/xbt-footer.webp"> </a> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <img alt="footer img for kb.afoo.me" loading="lazy" decoding="async" data-nimg="1" class="mx-auto p-3" style="color:transparent" src="/images/footer-links-2025.webp"> </div> </div> </div> </section> <hr> <p> <span style="font-size: xx-large;"> 开天窗,拉认知,订阅「福报」,即刻拥有自己的全模态人工智能。 </span> </p> <a href="https://wfq.gumroad.com/l/fb"> <img src="/images/fb_subscribe_v2.jpg" alt="订阅「福报」"> </a> <hr> <div hx-get="https://toolfooter.afoo.me/" hx-trigger="revealed" htmx-indicator="#tfloader"> <div id="tfloader" class="x-indicator"> <svg width="57" height="57" viewbox="0 0 57 57" xmlns="http://www.w3.org/2000/svg" stroke="#3F83F8"> <g fill="none" fill-rule="evenodd"> <g transform="translate(1 1)" stroke-width="2"> <circle cx="5" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="27" cy="5" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="49" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcmode="linear" repeatcount="indefinite" /> </circle> </g> </g> </svg> </div> </div> </div> </section> </main> <div style="position: fixed; left: 0; bottom: 0; padding: 10px; z-index: 1000;"> <img src="/icons/Written-By-Human-Not-By-AI-Badge-black@2x.png" alt loading="lazy"> </div> <footer class="border-t border-gray-200 dark:border-slate-800"> <div class="max-w-6xl mx-auto px-4 sm:px-6"> <div class="md:flex md:items-center md:justify-between py-6 md:py-8"> <ul class="flex mb-4 md:order-1 -ml-2 md:ml-4 md:mb-0"> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Twitter" href="https://twitter.com/afoo_me"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-twitter"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M22 4.01c-1 .49-1.98.689-3 .99-1.121-1.265-2.783-1.335-4.38-.737S11.977 6.323 12 8v1c-3.245.083-6.135-1.395-8-4 0 0-4.182 7.433 4 11-1.872 1.247-3.739 2.088-6 2 3.308 1.803 6.913 2.423 10.034 1.517 3.58-1.04 6.522-3.723 7.651-7.742a13.84 13.84 0 0 0 .497-3.753C20.18 7.773 21.692 5.25 22 4.009z"> </path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Facebook" href="https://www.facebook.com/fujohnwang/"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-facebook"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 10v4h3v7h4v-7h3l1-4h-4V8a1 1 0 0 1 1-1h3V3h-3a5 5 0 0 0-5 5v2H7"></path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Github" href="https://github.com/fujohnwang"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-github"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2 4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21"> </path> </svg> </a> </li> </ul> <div class="text-sm text-gray-700 mr-4 dark:text-slate-400"> <span class="w-5 h-5 md:w-6 md:h-6 md:-mt-0.5 bg-cover mr-1.5 float-left rounded-sm"> <img src="https://afoo.me/favicon.svg" class="rounded-md" alt> </span> Copyright © 王福强个人版权所有 - Since 2004 (Everything is homebrewed with <a href="https://pandoc.org/">Pandoc</a> and Markdown, little <a href="https://www.scala-lang.org/">Scala</a> also included.) </div> </div> </div> </footer> <script> // Set "light" theme as default if (!localStorage.theme) { localStorage.theme = "light"; } if ( localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) ) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } function attachEvent(selector, event, fn) { const matches = document.querySelectorAll(selector); if (matches && matches.length) { matches.forEach((elem) => { elem.addEventListener(event, () => fn(elem), false); }); } } window.onload = function () { attachEvent('[data-toggle-menu]', 'click', function (elem) { elem.classList.toggle('expanded'); document.body.classList.toggle('overflow-hidden'); document.getElementById('header')?.classList.toggle('h-screen'); document.querySelector('#header nav')?.classList.toggle('hidden'); }); attachEvent("[data-toggle-color-scheme]", "click", function () { document.documentElement.classList.toggle("light"); localStorage.theme = "light"; }); }; window.onpageshow = function () { const elem = document.querySelector('[data-toggle-menu]'); if (elem) { elem.classList.remove('expanded'); } document.body.classList.remove('overflow-hidden'); document.getElementById('header')?.classList.remove('h-screen'); document.querySelector('#header nav')?.classList.add('hidden'); }; </script> <script type="text/javascript"> var gitalk = new Gitalk({ clientID: '518a605d711883414ac0', clientSecret: '69fb8ccc0616c5bcbc64d24ece0d06d279da91ff', repo: 'afoo.me.comments', owner: 'fujohnwang', admin: ['fujohnwang'], id: location.pathname.substring(0, 49), // Ensure uniqueness and length less than 50 distractionFreeMode: false // Facebook-like distraction free mode }) gitalk.render('comments') </script> <script src="https://formspree.io/js/formbutton-v1.min.js" defer></script> <script> /* paste this line in verbatim */ window.formbutton=window.formbutton||function(){(formbutton.q=formbutton.q||[]).push(arguments)}; /* customize formbutton below*/ formbutton("create", { action: "https://formspree.io/f/xknlpkkd", title: "有什么可以帮到您?💕💕💕 How can I help you?", buttonImg: "<img src='https://afoo.me/hero3/70.webp' alt/>", fields: [ { type: "email", label: "您的电子邮箱(方便与您联系):", name: "email", required: true, placeholder: "your@email.com" }, { type: "textarea", label: "您想提交的反馈和询问信息:", name: "message", placeholder: "What's on your mind?", }, { type: "submit" } ], styles: { title: { backgroundColor: "blue" }, button: { backgroundColor: "blue" } } }); </script> <script> // tooltips tippy('#aiedu', { content: "As to AI nowadays, LLM and Stable Diffusion are hot even hottest among them, If your want to both know-why and know-how with them, instead of only know-how which can't repeat itself, you should get you to https://ai.afoo.me right now ❗" }); </script> </body> </html>

2026/7/20
阅读更多

战斧骨 - Bone Tomahawk

<!doctype html> <html lang="zh" class="motion-safe:scroll-smooth 2xl:text-[20px]"> <head> <meta charset="utf-8"> <meta name="keywords" content="战斧骨 - Bone Tomahawk - 架构师, 架构士,架构教练, 教练, 个人成长, 组织成长, 独立顾问, architecture, book author, thinker, fighter, 架构, 思考, 技术, 武术, 哲学"> <meta name="description" content="战斧骨 - Bone Tomahawk - 福强说,扶墙老师说,王福强的个人博客, 一个架构士的思考与沉淀"> <meta name="author" content="王福强"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="robots" content="index,follow"> <title>战斧骨 - Bone Tomahawk -王福强的个人博客:一个架构士的思考与沉淀</title> <meta name="date" content="2026-07-19"> <meta property="og:title" content="战斧骨 - Bone Tomahawk"> <meta property="og:type" content="landing page"> <meta property="og:url" content="https://afoo.me/posts/2026-07-19-bone-tomahawk.html"> <meta property="og:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-07-19-bone-tomahawk.html"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="战斧骨 - Bone Tomahawk"> <meta name="twitter:site" content="@afoo_me"> <meta name="twitter:creator" content="@afoo_me"> <meta name="twitter:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-07-19-bone-tomahawk.html"> <meta name="twitter:description" content="战斧骨 - Bone Tomahawk - 王福强的个人博客, 一个架构士的思考与沉淀"> <link rel="shortcut icon" href="/favicon.ico"> <link rel="canonical" href="https://afoo.me/posts/2026-07-19-bone-tomahawk.html"> <link rel="icon" type="image/svg+xml" href="https://afoo.me/favicon.svg"> <link rel="mask-icon" href="https://afoo.me/favicon.svg" color="#3383F8"> <script src="https://afoo.me/js/htmx.min.js"></script> <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css"> <script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script> <script src="https://afoo.me/js/popper.min.js"></script> <script src="https://afoo.me/js/tippy.min.js"></script> <link rel="stylesheet" href="/css/af.css"> <link rel="stylesheet" href="/css/components.css"> <link ref="stylesheet" href="/css/pygments.css"> <style type="text/css"> pre > code{ white-space: pre-wrap; font-family: monospace; font-size: 14px; /* border-left: blueviolet; border-left-width: thick; border-left-style: double; padding-left: 1rem !important; */ } .x-indicator{ display:none; } .htmx-request .x-indicator{ display:inline; } .htmx-request.x-indicator{ display:inline; } </style> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "NewsArticle", "headline": "战斧骨 - Bone Tomahawk", "image": [ "https://afoo.me/images/fb_subscribe.jpg" ], "datePublished": "2026-07-19", "author": [{ "@type": "Person", "name": "王福强", "url": "https://afoo.me" }] } </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3687639021943715" crossorigin="anonymous"></script> </head> <body class="antialiased text-slate-800 dark:text-slate-300 tracking-tight bg-slate-50 dark:bg-gray-900 vsc-initialized"> <header class="sticky top-0 z-40 flex-none mx-auto w-full bg-slate-50 md:bg-slate-50/90 dark:bg-gray-900 dark:md:bg-gray-900/90 md:backdrop-blur-sm border-b border-slate-200 dark:border-b-0" id="header"> <div class="py-3 px-3 mx-auto w-full md:flex md:justify-between max-w-6xl md:px-4"> <div class="flex justify-between"> <a class="flex items-center" href="https://afoo.me"> <span class="self-center ml-2 text-2xl font-extrabold text-slate-800 whitespace-nowrap dark:text-white"> <img src="/images/afoo.PNG" alt="logo" style="height:60px;"> </span> </a> <div class="flex items-center md:hidden"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <button type="button" class="ml-1.5 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center transition" aria-label="Toggle Menu" data-toggle-menu=""> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveaspectratio="xMidYMid meet" viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:menu"> <g class="icon-tabler" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 8h16"></path> <path d="M4 16h16"></path> </g> </svg> </button> </div> </div> <nav class="items-center w-full md:w-auto hidden md:flex text-gray-600 dark:text-slate-200 h-screen md:h-auto" aria-label="Main navigation"> <ul class="flex flex-col pt-8 md:pt-0 md:flex-row md:self-center w-full md:w-auto text-xl md:text-base"> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://kb.afoo.me/">福强私学</a></li> <li> <a id="aiedu" class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://ai.afoo.me"> 福强AI学堂</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://jiagoubaike.com">架构百科</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/posts.html">博客文章 </a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/books.html">创作出版</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://store.afoo.me">产品与服务</a> </li> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://auth.afoo.me/user.html">登录信息</a></li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/crosslinks.html">更多链接</a> </li> </ul> <div class="md:self-center flex items-center mb-4 md:mb-0 ml-2"> <div class="hidden items-center md:flex"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="RSS Feed" href="http://afoo.me/feeds.xml"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:rss"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="5" cy="19" r="1"></circle> <path d="M4 4a16 16 0 0 1 16 16M4 11a9 9 0 0 1 9 9"></path> </g> </svg> </a> </div> </div> </nav> </div> </header> <main> <div id="leftSlot" class="visible md:invisible fixed top-0 left-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- left --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="3581141418" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div id="rightSlot" class="visible md:invisible fixed top-0 right-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- right --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7030836806" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <section class="text-gray-600 body-font relative"> <div class="max-w-4xl mx-auto px-5 py-24 mb-12 prose prose-lg dark:prose-invert"> <p class="lead"> </p> <h1 class="title">战斧骨 - Bone Tomahawk</h1> <small> <h3 class="author">王福强</h3> <div style="text-align: left;"> 2026-07-19 </div> </small> <p></p> <!-- random --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="2722720851" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <p>周末《战斧骨》(其实应该叫骨头战斧,bone tomahawk)这老电影看完,还真不少感慨:</p> <ol type="1"> <li>wild wild west, 你一旦受伤,就跟个废物一样,如果没有集体,基本上就是生存几率极低了;当然最后出奇兵这种,概率也是极低,所以才是个好故事。</li> <li>文明和野蛮从来没有理可讲的,冲突的解决,只能靠硬碰硬,但不要以为文明一方拥有先进武器就一定占上风,杀人,其实最原始的工具也依然有效;石头、弓箭、骨头、木棍…都可以杀人。</li> <li>危险来的很快,会让你防不胜防。开头两个打劫的贼杀的人,怎么也不会想到自己会死在野外; 两个贼躲避的马队的时候,也想不到自己死的那么快;黑人佣人查看马棚的时候,更没想到死的那么快;主角几个人在露营休息的时候,冒出来的埋伏和突袭,也没想到那么快;帅哥用望远镜观察的时候,更没想到自己还没发挥就栽了;主角累的要死休息的时候,也差点儿让食人族给宰了…</li> </ol> <p>最后主角能把老婆安全带回来,也算是大欢喜结局了,但中间过程肯定就省略了。 最后的镜头也挺有意思,听到2声枪响最后,老头儿随手扔掉了石头,因为他感觉安全了…</p> <p>《战斧骨》里还有个镜头挺有意思,就是男主”见路不走”,不从峡谷入口走,而选择了从侧面翻越,还顺便借着口哨吸引出来一个食人族给杀了。</p> <p>这个倒是很好的体现了有智商的文明族的智商上的优势。</p> <p>其实,虽然杀人方式不一样,但从人数上来说,文明人+枪(先进武器)还是有很大优势的,4 VS. 12, 1比3以少还是胜多了。</p> <!-- tail --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7874087130" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <div> <a href="/posts.html"> <b> &gt;&gt;&gt;&gt;&gt;&gt; 更多阅读 &lt;&lt;&lt;&lt;&lt;&lt; </b></a> </div> <div id="random_posts"> <div class="alert alert-light" role="alert"> <a href="/posts/2010-08-02-problem-on-maven-compile-error-with-deprecated-api.html">有关Maven编译DeprecatedAPI失败的问题 </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2023-10-25-daemon-dash-release-note.html">Daemon Dash launched! </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2008-04-22-what-drives-your-life.html">不一样的人生理念 </a> </div> </div> <hr> <div id="comments"></div> <hr> <!-- Section CTA --> <section class="overflow-x-clip bg-zinc-50 py-16 md:py-24"> <div class="relative mx-auto w-full max-w-screen-xl px-4"> <div class="relative z-10 w-full"> <!-- 福强私学推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://afoo.me/kb.html" class="border-b">「福强私学」</a>来一个?</h2> <p class="mx-auto mb-8 w-full text-center text-lg leading-8 text-zinc-700 md:w-5/6 md:text-xl">「福强私学」, 一部沉淀了个人成长、技术与架构、组织与管理以及商业上的方法与心法的百科全书。</p> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://afoo.me/kb.html"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="https://og.afoo.me/?url=footer"> </a> </div> <!-- 小报童推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mt-8 mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://xiaobot.net/p/aifd" class="border-b">福强老师的 AI 通识课</a></h2><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> </div><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://xiaobot.net/p/aifd" class="border-b"> </a><a href="https://xiaobot.net/p/aifd"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="/images/xbt-footer.webp"> </a> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <img alt="footer img for kb.afoo.me" loading="lazy" decoding="async" data-nimg="1" class="mx-auto p-3" style="color:transparent" src="/images/footer-links-2025.webp"> </div> </div> </div> </section> <hr> <p> <span style="font-size: xx-large;"> 开天窗,拉认知,订阅「福报」,即刻拥有自己的全模态人工智能。 </span> </p> <a href="https://wfq.gumroad.com/l/fb"> <img src="/images/fb_subscribe_v2.jpg" alt="订阅「福报」"> </a> <hr> <div hx-get="https://toolfooter.afoo.me/" hx-trigger="revealed" htmx-indicator="#tfloader"> <div id="tfloader" class="x-indicator"> <svg width="57" height="57" viewbox="0 0 57 57" xmlns="http://www.w3.org/2000/svg" stroke="#3F83F8"> <g fill="none" fill-rule="evenodd"> <g transform="translate(1 1)" stroke-width="2"> <circle cx="5" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="27" cy="5" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="49" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcmode="linear" repeatcount="indefinite" /> </circle> </g> </g> </svg> </div> </div> </div> </section> </main> <div style="position: fixed; left: 0; bottom: 0; padding: 10px; z-index: 1000;"> <img src="/icons/Written-By-Human-Not-By-AI-Badge-black@2x.png" alt loading="lazy"> </div> <footer class="border-t border-gray-200 dark:border-slate-800"> <div class="max-w-6xl mx-auto px-4 sm:px-6"> <div class="md:flex md:items-center md:justify-between py-6 md:py-8"> <ul class="flex mb-4 md:order-1 -ml-2 md:ml-4 md:mb-0"> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Twitter" href="https://twitter.com/afoo_me"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-twitter"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M22 4.01c-1 .49-1.98.689-3 .99-1.121-1.265-2.783-1.335-4.38-.737S11.977 6.323 12 8v1c-3.245.083-6.135-1.395-8-4 0 0-4.182 7.433 4 11-1.872 1.247-3.739 2.088-6 2 3.308 1.803 6.913 2.423 10.034 1.517 3.58-1.04 6.522-3.723 7.651-7.742a13.84 13.84 0 0 0 .497-3.753C20.18 7.773 21.692 5.25 22 4.009z"> </path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Facebook" href="https://www.facebook.com/fujohnwang/"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-facebook"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 10v4h3v7h4v-7h3l1-4h-4V8a1 1 0 0 1 1-1h3V3h-3a5 5 0 0 0-5 5v2H7"></path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Github" href="https://github.com/fujohnwang"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-github"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2 4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21"> </path> </svg> </a> </li> </ul> <div class="text-sm text-gray-700 mr-4 dark:text-slate-400"> <span class="w-5 h-5 md:w-6 md:h-6 md:-mt-0.5 bg-cover mr-1.5 float-left rounded-sm"> <img src="https://afoo.me/favicon.svg" class="rounded-md" alt> </span> Copyright © 王福强个人版权所有 - Since 2004 (Everything is homebrewed with <a href="https://pandoc.org/">Pandoc</a> and Markdown, little <a href="https://www.scala-lang.org/">Scala</a> also included.) </div> </div> </div> </footer> <script> // Set "light" theme as default if (!localStorage.theme) { localStorage.theme = "light"; } if ( localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) ) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } function attachEvent(selector, event, fn) { const matches = document.querySelectorAll(selector); if (matches && matches.length) { matches.forEach((elem) => { elem.addEventListener(event, () => fn(elem), false); }); } } window.onload = function () { attachEvent('[data-toggle-menu]', 'click', function (elem) { elem.classList.toggle('expanded'); document.body.classList.toggle('overflow-hidden'); document.getElementById('header')?.classList.toggle('h-screen'); document.querySelector('#header nav')?.classList.toggle('hidden'); }); attachEvent("[data-toggle-color-scheme]", "click", function () { document.documentElement.classList.toggle("light"); localStorage.theme = "light"; }); }; window.onpageshow = function () { const elem = document.querySelector('[data-toggle-menu]'); if (elem) { elem.classList.remove('expanded'); } document.body.classList.remove('overflow-hidden'); document.getElementById('header')?.classList.remove('h-screen'); document.querySelector('#header nav')?.classList.add('hidden'); }; </script> <script type="text/javascript"> var gitalk = new Gitalk({ clientID: '518a605d711883414ac0', clientSecret: '69fb8ccc0616c5bcbc64d24ece0d06d279da91ff', repo: 'afoo.me.comments', owner: 'fujohnwang', admin: ['fujohnwang'], id: location.pathname.substring(0, 49), // Ensure uniqueness and length less than 50 distractionFreeMode: false // Facebook-like distraction free mode }) gitalk.render('comments') </script> <script src="https://formspree.io/js/formbutton-v1.min.js" defer></script> <script> /* paste this line in verbatim */ window.formbutton=window.formbutton||function(){(formbutton.q=formbutton.q||[]).push(arguments)}; /* customize formbutton below*/ formbutton("create", { action: "https://formspree.io/f/xknlpkkd", title: "有什么可以帮到您?💕💕💕 How can I help you?", buttonImg: "<img src='https://afoo.me/hero3/70.webp' alt/>", fields: [ { type: "email", label: "您的电子邮箱(方便与您联系):", name: "email", required: true, placeholder: "your@email.com" }, { type: "textarea", label: "您想提交的反馈和询问信息:", name: "message", placeholder: "What's on your mind?", }, { type: "submit" } ], styles: { title: { backgroundColor: "blue" }, button: { backgroundColor: "blue" } } }); </script> <script> // tooltips tippy('#aiedu', { content: "As to AI nowadays, LLM and Stable Diffusion are hot even hottest among them, If your want to both know-why and know-how with them, instead of only know-how which can't repeat itself, you should get you to https://ai.afoo.me right now ❗" }); </script> </body> </html>

2026/7/18
阅读更多

How I manage Codex context files

<!doctype html> <html lang="zh" class="motion-safe:scroll-smooth 2xl:text-[20px]"> <head> <meta charset="utf-8"> <meta name="keywords" content="How I manage Codex context files - 架构师, 架构士,架构教练, 教练, 个人成长, 组织成长, 独立顾问, architecture, book author, thinker, fighter, 架构, 思考, 技术, 武术, 哲学"> <meta name="description" content="How I manage Codex context files - 福强说,扶墙老师说,王福强的个人博客, 一个架构士的思考与沉淀"> <meta name="author" content="王福强"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="robots" content="index,follow"> <title>How I manage Codex context files -王福强的个人博客:一个架构士的思考与沉淀</title> <meta name="date" content="2026-05-26"> <meta property="og:title" content="How I manage Codex context files"> <meta property="og:type" content="landing page"> <meta property="og:url" content="https://afoo.me/posts/2026-05-26-how-I-manage-codex-context-files.html"> <meta property="og:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-05-26-how-I-manage-codex-context-files.html"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="How I manage Codex context files"> <meta name="twitter:site" content="@afoo_me"> <meta name="twitter:creator" content="@afoo_me"> <meta name="twitter:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-05-26-how-I-manage-codex-context-files.html"> <meta name="twitter:description" content="How I manage Codex context files - 王福强的个人博客, 一个架构士的思考与沉淀"> <link rel="shortcut icon" href="/favicon.ico"> <link rel="canonical" href="https://afoo.me/posts/2026-05-26-how-I-manage-codex-context-files.html"> <link rel="icon" type="image/svg+xml" href="https://afoo.me/favicon.svg"> <link rel="mask-icon" href="https://afoo.me/favicon.svg" color="#3383F8"> <script src="https://afoo.me/js/htmx.min.js"></script> <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css"> <script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script> <script src="https://afoo.me/js/popper.min.js"></script> <script src="https://afoo.me/js/tippy.min.js"></script> <link rel="stylesheet" href="/css/af.css"> <link rel="stylesheet" href="/css/components.css"> <link ref="stylesheet" href="/css/pygments.css"> <style type="text/css"> pre > code{ white-space: pre-wrap; font-family: monospace; font-size: 14px; /* border-left: blueviolet; border-left-width: thick; border-left-style: double; padding-left: 1rem !important; */ } .x-indicator{ display:none; } .htmx-request .x-indicator{ display:inline; } .htmx-request.x-indicator{ display:inline; } </style> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "NewsArticle", "headline": "How I manage Codex context files", "image": [ "https://afoo.me/images/fb_subscribe.jpg" ], "datePublished": "2026-05-26", "author": [{ "@type": "Person", "name": "王福强", "url": "https://afoo.me" }] } </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3687639021943715" crossorigin="anonymous"></script> </head> <body class="antialiased text-slate-800 dark:text-slate-300 tracking-tight bg-slate-50 dark:bg-gray-900 vsc-initialized"> <header class="sticky top-0 z-40 flex-none mx-auto w-full bg-slate-50 md:bg-slate-50/90 dark:bg-gray-900 dark:md:bg-gray-900/90 md:backdrop-blur-sm border-b border-slate-200 dark:border-b-0" id="header"> <div class="py-3 px-3 mx-auto w-full md:flex md:justify-between max-w-6xl md:px-4"> <div class="flex justify-between"> <a class="flex items-center" href="https://afoo.me"> <span class="self-center ml-2 text-2xl font-extrabold text-slate-800 whitespace-nowrap dark:text-white"> <img src="/images/afoo.PNG" alt="logo" style="height:60px;"> </span> </a> <div class="flex items-center md:hidden"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <button type="button" class="ml-1.5 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center transition" aria-label="Toggle Menu" data-toggle-menu=""> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveaspectratio="xMidYMid meet" viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:menu"> <g class="icon-tabler" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 8h16"></path> <path d="M4 16h16"></path> </g> </svg> </button> </div> </div> <nav class="items-center w-full md:w-auto hidden md:flex text-gray-600 dark:text-slate-200 h-screen md:h-auto" aria-label="Main navigation"> <ul class="flex flex-col pt-8 md:pt-0 md:flex-row md:self-center w-full md:w-auto text-xl md:text-base"> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://kb.afoo.me/">福强私学</a></li> <li> <a id="aiedu" class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://ai.afoo.me"> 福强AI学堂</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://jiagoubaike.com">架构百科</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/posts.html">博客文章 </a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/books.html">创作出版</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://store.afoo.me">产品与服务</a> </li> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://auth.afoo.me/user.html">登录信息</a></li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/crosslinks.html">更多链接</a> </li> </ul> <div class="md:self-center flex items-center mb-4 md:mb-0 ml-2"> <div class="hidden items-center md:flex"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="RSS Feed" href="http://afoo.me/feeds.xml"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:rss"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="5" cy="19" r="1"></circle> <path d="M4 4a16 16 0 0 1 16 16M4 11a9 9 0 0 1 9 9"></path> </g> </svg> </a> </div> </div> </nav> </div> </header> <main> <div id="leftSlot" class="visible md:invisible fixed top-0 left-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- left --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="3581141418" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div id="rightSlot" class="visible md:invisible fixed top-0 right-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- right --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7030836806" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <section class="text-gray-600 body-font relative"> <div class="max-w-4xl mx-auto px-5 py-24 mb-12 prose prose-lg dark:prose-invert"> <p class="lead"> </p> <h1 class="title">How I manage Codex context files</h1> <small> <h3 class="author">王福强</h3> <div style="text-align: left;"> 2026-05-26 </div> </small> <p></p> <!-- random --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="2722720851" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <h2 id="前序">前序</h2> <p>像CLAUDE.md或者AGENTS.md这种文件,在专业术语里叫Context Files,也就是上下文文件。</p> <p>它们的目的就是自动注入到 AI 智能体的会话提示词中,通常是作为system prompt注入。</p> <p>现在大部分AI智能体或者更确切的说Coding Agent(编码智能体)都支持AGENTS.md, Claude Code因为是头部,所以,它始终用自己名字的上下文文件,也就是CLAUDE.md。(不过据说现在也支持自动读取AGENTS.md了)</p> <p>我这阵子用Codex比较多,所以,就说说我是怎么组织Codex的上下文文件的吧!</p> <h2 id="上下文的两级组织层级">上下文的两级组织层级</h2> <p>这两级是:</p> <ol type="1"> <li>全局级别</li> <li>项目级别</li> </ol> <p>全局级别是在<code>~/.codex/AGENTS.md</code>, 写在这个上下文文件里的内容是任何Codex进程都会读取并加载的(任何用的不太严谨,后面会说), 内容不能太多,只应该放全局约束,像项目特定、模块特定的内容,不建议放这里面。</p> <p>我的全局AGNETS.md的内容如下,大家感兴趣可以参考:</p> <pre><code>LuckyJon💫scarface.local ➜ .codex git:(master) ✗ cat AGENTS.md - ✅ Always respond in 中文 , 即使我用English跟你沟通。 - ✅ Always search in English - ✅ **每次开始新任务前,如果有不清楚或者不明确的问题点,通过 AskUserQuestion tool 向用户提问,搞清楚、搞明确之后,再执行后续操作。** (that's, always come up with a plan, confirm with me before making changes.) - 回答用户的任何问题,都要以现有codebase为唯一事实,不可以编造。 文档只做为参考,因为文档有可能过时,但代码不会。 - keep a note in implementation_note.md on tradeoffs you had to make or anything else I should know. Keep it short and written in Chinese(jargons in english is ok) - 🙋 要使用git相关工具(包括但不限于git, gh),每次操作必须征得同意!(git status、gh view这类READ-ONLY的操作除外)</code></pre> <p>项目级别的上下文通常放在项目的根目录下,一般添加只跟这个项目相关的上下文信息,避免占用不必要的上下文窗口,毕竟,大模型的上下文窗口就算声称是百万tokens,但上下文内容一多,效果还是会大大折扣,所以,能简约就简约。</p> <p>像我现在手头上的 <a href="https://keevol.cn/#fscloud">fscloud</a> 项目的AGNETS.md, 内容如下供大家参考:</p> <pre><code>LuckyJon💫scarface.local ➜ fscloud git:(master) cat AGENTS.md 开始前先阅读 ./README.md ## 要求 - **验收测试的时候,单独另起测试用的docker容器,不要用现在make dev-up启动的容器**。 了解这个点后,每次开始前重复“✌️ 测试的时候,我会单独启测试用的数据库/minio/redis实例。” ## 技术实践 - 对于最终发布的docker image,使用multi-stage build进行构建以减少最终image的文件大小。</code></pre> <p>这里最值得关注的是<code>开始前先阅读 ./README.md</code>这句,因为大多数时候,我是直接编写和更新项目的README.md,这个才是项目描述的 <strong>Single Source of Truth</strong>。</p> <p>这个技巧我还用在了CLAUDE.md和AGENTS.md的内容同步上,当你要使用claude code和codex同时开发同一个项目的时候,为了避免codex知道的上下文但claude codex不知道,就得让它们的上下文文件内容相同,过去在多个coding agent之间同步全局上下文的时候,走软连接(ln -s)有些coding agent不认,所以, 早期我为了保障效果,都是用笨办法,就是在一个AGENTS.md或者CLAUDE.md更新之后,拷贝粘贴(Copy &amp; Paste), 后来,就只更新一个,然后在另一个里要求它开始前先读前面的那个上下文文件。</p> <p>比如,我现在只更新AGENTS.md,那么我的CLAUDE.md里就只有一句:</p> <pre><code>先看 @README.md 了解项目概况,再看 ./AGENTS.md 了解必要上下文。</code></pre> <p>这样, AGNETS.md 就成了唯一的 <strong>Single Source of Truth</strong>, 只更新 AGNETS.md 一个文件就可以了。</p> <h2 id="上下文的四级组织层级">上下文的四级组织层级</h2> <p>除了前面提到的两级组织层级,我们还可以将Codex上下文文件扩展到四级进行管理。</p> <p>另外的两级分别是:</p> <ol type="1"> <li>多Profile层级管理</li> <li>项目内嵌套层级管理</li> </ol> <p>也就是,一个往更宏观的方向上扩展,一个往更细粒度的方向扩展。</p> <h3 id="多profile层级管理">多Profile层级管理</h3> <p>Codex其实是可以起多个账号进程的,只要你在启动的时候通过环境变量 <code>CODEX_HOME</code> 将codex的目录指向一个新的profile目录,那么, codex就会基于这个新目录创建新的配置和状态。</p> <p>默认情况下,<code>CODEX_HOME</code> 指向的就是<code>~/.codex</code>,也就是用户的<code>$HOME</code>目录下的<code>.codex</code>目录, 但我们也可以:</p> <pre><code>C​⁣⁣⁣‌‌⁣⁣⁣⁣‌⁣‌‌⁣⁣‌⁣‌‌‌⁣⁣⁣⁣⁣⁣⁣‌‌⁣‌⁣⁣‌⁣⁣⁣⁣‌‌⁣‌⁣⁣⁣‌⁣‌‍ODEX_HOME={profile 目录} open Codex.app CODEX_HOME={profile 目录} codex</code></pre> <p>这样,就可以启动多个不同账号、不同profile目录的codex了(不管是GUI版的,还是CLI版的)</p> <p>这些不同的Profile目录下,就可以创建各自的AGENTS.md上下文文件,实现不同Profile的上下文管理。</p> <h3 id="项目内嵌套层级管理">项目内嵌套层级管理</h3> <p>跟Claude Code类似, Codex里其实也支持项目层级以下的目录层级的上下文文件。</p> <p>比如,在 <a href="https://keevol.cn/#fscloud">fscloud</a> 项目中,我就采用了多层级、多模块的上下文文件管理:</p> <pre><code>LuckyJon💫scarface.local ➜ fscloud git:(master) tree -L 2 . ├── admin │&nbsp;&nbsp; ├── AGENTS.md │&nbsp;&nbsp; ├── CLAUDE.md │&nbsp;&nbsp; ├── dist │&nbsp;&nbsp; ├── Dockerfile │&nbsp;&nbsp; ├── HowToStart.md │&nbsp;&nbsp; ├── index.html │&nbsp;&nbsp; ├── node_modules │&nbsp;&nbsp; ├── package-lock.json │&nbsp;&nbsp; ├── package.json ├── AGENTS.md ├── CLAUDE.md ├── client │&nbsp;&nbsp; ├── AGENTS.md │&nbsp;&nbsp; ├── CLAUDE.md │&nbsp;&nbsp; ├── macos │&nbsp;&nbsp; └── windows ...</code></pre> <p>这样的好处就是, 分别针对不同的子项目、子模块编写特定的上下文约束(更确切地说应该叫“建议”,因为大模型有可能不听🤣)</p> <p>比如, 对于所有的native客户端(macos/windows/…),我们可能会约束通用模块;</p> <p>再比如, 对于native客户端里的macOS客户端项目,我再进一步要求和约束视觉规范、线程模型、UI视觉等。</p> <p>主打一个上下文管理的单元化与confinement, 听起来是不是跟架构规范有点儿像?🤪</p> <h2 id="小结">小结</h2> <p>Coding Agent的上下文文件管理是Harness Engineering的重要一环,理解并合理利用,是让Vibe Coding和SDD能够稳定产出的基础。</p> <p>也欢迎各位老铁评论区说说自己有啥比较好 context files 最佳实践 😎</p> <!-- tail --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7874087130" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <div> <a href="/posts.html"> <b> &gt;&gt;&gt;&gt;&gt;&gt; 更多阅读 &lt;&lt;&lt;&lt;&lt;&lt; </b></a> </div> <div id="random_posts"> <div class="alert alert-light" role="alert"> <a href="/posts/2021-09-27-dillema-of-processes.html">流程悖论 </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2019-05-19-more_than_CS_languages.html">怎么实现我不管,这才是我要的最好的计算机语言! </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2017-09-07-why-people-just-dont-listen.html">为什么你好心说的话,别人却不听 </a> </div> </div> <hr> <div id="comments"></div> <hr> <!-- Section CTA --> <section class="overflow-x-clip bg-zinc-50 py-16 md:py-24"> <div class="relative mx-auto w-full max-w-screen-xl px-4"> <div class="relative z-10 w-full"> <!-- 福强私学推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://afoo.me/kb.html" class="border-b">「福强私学」</a>来一个?</h2> <p class="mx-auto mb-8 w-full text-center text-lg leading-8 text-zinc-700 md:w-5/6 md:text-xl">「福强私学」, 一部沉淀了个人成长、技术与架构、组织与管理以及商业上的方法与心法的百科全书。</p> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://afoo.me/kb.html"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="https://og.afoo.me/?url=footer"> </a> </div> <!-- 小报童推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mt-8 mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://xiaobot.net/p/aifd" class="border-b">福强老师的 AI 通识课</a></h2><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> </div><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://xiaobot.net/p/aifd" class="border-b"> </a><a href="https://xiaobot.net/p/aifd"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="/images/xbt-footer.webp"> </a> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <img alt="footer img for kb.afoo.me" loading="lazy" decoding="async" data-nimg="1" class="mx-auto p-3" style="color:transparent" src="/images/footer-links-2025.webp"> </div> </div> </div> </section> <hr> <p> <span style="font-size: xx-large;"> 开天窗,拉认知,订阅「福报」,即刻拥有自己的全模态人工智能。 </span> </p> <a href="https://wfq.gumroad.com/l/fb"> <img src="/images/fb_subscribe_v2.jpg" alt="订阅「福报」"> </a> <hr> <div hx-get="https://toolfooter.afoo.me/" hx-trigger="revealed" htmx-indicator="#tfloader"> <div id="tfloader" class="x-indicator"> <svg width="57" height="57" viewbox="0 0 57 57" xmlns="http://www.w3.org/2000/svg" stroke="#3F83F8"> <g fill="none" fill-rule="evenodd"> <g transform="translate(1 1)" stroke-width="2"> <circle cx="5" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="27" cy="5" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="49" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcmode="linear" repeatcount="indefinite" /> </circle> </g> </g> </svg> </div> </div> </div> </section> </main> <div style="position: fixed; left: 0; bottom: 0; padding: 10px; z-index: 1000;"> <img src="/icons/Written-By-Human-Not-By-AI-Badge-black@2x.png" alt loading="lazy"> </div> <footer class="border-t border-gray-200 dark:border-slate-800"> <div class="max-w-6xl mx-auto px-4 sm:px-6"> <div class="md:flex md:items-center md:justify-between py-6 md:py-8"> <ul class="flex mb-4 md:order-1 -ml-2 md:ml-4 md:mb-0"> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Twitter" href="https://twitter.com/afoo_me"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-twitter"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M22 4.01c-1 .49-1.98.689-3 .99-1.121-1.265-2.783-1.335-4.38-.737S11.977 6.323 12 8v1c-3.245.083-6.135-1.395-8-4 0 0-4.182 7.433 4 11-1.872 1.247-3.739 2.088-6 2 3.308 1.803 6.913 2.423 10.034 1.517 3.58-1.04 6.522-3.723 7.651-7.742a13.84 13.84 0 0 0 .497-3.753C20.18 7.773 21.692 5.25 22 4.009z"> </path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Facebook" href="https://www.facebook.com/fujohnwang/"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-facebook"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 10v4h3v7h4v-7h3l1-4h-4V8a1 1 0 0 1 1-1h3V3h-3a5 5 0 0 0-5 5v2H7"></path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Github" href="https://github.com/fujohnwang"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-github"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2 4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21"> </path> </svg> </a> </li> </ul> <div class="text-sm text-gray-700 mr-4 dark:text-slate-400"> <span class="w-5 h-5 md:w-6 md:h-6 md:-mt-0.5 bg-cover mr-1.5 float-left rounded-sm"> <img src="https://afoo.me/favicon.svg" class="rounded-md" alt> </span> Copyright © 王福强个人版权所有 - Since 2004 (Everything is homebrewed with <a href="https://pandoc.org/">Pandoc</a> and Markdown, little <a href="https://www.scala-lang.org/">Scala</a> also included.) </div> </div> </div> </footer> <script> // Set "light" theme as default if (!localStorage.theme) { localStorage.theme = "light"; } if ( localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) ) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } function attachEvent(selector, event, fn) { const matches = document.querySelectorAll(selector); if (matches && matches.length) { matches.forEach((elem) => { elem.addEventListener(event, () => fn(elem), false); }); } } window.onload = function () { attachEvent('[data-toggle-menu]', 'click', function (elem) { elem.classList.toggle('expanded'); document.body.classList.toggle('overflow-hidden'); document.getElementById('header')?.classList.toggle('h-screen'); document.querySelector('#header nav')?.classList.toggle('hidden'); }); attachEvent("[data-toggle-color-scheme]", "click", function () { document.documentElement.classList.toggle("light"); localStorage.theme = "light"; }); }; window.onpageshow = function () { const elem = document.querySelector('[data-toggle-menu]'); if (elem) { elem.classList.remove('expanded'); } document.body.classList.remove('overflow-hidden'); document.getElementById('header')?.classList.remove('h-screen'); document.querySelector('#header nav')?.classList.add('hidden'); }; </script> <script type="text/javascript"> var gitalk = new Gitalk({ clientID: '518a605d711883414ac0', clientSecret: '69fb8ccc0616c5bcbc64d24ece0d06d279da91ff', repo: 'afoo.me.comments', owner: 'fujohnwang', admin: ['fujohnwang'], id: location.pathname.substring(0, 49), // Ensure uniqueness and length less than 50 distractionFreeMode: false // Facebook-like distraction free mode }) gitalk.render('comments') </script> <script src="https://formspree.io/js/formbutton-v1.min.js" defer></script> <script> /* paste this line in verbatim */ window.formbutton=window.formbutton||function(){(formbutton.q=formbutton.q||[]).push(arguments)}; /* customize formbutton below*/ formbutton("create", { action: "https://formspree.io/f/xknlpkkd", title: "有什么可以帮到您?💕💕💕 How can I help you?", buttonImg: "<img src='https://afoo.me/hero3/70.webp' alt/>", fields: [ { type: "email", label: "您的电子邮箱(方便与您联系):", name: "email", required: true, placeholder: "your@email.com" }, { type: "textarea", label: "您想提交的反馈和询问信息:", name: "message", placeholder: "What's on your mind?", }, { type: "submit" } ], styles: { title: { backgroundColor: "blue" }, button: { backgroundColor: "blue" } } }); </script> <script> // tooltips tippy('#aiedu', { content: "As to AI nowadays, LLM and Stable Diffusion are hot even hottest among them, If your want to both know-why and know-how with them, instead of only know-how which can't repeat itself, you should get you to https://ai.afoo.me right now ❗" }); </script> </body> </html>

2026/5/25
阅读更多

无法马上验证收益的投入

<!doctype html> <html lang="zh" class="motion-safe:scroll-smooth 2xl:text-[20px]"> <head> <meta charset="utf-8"> <meta name="keywords" content="无法马上验证收益的投入 - 架构师, 架构士,架构教练, 教练, 个人成长, 组织成长, 独立顾问, architecture, book author, thinker, fighter, 架构, 思考, 技术, 武术, 哲学"> <meta name="description" content="无法马上验证收益的投入 - 福强说,扶墙老师说,王福强的个人博客, 一个架构士的思考与沉淀"> <meta name="author" content="王福强"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="robots" content="index,follow"> <title>无法马上验证收益的投入 -王福强的个人博客:一个架构士的思考与沉淀</title> <meta name="date" content="2026-04-28"> <meta property="og:title" content="无法马上验证收益的投入"> <meta property="og:type" content="landing page"> <meta property="og:url" content="https://afoo.me/posts/2026-04-28-potentials-of-AI-investment.html"> <meta property="og:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-04-28-potentials-of-AI-investment.html"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="无法马上验证收益的投入"> <meta name="twitter:site" content="@afoo_me"> <meta name="twitter:creator" content="@afoo_me"> <meta name="twitter:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-04-28-potentials-of-AI-investment.html"> <meta name="twitter:description" content="无法马上验证收益的投入 - 王福强的个人博客, 一个架构士的思考与沉淀"> <link rel="shortcut icon" href="/favicon.ico"> <link rel="canonical" href="https://afoo.me/posts/2026-04-28-potentials-of-AI-investment.html"> <link rel="icon" type="image/svg+xml" href="https://afoo.me/favicon.svg"> <link rel="mask-icon" href="https://afoo.me/favicon.svg" color="#3383F8"> <script src="https://afoo.me/js/htmx.min.js"></script> <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css"> <script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script> <script src="https://afoo.me/js/popper.min.js"></script> <script src="https://afoo.me/js/tippy.min.js"></script> <link rel="stylesheet" href="/css/af.css"> <link rel="stylesheet" href="/css/components.css"> <link ref="stylesheet" href="/css/pygments.css"> <style type="text/css"> pre > code{ white-space: pre-wrap; font-family: monospace; font-size: 14px; /* border-left: blueviolet; border-left-width: thick; border-left-style: double; padding-left: 1rem !important; */ } .x-indicator{ display:none; } .htmx-request .x-indicator{ display:inline; } .htmx-request.x-indicator{ display:inline; } </style> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "NewsArticle", "headline": "无法马上验证收益的投入", "image": [ "https://afoo.me/images/fb_subscribe.jpg" ], "datePublished": "2026-04-28", "author": [{ "@type": "Person", "name": "王福强", "url": "https://afoo.me" }] } </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3687639021943715" crossorigin="anonymous"></script> </head> <body class="antialiased text-slate-800 dark:text-slate-300 tracking-tight bg-slate-50 dark:bg-gray-900 vsc-initialized"> <header class="sticky top-0 z-40 flex-none mx-auto w-full bg-slate-50 md:bg-slate-50/90 dark:bg-gray-900 dark:md:bg-gray-900/90 md:backdrop-blur-sm border-b border-slate-200 dark:border-b-0" id="header"> <div class="py-3 px-3 mx-auto w-full md:flex md:justify-between max-w-6xl md:px-4"> <div class="flex justify-between"> <a class="flex items-center" href="https://afoo.me"> <span class="self-center ml-2 text-2xl font-extrabold text-slate-800 whitespace-nowrap dark:text-white"> <img src="/images/afoo.PNG" alt="logo" style="height:60px;"> </span> </a> <div class="flex items-center md:hidden"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <button type="button" class="ml-1.5 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center transition" aria-label="Toggle Menu" data-toggle-menu=""> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveaspectratio="xMidYMid meet" viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:menu"> <g class="icon-tabler" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 8h16"></path> <path d="M4 16h16"></path> </g> </svg> </button> </div> </div> <nav class="items-center w-full md:w-auto hidden md:flex text-gray-600 dark:text-slate-200 h-screen md:h-auto" aria-label="Main navigation"> <ul class="flex flex-col pt-8 md:pt-0 md:flex-row md:self-center w-full md:w-auto text-xl md:text-base"> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://kb.afoo.me/">福强私学</a></li> <li> <a id="aiedu" class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://ai.afoo.me"> 福强AI学堂</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://jiagoubaike.com">架构百科</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/posts.html">博客文章 </a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/books.html">创作出版</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://store.afoo.me">产品与服务</a> </li> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://auth.afoo.me/user.html">登录信息</a></li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/crosslinks.html">更多链接</a> </li> </ul> <div class="md:self-center flex items-center mb-4 md:mb-0 ml-2"> <div class="hidden items-center md:flex"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="RSS Feed" href="http://afoo.me/feeds.xml"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:rss"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="5" cy="19" r="1"></circle> <path d="M4 4a16 16 0 0 1 16 16M4 11a9 9 0 0 1 9 9"></path> </g> </svg> </a> </div> </div> </nav> </div> </header> <main> <div id="leftSlot" class="visible md:invisible fixed top-0 left-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- left --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="3581141418" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div id="rightSlot" class="visible md:invisible fixed top-0 right-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- right --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7030836806" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <section class="text-gray-600 body-font relative"> <div class="max-w-4xl mx-auto px-5 py-24 mb-12 prose prose-lg dark:prose-invert"> <p class="lead"> </p> <h1 class="title">无法马上验证收益的投入</h1> <small> <h3 class="author">王福强</h3> <div style="text-align: left;"> 2026-04-28 </div> </small> <p></p> <!-- random --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="2722720851" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <p>无法马上验证收益的投入, 确实很逆人性。</p> <p>今天用GPT5.5和DeepSeek v4 pro又烧了几百块钱儿的token</p> <p>干了一个什么事情呢?</p> <p>性能优化和代码清理</p> <p>前端UI上看不到什么变化</p> <p>不长期持续跑KeeNotes</p> <p>估计也看不出变化</p> <p>所以,这个事情干完后</p> <p>从人的直觉上来说</p> <p>好像又啥都没干</p> <p>但你心里其实清楚,其实是干了的</p> <p>只不过,没有马上给出反馈</p> <p>所有心里多少有些失落</p> <p>更不会有什么成就感</p> <p>或者马上看到正向反馈的那种喜悦</p> <p>这就像SaaS盛行的时候</p> <p>其实也就只有少数老板愿意将一部分投入投到PaaS研发上一样</p> <p>除非他一直干软件这一行的或者想要做长期生意的</p> <p>否则,很难下决心在PaaS的研发上做投入</p> <p>因为短期内看不到任何差别</p> <p>更看不到任何浪花和反馈</p> <p>只有撑到中后期才会发现: 哎吆我操,PaaS原来在这里、这时候发力呢…</p> <p>我估计AI Native时代</p> <p>也同样会经历这么一个过程</p> <!-- tail --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7874087130" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <div> <a href="/posts.html"> <b> &gt;&gt;&gt;&gt;&gt;&gt; 更多阅读 &lt;&lt;&lt;&lt;&lt;&lt; </b></a> </div> <div id="random_posts"> <div class="alert alert-light" role="alert"> <a href="/posts/2009-05-06-travel-to-lijiang-chap02.html">终于成行的丽江之旅(2) </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2014-10-28-create-play-project-with-bare-sbt.html">创建纯基于SBT的Play工程 </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2025-04-29-delete-or-not-problem.html">数据删不删,都会毁在那张嘴上! </a> </div> </div> <hr> <div id="comments"></div> <hr> <!-- Section CTA --> <section class="overflow-x-clip bg-zinc-50 py-16 md:py-24"> <div class="relative mx-auto w-full max-w-screen-xl px-4"> <div class="relative z-10 w-full"> <!-- 福强私学推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://afoo.me/kb.html" class="border-b">「福强私学」</a>来一个?</h2> <p class="mx-auto mb-8 w-full text-center text-lg leading-8 text-zinc-700 md:w-5/6 md:text-xl">「福强私学」, 一部沉淀了个人成长、技术与架构、组织与管理以及商业上的方法与心法的百科全书。</p> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://afoo.me/kb.html"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="https://og.afoo.me/?url=footer"> </a> </div> <!-- 小报童推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mt-8 mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://xiaobot.net/p/aifd" class="border-b">福强老师的 AI 通识课</a></h2><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> </div><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://xiaobot.net/p/aifd" class="border-b"> </a><a href="https://xiaobot.net/p/aifd"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="/images/xbt-footer.webp"> </a> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <img alt="footer img for kb.afoo.me" loading="lazy" decoding="async" data-nimg="1" class="mx-auto p-3" style="color:transparent" src="/images/footer-links-2025.webp"> </div> </div> </div> </section> <hr> <p> <span style="font-size: xx-large;"> 开天窗,拉认知,订阅「福报」,即刻拥有自己的全模态人工智能。 </span> </p> <a href="https://wfq.gumroad.com/l/fb"> <img src="/images/fb_subscribe_v2.jpg" alt="订阅「福报」"> </a> <hr> <div hx-get="https://toolfooter.afoo.me/" hx-trigger="revealed" htmx-indicator="#tfloader"> <div id="tfloader" class="x-indicator"> <svg width="57" height="57" viewbox="0 0 57 57" xmlns="http://www.w3.org/2000/svg" stroke="#3F83F8"> <g fill="none" fill-rule="evenodd"> <g transform="translate(1 1)" stroke-width="2"> <circle cx="5" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="27" cy="5" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="49" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcmode="linear" repeatcount="indefinite" /> </circle> </g> </g> </svg> </div> </div> </div> </section> </main> <div style="position: fixed; left: 0; bottom: 0; padding: 10px; z-index: 1000;"> <img src="/icons/Written-By-Human-Not-By-AI-Badge-black@2x.png" alt loading="lazy"> </div> <footer class="border-t border-gray-200 dark:border-slate-800"> <div class="max-w-6xl mx-auto px-4 sm:px-6"> <div class="md:flex md:items-center md:justify-between py-6 md:py-8"> <ul class="flex mb-4 md:order-1 -ml-2 md:ml-4 md:mb-0"> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Twitter" href="https://twitter.com/afoo_me"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-twitter"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M22 4.01c-1 .49-1.98.689-3 .99-1.121-1.265-2.783-1.335-4.38-.737S11.977 6.323 12 8v1c-3.245.083-6.135-1.395-8-4 0 0-4.182 7.433 4 11-1.872 1.247-3.739 2.088-6 2 3.308 1.803 6.913 2.423 10.034 1.517 3.58-1.04 6.522-3.723 7.651-7.742a13.84 13.84 0 0 0 .497-3.753C20.18 7.773 21.692 5.25 22 4.009z"> </path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Facebook" href="https://www.facebook.com/fujohnwang/"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-facebook"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 10v4h3v7h4v-7h3l1-4h-4V8a1 1 0 0 1 1-1h3V3h-3a5 5 0 0 0-5 5v2H7"></path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Github" href="https://github.com/fujohnwang"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-github"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2 4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21"> </path> </svg> </a> </li> </ul> <div class="text-sm text-gray-700 mr-4 dark:text-slate-400"> <span class="w-5 h-5 md:w-6 md:h-6 md:-mt-0.5 bg-cover mr-1.5 float-left rounded-sm"> <img src="https://afoo.me/favicon.svg" class="rounded-md" alt> </span> Copyright © 王福强个人版权所有 - Since 2004 (Everything is homebrewed with <a href="https://pandoc.org/">Pandoc</a> and Markdown, little <a href="https://www.scala-lang.org/">Scala</a> also included.) </div> </div> </div> </footer> <script> // Set "light" theme as default if (!localStorage.theme) { localStorage.theme = "light"; } if ( localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) ) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } function attachEvent(selector, event, fn) { const matches = document.querySelectorAll(selector); if (matches && matches.length) { matches.forEach((elem) => { elem.addEventListener(event, () => fn(elem), false); }); } } window.onload = function () { attachEvent('[data-toggle-menu]', 'click', function (elem) { elem.classList.toggle('expanded'); document.body.classList.toggle('overflow-hidden'); document.getElementById('header')?.classList.toggle('h-screen'); document.querySelector('#header nav')?.classList.toggle('hidden'); }); attachEvent("[data-toggle-color-scheme]", "click", function () { document.documentElement.classList.toggle("light"); localStorage.theme = "light"; }); }; window.onpageshow = function () { const elem = document.querySelector('[data-toggle-menu]'); if (elem) { elem.classList.remove('expanded'); } document.body.classList.remove('overflow-hidden'); document.getElementById('header')?.classList.remove('h-screen'); document.querySelector('#header nav')?.classList.add('hidden'); }; </script> <script type="text/javascript"> var gitalk = new Gitalk({ clientID: '518a605d711883414ac0', clientSecret: '69fb8ccc0616c5bcbc64d24ece0d06d279da91ff', repo: 'afoo.me.comments', owner: 'fujohnwang', admin: ['fujohnwang'], id: location.pathname.substring(0, 49), // Ensure uniqueness and length less than 50 distractionFreeMode: false // Facebook-like distraction free mode }) gitalk.render('comments') </script> <script src="https://formspree.io/js/formbutton-v1.min.js" defer></script> <script> /* paste this line in verbatim */ window.formbutton=window.formbutton||function(){(formbutton.q=formbutton.q||[]).push(arguments)}; /* customize formbutton below*/ formbutton("create", { action: "https://formspree.io/f/xknlpkkd", title: "有什么可以帮到您?💕💕💕 How can I help you?", buttonImg: "<img src='https://afoo.me/hero3/70.webp' alt/>", fields: [ { type: "email", label: "您的电子邮箱(方便与您联系):", name: "email", required: true, placeholder: "your@email.com" }, { type: "textarea", label: "您想提交的反馈和询问信息:", name: "message", placeholder: "What's on your mind?", }, { type: "submit" } ], styles: { title: { backgroundColor: "blue" }, button: { backgroundColor: "blue" } } }); </script> <script> // tooltips tippy('#aiedu', { content: "As to AI nowadays, LLM and Stable Diffusion are hot even hottest among them, If your want to both know-why and know-how with them, instead of only know-how which can't repeat itself, you should get you to https://ai.afoo.me right now ❗" }); </script> </body> </html>

2026/4/27
阅读更多

DeepSeek V4 个人体验

<!doctype html> <html lang="zh" class="motion-safe:scroll-smooth 2xl:text-[20px]"> <head> <meta charset="utf-8"> <meta name="keywords" content="DeepSeek V4 个人体验 - 架构师, 架构士,架构教练, 教练, 个人成长, 组织成长, 独立顾问, architecture, book author, thinker, fighter, 架构, 思考, 技术, 武术, 哲学"> <meta name="description" content="DeepSeek V4 个人体验 - 福强说,扶墙老师说,王福强的个人博客, 一个架构士的思考与沉淀"> <meta name="author" content="王福强"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="robots" content="index,follow"> <title>DeepSeek V4 个人体验 -王福强的个人博客:一个架构士的思考与沉淀</title> <meta name="date" content="2026-04-25"> <meta property="og:title" content="DeepSeek V4 个人体验"> <meta property="og:type" content="landing page"> <meta property="og:url" content="https://afoo.me/posts/2026-04-25-deepseek-v4-exp.html"> <meta property="og:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-04-25-deepseek-v4-exp.html"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="DeepSeek V4 个人体验"> <meta name="twitter:site" content="@afoo_me"> <meta name="twitter:creator" content="@afoo_me"> <meta name="twitter:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-04-25-deepseek-v4-exp.html"> <meta name="twitter:description" content="DeepSeek V4 个人体验 - 王福强的个人博客, 一个架构士的思考与沉淀"> <link rel="shortcut icon" href="/favicon.ico"> <link rel="canonical" href="https://afoo.me/posts/2026-04-25-deepseek-v4-exp.html"> <link rel="icon" type="image/svg+xml" href="https://afoo.me/favicon.svg"> <link rel="mask-icon" href="https://afoo.me/favicon.svg" color="#3383F8"> <script src="https://afoo.me/js/htmx.min.js"></script> <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css"> <script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script> <script src="https://afoo.me/js/popper.min.js"></script> <script src="https://afoo.me/js/tippy.min.js"></script> <link rel="stylesheet" href="/css/af.css"> <link rel="stylesheet" href="/css/components.css"> <link ref="stylesheet" href="/css/pygments.css"> <style type="text/css"> pre > code{ white-space: pre-wrap; font-family: monospace; font-size: 14px; /* border-left: blueviolet; border-left-width: thick; border-left-style: double; padding-left: 1rem !important; */ } .x-indicator{ display:none; } .htmx-request .x-indicator{ display:inline; } .htmx-request.x-indicator{ display:inline; } </style> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "NewsArticle", "headline": "DeepSeek V4 个人体验", "image": [ "https://afoo.me/images/fb_subscribe.jpg" ], "datePublished": "2026-04-25", "author": [{ "@type": "Person", "name": "王福强", "url": "https://afoo.me" }] } </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3687639021943715" crossorigin="anonymous"></script> </head> <body class="antialiased text-slate-800 dark:text-slate-300 tracking-tight bg-slate-50 dark:bg-gray-900 vsc-initialized"> <header class="sticky top-0 z-40 flex-none mx-auto w-full bg-slate-50 md:bg-slate-50/90 dark:bg-gray-900 dark:md:bg-gray-900/90 md:backdrop-blur-sm border-b border-slate-200 dark:border-b-0" id="header"> <div class="py-3 px-3 mx-auto w-full md:flex md:justify-between max-w-6xl md:px-4"> <div class="flex justify-between"> <a class="flex items-center" href="https://afoo.me"> <span class="self-center ml-2 text-2xl font-extrabold text-slate-800 whitespace-nowrap dark:text-white"> <img src="/images/afoo.PNG" alt="logo" style="height:60px;"> </span> </a> <div class="flex items-center md:hidden"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <button type="button" class="ml-1.5 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center transition" aria-label="Toggle Menu" data-toggle-menu=""> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveaspectratio="xMidYMid meet" viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:menu"> <g class="icon-tabler" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 8h16"></path> <path d="M4 16h16"></path> </g> </svg> </button> </div> </div> <nav class="items-center w-full md:w-auto hidden md:flex text-gray-600 dark:text-slate-200 h-screen md:h-auto" aria-label="Main navigation"> <ul class="flex flex-col pt-8 md:pt-0 md:flex-row md:self-center w-full md:w-auto text-xl md:text-base"> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://kb.afoo.me/">福强私学</a></li> <li> <a id="aiedu" class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://ai.afoo.me"> 福强AI学堂</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://jiagoubaike.com">架构百科</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/posts.html">博客文章 </a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/books.html">创作出版</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://store.afoo.me">产品与服务</a> </li> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://auth.afoo.me/user.html">登录信息</a></li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/crosslinks.html">更多链接</a> </li> </ul> <div class="md:self-center flex items-center mb-4 md:mb-0 ml-2"> <div class="hidden items-center md:flex"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="RSS Feed" href="http://afoo.me/feeds.xml"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:rss"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="5" cy="19" r="1"></circle> <path d="M4 4a16 16 0 0 1 16 16M4 11a9 9 0 0 1 9 9"></path> </g> </svg> </a> </div> </div> </nav> </div> </header> <main> <div id="leftSlot" class="visible md:invisible fixed top-0 left-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- left --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="3581141418" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div id="rightSlot" class="visible md:invisible fixed top-0 right-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- right --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7030836806" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <section class="text-gray-600 body-font relative"> <div class="max-w-4xl mx-auto px-5 py-24 mb-12 prose prose-lg dark:prose-invert"> <p class="lead"> </p> <h1 class="title">DeepSeek V4 个人体验</h1> <small> <h3 class="author">王福强</h3> <div style="text-align: left;"> 2026-04-25 </div> </small> <p></p> <!-- random --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="2722720851" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <p>因为被一个问题困扰很长时间</p> <p>过Opus4.6、GPT 5.4甚至GPT 5.3 Codex都试过了</p> <p>国内的Hy3这种preview的模型也都试过了</p> <p>都搞不定</p> <p>恰好昨天DeepSeek V4 发了</p> <p>就充了点儿银子试试</p> <p>整体用下来的感受是</p> <p>虽然最后也依然没解决我的问题</p> <p>但整体感觉还是比较扎实</p> <p>不像有些模型喊得挺好</p> <p>实际一干活儿就拉的一逼</p> <p>DeepSeek V4 Pro在使用的过程中发现两个小现象很有意思:</p> <p>一个就是偶尔会中英文互窜</p> <p>一个就是它应该还是没有实现多模态</p> <p>因为我是通过Claude Code用DeepSeeek V4 Pro这个模型的</p> <p>贴图给它,它说看不了🤣</p> <p>但Claude Code作为Coding Agent是支持贴图的</p> <p>所以,问题在于模型端不认识、不支持。</p> <p>从这角度来说,DeepSeek 还有很长的路要赶…</p> <!-- tail --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7874087130" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <div> <a href="/posts.html"> <b> &gt;&gt;&gt;&gt;&gt;&gt; 更多阅读 &lt;&lt;&lt;&lt;&lt;&lt; </b></a> </div> <div id="random_posts"> <div class="alert alert-light" role="alert"> <a href="/posts/2026-01-20-ai-coding-agent-practices-of-my-own.html">打造 Keenotes 过程中使用 AI/Coding Agents 的一些感想 </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2009-03-14-zturn-or-not-its-a-problem.html">折腾?不折腾?这实在是个问题! </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2025-04-20-how-I-use-AI.html">我是怎么用人工智能(AI)的? </a> </div> </div> <hr> <div id="comments"></div> <hr> <!-- Section CTA --> <section class="overflow-x-clip bg-zinc-50 py-16 md:py-24"> <div class="relative mx-auto w-full max-w-screen-xl px-4"> <div class="relative z-10 w-full"> <!-- 福强私学推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://afoo.me/kb.html" class="border-b">「福强私学」</a>来一个?</h2> <p class="mx-auto mb-8 w-full text-center text-lg leading-8 text-zinc-700 md:w-5/6 md:text-xl">「福强私学」, 一部沉淀了个人成长、技术与架构、组织与管理以及商业上的方法与心法的百科全书。</p> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://afoo.me/kb.html"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="https://og.afoo.me/?url=footer"> </a> </div> <!-- 小报童推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mt-8 mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://xiaobot.net/p/aifd" class="border-b">福强老师的 AI 通识课</a></h2><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> </div><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://xiaobot.net/p/aifd" class="border-b"> </a><a href="https://xiaobot.net/p/aifd"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="/images/xbt-footer.webp"> </a> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <img alt="footer img for kb.afoo.me" loading="lazy" decoding="async" data-nimg="1" class="mx-auto p-3" style="color:transparent" src="/images/footer-links-2025.webp"> </div> </div> </div> </section> <hr> <p> <span style="font-size: xx-large;"> 开天窗,拉认知,订阅「福报」,即刻拥有自己的全模态人工智能。 </span> </p> <a href="https://wfq.gumroad.com/l/fb"> <img src="/images/fb_subscribe_v2.jpg" alt="订阅「福报」"> </a> <hr> <div hx-get="https://toolfooter.afoo.me/" hx-trigger="revealed" htmx-indicator="#tfloader"> <div id="tfloader" class="x-indicator"> <svg width="57" height="57" viewbox="0 0 57 57" xmlns="http://www.w3.org/2000/svg" stroke="#3F83F8"> <g fill="none" fill-rule="evenodd"> <g transform="translate(1 1)" stroke-width="2"> <circle cx="5" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="27" cy="5" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="49" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcmode="linear" repeatcount="indefinite" /> </circle> </g> </g> </svg> </div> </div> </div> </section> </main> <div style="position: fixed; left: 0; bottom: 0; padding: 10px; z-index: 1000;"> <img src="/icons/Written-By-Human-Not-By-AI-Badge-black@2x.png" alt loading="lazy"> </div> <footer class="border-t border-gray-200 dark:border-slate-800"> <div class="max-w-6xl mx-auto px-4 sm:px-6"> <div class="md:flex md:items-center md:justify-between py-6 md:py-8"> <ul class="flex mb-4 md:order-1 -ml-2 md:ml-4 md:mb-0"> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Twitter" href="https://twitter.com/afoo_me"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-twitter"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M22 4.01c-1 .49-1.98.689-3 .99-1.121-1.265-2.783-1.335-4.38-.737S11.977 6.323 12 8v1c-3.245.083-6.135-1.395-8-4 0 0-4.182 7.433 4 11-1.872 1.247-3.739 2.088-6 2 3.308 1.803 6.913 2.423 10.034 1.517 3.58-1.04 6.522-3.723 7.651-7.742a13.84 13.84 0 0 0 .497-3.753C20.18 7.773 21.692 5.25 22 4.009z"> </path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Facebook" href="https://www.facebook.com/fujohnwang/"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-facebook"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 10v4h3v7h4v-7h3l1-4h-4V8a1 1 0 0 1 1-1h3V3h-3a5 5 0 0 0-5 5v2H7"></path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Github" href="https://github.com/fujohnwang"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-github"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2 4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21"> </path> </svg> </a> </li> </ul> <div class="text-sm text-gray-700 mr-4 dark:text-slate-400"> <span class="w-5 h-5 md:w-6 md:h-6 md:-mt-0.5 bg-cover mr-1.5 float-left rounded-sm"> <img src="https://afoo.me/favicon.svg" class="rounded-md" alt> </span> Copyright © 王福强个人版权所有 - Since 2004 (Everything is homebrewed with <a href="https://pandoc.org/">Pandoc</a> and Markdown, little <a href="https://www.scala-lang.org/">Scala</a> also included.) </div> </div> </div> </footer> <script> // Set "light" theme as default if (!localStorage.theme) { localStorage.theme = "light"; } if ( localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) ) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } function attachEvent(selector, event, fn) { const matches = document.querySelectorAll(selector); if (matches && matches.length) { matches.forEach((elem) => { elem.addEventListener(event, () => fn(elem), false); }); } } window.onload = function () { attachEvent('[data-toggle-menu]', 'click', function (elem) { elem.classList.toggle('expanded'); document.body.classList.toggle('overflow-hidden'); document.getElementById('header')?.classList.toggle('h-screen'); document.querySelector('#header nav')?.classList.toggle('hidden'); }); attachEvent("[data-toggle-color-scheme]", "click", function () { document.documentElement.classList.toggle("light"); localStorage.theme = "light"; }); }; window.onpageshow = function () { const elem = document.querySelector('[data-toggle-menu]'); if (elem) { elem.classList.remove('expanded'); } document.body.classList.remove('overflow-hidden'); document.getElementById('header')?.classList.remove('h-screen'); document.querySelector('#header nav')?.classList.add('hidden'); }; </script> <script type="text/javascript"> var gitalk = new Gitalk({ clientID: '518a605d711883414ac0', clientSecret: '69fb8ccc0616c5bcbc64d24ece0d06d279da91ff', repo: 'afoo.me.comments', owner: 'fujohnwang', admin: ['fujohnwang'], id: location.pathname.substring(0, 49), // Ensure uniqueness and length less than 50 distractionFreeMode: false // Facebook-like distraction free mode }) gitalk.render('comments') </script> <script src="https://formspree.io/js/formbutton-v1.min.js" defer></script> <script> /* paste this line in verbatim */ window.formbutton=window.formbutton||function(){(formbutton.q=formbutton.q||[]).push(arguments)}; /* customize formbutton below*/ formbutton("create", { action: "https://formspree.io/f/xknlpkkd", title: "有什么可以帮到您?💕💕💕 How can I help you?", buttonImg: "<img src='https://afoo.me/hero3/70.webp' alt/>", fields: [ { type: "email", label: "您的电子邮箱(方便与您联系):", name: "email", required: true, placeholder: "your@email.com" }, { type: "textarea", label: "您想提交的反馈和询问信息:", name: "message", placeholder: "What's on your mind?", }, { type: "submit" } ], styles: { title: { backgroundColor: "blue" }, button: { backgroundColor: "blue" } } }); </script> <script> // tooltips tippy('#aiedu', { content: "As to AI nowadays, LLM and Stable Diffusion are hot even hottest among them, If your want to both know-why and know-how with them, instead of only know-how which can't repeat itself, you should get you to https://ai.afoo.me right now ❗" }); </script> </body> </html>

2026/4/24
阅读更多

Token 经济学三原则

<!doctype html> <html lang="zh" class="motion-safe:scroll-smooth 2xl:text-[20px]"> <head> <meta charset="utf-8"> <meta name="keywords" content="Token 经济学三原则 - 架构师, 架构士,架构教练, 教练, 个人成长, 组织成长, 独立顾问, architecture, book author, thinker, fighter, 架构, 思考, 技术, 武术, 哲学"> <meta name="description" content="Token 经济学三原则 - 福强说,扶墙老师说,王福强的个人博客, 一个架构士的思考与沉淀"> <meta name="author" content="王福强"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="robots" content="index,follow"> <title>Token 经济学三原则 -王福强的个人博客:一个架构士的思考与沉淀</title> <meta name="date" content="2026-04-08"> <meta property="og:title" content="Token 经济学三原则"> <meta property="og:type" content="landing page"> <meta property="og:url" content="https://afoo.me/posts/2026-04-08-principles-of-Token-economics.html"> <meta property="og:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-04-08-principles-of-Token-economics.html"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="Token 经济学三原则"> <meta name="twitter:site" content="@afoo_me"> <meta name="twitter:creator" content="@afoo_me"> <meta name="twitter:image" content="https://og.afoo.me?url=https://afoo.me/posts/2026-04-08-principles-of-Token-economics.html"> <meta name="twitter:description" content="Token 经济学三原则 - 王福强的个人博客, 一个架构士的思考与沉淀"> <link rel="shortcut icon" href="/favicon.ico"> <link rel="canonical" href="https://afoo.me/posts/2026-04-08-principles-of-Token-economics.html"> <link rel="icon" type="image/svg+xml" href="https://afoo.me/favicon.svg"> <link rel="mask-icon" href="https://afoo.me/favicon.svg" color="#3383F8"> <script src="https://afoo.me/js/htmx.min.js"></script> <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css"> <script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script> <script src="https://afoo.me/js/popper.min.js"></script> <script src="https://afoo.me/js/tippy.min.js"></script> <link rel="stylesheet" href="/css/af.css"> <link rel="stylesheet" href="/css/components.css"> <link ref="stylesheet" href="/css/pygments.css"> <style type="text/css"> pre > code{ white-space: pre-wrap; font-family: monospace; font-size: 14px; /* border-left: blueviolet; border-left-width: thick; border-left-style: double; padding-left: 1rem !important; */ } .x-indicator{ display:none; } .htmx-request .x-indicator{ display:inline; } .htmx-request.x-indicator{ display:inline; } </style> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "NewsArticle", "headline": "Token 经济学三原则", "image": [ "https://afoo.me/images/fb_subscribe.jpg" ], "datePublished": "2026-04-08", "author": [{ "@type": "Person", "name": "王福强", "url": "https://afoo.me" }] } </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3687639021943715" crossorigin="anonymous"></script> </head> <body class="antialiased text-slate-800 dark:text-slate-300 tracking-tight bg-slate-50 dark:bg-gray-900 vsc-initialized"> <header class="sticky top-0 z-40 flex-none mx-auto w-full bg-slate-50 md:bg-slate-50/90 dark:bg-gray-900 dark:md:bg-gray-900/90 md:backdrop-blur-sm border-b border-slate-200 dark:border-b-0" id="header"> <div class="py-3 px-3 mx-auto w-full md:flex md:justify-between max-w-6xl md:px-4"> <div class="flex justify-between"> <a class="flex items-center" href="https://afoo.me"> <span class="self-center ml-2 text-2xl font-extrabold text-slate-800 whitespace-nowrap dark:text-white"> <img src="/images/afoo.PNG" alt="logo" style="height:60px;"> </span> </a> <div class="flex items-center md:hidden"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <button type="button" class="ml-1.5 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center transition" aria-label="Toggle Menu" data-toggle-menu=""> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveaspectratio="xMidYMid meet" viewbox="0 0 24 24" class="w-6 h-6" astro-icon="tabler:menu"> <g class="icon-tabler" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M4 8h16"></path> <path d="M4 16h16"></path> </g> </svg> </button> </div> </div> <nav class="items-center w-full md:w-auto hidden md:flex text-gray-600 dark:text-slate-200 h-screen md:h-auto" aria-label="Main navigation"> <ul class="flex flex-col pt-8 md:pt-0 md:flex-row md:self-center w-full md:w-auto text-xl md:text-base"> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://kb.afoo.me/">福强私学</a></li> <li> <a id="aiedu" class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://ai.afoo.me"> 福强AI学堂</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="http://jiagoubaike.com">架构百科</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/posts.html">博客文章 </a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/books.html">创作出版</a> </li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://store.afoo.me">产品与服务</a> </li> <li><a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://auth.afoo.me/user.html">登录信息</a></li> <li> <a class="font-medium hover:text-gray-900 dark:hover:text-white px-4 py-3 flex items-center transition duration-150 ease-in-out" href="https://afoo.me/crosslinks.html">更多链接</a> </li> </ul> <div class="md:self-center flex items-center mb-4 md:mb-0 ml-2"> <div class="hidden items-center md:flex"> <button type="button" class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Toggle between Dark and Light mode" data-toggle-color-scheme=""> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:sun"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="12" cy="12" r="4"></circle> <path d="M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7-.7.7m0 11.4.7.7m-12.1-.7-.7.7"> </path> </g> </svg> </button> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="RSS Feed" href="http://afoo.me/feeds.xml"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:rss"> <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="icon-tabler"> <circle cx="5" cy="19" r="1"></circle> <path d="M4 4a16 16 0 0 1 16 16M4 11a9 9 0 0 1 9 9"></path> </g> </svg> </a> </div> </div> </nav> </div> </header> <main> <div id="leftSlot" class="visible md:invisible fixed top-0 left-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- left --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="3581141418" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div id="rightSlot" class="visible md:invisible fixed top-0 right-0" style="width: 16rem;height: 80%;margin-top: 4rem;"> <!-- right --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7030836806" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <section class="text-gray-600 body-font relative"> <div class="max-w-4xl mx-auto px-5 py-24 mb-12 prose prose-lg dark:prose-invert"> <p class="lead"> </p> <h1 class="title">Token 经济学三原则</h1> <small> <h3 class="author">王福强</h3> <div style="text-align: left;"> 2026-04-08 </div> </small> <p></p> <!-- random --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="2722720851" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <h2 id="section">1</h2> <p>宁愿花钱买贵的模型,也不要图便宜买便宜的模型(服务)。</p> <p>后者看似便宜,其实最后是钱花了,不仅不解决问题,还tmd浪费时间…</p> <h2 id="section-1">2</h2> <p>你​‌⁣⁣‌⁣‌‌‌‌⁣⁣⁣‌⁣‌‌‌⁣⁣⁣‌⁣‌‌‌⁣⁣⁣‌‌‌‌‌⁣⁣⁣‌‌⁣⁣‌‌⁣⁣⁣‌⁣‌‌‌⁣‌⁣⁣⁣⁣‌‌⁣‌⁣⁣⁣⁣‌⁣⁣‌‌‌‌⁣‌⁣⁣‌‌⁣⁣‌‌⁣⁣‌⁣⁣⁣⁣‌⁣⁣‌⁣⁣⁣⁣‌‌⁣‌⁣⁣⁣‌‌⁣⁣‌⁣⁣‌⁣‌⁣⁣‌‌⁣‌⁣‍跟高级模型聊天token贵是对的 就跟你跟高端顾问聊天一样</p> <p>好东西卖便宜了那不是明珠暗投吗?</p> <h2 id="section-2">3</h2> <p>很​‌⁣⁣‌⁣‌‌‌‌⁣⁣⁣‌⁣‌‌‌⁣⁣⁣‌⁣‌‌‌⁣⁣⁣‌‌‌‌‌⁣⁣⁣‌‌⁣⁣‌‌⁣⁣⁣‌⁣‌‌‌⁣‌⁣⁣⁣⁣‌‌⁣‌⁣⁣⁣⁣‌⁣⁣‌‌‌‌⁣‌⁣⁣‌‌⁣⁣‌‌⁣⁣‌⁣⁣⁣⁣‌⁣⁣‌⁣⁣⁣⁣‌‌⁣‌⁣⁣⁣‌‌⁣⁣‌⁣⁣‌⁣‌⁣⁣‌‌⁣‌⁣‍多人总喜欢拿员工工资跟给AI agents的token花费相提并论,但它们并不对等。</p> <p>你给员工的钱,不但换来的有跟AI agents等效的拿结果能力, 同时还有时间你的时间和精力的钱,毕竟,你调教AI agents的时间和精力是绕不开的。</p> <p>重点其实不在省钱,而在于你做的这个事儿是不是可以规模化赚钱</p> <!-- tail --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3687639021943715" data-ad-slot="7874087130" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <hr> <div> <a href="/posts.html"> <b> &gt;&gt;&gt;&gt;&gt;&gt; 更多阅读 &lt;&lt;&lt;&lt;&lt;&lt; </b></a> </div> <div id="random_posts"> <div class="alert alert-light" role="alert"> <a href="/posts/2022-09-06-he-suan-ma.html">核酸码系统拆解与设计推演 </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2007-04-09-choose-your-life-style.html">介于极端之间的是什么 </a> </div> <div class="alert alert-light" role="alert"> <a href="/posts/2025-03-15-persona-traffic-and-deal.html">人设、流量与成交 </a> </div> </div> <hr> <div id="comments"></div> <hr> <!-- Section CTA --> <section class="overflow-x-clip bg-zinc-50 py-16 md:py-24"> <div class="relative mx-auto w-full max-w-screen-xl px-4"> <div class="relative z-10 w-full"> <!-- 福强私学推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://afoo.me/kb.html" class="border-b">「福强私学」</a>来一个?</h2> <p class="mx-auto mb-8 w-full text-center text-lg leading-8 text-zinc-700 md:w-5/6 md:text-xl">「福强私学」, 一部沉淀了个人成长、技术与架构、组织与管理以及商业上的方法与心法的百科全书。</p> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://afoo.me/kb.html"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="https://og.afoo.me/?url=footer"> </a> </div> <!-- 小报童推荐 --> <div class="mx-auto max-w-screen-md"> <h2 class="mt-8 mb-4 text-center text-4xl font-bold md:text-5xl"><a href="https://xiaobot.net/p/aifd" class="border-b">福强老师的 AI 通识课</a></h2><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> </div><a href="https://xiaobot.net/p/aifd" class="border-b"> </a> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <a href="https://xiaobot.net/p/aifd" class="border-b"> </a><a href="https://xiaobot.net/p/aifd"> <img alt="footer img for kb.afoo.me" loading="lazy" width="2911" height="1961" decoding="async" data-nimg="1" class="mx-auto rounded-lg object-contain shadow-lg sm:rounded-2xl lg:rounded-3xl" style="color:transparent" src="/images/xbt-footer.webp"> </a> </div> <div class="mx-auto mt-6 w-full md:mt-12 md:w-4/5"> <img alt="footer img for kb.afoo.me" loading="lazy" decoding="async" data-nimg="1" class="mx-auto p-3" style="color:transparent" src="/images/footer-links-2025.webp"> </div> </div> </div> </section> <hr> <p> <span style="font-size: xx-large;"> 开天窗,拉认知,订阅「福报」,即刻拥有自己的全模态人工智能。 </span> </p> <a href="https://wfq.gumroad.com/l/fb"> <img src="/images/fb_subscribe_v2.jpg" alt="订阅「福报」"> </a> <hr> <div hx-get="https://toolfooter.afoo.me/" hx-trigger="revealed" htmx-indicator="#tfloader"> <div id="tfloader" class="x-indicator"> <svg width="57" height="57" viewbox="0 0 57 57" xmlns="http://www.w3.org/2000/svg" stroke="#3F83F8"> <g fill="none" fill-rule="evenodd"> <g transform="translate(1 1)" stroke-width="2"> <circle cx="5" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;5;50;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" values="5;27;49;5" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="27" cy="5" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" from="5" to="5" values="5;50;50;5" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" begin="0s" dur="2.2s" from="27" to="27" values="27;49;5;27" calcmode="linear" repeatcount="indefinite" /> </circle> <circle cx="49" cy="50" r="5"> <animate attributename="cy" begin="0s" dur="2.2s" values="50;50;5;50" calcmode="linear" repeatcount="indefinite" /> <animate attributename="cx" from="49" to="49" begin="0s" dur="2.2s" values="49;5;27;49" calcmode="linear" repeatcount="indefinite" /> </circle> </g> </g> </svg> </div> </div> </div> </section> </main> <div style="position: fixed; left: 0; bottom: 0; padding: 10px; z-index: 1000;"> <img src="/icons/Written-By-Human-Not-By-AI-Badge-black@2x.png" alt loading="lazy"> </div> <footer class="border-t border-gray-200 dark:border-slate-800"> <div class="max-w-6xl mx-auto px-4 sm:px-6"> <div class="md:flex md:items-center md:justify-between py-6 md:py-8"> <ul class="flex mb-4 md:order-1 -ml-2 md:ml-4 md:mb-0"> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Twitter" href="https://twitter.com/afoo_me"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-twitter"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M22 4.01c-1 .49-1.98.689-3 .99-1.121-1.265-2.783-1.335-4.38-.737S11.977 6.323 12 8v1c-3.245.083-6.135-1.395-8-4 0 0-4.182 7.433 4 11-1.872 1.247-3.739 2.088-6 2 3.308 1.803 6.913 2.423 10.034 1.517 3.58-1.04 6.522-3.723 7.651-7.742a13.84 13.84 0 0 0 .497-3.753C20.18 7.773 21.692 5.25 22 4.009z"> </path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Facebook" href="https://www.facebook.com/fujohnwang/"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-facebook"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 10v4h3v7h4v-7h3l1-4h-4V8a1 1 0 0 1 1-1h3V3h-3a5 5 0 0 0-5 5v2H7"></path> </svg> </a> </li> <li> <a class="text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 inline-flex items-center" aria-label="Github" href="https://github.com/fujohnwang"> <svg viewbox="0 0 24 24" class="w-5 h-5" astro-icon="tabler:brand-github"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2 4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21"> </path> </svg> </a> </li> </ul> <div class="text-sm text-gray-700 mr-4 dark:text-slate-400"> <span class="w-5 h-5 md:w-6 md:h-6 md:-mt-0.5 bg-cover mr-1.5 float-left rounded-sm"> <img src="https://afoo.me/favicon.svg" class="rounded-md" alt> </span> Copyright © 王福强个人版权所有 - Since 2004 (Everything is homebrewed with <a href="https://pandoc.org/">Pandoc</a> and Markdown, little <a href="https://www.scala-lang.org/">Scala</a> also included.) </div> </div> </div> </footer> <script> // Set "light" theme as default if (!localStorage.theme) { localStorage.theme = "light"; } if ( localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) ) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } function attachEvent(selector, event, fn) { const matches = document.querySelectorAll(selector); if (matches && matches.length) { matches.forEach((elem) => { elem.addEventListener(event, () => fn(elem), false); }); } } window.onload = function () { attachEvent('[data-toggle-menu]', 'click', function (elem) { elem.classList.toggle('expanded'); document.body.classList.toggle('overflow-hidden'); document.getElementById('header')?.classList.toggle('h-screen'); document.querySelector('#header nav')?.classList.toggle('hidden'); }); attachEvent("[data-toggle-color-scheme]", "click", function () { document.documentElement.classList.toggle("light"); localStorage.theme = "light"; }); }; window.onpageshow = function () { const elem = document.querySelector('[data-toggle-menu]'); if (elem) { elem.classList.remove('expanded'); } document.body.classList.remove('overflow-hidden'); document.getElementById('header')?.classList.remove('h-screen'); document.querySelector('#header nav')?.classList.add('hidden'); }; </script> <script type="text/javascript"> var gitalk = new Gitalk({ clientID: '518a605d711883414ac0', clientSecret: '69fb8ccc0616c5bcbc64d24ece0d06d279da91ff', repo: 'afoo.me.comments', owner: 'fujohnwang', admin: ['fujohnwang'], id: location.pathname.substring(0, 49), // Ensure uniqueness and length less than 50 distractionFreeMode: false // Facebook-like distraction free mode }) gitalk.render('comments') </script> <script src="https://formspree.io/js/formbutton-v1.min.js" defer></script> <script> /* paste this line in verbatim */ window.formbutton=window.formbutton||function(){(formbutton.q=formbutton.q||[]).push(arguments)}; /* customize formbutton below*/ formbutton("create", { action: "https://formspree.io/f/xknlpkkd", title: "有什么可以帮到您?💕💕💕 How can I help you?", buttonImg: "<img src='https://afoo.me/hero3/70.webp' alt/>", fields: [ { type: "email", label: "您的电子邮箱(方便与您联系):", name: "email", required: true, placeholder: "your@email.com" }, { type: "textarea", label: "您想提交的反馈和询问信息:", name: "message", placeholder: "What's on your mind?", }, { type: "submit" } ], styles: { title: { backgroundColor: "blue" }, button: { backgroundColor: "blue" } } }); </script> <script> // tooltips tippy('#aiedu', { content: "As to AI nowadays, LLM and Stable Diffusion are hot even hottest among them, If your want to both know-why and know-how with them, instead of only know-how which can't repeat itself, you should get you to https://ai.afoo.me right now ❗" }); </script> </body> </html>

2026/4/7
阅读更多

推荐订阅

Chen's Blog,分享安全领域的所思、所想、所学。

空鸣深语

无论你是游戏死忠,还是轻度的休闲玩家,在这里都能找到感兴趣的东西。

分享免费、小巧、实用、有趣、绿色的软件

Cloudflare 官方博客中文版,涵盖安全、AI 和开发者相关内容