[{"data":1,"prerenderedAt":15960},["ShallowReactive",2],{"search-articles":3,"search-builds":7365,"search-tutorials":13608},[4,365,1080,1270,1444,1748,1957,2195,2531,2868,3069,3398,3650,3835,3981,4282,4536,4792,4985,5270,5507,5715,5883,6184,6415,6640,6889,7109],{"id":5,"title":6,"body":7,"cover":326,"date":327,"description":328,"draft":329,"extension":330,"faq":331,"featured":329,"meta":344,"navigation":345,"path":346,"readingTime":347,"seo":348,"seoKeywords":349,"stem":357,"summary":358,"tags":359,"type":362,"updated":363,"video":363,"__hash__":364},"articles\u002Farticles\u002Fmarkdown-vs-html.md","Markdown 已死？先别慌，自媒体又在夸大了",{"type":8,"value":9,"toc":315},"minimark",[10,17,22,25,28,31,34,37,40,43,46,52,59,63,66,72,75,83,86,92,98,101,104,109,112,116,119,124,131,134,139,142,147,161,166,169,172,177,180,193,199,204,208,211,237,240,254,259,262,265,269,272,275,285,291,294,297,301,304,307,312],[11,12,13],"blockquote",{},[14,15,16],"p",{},"HTML 是给人看的，Markdown 是和 AI 说话的。两者服务的对象不同，根本不存在谁取代谁。",[18,19,21],"h2",{"id":20},"又一个已死标题","又一个「已死」标题",[14,23,24],{},"上周，一个帖子炸了。",[14,26,27],{},"Anthropic 工程师 Thariq 写了一篇长文，大意是：他已经完全改用 HTML 作为 AI 的输出格式，Markdown 又长又难读，超过 100 行他基本就不看了。",[14,29,30],{},"随后自媒体蜂拥而至，标题一个比一个猛：",[14,32,33],{},"「Markdown，当死。」",[14,35,36],{},"「卡帕西也站队了，HTML 要取代 Markdown？」",[14,38,39],{},"「你刚学会用 MD，它又要死了？」",[14,41,42],{},"然后我看到身边很多人开始焦虑——",[14,44,45],{},"又要学新东西了？之前花时间搭的 Markdown 工作流是不是白费了？",[14,47,48],{},[49,50,51],"strong",{},"先冷静。这件事被严重夸大了。",[14,53,54],{},[55,56],"img",{"alt":57,"src":58},"Thariq 的帖子截图","\u002Fa\u002Fmarkdown-vs-html\u002Fthariq-post.webp",[18,60,62],{"id":61},"thariq-说的其实是对的但说的是另一件事","Thariq 说的其实是对的，但说的是另一件事",[14,64,65],{},"Thariq 的观察我完全认同，而且我们团队内部也在印证这件事。",[14,67,68,69],{},"他说的是：",[49,70,71],{},"当 AI 输出一份供人阅读的文档时，HTML 比 Markdown 好得多。",[14,73,74],{},"这句话是对的。",[14,76,77,78,82],{},"超过 100 行的 Markdown？老实说，我自己也没怎么认真看过。Claude Code 吭哧吭哧生成的 ",[79,80,81],"code",{},"plan.md","，我基本瞟一眼就发\"开工\"了。",[14,84,85],{},"但 HTML 不一样——AI 可以把同样的信息做成带标签页、可折叠区块、甚至响应式布局的页面。视觉层次清晰，打开浏览器就能看，甩给同事一个链接，零门槛。",[14,87,88,89],{},"这个优势是真实的。对于需要示意、解释、说服别人的内容，",[49,90,91],{},"一个可以\"玩\"起来的文档，比一堆 ASCII 代码块强太多了。",[14,93,94,95],{},"所以 Thariq 说的是：",[49,96,97],{},"让 AI 输出 HTML，给人看。",[14,99,100],{},"他没说的是：用 HTML 和 AI 对话。",[14,102,103],{},"这两件事，完全不同。",[14,105,106],{},[49,107,108],{},"但反直觉的是——恰恰是 AI 能力越来越强，Markdown 反而变得更不可替代了。",[14,110,111],{},"因为 AI 越强，你和它沟通的频次越高，你给它的上下文越多，那个\"中间沟通层\"就越关键。而那个层，Markdown 才是王者。",[18,113,115],{"id":114},"但markdown-已死是彻底的夸大","但「Markdown 已死」是彻底的夸大",[14,117,118],{},"自媒体把这件事扭曲成了「HTML 要全面取代 Markdown」，这就荒谬了。",[14,120,121],{},[49,122,123],{},"Markdown 为什么不会死？因为它是和 AI 沟通的语言，不是给人读的格式。",[14,125,126,127,130],{},"反直觉的地方在这里：大家以为 HTML 更\"现代\"，Markdown 更\"原始\"，所以 HTML 应该赢。但判断一个格式该不该用，不是看谁更好看，而是看",[49,128,129],{},"谁在用它、用来做什么","。",[14,132,133],{},"四个理由：",[14,135,136],{},[49,137,138],{},"1. AI 就是在 Markdown 上训练出来的",[14,140,141],{},"互联网上大量的技术文档、GitHub README、Stack Overflow 回答，都是 Markdown 格式。语言模型吃的就是这些。Markdown 的结构——标题层级、列表、代码块——AI 天然就懂，对它的理解比任何格式都精准。",[14,143,144],{},[49,145,146],{},"2. 和 AI 说话，你要的是干净，不是花哨",[14,148,149,150,153,154,153,157,160],{},"当你给 AI 一段上下文、一份规格文档、一个任务描述，你要的是让它尽快理解，没有噪音。HTML 里充满了 ",[79,151,152],{},"\u003Cdiv>","、",[79,155,156],{},"\u003Cspan>",[79,158,159],{},"class"," 属性——这些对 AI 来说都是要处理的冗余信息。Markdown 的纯文本信息更干净，AI 读得更快、理解更准。",[14,162,163],{},[49,164,165],{},"3. Token 是真实成本",[14,167,168],{},"据实测，相同内容，HTML 消耗的 token 约是 Markdown 的 2-8 倍。有人算过账：同样规模的项目，从 Markdown 切换到全链路 HTML，一年多花将近一倍的 API 费用。",[14,170,171],{},"如果 HTML 只是最终呈现层，这个成本是值得的。但如果整个 AI 工作流的中间环节都在传递 HTML，那是在把大量钱烧在标签上。",[14,173,174],{},[49,175,176],{},"4. AI 工作流是有层次的",[14,178,179],{},"一个完整的 AI 协作链路通常是：",[181,182,183,187,190],"ul",{},[184,185,186],"li",{},"你用 Markdown 给 AI 写指令和上下文",[184,188,189],{},"AI 用代码或 Markdown 完成中间步骤",[184,191,192],{},"最终输出物：展示给人看的部分用 HTML",[14,194,195,198],{},[49,196,197],{},"中间态给 AI，终态给人。"," 这才是正确的分工。",[11,200,201],{},[14,202,203],{},"HTML 是给人看的展示载体，Markdown 是和 AI 沟通的工作语言。两者服务的对象根本不同，就像你不会因为 PPT 好看就把所有工作邮件都写成 PPT 格式。",[18,205,207],{"id":206},"什么时候该让-ai-输出-html","什么时候该让 AI 输出 HTML？",[14,209,210],{},"具体说，以下这些场景用 HTML 是对的：",[181,212,213,219,225,231],{},[184,214,215,218],{},[49,216,217],{},"方案对比页","：几个方向并排展示，带标注和权衡分析",[184,220,221,224],{},[49,222,223],{},"代码审查说明","：带颜色 diff、模块依赖图、行内批注",[184,226,227,230],{},[49,228,229],{},"数据报告","：SVG 图表、交互式数据探索",[184,232,233,236],{},[49,234,235],{},"一次性编辑器","：拖拽看板、参数调试器、Prompt 预览——用完即抛",[14,238,239],{},"以下这些场景，继续用 Markdown：",[181,241,242,245,248,251],{},[184,243,244],{},"给 AI 写任务描述和上下文",[184,246,247],{},"项目的规格文档（AI 需要频繁读取和更新的）",[184,249,250],{},"代码注释和 README",[184,252,253],{},"任何 AI 需要「消费」而不是「展示」的内容",[14,255,256],{},[49,257,258],{},"原则很简单：这份内容的最终消费者是人还是 AI？",[14,260,261],{},"是人 → HTML。",[14,263,264],{},"是 AI → Markdown。",[18,266,268],{"id":267},"生成了-html怎么分享","生成了 HTML，怎么分享？",[14,270,271],{},"有一个真实的痛点：AI 给你生成了一份漂亮的 HTML 文档，但你怎么发给同事看？",[14,273,274],{},"发源码？对方看到的是一堆标签。发附件？对方还要找工具打开。上传到服务器？需要账号和配置，不是人人都搞得定。",[14,276,277,278,130],{},"我最近在用的解法是 ",[279,280,284],"a",{"href":281,"rel":282},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdev\u002FhtmlShare\u002F",[283],"nofollow","MeTool 的 HTML 分享工具",[14,286,287],{},[55,288],{"alt":289,"src":290},"MeTool AI HTML 预览分享工具","\u002Fa\u002Fmarkdown-vs-html\u002Fhtml-preview.png",[14,292,293],{},"把 AI 生成的 HTML 粘进去，点一下，生成一个可以直接发给任何人的链接，对方用手机浏览器打开就能看到完整渲染效果。短内容直接编码进 URL，完全不经过服务器；链接 7 天有效，到期自动失效。",[14,295,296],{},"从 AI 生成到对方看到，整个流程 30 秒。",[18,298,300],{"id":299},"所以-markdown-将会活得好好的","所以 Markdown 将会活得好好的！",[14,302,303],{},"Thariq 的观察是真实的，局部也是对的。但「Markdown 已死」这个结论，是自媒体加的。",[14,305,306],{},"AI 时代信息更新快，焦虑是正常的。但在被标题带节奏之前，多问一句：",[14,308,309],{},[49,310,311],{},"这个观点，说的是全部情况，还是某一个具体场景？",[14,313,314],{},"想清楚这一点，你就不会再为「Markdown 已死」慌神了。",{"title":316,"searchDepth":317,"depth":317,"links":318},"",3,[319,321,322,323,324,325],{"id":20,"depth":320,"text":21},2,{"id":61,"depth":320,"text":62},{"id":114,"depth":320,"text":115},{"id":206,"depth":320,"text":207},{"id":267,"depth":320,"text":268},{"id":299,"depth":320,"text":300},"\u002Fa\u002Fmarkdown-vs-html\u002Fcover.png","2026-05-14","Anthropic 工程师力推 HTML 输出，但「Markdown 已死」是夸大其词。HTML 是给人看的，Markdown 是和 AI 说话的，两者根本不是一回事。",false,"md",[332,335,338,341],{"q":333,"a":334},"Anthropic 工程师为什么推荐 HTML 而不是 Markdown？","Thariq 的核心理由是：超过 100 行的 Markdown 文件几乎没人会认真读完，而 HTML 可以用 CSS 排版、SVG 画图、JavaScript 做交互，信息密度和可读性远超纯文本。他推荐的是「让 AI 输出 HTML 给人看」，而不是「用 HTML 和 AI 对话」。",{"q":336,"a":337},"为什么说 Markdown 更适合和 AI 沟通？","AI 语言模型本身就是在大量 Markdown 格式的文本上训练的，对其结构天然敏感。Markdown 语法简洁，相同信息消耗的 token 更少，也没有 HTML 标签的噪音干扰。与 AI 对话时，Markdown 是最干净、最高效的输入格式。",{"q":339,"a":340},"HTML 输出会消耗更多 token 吗？","是的，据实测，同样内容 HTML 格式消耗的 token 约是 Markdown 的 2-4 倍。如果你把 HTML 用于「展示给人看」的输出，这个成本是值得的；但如果在整个 AI 工作流的中间环节都用 HTML 传递信息，就会造成大量不必要的 token 浪费。",{"q":342,"a":343},"什么时候该让 AI 输出 HTML，什么时候用 Markdown？","简单原则：如果这份内容是「展示给人看的终态」——报告、方案对比、代码审查说明——就用 HTML；如果是「与 AI 继续沟通的中间态」——指令、上下文、规格文档——就用 Markdown。终态给人，中间态给 AI。",{},true,"\u002Farticles\u002Fmarkdown-vs-html",8,{"title":6,"description":328},[350,351,352,353,354,355,356],"Markdown HTML AI输出","AI输出格式","HTML替代Markdown","Claude HTML输出","AI token消耗","vibe coding格式","AI沟通技巧","articles\u002Fmarkdown-vs-html","HTML 适合人类浏览和交互，Markdown 适合与 AI 沟通——两者服务的对象不同，根本不存在谁取代谁的问题。别被「Markdown 已死」的标题带节奏。",[360,361],"AI 洞察","AI 应用","article",null,"g_TUEKdqyPBMT6-RG1GBrdcwcnrbF3L75Gy4vXauSeM",{"id":366,"title":367,"body":368,"cover":380,"date":1049,"description":1050,"draft":329,"extension":330,"faq":1051,"featured":329,"meta":1064,"navigation":345,"path":1065,"readingTime":562,"seo":1066,"seoKeywords":1067,"stem":1075,"summary":1076,"tags":1077,"type":362,"updated":363,"video":363,"__hash__":1079},"articles\u002Farticles\u002Fgit-worktree-ai-parallel-dev.md","榨干 AI 效率，优雅的 AI 并行开发技巧",{"type":8,"value":369,"toc":1037},[370,375,381,384,387,390,393,397,403,406,409,416,419,422,426,432,435,444,455,462,482,485,491,495,499,613,616,620,623,676,679,685,688,718,721,725,728,735,738,829,834,838,841,850,870,873,876,879,941,944,948,1016,1022,1025,1030,1033],[11,371,372],{},[14,373,374],{},"AI 不是不够快，是你的工作流只允许它一次干一件事。Git Worktree 让你的项目从单行道变成多车道，每个 AI 各走各的，互不干扰。",[14,376,377],{},[55,378],{"alt":379,"src":380},"cover","\u002Fa\u002Fgit-worktree-ai-parallel-dev\u002Fcover.png",[14,382,383],{},"上周，AI 正在帮我重构一个组件。进度条缓慢推进，预计还要 3 分钟。",[14,385,386],{},"我盯着屏幕，脑子里想的全是：另一个需求的接口层也可以同时改啊。于是我开了第二个 AI 会话窗口，让它去改接口层。两边同时跑，效率翻倍，完美。",[14,388,389],{},"直到我准备合并代码的那一刻。",[14,391,392],{},"两个 AI 都动了同一个配置文件。满屏红色冲突标记，解冲突花了半小时。比让 AI 排队干还慢。",[18,394,396],{"id":395},"问题出在哪","问题出在哪？",[14,398,399,400],{},"想明白之后，答案很简单：",[49,401,402],{},"两个 AI 会话共用了同一个工作目录。",[14,404,405],{},"它们改的文件确实大部分不重叠，但只要有一个公共文件被双方碰过，就会打架。这就像两个厨师共用一个灶台，各做各的菜没问题，但只要同时伸手拿调料瓶，就撞上了。",[14,407,408],{},"而且这个问题不只出现在个人开发中。",[14,410,411,412,415],{},"团队开发时更明显。需求单都是独立的，大家本来就习惯用 ",[79,413,414],{},"git branch"," 各自开分支。但如果你想让 AI 帮你在不同分支上同时开发不同的需求，就会非常别扭。AI 没法在同一个工作目录里同时 checkout 两个分支，你要么频繁切分支，要么 clone 多份仓库。",[14,417,418],{},"前者打断工作流，后者浪费空间和时间。",[14,420,421],{},"我一度觉得，这大概就是 AI 并行开发的天花板了。",[18,423,425],{"id":424},"直到我发现-git-worktree","直到我发现 Git Worktree",[14,427,428,429,130],{},"Git 里有一个存在很久、但大多数人没用过的功能：",[49,430,431],{},"Worktree（工作树）",[14,433,434],{},"一句话解释：它可以让你为同一个仓库创建多个独立的工作目录，每个目录对应一个不同的分支。",[436,437,442],"pre",{"className":438,"code":440,"language":441},[439],"language-text","my-project\u002F              ← 主目录，在 main 分支\nmy-project-feat-a\u002F       ← Worktree 1，在 feature\u002Fa 分支\nmy-project-feat-b\u002F       ← Worktree 2，在 feature\u002Fb 分支\n","text",[79,443,440],{"__ignoreMap":316},[14,445,446,447,450,451,454],{},"这三个目录是",[49,448,449],{},"完全独立的文件系统","，互不干扰。但它们共享同一个 ",[79,452,453],{},".git"," 对象数据库。提交历史、远程仓库配置、钩子全部共享，不会出现\"两份代码配置慢慢漂移\"的问题。",[14,456,457,458,461],{},"和 ",[79,459,460],{},"git clone"," 多份仓库相比，Worktree 的优势很明显：",[181,463,464,470,476],{},[184,465,466,469],{},[49,467,468],{},"创建速度快","：几乎瞬间完成，不需要重新下载整个仓库",[184,471,472,475],{},[49,473,474],{},"几乎不占额外空间","：共享对象数据库，只多了工作区的文件副本",[184,477,478,481],{},[49,479,480],{},"配置不漂移","：远程仓库、钩子、Git 配置全部共享",[14,483,484],{},"说白了，Worktree 就是让你在一个仓库里同时\"打开\"多个分支，每个分支有自己的目录，互相看不见。",[14,486,487,488],{},"发现它的那一刻，我就意识到：",[49,489,490],{},"这不就是给 AI 并行开发量身定做的吗？",[18,492,494],{"id":493},"实操两分钟上手","实操：两分钟上手",[496,497,498],"h3",{"id":498},"基础命令速查",[436,500,504],{"className":501,"code":502,"language":503,"meta":316,"style":316},"language-bash shiki shiki-themes github-light-default github-dark-default","# 查看当前所有工作目录\ngit worktree list\n\n# 为已有分支创建新工作目录\ngit worktree add ..\u002Ffeat-login feature\u002Flogin\n\n# 创建新分支 + 新工作目录，一步到位\ngit worktree add ..\u002Ffeat-payment -b feature\u002Fpayment\n\n# 在某个特定 commit 上创建工作目录（只读排查场景常用）\ngit worktree add --detach ..\u002Finvestigate abc1234\n","bash",[79,505,506,515,528,533,539,555,560,566,584,589,595],{"__ignoreMap":316},[507,508,511],"span",{"class":509,"line":510},"line",1,[507,512,514],{"class":513},"sU953","# 查看当前所有工作目录\n",[507,516,517,521,525],{"class":509,"line":320},[507,518,520],{"class":519},"sTDnQ","git",[507,522,524],{"class":523},"sSVrQ"," worktree",[507,526,527],{"class":523}," list\n",[507,529,530],{"class":509,"line":317},[507,531,532],{"emptyLinePlaceholder":345},"\n",[507,534,536],{"class":509,"line":535},4,[507,537,538],{"class":513},"# 为已有分支创建新工作目录\n",[507,540,542,544,546,549,552],{"class":509,"line":541},5,[507,543,520],{"class":519},[507,545,524],{"class":523},[507,547,548],{"class":523}," add",[507,550,551],{"class":523}," ..\u002Ffeat-login",[507,553,554],{"class":523}," feature\u002Flogin\n",[507,556,558],{"class":509,"line":557},6,[507,559,532],{"emptyLinePlaceholder":345},[507,561,563],{"class":509,"line":562},7,[507,564,565],{"class":513},"# 创建新分支 + 新工作目录，一步到位\n",[507,567,568,570,572,574,577,581],{"class":509,"line":347},[507,569,520],{"class":519},[507,571,524],{"class":523},[507,573,548],{"class":523},[507,575,576],{"class":523}," ..\u002Ffeat-payment",[507,578,580],{"class":579},"sHrmB"," -b",[507,582,583],{"class":523}," feature\u002Fpayment\n",[507,585,587],{"class":509,"line":586},9,[507,588,532],{"emptyLinePlaceholder":345},[507,590,592],{"class":509,"line":591},10,[507,593,594],{"class":513},"# 在某个特定 commit 上创建工作目录（只读排查场景常用）\n",[507,596,598,600,602,604,607,610],{"class":509,"line":597},11,[507,599,520],{"class":519},[507,601,524],{"class":523},[507,603,548],{"class":523},[507,605,606],{"class":579}," --detach",[507,608,609],{"class":523}," ..\u002Finvestigate",[507,611,612],{"class":523}," abc1234\n",[14,614,615],{},"就这么几条命令。没有复杂的配置，没有需要记的参数。",[496,617,619],{"id":618},"场景一个人-ai-并行开发","场景一：个人 AI 并行开发",[14,621,622],{},"你手上有三个需求要同时推进。打开终端：",[436,624,626],{"className":501,"code":625,"language":503,"meta":316,"style":316},"git worktree add ..\u002Fmy-project-feat-a -b feature\u002Fa\ngit worktree add ..\u002Fmy-project-feat-b -b feature\u002Fb\ngit worktree add ..\u002Fmy-project-fix-bug -b fix\u002Fbug-123\n",[79,627,628,644,660],{"__ignoreMap":316},[507,629,630,632,634,636,639,641],{"class":509,"line":510},[507,631,520],{"class":519},[507,633,524],{"class":523},[507,635,548],{"class":523},[507,637,638],{"class":523}," ..\u002Fmy-project-feat-a",[507,640,580],{"class":579},[507,642,643],{"class":523}," feature\u002Fa\n",[507,645,646,648,650,652,655,657],{"class":509,"line":320},[507,647,520],{"class":519},[507,649,524],{"class":523},[507,651,548],{"class":523},[507,653,654],{"class":523}," ..\u002Fmy-project-feat-b",[507,656,580],{"class":579},[507,658,659],{"class":523}," feature\u002Fb\n",[507,661,662,664,666,668,671,673],{"class":509,"line":317},[507,663,520],{"class":519},[507,665,524],{"class":523},[507,667,548],{"class":523},[507,669,670],{"class":523}," ..\u002Fmy-project-fix-bug",[507,672,580],{"class":579},[507,674,675],{"class":523}," fix\u002Fbug-123\n",[14,677,678],{},"现在你有四个完全独立的项目目录。打开多个 AI 编程窗口，每个窗口指向一个目录，让它们各干各的。",[14,680,681,682],{},"改同一个文件？没关系，",[49,683,684],{},"它们在不同的目录里，根本碰不到彼此。",[14,686,687],{},"各自改完之后，回到主目录正常合并：",[436,689,691],{"className":501,"code":690,"language":503,"meta":316,"style":316},"git merge feature\u002Fa\ngit merge feature\u002Fb\ngit merge fix\u002Fbug-123\n",[79,692,693,702,710],{"__ignoreMap":316},[507,694,695,697,700],{"class":509,"line":510},[507,696,520],{"class":519},[507,698,699],{"class":523}," merge",[507,701,643],{"class":523},[507,703,704,706,708],{"class":509,"line":320},[507,705,520],{"class":519},[507,707,699],{"class":523},[507,709,659],{"class":523},[507,711,712,714,716],{"class":509,"line":317},[507,713,520],{"class":519},[507,715,699],{"class":523},[507,717,675],{"class":523},[14,719,720],{},"如果合并时有冲突，那是正常的代码逻辑冲突，你可以从容处理。而不是两个 AI 在同一份文件上乱改造成的混乱。",[496,722,724],{"id":723},"场景二团队多分支开发","场景二：团队多分支开发",[14,726,727],{},"团队里每个人各自开了分支做不同需求，你负责修一个线上 bug。",[14,729,730,731,734],{},"传统方式：",[79,732,733],{},"git checkout"," 切来切去，AI 的上下文全丢了。",[14,736,737],{},"Worktree 方式：",[436,739,741],{"className":501,"code":740,"language":503,"meta":316,"style":316},"# 为 hotfix 单独开一个工作目录\ngit worktree add ..\u002Fhotfix-2174 -b hotfix\u002F2174 origin\u002Frelease\u002F1.2\n\n# 在 hotfix 目录里让 AI 修 bug，主目录继续开发新功能\ncd ..\u002Fhotfix-2174\ngit commit -am \"Fix null check in payment total\"\ngit push -u origin hotfix\u002F2174\n\n# 修完了，回主目录继续手头的活\ncd ..\u002Fmy-project\n",[79,742,743,748,767,771,776,784,797,813,817,822],{"__ignoreMap":316},[507,744,745],{"class":509,"line":510},[507,746,747],{"class":513},"# 为 hotfix 单独开一个工作目录\n",[507,749,750,752,754,756,759,761,764],{"class":509,"line":320},[507,751,520],{"class":519},[507,753,524],{"class":523},[507,755,548],{"class":523},[507,757,758],{"class":523}," ..\u002Fhotfix-2174",[507,760,580],{"class":579},[507,762,763],{"class":523}," hotfix\u002F2174",[507,765,766],{"class":523}," origin\u002Frelease\u002F1.2\n",[507,768,769],{"class":509,"line":317},[507,770,532],{"emptyLinePlaceholder":345},[507,772,773],{"class":509,"line":535},[507,774,775],{"class":513},"# 在 hotfix 目录里让 AI 修 bug，主目录继续开发新功能\n",[507,777,778,781],{"class":509,"line":541},[507,779,780],{"class":579},"cd",[507,782,783],{"class":523}," ..\u002Fhotfix-2174\n",[507,785,786,788,791,794],{"class":509,"line":557},[507,787,520],{"class":519},[507,789,790],{"class":523}," commit",[507,792,793],{"class":579}," -am",[507,795,796],{"class":523}," \"Fix null check in payment total\"\n",[507,798,799,801,804,807,810],{"class":509,"line":562},[507,800,520],{"class":519},[507,802,803],{"class":523}," push",[507,805,806],{"class":579}," -u",[507,808,809],{"class":523}," origin",[507,811,812],{"class":523}," hotfix\u002F2174\n",[507,814,815],{"class":509,"line":347},[507,816,532],{"emptyLinePlaceholder":345},[507,818,819],{"class":509,"line":586},[507,820,821],{"class":513},"# 修完了，回主目录继续手头的活\n",[507,823,824,826],{"class":509,"line":591},[507,825,780],{"class":579},[507,827,828],{"class":523}," ..\u002Fmy-project\n",[14,830,831],{},[49,832,833],{},"不用切分支，不丢上下文，每个需求都有自己的\"房间\"。",[18,835,837],{"id":836},"ai-编程工具已经在用这个方案了","AI 编程工具已经在用这个方案了",[14,839,840],{},"这不是我一个人折腾出来的野路子。",[14,842,843,844,849],{},"Cursor 最近发布的 ",[279,845,848],{"href":846,"rel":847},"https:\u002F\u002Fcursor.com\u002Fdocs\u002Fconfiguration\u002Fworktrees",[283],"Parallel Agents 功能","，底层就是用 Git Worktree 实现的。每个并行 Agent 自动运行在独立的 Worktree 和分支上，提供三个关键保障：",[181,851,852,858,864],{},[184,853,854,857],{},[49,855,856],{},"文件隔离","：每个 Agent 的文件编辑和暂存区完全独立，不会互相覆盖",[184,859,860,863],{},[49,861,862],{},"高效创建","：Worktree 比 clone 快得多，几乎没有额外空间开销",[184,865,866,869],{},[49,867,868],{},"历史可追溯","：每个 Agent 的分支清晰记录了它做了什么改动",[14,871,872],{},"这意味着行业已经在朝这个方向走了。即使你现在用的工具还不支持自动并行，手动用 Worktree 一样能达到同样的效果。",[18,874,875],{"id":875},"用完记得收拾",[14,877,878],{},"Worktree 用完后别忘了清理，否则目录会越攒越多：",[436,880,882],{"className":501,"code":881,"language":503,"meta":316,"style":316},"# 删除不再需要的工作目录\ngit worktree remove ..\u002Ffeat-login\n\n# 如果目录已经被手动删了，清理残留的元数据\ngit worktree prune\n\n# 可选：删除已合并的远程分支\ngit push origin --delete feature\u002Flogin\n",[79,883,884,889,901,905,910,919,923,928],{"__ignoreMap":316},[507,885,886],{"class":509,"line":510},[507,887,888],{"class":513},"# 删除不再需要的工作目录\n",[507,890,891,893,895,898],{"class":509,"line":320},[507,892,520],{"class":519},[507,894,524],{"class":523},[507,896,897],{"class":523}," remove",[507,899,900],{"class":523}," ..\u002Ffeat-login\n",[507,902,903],{"class":509,"line":317},[507,904,532],{"emptyLinePlaceholder":345},[507,906,907],{"class":509,"line":535},[507,908,909],{"class":513},"# 如果目录已经被手动删了，清理残留的元数据\n",[507,911,912,914,916],{"class":509,"line":541},[507,913,520],{"class":519},[507,915,524],{"class":523},[507,917,918],{"class":523}," prune\n",[507,920,921],{"class":509,"line":557},[507,922,532],{"emptyLinePlaceholder":345},[507,924,925],{"class":509,"line":562},[507,926,927],{"class":513},"# 可选：删除已合并的远程分支\n",[507,929,930,932,934,936,939],{"class":509,"line":347},[507,931,520],{"class":519},[507,933,803],{"class":523},[507,935,809],{"class":523},[507,937,938],{"class":579}," --delete",[507,940,554],{"class":523},[14,942,943],{},"养成习惯：需求合并后，顺手 remove 对应的 Worktree。",[18,945,947],{"id":946},"什么时候该用什么时候不用","什么时候该用，什么时候不用？",[949,950,951,964],"table",{},[952,953,954],"thead",{},[955,956,957,961],"tr",{},[958,959,960],"th",{},"场景",[958,962,963],{},"推荐方案",[965,966,967,976,983,997,1005],"tbody",{},[955,968,969,973],{},[970,971,972],"td",{},"AI 并行开发多个独立需求",[970,974,975],{},"Worktree",[955,977,978,981],{},[970,979,980],{},"团队多分支同时推进",[970,982,975],{},[955,984,985,988],{},[970,986,987],{},"临时看一眼另一个分支的代码",[970,989,990,993,994],{},[79,991,992],{},"git stash"," + ",[79,995,996],{},"checkout",[955,998,999,1002],{},[970,1000,1001],{},"需要完全不同的远程配置",[970,1003,1004],{},"单独 clone",[955,1006,1007,1010],{},[970,1008,1009],{},"快速修一个小 bug 然后切回来",[970,1011,1012,993,1014],{},[79,1013,992],{},[79,1015,996],{},[14,1017,1018,1019],{},"简单记：",[49,1020,1021],{},"需要长时间并行、不想频繁切换上下文的场景，用 Worktree。",[1023,1024],"hr",{},[14,1026,1027],{},[49,1028,1029],{},"Worktree 之于 Git，就像多车道之于单行道。车还是那些车，路宽了就不堵了。",[14,1031,1032],{},"AI 编程工具越来越快，但如果你的工作流一次只允许它干一件事，再快的 AI 也帮不了你太多。把路拓宽，让每个 AI 都有自己的车道，这可能是当前 AI 开发效率中最容易被忽略的优化点。",[1034,1035,1036],"style",{},"html pre.shiki code .sU953, html code.shiki .sU953{--shiki-default:#6E7781;--shiki-dark:#8B949E}html pre.shiki code .sTDnQ, html code.shiki .sTDnQ{--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":316,"searchDepth":317,"depth":317,"links":1038},[1039,1040,1041,1046,1047,1048],{"id":395,"depth":320,"text":396},{"id":424,"depth":320,"text":425},{"id":493,"depth":320,"text":494,"children":1042},[1043,1044,1045],{"id":498,"depth":317,"text":498},{"id":618,"depth":317,"text":619},{"id":723,"depth":317,"text":724},{"id":836,"depth":320,"text":837},{"id":875,"depth":320,"text":875},{"id":946,"depth":320,"text":947},"2026-04-20","用 Git Worktree 实现 AI 并行开发：多个 AI 会话同时改代码不冲突，团队多分支开发自由切换",[1052,1055,1058,1061],{"q":1053,"a":1054},"用 AI 写代码时，怎么同时推进多个需求而不互相冲突？","核心思路是让每个 AI 会话在物理上隔离的目录中工作。用 Git Worktree 为每个需求创建独立的工作目录和分支，每个 AI 会话打开各自的目录，文件系统层面就不会打架。改完后回到主分支正常合并即可，冲突只会是逻辑层面的，而非两个 AI 互相覆盖造成的混乱。",{"q":1056,"a":1057},"AI 改代码等待时间长，有什么方法能提高开发效率？","最直接的方法是并行化：把待开发的需求拆成独立任务，用 Git Worktree 为每个任务开一个独立目录和分支，同时开多个 AI 会话分别处理。等待 A 任务时，B、C 任务也在推进，整体效率可以提升数倍。关键前提是任务之间在文件系统层面隔离，避免共用工作目录。",{"q":1059,"a":1060},"团队开发时，AI 怎么在多个 feature 分支之间并行工作？","传统做法是 git checkout 频繁切分支，但每次切换 AI 都会丢失上下文。更好的方式是用 Git Worktree 为每个 feature 分支创建独立目录，每个目录可以长期存在、各自独立提交和推送。这样 AI 在不同目录中各自开发，不需要切分支，也不会互相干扰，开发完成后各自合并到主分支即可。",{"q":1062,"a":1063},"Git Worktree 会不会占用很多磁盘空间？和 clone 多份仓库有什么区别？","几乎不会。Worktree 与主仓库共享同一份 Git 对象数据库（提交历史、文件快照等），每个新目录只多了当前分支的工作文件副本。而 clone 会完整复制整个仓库数据，空间翻倍。此外 Worktree 的远程配置、钩子等也全部共享，不会出现多份仓库配置不一致的问题。",{},"\u002Farticles\u002Fgit-worktree-ai-parallel-dev",{"title":367,"description":1050},[1068,1069,1070,1071,1072,1073,1074],"Git Worktree","AI 并行开发","Git 多分支开发","AI 编程冲突","Cursor Parallel Agents","AI 编程效率","Git 工作树","articles\u002Fgit-worktree-ai-parallel-dev","AI 不是不够快，是你的工作流只允许它一次干一件事。Git Worktree 让同一个仓库同时打开多个工作目录，每个 AI 在独立目录和分支上开发，互不干扰。",[361,1078],"独立开发","yYg8aswtxrbGGSYDc_AEd1F_BU3u7hO5EEM8z1NDRog",{"id":1081,"title":1082,"body":1083,"cover":1116,"date":1238,"description":1239,"draft":329,"extension":330,"faq":1240,"featured":329,"meta":1253,"navigation":345,"path":1254,"readingTime":347,"seo":1255,"seoKeywords":1256,"stem":1265,"summary":1266,"tags":1267,"type":362,"updated":363,"video":363,"__hash__":1269},"articles\u002Farticles\u002Fbe-the-minority-in-ai-era.md","AI 干完了普通人能干的活，我们是时候去发展成少数派了",{"type":8,"value":1084,"toc":1231},[1085,1090,1094,1097,1103,1112,1117,1123,1127,1130,1136,1139,1143,1151,1161,1164,1167,1171,1174,1180,1183,1186,1189,1192,1219,1222,1228],[11,1086,1087],{},[14,1088,1089],{},"当 AI 做完了所有人都能做的事，剩下的机会只属于少数派。",[18,1091,1093],{"id":1092},"一个模型强到不敢公开","一个模型，强到不敢公开",[14,1095,1096],{},"2026 年 4 月，Anthropic 发布了一个新模型 Claude Mythos Preview，但没有面向公众开放。他们做了一件不寻常的事：通过一个叫 Project Glasswing 的计划，把模型优先提供给科技公司和开源维护者，让他们先修掉历史遗留的安全漏洞。",[14,1098,1099,1100],{},"为什么不敢直接放出来？因为这个模型在安全领域的能力跳了一个台阶。上一代模型像一个认真的实习生，你指哪它查哪，偶尔能帮你挑出几个拼写错误。",[49,1101,1102],{},"而 Mythos 更像一个干了二十年的老师傅，你把代码丢给它，它自己翻完几千个文件，第二天早上递给你一份报告：这里有个洞，存在 27 年了，所有人都没发现，顺便我写好了修复方案。",[14,1104,1105,1106,1111],{},"这不是实验室数据。",[279,1107,1110],{"href":1108,"rel":1109},"https:\u002F\u002Fred.anthropic.com\u002F2026\u002Fmythos-preview\u002F",[283],"它在两周内发现"," 了 Firefox 浏览器 22 个漏洞，找到了 OpenBSD 一个存在 27 年的 TCP 协议漏洞，找到了 FFmpeg 一个存在 16 年的视频编解码漏洞。这些都是全球顶级安全研究员长年没发现的问题。",[14,1113,1114],{},[55,1115],{"alt":316,"src":1116},"\u002Fa\u002Fbe-the-minority-in-ai-era\u002FFRT-Blog-Chart-CMP-Firefox-exploit.png",[14,1118,1119,1120],{},"这都指向了一个趋势：",[49,1121,1122],{},"至少在软件工程层面，AI 已经把「普通人能做到的」全部做到了，甚至开始侵入「专家才能做到的」领域。",[18,1124,1126],{"id":1125},"不止软件各行业的普通工序正在被接管","不止软件：各行业的「普通工序」正在被接管",[14,1128,1129],{},"这不是只发生在程序员身上。麦肯锡的报告估计，生成式 AI 可把员工 60-70% 工作自动化掉，在客户运营、营销、软件工程和研发四个领域局势更加紧迫。法律行业的合同审阅、医疗的影像诊断、金融的报告生成、影视的剪辑和特效，都在被快速接管。",[14,1131,1132,1133],{},"共性很明显：",[49,1134,1135],{},"凡是有标准流程、有历史数据可学、有「正确答案」可对照的工序，AI 都能学会，而且会越来越快。",[14,1137,1138],{},"问题来了，我们能怎么办？",[18,1140,1142],{"id":1141},"回到模型的训练目标它到底在替代什么类型的人","回到模型的训练目标：它到底在替代什么类型的人？",[14,1144,1145,1146,1150],{},"两年前我写过一篇 ",[279,1147,1149],{"href":1148},"\u002Farticles\u002Fhuman-with-llm","大模型下的生存之道","，从模型训练目标的角度分析过这个问题。核心逻辑今天依然成立，而且更紧迫了：",[14,1152,1153,1154,1157,1158,130],{},"模型最核心的优化目标是预测准确性，减小与现实世界的误差，并且要足够通用、足够泛化，不要过拟合。翻译成白话：",[49,1155,1156],{},"模型要懂各行各业的共识和通用做法，不要钻牛角尖","。麦肯锡在谈不可替代的人类特质时也点到了类似的东西：",[49,1159,1160],{},"本能、直觉、想象力、正直、身份认同，这些全是「无法被大数据平均化」的能力",[14,1162,1163],{},"所以模型天然擅长替代的是通用型输出。而那些带有独特思考角度、独特审美判断、独特经历积淀的人，恰恰是模型不会也不可能替代的。因为要「拟合」一个少数派，模型需要针对你一个人的数据过拟合，这在训练逻辑上没有意义，在资源投入上也不划算。",[14,1165,1166],{},"\"异常数据\"对模型的通用性伤害是很大的，所以成为\"异常数据\"，或者说成为少数派，就是我们必要做的事情了。",[18,1168,1170],{"id":1169},"少数派长什么样","少数派长什么样？",[14,1172,1173],{},"影视行业，AI 能剪辑、能做特效，但诺兰拍《星际穿越》，科幻只是外壳，内核是他自己对亲情和时间的理解，这种东西没有数据集能喂出来。",[14,1175,1176],{},[55,1177],{"alt":1178,"src":1179},"诺兰与他独特的时间叙事","\u002Fa\u002Fbe-the-minority-in-ai-era\u002FNolan.webp",[14,1181,1182],{},"产品领域，竞品分析 AI 都能出，但能从细分人群的真实痛苦中定义新方向的产品经理，模型学不来。写作领域，通稿 AI 写得又快又好，但带着你亲身经历和价值立场的文章，无法被平均化。教育领域，知识传递 AI 全能干，但能激发学生找到自己路径的导师，是另一回事。",[14,1184,1185],{},"这些人的共性不是「比 AI 更聪明」，而是「输出里带着只有他们才有的东西」。",[18,1187,1188],{"id":1188},"是时候行动了",[14,1190,1191],{},"如果你看到这里，不妨问自己三件事：",[1193,1194,1195,1201,1207,1213],"ol",{},[184,1196,1197,1200],{},[49,1198,1199],{},"我喜欢什么？"," - 了解你自己",[184,1202,1203,1206],{},[49,1204,1205],{},"我擅长做什么？"," - 找到你和别人不同的点",[184,1208,1209,1212],{},[49,1210,1211],{},"我经历过什么？"," - 回忆那些只有你走过的路，踩过的坑，它们就是模型没见过的训练数据",[184,1214,1215,1218],{},[49,1216,1217],{},"我能把这些变成什么？"," - 把独特性转化成别人愿意买单的输出，而不是藏在心里",[14,1220,1221],{},"然后把这种「少数派」价值放大到极致。不是说不学通用技能，而是在通用技能被模型拉平之后，你拿出来的那个东西，必须是模型再强也没法模仿的。",[14,1223,1224,1225],{},"这就是大模型时代的生存策略。两年前我用「反泛化」「反效率」来描述这件事，今天我想换一个更直接的词：",[49,1226,1227],{},"成为少数派。",[14,1229,1230],{},"你觉得自己的「少数派」特质是什么？欢迎留言聊聊。",{"title":316,"searchDepth":317,"depth":317,"links":1232},[1233,1234,1235,1236,1237],{"id":1092,"depth":320,"text":1093},{"id":1125,"depth":320,"text":1126},{"id":1141,"depth":320,"text":1142},{"id":1169,"depth":320,"text":1170},{"id":1188,"depth":320,"text":1188},"2026-04-10","当 AI 模型强到连安全专家的活都接了，普通人凭什么不被替？从模型训练目标出发，理解你的独特性为何不可被拟合。",[1241,1244,1247,1250],{"q":1242,"a":1243},"为什么说 AI 已经干完了普通人能干的活？","以 Anthropic 最新发布的模型为例，它在两周内找到了安全专家可能花数年才能发现的软件漏洞，包括存在 27 年都没被人发现的问题。这说明在很多专业领域，AI 的能力已经越过了普通从业者甚至部分专家的门槛。",{"q":1245,"a":1246},"模型的训练目标和普通人被替代有什么关系？","模型的核心训练目标是预测准确、泛化性强、不过拟合。翻译成白话就是：学会多数人的共识和通用做法，不要钻牛角尖。所以模型天然擅长替代的是通用型工作，而非带有独特视角的判断。",{"q":1248,"a":1249},"什么样的人不容易被 AI 替代？","拥有独特经历、独特视角、独特判断的人。比如有深度审美表达的导演、能从细分人群真实痛苦中定义方向的产品经理、能在复杂病例中做出综合判断的临床医生。他们的共性是：输出无法被大数据平均化。",{"q":1251,"a":1252},"普通人现在应该怎么做？","问自己三个问题：我和多数同行到底有什么不同？我过往哪些经历是别人没有的？这些独特性能否变成我的核心输出？然后把这种少数派价值放大到极致，让模型再强也无法模仿你。",{},"\u002Farticles\u002Fbe-the-minority-in-ai-era",{"title":1082,"description":1239},[1257,1258,1259,1260,1261,1262,1263,1264],"AI 替代","少数派","模型泛化","独特性","职场生存","Claude Mythos","反泛化","人机共处","articles\u002Fbe-the-minority-in-ai-era","AI 的训练目标是最大公约数：足够通用、足够准确、覆盖多数人能做的事。当它真的做到了，剩下的机会只属于那些不在公约数里的人。成为少数派，不是口号，是生存策略。",[360,1268],"学习方法","-rNFJimMfpyud8IuExfCzUrOaNjaGxhk6Wq9DF5IT_g",{"id":1271,"title":1272,"body":1273,"cover":1285,"date":1413,"description":1414,"draft":329,"extension":330,"faq":1415,"featured":329,"meta":1428,"navigation":345,"path":1429,"readingTime":591,"seo":1430,"seoKeywords":1431,"stem":1440,"summary":1441,"tags":1442,"type":362,"updated":363,"video":363,"__hash__":1443},"articles\u002Farticles\u002Fai-assisted-work-busy.md","AI 加持我的办公后，活没变少，只是换了一种忙法：普通打工人的真实处境",{"type":8,"value":1274,"toc":1405},[1275,1280,1286,1290,1293,1299,1303,1306,1309,1312,1319,1325,1329,1341,1345,1354,1358,1361,1392,1399,1402],[11,1276,1277],{},[14,1278,1279],{},"AI 能替你生成一版东西，看似你轻松了，但 \"忙碌\" 只是从手换到了眼和脑：审查、对齐、防跑偏。",[14,1281,1282],{},[55,1283],{"alt":1284,"src":1285},"封面：左右对比，想象中的轻松与真实的心力交瘁","\u002Fa\u002Fai-assisted-work-busy\u002Fcover.png",[18,1287,1289],{"id":1288},"处境产物不放心时间花在兜底上","处境：产物不放心，时间花在兜底上",[14,1291,1292],{},"这两年，很多人让 AI 帮忙写材料、出方案、vibe coding、整理纪要。人做的活确实「被干掉了一些」，可越深入使用 AI，我们心里很难松下来：产物不放心，怕跑偏、怕漏条件、怕和真实业务对不上，只好再花精力逐条审查、改口径、拉人确认。",[14,1294,1295,1296],{},"就连老板也说：既然有 AI 加持，你们都可以用更短的时间给我结果了。而这也导致活反而增多、响应和对齐频率反而越快。落到个体身上，就变成了：",[49,1297,1298],{},"明明有了 AI，为什么我感觉更累了！",[18,1300,1302],{"id":1301},"历史里早有先例凯恩斯杰文斯与忙的另一副脸","历史里早有先例：凯恩斯、杰文斯与「忙的另一副脸」",[14,1304,1305],{},"要把这种处境说清楚，就得往历史上看一眼：人类不止一次幻想着「生产率提升后，普通人会因此变闲」，但结果忙碌只是换了形态，继续挤压打工人的时间。下面用很短的理论视角，把这种「似曾相识」说清楚。",[14,1307,1308],{},"1930 年，凯恩斯在《我们孙辈的经济可能性》里展望过：随着资本积累与技术进步，人类可能在百年尺度上大幅缩短劳动时间，「经济问题」缓解之后，人们会关注如何善用闲暇。后来常被拿来对照现实：生产力确实上去了，人们的闲暇预期却没有完全按剧本发生。",[14,1310,1311],{},"另一条线更早：十九世纪杰文斯在《煤炭问题》里指出，蒸汽机提高燃煤效率后，煤的有效成本下降，用途扩张，煤炭总消耗反而可能上升，即常说的「杰文斯悖论」。它常被用来提醒：单位效率提升，不自动等于负担或资源消耗的净减少，总需求可能跟着反弹。",[14,1313,1314,1315,1318],{},"把两条并到今天的 AI 上就变成：",[49,1316,1317],{},"一边是「闲下来」的历史预期，一边是「变便宜之后总用量与总协调量上升」的机制","，都指向同一类经验，省下来的未必自动是你的休息，而可能是下一轮需求、生产与扯皮。",[14,1320,1321],{},[55,1322],{"alt":1323,"src":1324},"历史隐喻：凯恩斯与杰文斯对话","\u002Fa\u002Fai-assisted-work-busy\u002Fhistory-metaphor.png",[18,1326,1328],{"id":1327},"产业快人也被链上带着跑","产业快，人也被链上带着跑",[14,1330,1331,1332,1340],{},"再看一眼产业结构。中国制造业与数字业在若干区域高度集聚，上下游近、配套快，世行与国研中心在讨论创新与产业升级时，也强调集群、供应链效率与迭代节奏（可参考联合报告 ",[1333,1334,1335],"em",{},[279,1336,1339],{"href":1337,"rel":1338},"https:\u002F\u002Fdocuments1.worldbank.org\u002Fcurated\u002Fen\u002F720491585668929282\u002Fpdf\u002FInnovative-China-New-Drivers-of-Growth.pdf",[283],"Innovative China: New Drivers of Growth"," ）。对普通打工人而言，可感知的推论很直白：东西做得越快、版本跟得越密，个人越容易被整条链带着跑。这不是一句「产业强你就轻松」，而是「快」往往同步变成更多会议、迭代、对齐和救火。它和前面说的 AI 新负担叠在一起，就更容易出现「活没少，只是换了一种忙法」。",[18,1342,1344],{"id":1343},"当下agent-skill-与最后一道质检","当下：Agent Skill 与「最后一道质检」",[14,1346,1347,1348,1353],{},"当下还有一个能刷到的趋势：给 AI Agent 做 Skill，把经验甚至协作习惯固化成可复用能力。GitHub 上的开源项目 ",[279,1349,1352],{"href":1350,"rel":1351},"https:\u002F\u002Fgithub.com\u002Ftitanwings\u002Fcolleague-skill",[283],"同事.skill"," 获得很高关注，用聊天记录、文档等把「某位同事」的风格与工作方式蒸馏成 Skill。它像段子，也反映真实痛点：人走了，上下文和锅还在，总得用新方式接。Agent 越多、Skill 越细，协调与验收越显性，人越像流水线上最后一道质检。",[18,1355,1357],{"id":1356},"借鉴过往效率革命之后人通常怎么换技能","借鉴过往：效率革命之后，人通常怎么换技能",[14,1359,1360],{},"每一次大的效率提升，活并没有 magically 消失，而是从一类动作挪到另一类能力。工业革命里，手作让位给机器与流水线，人的价值更多落在规程、质检与协作上；办公自动化以后，「会打字」贬值，会定义问题、会审读、会跨部门对齐升值。和今天对照，普通打工人可以刻意往这几条靠：",[1193,1362,1363,1370,1376,1382],{},[184,1364,1365,1366,1369],{},"从「亲手做完」转向「定标准、做验收」",[1367,1368],"br",{},"\n过去工人要学的是对准图纸和公差；你现在要学的是什么叫一版能交付的 AI 输出，哪些必须人肉终审，哪些可以放手，把「验收清单」写进自己和协作方的预期里。",[184,1371,1372,1373,1375],{},"从「单点产出」转向「写清边界、防跑偏」",[1367,1374],{},"\n产业集聚带来的是链上同步；AI 带来的是模型不确定性。两边叠在一起，把需求、风险、责任写清楚的能力，比「会催模型多生成几版」更保值。",[184,1377,1378,1379,1381],{},"从「会用一个工具」转向「会管一条人机流水线」",[1367,1380],{},"\n历史上新工具普及后，吃香的不是只会按电钮的人，而是能排产、能排错、能升级工艺的人。对应到今天：会拆任务、会选何时人介入、会迭代 Skill 与提示词，比单纯「会用某个 AI」更经得起老板加量。",[184,1383,1384,1385,1387,1388,1391],{},"主动划界，学一点「反榨干」的历史经验",[1367,1386],{},"\n工时与节奏从来不是自然变合理的，而是一边技术一边博弈出来的。个人层面也一样：",[49,1389,1390],{},"别默认「效率工具」会自动还你生活","；哪些会不必为模型多开一轮，哪些时间必须留给离线思考，需要自己站出来说。",[14,1393,1394,1395,1398],{},"这篇文章不是劝你不用 AI，而是说：",[49,1396,1397],{},"看清忙碌换了形态，才有意识地换技能、换谈判筹码。"," 否则，审输出、对齐、学新工具的时间，仍会把日历填满。",[18,1400,1401],{"id":1401},"写在最后",[14,1403,1404],{},"你怎么看？最近多出来的是真正的空档，还是多出来的审查和预期？欢迎留言里聊一句。",{"title":316,"searchDepth":317,"depth":317,"links":1406},[1407,1408,1409,1410,1411,1412],{"id":1288,"depth":320,"text":1289},{"id":1301,"depth":320,"text":1302},{"id":1327,"depth":320,"text":1328},{"id":1343,"depth":320,"text":1344},{"id":1356,"depth":320,"text":1357},{"id":1401,"depth":320,"text":1401},"2026-04-07","AI 代劳后产物需审查对齐，老板预期加码与外行误读并存；借凯恩斯、杰文斯与产业集聚视角理解「忙碌换形态」。",[1416,1419,1422,1425],{"q":1417,"a":1418},"为什么说用了 AI 以后活没有变少？","省掉的多是某一环节的动手时间，但审阅模型输出、对齐业务口径、防止跑偏和幻觉、以及和上下游确认责任边界，这些成本会显性化。总任务量还可能因为老板预期提高而增加。",{"q":1420,"a":1421},"老板和没用透 AI 的人为什么会有误解？","没深度用过的人往往把 AI 想象成「自动完工」，容易说「有了 AI 不就省力了吗」。管理者则可能把效率红利理解成产能上限提高，默认你能承接更多需求。两种视角都容易低估人的审查与协调负担。",{"q":1423,"a":1424},"凯恩斯与杰文斯能帮普通打工人理解什么？","凯恩斯曾展望生产力提高后人类可能有更多闲暇，但现实里消费、比较与工作身份会重新占满时间。杰文斯悖论则说明效率提高后，总用量可能反弹。用来类比 AI：变便宜的不自动等于你个人更轻松。",{"q":1426,"a":1427},"产业集聚和打工人的忙有什么关系？","集群与供应链效率高时，迭代与反馈更快，个人节奏更容易被整条链带着走。这不是说产业不强人就轻松，而是「快」常常同步转化为更多对齐、联调和救火，与 AI 带来的新负担叠在一起。",{},"\u002Farticles\u002Fai-assisted-work-busy",{"title":1272,"description":1414},[1432,1433,1434,1435,1436,1437,1438,1439],"AI 办公","职场 AI","Agent Skill","人机协作","杰文斯悖论","凯恩斯闲暇","产业集聚","打工人","articles\u002Fai-assisted-work-busy","AI 能代劳一部分产出，但署名与责任仍在人身上；审查、对齐与预期管理消耗大量精力。历史上效率提升未必带来普遍闲暇，产业集聚还会加快迭代节奏，忙碌往往只是换了形态。",[361,360],"gAj-TwWK72CC9eS-hd_Zl0n19CGUYR7oXVhrhwr2FPs",{"id":1445,"title":1446,"body":1447,"cover":1718,"date":1719,"description":1720,"draft":329,"extension":330,"faq":1721,"featured":329,"meta":1734,"navigation":345,"path":1735,"readingTime":557,"seo":1736,"seoKeywords":1737,"stem":1744,"summary":1453,"tags":1745,"type":362,"updated":363,"video":363,"__hash__":1747},"articles\u002Farticles\u002Fagent-cli-vs-gui.md","对 Agent 操作 GUI 说不：从 CLI-Anything 看软件交互的下一步",{"type":8,"value":1448,"toc":1711},[1449,1454,1457,1463,1466,1469,1477,1480,1484,1490,1497,1502,1510,1516,1520,1523,1526,1532,1538,1544,1551,1557,1561,1564,1571,1574,1618,1621,1624,1630,1633,1638,1641,1655,1658,1662,1665,1670,1673,1687,1690,1694,1700,1705,1708],[11,1450,1451],{},[14,1452,1453],{},"GUI 是给人类设计的'慢接口'，AI Agent 需要直达操作层的'快通道'。CLI 化适合成熟稳定软件，Scripts 方案更适合迭代灵活的项目。",[14,1455,1456],{},"GitHub 上港大团队开源的 CLI-Anything，两周之内涨到两万多 Stars。它做的事情用一句话概括：把任何桌面软件变成命令行工具，让 AI Agent 可以直接操作。",[14,1458,1459],{},[55,1460],{"alt":1461,"src":1462},"cli-anything","\u002Fa\u002Fagent-cli-vs-gui\u002Fcli-anything.png",[14,1464,1465],{},"一个命令行工具，为什么能引发这么大的关注？",[14,1467,1468],{},"因为 AI 要给我们干活完成任务，无非有两种方式：",[1193,1470,1471,1474],{},[184,1472,1473],{},"AI 自己看着页面操作",[184,1475,1476],{},"AI 通过命令行，不用看界面，就能用命令文本操作",[14,1478,1479],{},"而现在的大模型，在文本处理上的能力远远大于图片理解的能力。所以，越来越多人意识到，给 AI 一个带界面的软件，它觉得更难用，也更难给你一个好结果。反倒是让他用代码的思维通过命令行执行软件，对它而言就简单多了。",[18,1481,1483],{"id":1482},"为什么说让-agent-操作图形界面是弯路","为什么说让 Agent 操作图形界面是弯路？",[14,1485,1486,1487],{},"OpenClaw 的创始人 Peter Steinberger 说过一个很精辟的判断：",[49,1488,1489],{},"App 本质上是一个 Slow API。",[14,1491,1492,1493,1496],{},"什么意思？人需要界面，是因为可以高效利用视觉信息处理问题。但现在的 AI 更擅长文本处理，它只需要知道有一个 ",[79,1494,1495],{},"export"," 命令可以调用就能高效完成任务。所以压根不需要让 AI 像人类一样看页面。",[14,1498,1499],{},[49,1500,1501],{},"GUI 是给人类设计的\"慢接口\"，而 AI Agent 需要的是直接触达操作层的\"快通道\"。",[14,1503,1504,1505,1509],{},"这也是我在",[279,1506,1508],{"href":1507},"\u002Farticles\u002Fagent-ui","上一篇文章","中分享的实践：给产品加 AI 入口时，我没有让 AI 去操作前端界面，而是直接把后端 API 接给了 AI Agent。效果立竿见影——以前运营找人跑数据要半天，现在对话框里说一句话，AI 直接调接口出结果。",[14,1511,1512,1513],{},"CLI-Anything 爆火的逻辑和这个一模一样：",[49,1514,1515],{},"把 可视化界面 拿走，直接暴露底层操作能力给 Agent。",[18,1517,1519],{"id":1518},"也不是一切都要-cli-命令化","也不是一切都要 CLI 命令化",[14,1521,1522],{},"CLI-Anything 的思路是对的——分析源码，自动生成结构化的 CLI 命令，让 Agent 用确定性的方式调用软件功能。比操作 GUI 稳定得多，高效得多。",[14,1524,1525],{},"但我在项目中集成 CLI-Anything 时，我发现了现实的局限性：",[14,1527,1528,1531],{},[49,1529,1530],{},"1. 它需要源码","，闭源商业软件走不通。",[14,1533,1534,1537],{},[49,1535,1536],{},"2. 它需要接口稳定","，软件快速迭代时 CLI 版本很快就会脱节。",[14,1539,1540,1543],{},[49,1541,1542],{},"3. 它受限于预定义命令","，Agent 只能做命令集里有的事，遇到新需求就得重新生成。",[14,1545,1546,1547,1550],{},"所以 CLI 化最适合的场景是：",[49,1548,1549],{},"开源、版本稳定、操作模式固定的软件","——FFmpeg、Blender、成熟的开发工具链这类。接口不怎么变，CLI 化后长期可用。",[14,1552,1553,1554],{},"而对于迭代快、需求灵活多变的产品，转化成 CLI 可能会产生不少副作用。所以，我们决定：",[49,1555,1556],{},"不是所有软件都要 CLI 化，而是根据软件的特性选择最合适的方案。",[18,1558,1560],{"id":1559},"有没有比固定-cli-更灵活的-agent-集成方式","有没有比固定 CLI 更灵活的 Agent 集成方式？",[14,1562,1563],{},"通常我们可以将 CLI 等可由 Agent 执行的逻辑做成一个 Agent Skill。在我们公司的实际项目中，除了 CLI 化，我们也可以直接考虑 Agent Skill 中的原生 Scripts 标准。",[14,1565,1566,1567,1570],{},"简单说，就是不把能力打包成固定的 CLI 命令，而是把底层的操作脚本直接放在 Skill 中的 ",[79,1568,1569],{},"scripts\u002F"," 目录下，让 Agent 自己去读、去理解、去组合调用。",[14,1572,1573],{},"举个例子。假设你有一个数据处理项目，CLI 化后可能生成这样的命令：",[436,1575,1577],{"className":501,"code":1576,"language":503,"meta":316,"style":316},"data-tool export --format csv --date-range 2026-01-01:2026-03-24\ndata-tool analyze --metric retention --group channel\n",[79,1578,1579,1599],{"__ignoreMap":316},[507,1580,1581,1584,1587,1590,1593,1596],{"class":509,"line":510},[507,1582,1583],{"class":519},"data-tool",[507,1585,1586],{"class":523}," export",[507,1588,1589],{"class":579}," --format",[507,1591,1592],{"class":523}," csv",[507,1594,1595],{"class":579}," --date-range",[507,1597,1598],{"class":523}," 2026-01-01:2026-03-24\n",[507,1600,1601,1603,1606,1609,1612,1615],{"class":509,"line":320},[507,1602,1583],{"class":519},[507,1604,1605],{"class":523}," analyze",[507,1607,1608],{"class":579}," --metric",[507,1610,1611],{"class":523}," retention",[507,1613,1614],{"class":579}," --group",[507,1616,1617],{"class":523}," channel\n",[14,1619,1620],{},"这些命令好用，但只能做预定义好的事情。如果运营突然说\"我要把导出的数据按渠道分组，再和另一张表交叉分析\"，而这个组合操作没有对应的 CLI 命令，Agent 就卡住了。",[14,1622,1623],{},"Scripts 方案不一样。你提供的不是固定命令，而是一组可组合的脚本能力：",[436,1625,1628],{"className":1626,"code":1627,"language":441},[439],"scripts\u002F\n  export_data.py      # 导出数据\n  analyze_metric.py   # 分析指标\n  cross_join.py       # 交叉关联\n  format_report.py    # 格式化报告\n",[79,1629,1627],{"__ignoreMap":316},[14,1631,1632],{},"Agent 拿到这些脚本后，可以自己写代码把它们串起来，灵活组合成任何它需要的工作流。接口变了？Agent 直接读最新的脚本，自己适配。需求没见过？Agent 自己写一段胶水代码，把现有脚本能力拼装成新方案。",[14,1634,1635],{},[49,1636,1637],{},"CLI 是一个\"定型的工具包\"——像一套固定菜单，Agent 只能点菜单上有的。Scripts 是一个\"食材库\"——Agent 可以自己看食材、自己搭配、自己炒菜。",[14,1639,1640],{},"这两种方式的适用场景也很清晰：",[181,1642,1643,1649],{},[184,1644,1645,1648],{},[49,1646,1647],{},"软件成熟、接口稳定"," → CLI 化更好。命令固化下来，调用确定、行为可控、维护成本低。",[184,1650,1651,1654],{},[49,1652,1653],{},"项目在迭代、需求灵活"," → Scripts 方案更好。Agent 自由度高，能跟上变化，覆盖面更广。",[14,1656,1657],{},"它们不是谁替代谁的关系，而是不同阶段、不同场景下的最优选择。",[18,1659,1661],{"id":1660},"为什么说软件正在长出第二个入口","为什么说软件正在长出「第二个入口」？",[14,1663,1664],{},"不管是 CLI 化、Scripts 方案，还是我之前做的\"给产品加 AI 对话入口\"，本质上都在做同一件事：",[14,1666,1667],{},[49,1668,1669],{},"给软件开一个专门给 Agent 用的入口。",[14,1671,1672],{},"这意味着未来的软件设计可能会自然地分化出两条通道：",[181,1674,1675,1681],{},[184,1676,1677,1680],{},[49,1678,1679],{},"人走前门","：GUI，图形界面，视觉交互——感知友好，体验优先",[184,1682,1683,1686],{},[49,1684,1685],{},"Agent 走快通道","：CLI \u002F API \u002F Scripts——效率优先，结构化调用",[14,1688,1689],{},"这不是二选一，而是双轨并行。就像一栋大楼，顾客走大堂电梯，货物走后勤通道。各走各的路，各有各的效率。",[18,1691,1693],{"id":1692},"核心不是形式而是思路的转变","核心不是形式，而是思路的转变",[14,1695,1696,1697],{},"CLI-Anything 的爆火，表面上是一个开源项目的成功。但更深层的信号是：",[49,1698,1699],{},"整个行业正在意识到，软件和 AI Agent 之间的交互方式需要被重新设计。",[11,1701,1702],{},[14,1703,1704],{},"别让 Agent 操作界面了，给它一个直达操作层的快通道。",[14,1706,1707],{},"这个趋势已经悄然发生。",[1034,1709,1710],{},"html pre.shiki code .sTDnQ, html code.shiki .sTDnQ{--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":316,"searchDepth":317,"depth":317,"links":1712},[1713,1714,1715,1716,1717],{"id":1482,"depth":320,"text":1483},{"id":1518,"depth":320,"text":1519},{"id":1559,"depth":320,"text":1560},{"id":1660,"depth":320,"text":1661},{"id":1692,"depth":320,"text":1693},"\u002Fa\u002Fagent-cli-vs-gui\u002Fcover.png","2026-03-24","CLI-Anything 爆火背后的思考：GUI 是给人设计的慢接口，Agent 需要的是直接触达操作层的快通道",[1722,1725,1728,1731],{"q":1723,"a":1724},"为什么不应该让 AI Agent 操作图形界面？","GUI 本质上是为人类视觉设计的'慢接口'，而当前 AI 在文本处理上的能力远强于图片理解。让 AI 看界面操作就像让一个盲人通过翻译看画一样低效，直接给它 CLI 命令或 API 接口才是高效路径。",{"q":1726,"a":1727},"CLI 化和 Scripts 方案分别适合什么场景？","CLI 化适合开源、版本稳定、操作模式固定的软件（如 FFmpeg、Blender），命令固化后长期可用。Scripts 方案适合迭代快、需求灵活的项目，Agent 可以自由组合脚本能力，像'食材库'一样灵活搭配，而非只能点固定菜单。",{"q":1729,"a":1730},"CLI-Anything 为什么能在 GitHub 上两周涨到两万 Stars？","因为它精准击中了一个行业共识：AI Agent 需要直达软件操作层的快通道。它把任何桌面软件变成命令行工具，让 Agent 用文本指令而非截图理解来操作软件。这背后的信号是——整个行业正在意识到软件和 AI Agent 之间的交互方式需要被重新设计。",{"q":1732,"a":1733},"未来软件设计会怎样适应 AI Agent？","软件会自然分化出两条通道：人走前门（GUI 图形界面，感知友好，体验优先），Agent 走快通道（CLI\u002FAPI\u002FScripts，效率优先，结构化调用）。就像一栋大楼，顾客走大堂电梯，货物走后勤通道——各走各的路，各有各的效率。",{},"\u002Farticles\u002Fagent-cli-vs-gui",{"title":1446,"description":1720},[1738,1739,1740,1741,1742,1434,1743],"AI Agent 交互","CLI-Anything","GUI vs CLI","Agent 操作软件","AI 自动化","软件设计趋势","articles\u002Fagent-cli-vs-gui",[360,361,1746],"产品思考","xJvuVoGgnu9mzPPrbB-Xd7-rDXRJIhOXklJQQvS1HtQ",{"id":1749,"title":1750,"body":1751,"cover":1775,"date":1929,"description":1930,"draft":329,"extension":330,"faq":1931,"featured":329,"meta":1944,"navigation":345,"path":1507,"readingTime":347,"seo":1945,"seoKeywords":1946,"stem":1954,"summary":1757,"tags":1955,"type":362,"updated":363,"video":363,"__hash__":1956},"articles\u002Farticles\u002Fagent-ui.md","给产品装了个 AI 入口，砍掉了一半待开发需求",{"type":8,"value":1752,"toc":1922},[1753,1758,1761,1764,1767,1770,1776,1780,1783,1789,1792,1798,1801,1807,1810,1813,1817,1820,1823,1828,1831,1834,1837,1842,1846,1849,1852,1855,1858,1864,1871,1875,1878,1881,1884,1890,1893,1899,1902,1906,1912,1915],[11,1754,1755],{},[14,1756,1757],{},"给产品加一个 AI 对话入口，高频需求做界面、长尾需求交给 AI。不是让 AI 替代产品界面，而是让两个入口各管各的，覆盖面反而更大。",[14,1759,1760],{},"上个月开需求评审会，我干了件让团队有点吃惊的事。",[14,1762,1763],{},"需求池里排着十几个待开发的功能，有的已经排了两轮都没排上。我扫了一遍，直接把其中将近一半划掉了。",[14,1765,1766],{},"开发同学愣了：\"这几个需求用户催了好久了，不做了？\"",[14,1768,1769],{},"我说：对，是不需要做成交互页面了。",[14,1771,1772],{},[55,1773],{"alt":1774,"src":1775},"封面图","\u002Fa\u002Fagent-ui\u002Fcover.png",[18,1777,1779],{"id":1778},"那些需求去哪了","那些需求去哪了？",[14,1781,1782],{},"你肯定有过这种经历：在 App 里想干一件事，翻遍菜单就是找不到入口，最后只能找客服，用大白话说一句需求，等人帮你操作。那个客服，其实就是\"人肉版的 AI 对话入口\"。",[14,1784,1785,1786],{},"我的场景也一样。我负责一个互联网产品，运营团队每天都在提各种非标需求：查某天某渠道的数据、分析两个活动的交叉效果、把几张表拼在一起找趋势。",[49,1787,1788],{},"每个都合理，每个都不通用。",[14,1790,1791],{},"这类需求太碎太个性化，不可能每个都做成页面。以前靠人，一来一回快的半天，慢的一周。",[14,1793,1794,1795],{},"后来我做了一件事：",[49,1796,1797],{},"给产品加了一个 AI 对话入口。",[14,1799,1800],{},"我写了一套 AI Agent Skill，把产品后端的 API 接口全部接进去，然后装到 AI agent 里。用户直接在对话框说需求，AI 自己判断调哪些接口、怎么组合、怎么加工，最后把结果直接给到用户。",[14,1802,1803],{},[55,1804],{"alt":1805,"src":1806},"前后端架构图","\u002Fa\u002Fagent-ui\u002Fstructure.png",[14,1808,1809],{},"比如运营想看\"上周新增用户中，同时参与了 A 和 B 活动的人，后续 7 天留存怎么样\"。这种需求产品界面上根本没入口，以前只能找分析师手动跑。现在对话框里说一句话，AI 自动拆解意图、组合接口、交叉处理，不到一分钟直接出结果。",[14,1811,1812],{},"那些被我划掉的需求就是这类。不是不重要，是换了一种方式被满足了。",[18,1814,1816],{"id":1815},"产品怎样长出第二个入口","产品怎样长出第二个入口？",[14,1818,1819],{},"这套东西跑了两个月，我主动让产品长出第二个入口。",[14,1821,1822],{},"以前只有产品界面：点按钮、填表单、看报表。现在在 Web 交互页面之外，多了一个对话框：说人话，AI 帮你搞定。",[14,1824,1825],{},[49,1826,1827],{},"一个产品，两个入口。一个靠界面，一个靠对话。",[14,1829,1830],{},"我在团队内部推了这个思路。现在每来一个新需求，我们都会先问自己一个问题：这个东西，是做成界面上的功能，还是集成到我那个 AI Skill 里？",[14,1832,1833],{},"怎么判断？其实不复杂。",[14,1835,1836],{},"登录、看数据看板、导出报表，这些需求形态固定，人人都用，做成产品界面效率最高。但临时数据查询、定制化分析、跨模块的复杂操作，每个人的需求都不太一样，做页面不划算，对话搞定反而快十倍。",[14,1838,1839],{},[49,1840,1841],{},"高频的活交给界面，长尾的活交给 AI。",[18,1843,1845],{"id":1844},"ai-这么强产品界面还有必要做吗","AI 这么强，产品界面还有必要做吗？",[14,1847,1848],{},"既然 AI 对话这么灵活，干脆全转成 AI 不就完了？产品界面是不是迟早被淘汰？",[14,1850,1851],{},"说实话，我最初也这么想。直到算了一笔账。",[14,1853,1854],{},"你每天看天气，是打开天气 App 扫一眼，还是每次都问 AI？大多数人选前者——打开就有，零成本。换成 AI，每问一次都要理解意图、调接口、组装数据、生成回答。一个人不算什么，一天几百万人这样问，token 成本烧起来很可怕。",[14,1856,1857],{},"道理放到产品里也一样。高频场景下，做一个页面的投入产出比，碾压每次都让 AI 跑一遍。",[14,1859,1860,1861],{},"产品界面不会被取代，原因就俩字：",[49,1862,1863],{},"便宜。",[11,1865,1866],{},[14,1867,1868],{},[49,1869,1870],{},"AI 不会杀死产品界面，成本会决定谁上场。",[18,1872,1874],{"id":1873},"只能对话的-ai-能替代产品界面吗","只能对话的 AI 能替代产品界面吗？",[14,1876,1877],{},"聊到这儿，可能有人会说：有交互界面的产品至少还有一个优势吧？图形化交互、可视化展示，AI 对话做不了这些吧？",[14,1879,1880],{},"一个月前我也这么觉得。",[14,1882,1883],{},"最近我有换房子的想法，顺手做了个看房分析的 Skill。首先在对话框中和它聊天，它先问我置换原因和具体需求，预算多少、通勤多远、学区有没有要求。然后根据这些条件自动筛选小区，直接在一个地图页面上把候选标出来，我就可以通过交互的方式来评估通勤时间、房价、学区评分等。",[14,1885,1886],{},[55,1887],{"alt":1888,"src":1889},"看房分析","\u002Fa\u002Fagent-ui\u002Flook_room.png",[14,1891,1892],{},"AI 一边和我聊天，一边操作页面。谁说 AI 对话只能吐文字？图表、地图、表单，该有的都能有。",[14,1894,1895,1896],{},"所以图形化交互根本不是产品界面的护城河。",[49,1897,1898],{},"真正的分界线，始终是使用频率和成本。",[14,1900,1901],{},"高频场景，投入人力做成固定界面，稳定便宜。长尾场景，AI Skill 灵活组合后端能力，不用排期不用开发。",[18,1903,1905],{"id":1904},"把产品深度-ai-化之后最大感受是什么","把产品深度 AI 化之后，最大感受是什么？",[14,1907,1908,1909],{},"最大的感受就一句话：",[49,1910,1911],{},"AI 不是来革产品的命的，是来帮产品减负的。",[14,1913,1914],{},"标准的高频的，继续做界面。非标的长尾的，交给 AI。两个入口各管各的，反而把产品的覆盖面撑大了。",[11,1916,1917],{},[14,1918,1919],{},[49,1920,1921],{},"能用一句话解决的需求，别用一个页面去承载。",{"title":316,"searchDepth":317,"depth":317,"links":1923},[1924,1925,1926,1927,1928],{"id":1778,"depth":320,"text":1779},{"id":1815,"depth":320,"text":1816},{"id":1844,"depth":320,"text":1845},{"id":1873,"depth":320,"text":1874},{"id":1904,"depth":320,"text":1905},"2026-03-19","AI 对话入口与传统产品界面的双入口模式：高频做界面，长尾交给 AI",[1932,1935,1938,1941],{"q":1933,"a":1934},"AI 对话入口会取代传统产品界面吗？","不会，原因是成本。高频场景下做一个页面的投入产出比远超每次让 AI 跑一遍。就像看天气你会打开 App 扫一眼而不是每次问 AI。产品界面不会被取代，成本会决定谁上场：高频的活交给界面，长尾的活交给 AI。",{"q":1936,"a":1937},"什么样的产品需求适合用 AI 对话入口来满足？","太碎太个性化、不值得做成独立页面的需求。比如临时数据查询、定制化分析、跨模块复杂操作——每个人的需求都不太一样，做页面不划算。AI 自己判断调哪些接口、怎么组合、怎么加工，对话搞定反而快十倍。",{"q":1939,"a":1940},"如何判断一个需求应该做成界面还是交给 AI？","看两个维度：使用频率和标准化程度。登录、看数据看板、导出报表这类高频且形态固定的需求，做界面效率最高。临时数据查询、定制化分析、跨模块复杂操作这类低频且每人不同的需求，交给 AI 对话更合适。高频做界面，长尾交 AI。",{"q":1942,"a":1943},"AI 对话入口只能输出文字吗？","不是。AI 对话同样可以操作图表、地图、表单等交互界面。比如作者做的看房分析 Skill，AI 一边聊天了解需求，一边在地图页面标出候选小区，用户通过交互评估通勤、房价、学区。图形化交互不是产品界面的护城河，真正的分界线是使用频率和成本。",{},{"title":1750,"description":1930},[1947,1948,1949,1950,1951,1952,1953],"AI 对话入口","产品 AI 化","AI Agent Skill","双入口设计","长尾需求","AI 产品设计","高频 vs 长尾","articles\u002Fagent-ui",[360,1746,361],"hsf9qKqBYQXiOHqi1FHIEfDtrtXJYE5N5zVwkfj6TK0",{"id":1958,"title":1959,"body":1960,"cover":2166,"date":2167,"description":2168,"draft":329,"extension":330,"faq":2169,"featured":329,"meta":2182,"navigation":345,"path":2183,"readingTime":347,"seo":2184,"seoKeywords":2185,"stem":2192,"summary":1966,"tags":2193,"type":362,"updated":363,"video":363,"__hash__":2194},"articles\u002Farticles\u002Fwhoami-v2.md","养虾专业户两周了，我发现一个没人提的问题",{"type":8,"value":1961,"toc":2159},[1962,1967,1970,1973,1976,1979,1982,1984,1988,1991,1994,1997,2000,2003,2008,2011,2014,2016,2020,2023,2026,2029,2032,2035,2040,2043,2046,2048,2052,2055,2058,2061,2064,2069,2072,2078,2081,2083,2086,2089,2092,2095,2111,2114,2117,2123,2126,2132,2135,2143,2145,2147,2150,2153,2156],[11,1963,1964],{},[14,1965,1966],{},"Agent 越养越多，但没一只认识你。每只 Agent 各写了一份'我认识的你'，版本之间完全没打通。让身份跟着人走，别锁在 Agent 肚子里。",[14,1968,1969],{},"朋友圈最近被养虾刷屏了。",[14,1971,1972],{},"有人晒自己的虾帮他写了一整套自动化脚本，有人的虾替他搞定了周报，还有人一口气养了 8 只，号称龙虾天团。",[14,1974,1975],{},"我也养了好几只。养着养着，发现一件怪事。我跟第一只虾聊了半天，它对我了如指掌。转头跟第二只虾开口，它一脸懵：",[14,1977,1978],{},"\"你好，你是做什么的？\"",[14,1980,1981],{},"兄弟，我们不是一家的吗？",[1023,1983],{},[18,1985,1987],{"id":1986},"为什么虾越养越多却没一只认识你","为什么虾越养越多，却没一只认识你？",[14,1989,1990],{},"这两周，\"养虾\"几乎刷屏。",[14,1992,1993],{},"那只红色龙虾的开源框架 GitHub 星标突破 25 万，直接干翻了前端最火的框架，历史第一。有人组织线下安装活动，从 9 岁小学生排到近 70 岁大爷，来了近千人。有创业者 14 天养出 8 只虾，组了个 Agent 团队，公众号日更，单篇推文阅读过百万。",[14,1995,1996],{},"大厂也坐不住了。国内外纷纷推出自己的龙虾平台，一个接一个冒。",[14,1998,1999],{},"门槛越来越低。很多人一不留神，手里已经五六只了。",[14,2001,2002],{},"可热闹归热闹，有个问题几乎没人提。",[14,2004,2005],{},[49,2006,2007],{},"你的虾，互相不认识你。",[14,2009,2010],{},"你调教了半天的那只虾，知道你写 Go、搞微服务、喜欢简洁命名。编辑器里那只，以为你是刚入门的新手。终端里那只？连你做什么工作都不知道。",[14,2012,2013],{},"虾越多，这种割裂越明显。",[1023,2015],{},[18,2017,2019],{"id":2018},"虾的记忆为什么是各记各的","虾的记忆为什么是「各记各的」？",[14,2021,2022],{},"有人可能会说：养虾平台不是有记忆功能吗？USER.md、MEMORY.md，它会把信息记下来的。",[14,2024,2025],{},"确实。它会在本地存一份 USER.md，记你的偏好、工作习惯、技术背景。聊天过程中的关键信息也写进 MEMORY.md，按日期归档。",[14,2027,2028],{},"挺贴心是吧？",[14,2030,2031],{},"但这些记忆全是本地的。存在这一只虾自己的项目文件夹里。",[14,2033,2034],{},"第二只虾读不到。第三只也读不到。换台电脑？照样读不到。",[14,2036,2037],{},[49,2038,2039],{},"每只虾各写了一份\"我认识的你\"，版本之间完全没打通。",[14,2041,2042],{},"就像你同时在三家医院看病，病历系统互不相通。每次挂号都要重讲一遍症状、过敏史、用药记录。医院越多，废话越多。",[14,2044,2045],{},"你以为瓶颈是虾的智商？不是。是记忆。每只虾对你的认知，是割裂的。",[1023,2047],{},[18,2049,2051],{"id":2050},"身份应该放在哪儿","身份应该放在哪儿？",[14,2053,2054],{},"那怎么办？给每只虾手动复制一份 USER.md？太蠢了。",[14,2056,2057],{},"你想想现实世界。你走进常去的咖啡店，店员一看见你就开始做冰美式。为什么？不是这家店存了一份\"关于你\"的档案，是因为\"你\"就是你。你的脸，你的声音，你的习惯，走到哪带到哪。",[14,2059,2060],{},"虾的世界不是这样。\"你\"不存在。每只虾脑子里各有一个它自己编出来的\"你\"。",[14,2062,2063],{},"所以我换了个思路。",[14,2065,2066],{},[49,2067,2068],{},"别让虾记住你，让\"你\"独立存在。",[14,2070,2071],{},"我做了个东西，把你的身份信息放在一个独立的地方。不管哪只虾，干活之前都先去那里瞄一眼：这人是谁、擅长什么、有什么偏好。",[14,2073,2074],{},[55,2075],{"alt":2076,"src":2077},"使用场景","\u002Fa\u002Fwhoami-v2\u002Fdemo.png",[14,2079,2080],{},"不是虾记住了你，是你让虾\"看见\"了你。记忆会丢，但你的档案一直在。",[1023,2082],{},[18,2084,2085],{"id":2085},"给你的虾装双眼睛",[14,2087,2088],{},"上周拿这东西给一个朋友看。他养了 5 只虾，天天在群里吐槽\"又要跟虾重新解释一遍需求\"。",[14,2090,2091],{},"他翻白眼：\"又要折腾？\"",[14,2093,2094],{},"我说你就跟虾说一句话就行。然后把这段甩给了他：",[11,2096,2097],{},[14,2098,2099,2100,2103,2104,2110],{},"运行 ",[79,2101,2102],{},"npx skills add MorvanZhou\u002Fwhoami -g --yes","，安装完毕后打开 ",[279,2105,2109],{"href":2106,"rel":2107,"target":2108},"https:\u002F\u002Fwhoamiagent.com\u002Flogin?redirect=dashboard",[283],"_blank","whoamiagent.com"," 进行配置",[14,2112,2113],{},"两分钟后他截了张图。他另一只虾开了个新对话，开口直接根据他的技术背景给方案，没问\"你是做什么的\"。",[14,2115,2116],{},"三个字：有点东西。",[14,2118,2119],{},[55,2120],{"alt":2121,"src":2122},"产品首页和使用流程","\u002Fa\u002Fwhoami-v2\u002Fhomepage.jpeg",[14,2124,2125],{},"控制台里你能看到连上了哪些虾、谁在线、上次什么时候用过。",[14,2127,2128],{},[55,2129],{"alt":2130,"src":2131},"Dashboard 管理界面","\u002Fa\u002Fwhoami-v2\u002Fdashboard.png",[14,2133,2134],{},"说句实话，目前有局限。只有支持 Agent Skill 机制的工具能接入，不是所有虾都吃这一套。好在主流的几个养虾平台和 AI 编程工具已经能用了。",[14,2136,2137,2138],{},"代码开源，GitHub 上随便翻: ",[279,2139,2142],{"href":2140,"rel":2141,"target":2108},"https:\u002F\u002Fgithub.com\u002Fmorvanzhou\u002Fwhoami",[283],"github.com\u002Fmorvanzhou\u002Fwhoami",[1023,2144],{},[18,2146,1401],{"id":1401},[14,2148,2149],{},"最近大家都在比谁的虾聪明、谁的虾干活快。",[14,2151,2152],{},"我养了两周，倒是觉得聪不聪明是其次。虾认不认识你，才是正经事。",[14,2154,2155],{},"同一个需求，丢给认识你的虾和不认识你的虾，出来的东西差了不止一档。",[14,2157,2158],{},"养虾这事，也许别急着教虾做事，先让虾认人。",{"title":316,"searchDepth":317,"depth":317,"links":2160},[2161,2162,2163,2164,2165],{"id":1986,"depth":320,"text":1987},{"id":2018,"depth":320,"text":2019},{"id":2050,"depth":320,"text":2051},{"id":2085,"depth":320,"text":2085},{"id":1401,"depth":320,"text":1401},"\u002Fa\u002Fwhoami-v2\u002Fcover.png","2026-03-12","虾越养越多，但没一只认识你。身份应该跟着人走，不是锁在虾肚子里",[2170,2173,2176,2179],{"q":2171,"a":2172},"为什么多个 AI Agent 的记忆是割裂的？","因为每个 Agent 的记忆（如 USER.md、MEMORY.md）都存在各自的本地项目文件夹里。第二个 Agent 读不到第一个的记忆，换台电脑也读不到。就像多家医院的病历系统互不相通，每次都要重讲一遍。",{"q":2174,"a":2175},"whoami 如何让所有 Agent 都'认识'你？","whoami 把你的身份信息放在一个独立的中心化位置，任何 Agent 干活前都先去读取你的档案。安装只需一行命令 npx skills add MorvanZhou\u002Fwhoami -g --yes，然后在 whoamiagent.com 配置你的信息。支持主流 AI 编程工具，代码完全开源。",{"q":2177,"a":2178},"Agent 的本地记忆（USER.md）和 whoami 有什么区别？","本地记忆存在每个 Agent 自己的项目文件夹里，换一个 Agent 或换台电脑就失效。whoami 是中心化的身份档案，独立于任何 Agent 存在。就像你的身份证走到哪带到哪，而不是每家店各记一份你的信息。记忆会丢，但身份档案一直在。",{"q":2180,"a":2181},"whoami 目前有什么局限性？","目前只有支持 Agent Skill 机制的工具能接入，不是所有 Agent 都支持。好在主流的几个 AI 编程工具已经能用了。另外 whoami 需要在 whoamiagent.com 上配置个人信息，控制台可以查看哪些 Agent 连上了、谁在线、上次什么时候用过。代码完全开源在 GitHub 上。",{},"\u002Farticles\u002Fwhoami-v2",{"title":1959,"description":2168},[2186,2187,2188,2189,2190,1434,2191],"AI Agent 身份同步","Agent 记忆割裂","whoami","AI 个性化","多 Agent 管理","开源工具","articles\u002Fwhoami-v2",[361,1746,1078],"WTqnvIzp6AAcuv_eVS41gocfIkQCAaIK5NlMopTC6O4",{"id":2196,"title":2197,"body":2198,"cover":2501,"date":2502,"description":2503,"draft":329,"extension":330,"faq":2504,"featured":329,"meta":2517,"navigation":345,"path":2518,"readingTime":2519,"seo":2520,"seoKeywords":2521,"stem":2528,"summary":2204,"tags":2529,"type":362,"updated":363,"video":363,"__hash__":2530},"articles\u002Farticles\u002Fworkbuddy-ai-trend.md","工具类 APP 已死？AI Agent 正在改变一切",{"type":8,"value":2199,"toc":2494},[2200,2205,2209,2215,2218,2224,2230,2233,2238,2245,2248,2250,2254,2257,2264,2267,2272,2275,2278,2283,2286,2289,2291,2295,2298,2303,2306,2313,2316,2321,2324,2330,2333,2336,2339,2346,2353,2359,2361,2365,2368,2373,2376,2382,2385,2388,2393,2396,2403,2409,2416,2422,2425,2428,2430,2434,2437,2443,2449,2455,2462,2465,2468,2473,2476,2481,2484,2486,2491],[11,2201,2202],{},[14,2203,2204],{},"AI 不再只是聊天机器人，它正在变成每个人的私人程序员。当 AI 掌握了'代码'这个万能工具制造器，标准化 APP 正在被个性化 AI 定制取代。",[18,2206,2208],{"id":2207},"你的-ai刚刚长出了手和脚","你的 AI，刚刚长出了手和脚",[14,2210,2211,2212],{},"就在过去两个月，",[49,2213,2214],{},"多个 AI Agent 产品几乎同时涌向了同一个方向。",[14,2216,2217],{},"这件事，不是\"做一个更好的聊天机器人\"。",[14,2219,2220,2221],{},"而是：",[49,2222,2223],{},"把原本只给程序员用的 AI Agent 能力，交给所有人。",[14,2225,2226],{},[55,2227],{"alt":2228,"src":2229},"多个产品同时下场","\u002Fa\u002Fworkbuddy-ai-trend\u002Ffour-products.png",[14,2231,2232],{},"如果你还觉得这只是\"AI 帮你写个 PPT\"这种小事，那你大概率低估了正在发生的事情。",[14,2234,2235],{},[49,2236,2237],{},"我今天想说的结论很简单，但可能会改变你对 AI 的理解：",[11,2239,2240],{},[14,2241,2242],{},[49,2243,2244],{},"AI 不再是一个回答问题的聊天机器人。它正在变成你的私人程序员，因为它不是帮你用工具，而是帮你造工具。",[14,2246,2247],{},"这意味着什么？我们一层一层说。",[1023,2249],{},[18,2251,2253],{"id":2252},"第一层从会说到会做意味着什么","第一层：从「会说」到「会做」意味着什么？",[14,2255,2256],{},"先说大家都能看到的变化。",[14,2258,2259,2260,2263],{},"过去两年，我们用 AI 最多的方式是",[49,2261,2262],{},"聊天","。你问它一个问题，它给你一段文字。本质上，它是一本会说话的百科全书。",[14,2265,2266],{},"但你有没有注意到，这些 AI 工具最近都在做同一个转变：",[14,2268,2269],{},[49,2270,2271],{},"它们开始\"动手\"了。",[14,2273,2274],{},"AI Agent 产品可以直接操作你电脑上的文件——读取 Excel、生成 PPT、批量重命名、自动分析数据。你说一句\"帮我把这堆销售数据做个分析报告\"，它自己打开文件、清洗数据、生成图表、输出 PDF。",[14,2276,2277],{},"还有开源界的 AI Agent 项目——它更野。能直接接管你的电脑，打开软件、处理表格、收发邮件、操作网页。",[14,2279,2280],{},[49,2281,2282],{},"从\"我告诉你答案\"到\"我替你把活儿干了\"。这是第一层变化。",[14,2284,2285],{},"大多数人看到这里就停了。他们觉得：哦，AI 能帮忙干活了，效率工具嘛。",[14,2287,2288],{},"但这远远不是故事的全部。",[1023,2290],{},[18,2292,2294],{"id":2293},"第二层为什么代码是-ai-拿到的最关键能力","第二层：为什么「代码」是 AI 拿到的最关键能力？",[14,2296,2297],{},"真正的分水岭，不是 AI 学会了用 Excel、用 PPT。",[14,2299,2300],{},[49,2301,2302],{},"而是 AI 学会了写代码。",[14,2304,2305],{},"想一想：代码是什么？",[14,2307,2308,2309,2312],{},"代码是人类发明的",[49,2310,2311],{},"万能工具制造器","。你用代码可以做任何基于计算机能做的事——写一个网站、做一个数据分析脚本、创建一个自动化流程、甚至开发一个全新的软件。",[14,2314,2315],{},"以前，这个能力只属于程序员。普通人想要一个工具，得找程序员开发，或者去应用商店找一个\"差不多\"的 APP。",[14,2317,2318],{},[49,2319,2320],{},"现在不一样了。",[14,2322,2323],{},"这些 AI Agent 产品的底层逻辑是一样的：从一开始就把\"写代码执行任务\"作为核心能力。",[14,2325,2326,2327,130],{},"它们不是简单地\"调用现成功能\"，而是",[49,2328,2329],{},"真的在你的电脑上写代码、运行代码来解决问题",[14,2331,2332],{},"举个例子：",[14,2334,2335],{},"你说：\"帮我把这 200 张发票照片里的金额提取出来，按月汇总成表格。\"",[14,2337,2338],{},"传统 AI 会回答你：\"你可以用 OCR 工具识别图片，然后用 Excel 汇总……\"——给你一堆建议，但什么都没做。",[14,2340,2341,2342,2345],{},"现在的 AI Agent 会怎么做？它会",[49,2343,2344],{},"写一段 Python 脚本","，调用 OCR 库识别每张图片，提取金额和日期，自动归类，生成一张漂亮的 Excel 表格，直接放在你桌面上。",[11,2347,2348],{},[14,2349,2350],{},[49,2351,2352],{},"它不是在\"用\"工具，它是在\"造\"工具。这才是真正的分水岭。",[14,2354,2355,2356,130],{},"而且——如果市面上没有现成的工具能解决你的问题，它甚至会",[49,2357,2358],{},"自己发明一个",[1023,2360],{},[18,2362,2364],{"id":2363},"第三层工具类-app-真的要死了吗","第三层：工具类 APP 真的要死了吗？",[14,2366,2367],{},"我知道这句话听起来很极端。但请跟我想一想这个逻辑：",[14,2369,2370],{},[49,2371,2372],{},"一个 APP 是怎么诞生的？",[14,2374,2375],{},"有人发现了一群人的共同需求，然后开发了一个标准化的解决方案。日历 APP 解决了\"时间管理\"，记账 APP 解决了\"财务管理\"，PPT 工具解决了\"演示文稿\"。",[14,2377,2378,2379],{},"关键词是：",[49,2380,2381],{},"一群人的共性需求，一个标准化方案。",[14,2383,2384],{},"但你我都知道——每个人的需求都是不一样的。",[14,2386,2387],{},"记账 APP 的分类不符合你的习惯？忍着。项目管理工具的流程和你团队的不匹配？凑合。数据分析工具导出的图表不是你想要的格式？自己改。",[14,2389,2390],{},[49,2391,2392],{},"APP 给你的从来不是\"最适合你的工具\"，而是\"最适合大多数人的工具\"。",[14,2394,2395],{},"现在，AI + 代码能力，彻底改变了这个逻辑。",[14,2397,2398,2399,2402],{},"你不再需要去应用商店里大海捞针。你只需要告诉你的 AI：\"我需要一个工具，能做 XXX\"——它会根据",[49,2400,2401],{},"你的","需求，现场为你写一个。",[14,2404,2405,2406,130],{},"不是从模板库里挑一个，不是配置一下参数，而是",[49,2407,2408],{},"从零开始，为你一个人定制",[11,2410,2411],{},[14,2412,2413],{},[49,2414,2415],{},"APP 找的是一群人的共性，AI 找的是你一个人的个性。",[14,2417,2418,2419,130],{},"这就是为什么有人说\"工具类 APP 已死\"——不是 APP 做得不好，而是",[49,2420,2421],{},"个性化定制的成本被 AI 打到了接近于零",[14,2423,2424],{},"以前你想要一个完全符合自己需求的工具，得花几万块请人开发。",[14,2426,2427],{},"现在你只需要说一句话。",[1023,2429],{},[18,2431,2433],{"id":2432},"真正在发生的事每个人都将拥有一个私人程序员","真正在发生的事：每个人都将拥有一个\"私人程序员\"",[14,2435,2436],{},"让我把今天的观点串起来——",[14,2438,2439,2442],{},[49,2440,2441],{},"第一层","：AI 从\"会聊天\"进化到了\"会干活\"。它能直接操作你的文件、执行任务、交付结果。",[14,2444,2445,2448],{},[49,2446,2447],{},"第二层","：AI 掌握了\"代码\"这个万能工具制造器。它不只是在用现成工具，它能自己写代码创造新工具来解决你的问题。",[14,2450,2451,2454],{},[49,2452,2453],{},"第三层","：这意味着标准化的工具类 APP 正在被个性化的 AI 定制方案取代。你不再需要适应工具，而是工具来适应你。",[11,2456,2457],{},[14,2458,2459],{},[49,2460,2461],{},"以前的 AI 是百科全书，现在是你的私人程序员。",[14,2463,2464],{},"而且这个\"程序员\"正在以惊人的速度变强。今天它还只是帮你处理文件、做数据分析。明天呢？",[14,2466,2467],{},"它能帮你操控浏览器下单、管理你的邮箱、接入你公司的内部系统、甚至帮你跑通一个完整的业务流程。",[14,2469,2470],{},[49,2471,2472],{},"只要是基于 CPU 能算出来的事，它终将都能做。而且可能做得比你还好。",[14,2474,2475],{},"这个未来很简单：",[14,2477,2478],{},[49,2479,2480],{},"人人都将拥有一个不知疲倦的、不需要发工资的、7×24 小时待命的私人程序员。",[14,2482,2483],{},"它搜集信息、制定方案、创造工具、执行任务、交付结果。你只需要告诉它：我想要什么。",[1023,2485],{},[14,2487,2488],{},[49,2489,2490],{},"如果你还把 AI 当成一个\"聊天机器人\"或者\"效率工具\"，你可能正在错过这个时代最大的变化。",[14,2492,2493],{},"它不是工具，它是造工具的人。",{"title":316,"searchDepth":317,"depth":317,"links":2495},[2496,2497,2498,2499,2500],{"id":2207,"depth":320,"text":2208},{"id":2252,"depth":320,"text":2253},{"id":2293,"depth":320,"text":2294},{"id":2363,"depth":320,"text":2364},{"id":2432,"depth":320,"text":2433},"\u002Fa\u002Fworkbuddy-ai-trend\u002Fcover.png","2026-03-09","从「会说」到「会做」，AI 拿到代码能力后变成私人程序员，工具类 APP 正在被个性化定制取代",[2505,2508,2511,2514],{"q":2506,"a":2507},"为什么说工具类 APP 可能会消亡？","APP 本质是'用一个标准化方案解决一群人的共性需求'，但每个人的需求都不一样。当 AI 能写代码、从零为你定制工具时，个性化定制成本被打到接近于零。你不再需要适应工具，而是工具来适应你。",{"q":2509,"a":2510},"AI Agent 从'会说'到'会做'意味着什么？","意味着三层进化：第一层，AI 能直接操作文件、执行任务、交付结果；第二层，AI 掌握了代码这个'万能工具制造器'，能自己发明工具解决问题；第三层，每个人都将拥有一个不知疲倦的私人程序员，它不是在'用'工具，而是在'造'工具。",{"q":2512,"a":2513},"为什么说代码是 AI 掌握的最关键能力？","代码是人类发明的万能工具制造器——用它可以做任何基于计算机能做的事。以前这个能力只属于程序员，普通人只能去应用商店找'差不多'的 APP 凑合。现在 AI 能写代码意味着它不是在用现成工具，而是能根据你的个性化需求从零创造工具，这才是真正的分水岭。",{"q":2515,"a":2516},"如果 AI 能造工具，普通人还需要学编程吗？","编程的具体技术可能变得没那么必要，但编程背后的思维——问题拆解、逻辑推理、系统设计——反而更重要了。你需要能够准确描述需求、判断 AI 输出的质量、理解技术方案的可行性。核心从'亲手写代码'转变为'会指挥 AI 造工具'。",{},"\u002Farticles\u002Fworkbuddy-ai-trend",12,{"title":2197,"description":2503},[2522,2523,2524,2525,2526,1742,2527],"AI Agent 趋势","工具类 APP","AI 写代码","个性化定制","私人程序员","软件行业变革","articles\u002Fworkbuddy-ai-trend",[360,1746],"T944fXK_ATx3kx8muJOXDaFWj-GyA2az4V3kKsgsfog",{"id":2532,"title":2533,"body":2534,"cover":2838,"date":2839,"description":2840,"draft":329,"extension":330,"faq":2841,"featured":329,"meta":2854,"navigation":345,"path":2855,"readingTime":591,"seo":2856,"seoKeywords":2857,"stem":2864,"summary":2540,"tags":2865,"type":362,"updated":363,"video":363,"__hash__":2867},"articles\u002Farticles\u002Fai-kids-education.md","AI 时代，别再把孩子培养成「标准答案」了",{"type":8,"value":2535,"toc":2826},[2536,2541,2544,2547,2550,2553,2556,2561,2565,2568,2571,2574,2579,2585,2591,2597,2600,2603,2606,2612,2616,2619,2624,2631,2634,2639,2642,2648,2652,2655,2658,2662,2667,2673,2676,2682,2686,2689,2695,2698,2704,2710,2714,2717,2723,2726,2733,2739,2746,2750,2753,2760,2766,2772,2775,2780,2783,2786,2789,2792,2797,2800,2814,2817,2823],[11,2537,2538],{},[14,2539,2540],{},"AI 已经能批量生产'3年工作经验'水平的能力。在 AI 时代，培养孩子的创造力、好奇心和跨领域思维，远比追求标准答案更重要。",[18,2542,2543],{"id":2543},"一场关于培训班的餐桌辩论",[14,2545,2546],{},"昨天吃饭，我和老婆聊到孩子要不要报培训班。",[14,2548,2549],{},"她说：\"公立小学本来就不是为了好玩设定的，拼音、写字、英语，这些都只是为了让他不在第一个关卡就掉队。\"",[14,2551,2552],{},"我说：\"如果他有兴趣就行。但如果因为这些，让孩子觉得学习只是为了完成别人的任务与期待，觉得学习不好玩了。这会严重影响孩子的长期发展。\"",[14,2554,2555],{},"但让我真正焦虑的，不是\"报不报班\"这个问题本身。而是我作为一个每天和 AI 打交道的从业者，越来越清楚地看到一件事：",[14,2557,2558],{},[49,2559,2560],{},"我们正在用旧地图，给孩子规划一条可能已经不存在的路。",[18,2562,2564],{"id":2563},"_3-年工作经验为什么正被-ai-批量生产","「3 年工作经验」为什么正被 AI 批量生产？",[14,2566,2567],{},"先说一个正在发生的事实。",[14,2569,2570],{},"还记得前几年的招聘 JD 上最常见的一句话吗？\"至少 3 年相关工作经验。\"刚毕业的大学生最无奈的就是这句话——我连工作都没有，哪来的 3 年经验？",[14,2572,2573],{},"但现在，一个更严峻的问题来了。",[14,2575,2576],{},[49,2577,2578],{},"\"3 年经验\"甚至\"10 年经验\"，AI 已经具备了。",[14,2580,2581,2582],{},"这不是科幻，这是正在发生的现实。现在各行各业都在做一件事：把员工积累的工作经验提炼成 AI 可以执行的\"技能包\"（业内叫 Agent Skills）。简单说，",[49,2583,2584],{},"就是所有人都在把自己沉淀多年的工作经验\"喂\"给 AI，让 AI 能按照这个经验，完成原本只能由人完成的任务。",[14,2586,2587],{},[55,2588],{"alt":2589,"src":2590},"配图1","\u002Fa\u002Fai-kids-education\u002Fimage1.png",[14,2592,2593,2594],{},"更要命的是：",[49,2595,2596],{},"即便你不分享，也有更多更优秀的经验正在被公开分享。",[14,2598,2599],{},"写方案、做数据分析、写代码、做设计、翻译、客服应答、财务审核……一个个具体的工作技能，正在被\"skill 化\"地装进 AI 的工具箱里。",[14,2601,2602],{},"这意味着什么？",[14,2604,2605],{},"意味着以前我们常说的\"经验壁垒\"，正在被 AI 推平。你花 10 年积累的技能经验，AI 可能只需要读完几百个同行的 skill 就能具备。",[14,2607,2608,2609],{},"那问题来了：",[49,2610,2611],{},"如果 AI 占据了\"有经验\"这个位置，还有什么坑位是留给年轻人的？",[18,2613,2615],{"id":2614},"为什么越标准优秀越容易被替代","为什么越「标准优秀」越容易被替代？",[14,2617,2618],{},"这就引出了一个让我细思极恐的问题",[14,2620,2621],{},[49,2622,2623],{},"传统教育努力培养的那个\"品学兼优\"的好学生，恰恰是 AI 最容易替代的人。",[14,2625,2626,2627,2630],{},"想想看，AI 的训练目标是什么？是",[49,2628,2629],{},"泛化能力","。它用海量数据学习，目的就是做到\"通用\"：什么都会一点，什么都能做到中上水平。",[14,2632,2633],{},"而我们的教育体系也在培养同一种人：考试高分、门门均衡、标准答案、规范执行。",[14,2635,2636],{},[49,2637,2638],{},"当 AI 的\"通用\"和教育培养出的\"通用\"高度重合时，这条赛道就挤不下了。",[14,2640,2641],{},"以中高考为筛选机制的教育体系，曾经是一条有效的上升通道。但在 AI 磨平了通用知识和技能的信息差之后，这条通道的终点，可能不再通向我们以为的那个出口。",[14,2643,2644,2645],{},"这不是说学习不重要。",[49,2646,2647],{},"恰恰相反，学习比任何时代都重要。但\"学什么\"和\"怎么学\"，需要被重新思考。",[18,2649,2651],{"id":2650},"ai-时代还有哪些能力是替代不了的","AI 时代还有哪些能力是替代不了的？",[14,2653,2654],{},"作为一个每天和 AI 共处的父亲，我没有标准答案。但我有一些来自浪潮内部的观察和判断。",[14,2656,2657],{},"我认为在 AI 时代，有四种能力，是值得我们花大力气去保护和培养的。",[496,2659,2661],{"id":2660},"_1-自驱力内心的发动机","1. 自驱力：内心的发动机",[11,2663,2664],{},[14,2665,2666],{},"学习为了让别人觉得我成绩好？学习是为了完成别人的任务？这些体感一旦形成，自驱力就死了。",[14,2668,2669,2670],{},"AI 可以帮你执行任务，但 AI 没有\"想要\"。",[49,2671,2672],{},"\"想要\"这件事，是人类独有的发动机。",[14,2674,2675],{},"一个孩子对自己感兴趣的问题，能不能主动去研究、去推动、去执行？这种力量不来自培训班的课程表，而来自他内心深处那个还没被熄灭的火苗。",[14,2677,2678,2679],{},"自驱力决定了一个人能不能推动自己想要达成的事情。在 AI 时代，这是最稀缺的能力。因为 AI 什么都能做，但它不知道该做什么。",[49,2680,2681],{},"\"该做什么\"这个判断，永远属于人。",[496,2683,2685],{"id":2684},"_2-好奇心永不枯竭的燃料","2. 好奇心：永不枯竭的燃料",[14,2687,2688],{},"自驱力是发动机，好奇心就是燃料。",[14,2690,2691,2692],{},"一个孩子觉得很多东西都有趣，想去摸、想去看、想去问\"为什么\"。这不是在浪费时间，这是在积累 AI 无法模拟的东西：",[49,2693,2694],{},"对世界的原生兴趣。",[14,2696,2697],{},"但好奇心是极其脆弱的。一个只给家长\"交作业\"的培训机构，一种\"别问为什么，记住就行\"的教学方式，就足以杀死它。",[14,2699,2700,2703],{},[49,2701,2702],{},"报班可以报，但要找那些会保护孩子原创力、好奇心、想象力的老师。"," 有些机构陪孩子完成了一个\"家长会觉得好看\"的作品。这些机构交付的是家长的安心，牺牲的是孩子的火花。",[14,2705,2706],{},[55,2707],{"alt":2708,"src":2709},"配图2","\u002Fa\u002Fai-kids-education\u002Fimage2.png",[496,2711,2713],{"id":2712},"_3-真实世界的反馈闭环让孩子去淋雨","3. 真实世界的反馈闭环：让孩子去\"淋雨\"",[14,2715,2716],{},"老一辈总说，孩子要在保护伞下长大。",[14,2718,2719,2720],{},"但我现在越来越觉得，",[49,2721,2722],{},"孩子需要的不是保护伞，而是一条干毛巾。",[14,2724,2725],{},"什么意思？你就让他去淋雨。说不定他会因为发现雨天和晴天的不同，而享受淋雨的过程。让他去碰壁、去尝试、去接触真实世界，并在这个过程中获得真实世界的反馈。",[14,2727,2728,2729,2732],{},"这其实和 AI 领域中的\"强化学习\"异曲同工：机器人在与环境的持续交互中，通过不断的 ",[49,2730,2731],{},"行动 → 反馈 → 调整"," ，逐渐拼凑出对世界的理解。没有人告诉它标准答案，它在试错中自己长出了智慧。",[14,2734,2735,2738],{},[49,2736,2737],{},"孩子也一样。"," 他不需要被告知\"世界是这样的\"。他需要自己去触碰世界，然后形成属于他自己的、独一无二的理解。",[14,2740,2741,2742,2745],{},"而我们家长要做的，不是替他挡住所有风雨，而是",[49,2743,2744],{},"在他淋完雨之后，递上那条干毛巾","，给他兜底的安全感，而不是替他做决定的控制感。",[496,2747,2749],{"id":2748},"_4-成为少数派ai-永远复制不了你的人生","4. 成为少数派：AI 永远复制不了你的人生",[14,2751,2752],{},"这是我认为最重要的一点。",[14,2754,2755,2756,2759],{},"AI 训练的数据是什么？是",[49,2757,2758],{},"大数据","。是多数人的行为、多数人的经验、多数人的思维方式。AI 的训练目标就是泛化——尽可能覆盖大多数情况。",[14,2761,2762,2763],{},"这意味着，",[49,2764,2765],{},"AI 天然代表\"多数派\"。",[14,2767,2768,2769],{},"那么，什么是 AI 做不到的？——",[49,2770,2771],{},"少数派。",[14,2773,2774],{},"一个有着独特成长经历、独特思维方式、独特人生理解的人，AI 的数据里没有他，AI 的模型里也无法生成他。",[14,2776,2777],{},[49,2778,2779],{},"你的孩子不需要成为最优秀的那个，但他需要成为最独特的那个。",[14,2781,2782],{},"想法特别、经历特别、视角特别——这些才是 AI 永远无法从训练数据中学到的东西。因为 AI 能学到的，是所有人共享的部分。而那些只属于你的部分，永远是你的护城河。",[18,2784,2785],{"id":2785},"我将成为孩子淋雨后的干毛巾",[14,2787,2788],{},"说实话，写下这些文字的时候，我依然焦虑。",[14,2790,2791],{},"我不确定自己占据的这个工作\"坑位\"，在 AI 面前还有多少独特价值。我也无法预判，十年后我的孩子面对的世界会变成什么样。",[14,2793,2794],{},[49,2795,2796],{},"但有一件事我越来越确定：",[14,2798,2799],{},"在 AI 可以帮你写代码、做报告、出方案、甚至替你\"有经验\"的时代下：",[14,2801,2802,2805,2808,2811],{},[49,2803,2804],{},"能驱动自己去做事的人，比会做事的人值钱。",[49,2806,2807],{},"对世界好奇的人，比什么都知道的人稀缺。",[49,2809,2810],{},"敢于在真实世界里碰壁的人，比只在教室里拿高分的人强韧。",[49,2812,2813],{},"独一无二的人，比品学兼优的人更难被替代。",[14,2815,2816],{},"我没法给孩子一张通往未来的地图，因为这张地图可能还没被画出来。",[14,2818,2819,2820],{},"但我能做的是——",[49,2821,2822],{},"不熄灭他的火苗，不剪掉他的翅膀，不替他挡住所有的风雨。",[14,2824,2825],{},"然后在他需要的时候，递上一条干毛巾。",{"title":316,"searchDepth":317,"depth":317,"links":2827},[2828,2829,2830,2831,2837],{"id":2543,"depth":320,"text":2543},{"id":2563,"depth":320,"text":2564},{"id":2614,"depth":320,"text":2615},{"id":2650,"depth":320,"text":2651,"children":2832},[2833,2834,2835,2836],{"id":2660,"depth":317,"text":2661},{"id":2684,"depth":317,"text":2685},{"id":2712,"depth":317,"text":2713},{"id":2748,"depth":317,"text":2749},{"id":2785,"depth":320,"text":2785},"\u002Fa\u002Fai-kids-education\u002Fcover.png","2026-03-06","一个 AI 从业者的育儿反思：当 AI 具备了 10 年工作经验，我们的孩子该培养什么能力？",[2842,2845,2848,2851],{"q":2843,"a":2844},"AI 时代应该培养孩子什么能力？","应该重点培养三种能力：1）好奇心和提问能力——会问好问题比会背答案更重要；2）创造力——AI 擅长执行，但创造性的想法需要人来产生；3）跨领域连接——能在不同学科之间建立联系的能力是 AI 难以替代的。",{"q":2846,"a":2847},"AI 会让传统教育方式失效吗？","传统以记忆和考试为主的教育方式确实面临挑战。当 AI 可以在几秒内获取和整理任何领域的知识时，'记住更多信息'不再是核心竞争力。教育需要从'灌输知识'转向'培养思维'。",{"q":2849,"a":2850},"家长应该让孩子从小学编程或 AI 吗？","工具会变，思维不会。与其让孩子学某种具体编程语言，不如培养他们的逻辑思维和问题拆解能力。让孩子理解'如何把一个大问题拆成小步骤'，比记住代码语法重要得多。AI 工具本身也在快速迭代，今天学的工具明天可能就过时了。",{"q":2852,"a":2853},"AI 从业者是怎么看待自己孩子教育的？","作为每天和 AI 打交道的从业者，最大的焦虑不是孩子学不学 AI，而是我们正在用旧地图给孩子规划可能已经不存在的路。当 AI 具备了 3-10 年工作经验的能力，孩子未来的竞争力在于那些 AI 做不好的事：提出好问题、产生创造性想法、在不同领域之间建立联系。",{},"\u002Farticles\u002Fai-kids-education",{"title":2533,"description":2840},[2858,2859,2860,2861,2862,2863],"AI 时代教育","儿童教育","人工智能育儿","创造力培养","AI 对教育的影响","未来教育","articles\u002Fai-kids-education",[2866,361,1268],"AI 教育","WOqkPRlbtCaAoAQUw5dz9REweI2Tu7sqpWqSPvf8lGU",{"id":2869,"title":2870,"body":2871,"cover":2971,"date":3043,"description":3044,"draft":329,"extension":330,"faq":3045,"featured":329,"meta":3058,"navigation":345,"path":3059,"readingTime":347,"seo":3060,"seoKeywords":3061,"stem":3066,"summary":2877,"tags":3067,"type":362,"updated":363,"video":363,"__hash__":3068},"articles\u002Farticles\u002Fwhoami-skill.md","AI Agent 的记忆是割裂的，我做了个东西来解决",{"type":8,"value":2872,"toc":3036},[2873,2878,2881,2884,2887,2889,2891,2893,2897,2900,2902,2907,2910,2913,2915,2919,2922,2925,2927,2930,2933,2938,2940,2943,2945,2949,2952,2954,2957,2959,2964,2967,2972,2975,2977,2981,2984,2986,2989,2999,3002,3004,3009,3012,3015,3020,3022,3024,3027,3030,3033],[11,2874,2875],{},[14,2876,2877],{},"多个 AI Agent 互不认识你？问题不在智商，在记忆割裂。whoami 让你的身份独立存在，任何 Agent 干活前先'看见'你，而不是各记各的。",[14,2879,2880],{},"最近 AI Agent 非常火。",[14,2882,2883],{},"有人让自己的 Agent 写了一整套自动化脚本，有人的 Agent 替他搞定了周报，还有人一口气配置了好几个，号称 Agent 天团。",[14,2885,2886],{},"我也用了好几个。用着用着，发现一件怪事。我跟第一个 Agent 聊了半天，它对我了如指掌。转头跟第二个 Agent 开口，它一脸懵：",[14,2888,1978],{},[14,2890,1981],{},[1023,2892],{},[18,2894,2896],{"id":2895},"为什么-agent-越用越多却没一个认识你","为什么 Agent 越用越多，却没一个认识你？",[14,2898,2899],{},"门槛越来越低。很多人一不留神，手里已经五六个 Agent 了。",[14,2901,2002],{},[14,2903,2904],{},[49,2905,2906],{},"你的 Agent，互相不认识你。",[14,2908,2909],{},"你调教了半天的那个 Agent，知道你写 Go、搞微服务、喜欢简洁命名。编辑器里那个，以为你是刚入门的新手。终端里那个？连你做什么工作都不知道。",[14,2911,2912],{},"Agent 越多，这种割裂越明显。",[1023,2914],{},[18,2916,2918],{"id":2917},"agent-的记忆为什么是各记各的","Agent 的记忆为什么是「各记各的」？",[14,2920,2921],{},"有人可能会说：AI Agent 平台不是有记忆功能吗？它会把信息记下来的。",[14,2923,2924],{},"确实。它会在本地存一份记忆文件，记你的偏好、工作习惯、技术背景。聊天过程中的关键信息也写进记忆，按日期归档。",[14,2926,2028],{},[14,2928,2929],{},"但这些记忆全是本地的。存在这一个 Agent 自己的项目文件夹里。",[14,2931,2932],{},"第二个 Agent 读不到。第三个也读不到。换台电脑？照样读不到。",[14,2934,2935],{},[49,2936,2937],{},"每个 Agent 各写了一份\"我认识的你\"，版本之间完全没打通。",[14,2939,2042],{},[14,2941,2942],{},"你以为瓶颈是 Agent 的智商？不是。是记忆。每个 Agent 对你的认知，是割裂的。",[1023,2944],{},[18,2946,2948],{"id":2947},"身份应该跟着人走不是锁在-agent-肚子里","身份应该跟着人走，不是锁在 Agent 肚子里",[14,2950,2951],{},"那怎么办？给每个 Agent 手动复制一份记忆？太蠢了。",[14,2953,2057],{},[14,2955,2956],{},"Agent 的世界不是这样。\"你\"不存在。每个 Agent 脑子里各有一个它自己编出来的\"你\"。",[14,2958,2063],{},[14,2960,2961],{},[49,2962,2963],{},"别让 Agent 记住你，让\"你\"独立存在。",[14,2965,2966],{},"我做了个东西，把你的身份信息放在一个独立的地方。不管哪个 Agent，干活之前都先去那里瞄一眼：这人是谁、擅长什么、有什么偏好。",[14,2968,2969],{},[55,2970],{"alt":2076,"src":2971},"\u002Fa\u002Fwhoami-skill\u002Fcover.png",[14,2973,2974],{},"不是 Agent 记住了你，是你让 Agent \"看见\"了你。记忆会丢，但你的档案一直在。",[1023,2976],{},[18,2978,2980],{"id":2979},"怎样给-agent-装上一双眼睛","怎样给 Agent 装上一双「眼睛」？",[14,2982,2983],{},"上周拿这东西给一个朋友看。他用了好几个 Agent，天天在群里吐槽\"又要跟 Agent 重新解释一遍需求\"。",[14,2985,2091],{},[14,2987,2988],{},"我说你就跟 Agent 说一句话就行。然后把这段甩给了他：",[11,2990,2991],{},[14,2992,2099,2993,2103,2995,2110],{},[79,2994,2102],{},[279,2996,2109],{"href":2997,"rel":2998,"target":2108},"https:\u002F\u002Fwhoamiagent.com",[283],[14,3000,3001],{},"两分钟后他截了张图。他另一个 Agent 开了个新对话，开口直接根据他的技术背景给方案，没问\"你是做什么的\"。",[14,3003,2116],{},[14,3005,3006],{},[55,3007],{"alt":2121,"src":3008},"\u002Fa\u002Fwhoami-skill\u002Fintro-zh.png",[14,3010,3011],{},"说句实话，目前有局限。只有支持 Agent Skill 机制的工具能接入，不是所有 Agent 都吃这一套。好在主流的几个 AI 编程工具已经能用了。",[14,3013,3014],{},"代码开源，GitHub 上随便翻:",[14,3016,3017],{},[279,3018,2142],{"href":2140,"rel":3019,"target":2108},[283],[1023,3021],{},[18,3023,1401],{"id":1401},[14,3025,3026],{},"最近大家都在比谁的 Agent 聪明、谁的 Agent 干活快。",[14,3028,3029],{},"我用了两周，倒是觉得聪不聪明是其次。Agent 认不认识你，才是正经事。",[14,3031,3032],{},"同一个需求，丢给认识你的 Agent 和不认识你的 Agent，出来的东西差了不止一档。",[14,3034,3035],{},"也许别急着教 Agent 做事，先让 Agent 认人。",{"title":316,"searchDepth":317,"depth":317,"links":3037},[3038,3039,3040,3041,3042],{"id":2895,"depth":320,"text":2896},{"id":2917,"depth":320,"text":2918},{"id":2947,"depth":320,"text":2948},{"id":2979,"depth":320,"text":2980},{"id":1401,"depth":320,"text":1401},"2026-03-05","多个 AI Agent 互不认识你？whoami 让你的身份跟着人走，不是锁在某个工具里",[3046,3049,3052,3055],{"q":3047,"a":3048},"为什么多个 AI Agent 之间不能共享对你的了解？","因为每个 Agent 的记忆都存在本地项目文件夹里，互相读不到。就像你同时在三家医院看病，病历系统互不相通，每次都要重讲一遍。瓶颈不是 Agent 的智商，而是记忆的割裂。",{"q":3050,"a":3051},"whoami 是如何解决 Agent 记忆割裂问题的？","whoami 把你的身份信息放在一个独立的地方，不管哪个 Agent 干活前都先去读取：你是谁、擅长什么、有什么偏好。不是让 Agent 记住你，而是让'你'独立存在，Agent 来'看见'你。记忆会丢，但你的档案一直在。",{"q":3053,"a":3054},"认识你和不认识你的 Agent 输出差别有多大？","差了不止一档。同一个需求，认识你的 Agent 会根据你的技术背景、编码风格、工作偏好直接给出贴合你的方案。不认识你的 Agent 则需要从零了解，输出的方案往往是通用的、泛化的，不符合你的实际情况。这就是为什么'先让 Agent 认人'比'教 Agent 做事'更重要。",{"q":3056,"a":3057},"whoami 如何安装和使用？","只需一行命令：运行 npx skills add MorvanZhou\u002Fwhoami -g --yes，安装完毕后打开 whoamiagent.com 进行配置。两分钟就能搞定。目前支持主流的 AI 编程工具，代码完全开源在 GitHub 上。局限是只有支持 Agent Skill 机制的工具才能接入。",{},"\u002Farticles\u002Fwhoami-skill",{"title":2870,"description":3044},[3062,3063,2188,2189,1434,3064,3065],"AI Agent 记忆","Agent 身份同步","多 Agent 协作","AI 开发工具","articles\u002Fwhoami-skill",[361,1746,1078],"NMjC1m5z-LDdtzcNSQrTa6DqmRG1gIP1fQqAyc8fB80",{"id":3070,"title":3071,"body":3072,"cover":3126,"date":3370,"description":3371,"draft":329,"extension":330,"faq":3372,"featured":329,"meta":3385,"navigation":345,"path":3386,"readingTime":591,"seo":3387,"seoKeywords":3388,"stem":3395,"summary":3078,"tags":3396,"type":362,"updated":363,"video":363,"__hash__":3397},"articles\u002Farticles\u002Fskill-vs-mcp.md","我用 Skill 做出了自己的 AI 分身，MCP 做不到这个",{"type":8,"value":3073,"toc":3358},[3074,3079,3083,3086,3092,3098,3104,3110,3115,3121,3127,3131,3134,3137,3142,3148,3155,3166,3172,3178,3180,3184,3190,3196,3199,3203,3206,3232,3238,3244,3247,3250,3255,3261,3267,3272,3274,3278,3284,3287,3298,3301,3312,3318,3329,3334,3340,3344,3350,3353,3355],[11,3075,3076],{},[14,3077,3078],{},"MCP 只是给 AI 一个工具，Skill 则给 AI 一整套人设+工具+流程+素材。当 AI 需要理解业务逻辑而非简单调用接口时，Skill 才是正确答案。",[18,3080,3082],{"id":3081},"怎么一直有人在问我要数据","怎么一直有人在问我要数据！",[14,3084,3085],{},"我们团队有一个后端系统。最近，我发现自己被\"数据需求\"淹没了。",[14,3087,3088,3091],{},[49,3089,3090],{},"同事 A："," \"嘿，我需要最近 30 天登录用户的年龄分布，按地区分组。\"",[14,3093,3094,3097],{},[49,3095,3096],{},"我："," \"好的，我查一下...不过需求有点复杂，给我一小时。\"",[14,3099,3100,3103],{},[1333,3101,3102],{},"（1 小时后）"," 数据给了，但同事提出新问题...",[14,3105,3106,3109],{},[49,3107,3108],{},"同事 B："," \"对了，能不能也看看用户留存率的趋势？\"",[14,3111,3112,3114],{},[49,3113,3096],{}," \"又来？...\"",[14,3116,3117,3118],{},"这样的对话每天都在上演。每次都是我手工写 SQL、加工数据、发回去。",[49,3119,3120],{},"我发现自己把大量时间花在\"翻译需求 → 查询数据\"这种重复劳动上，根本没有时间做更重要的事。",[14,3122,3123],{},[55,3124],{"alt":3125,"src":3126},"数据需求困境","\u002Fa\u002Fskill-vs-mcp\u002Fdata-overwhelm.png",[496,3128,3130],{"id":3129},"不是有-ai-吗试试-mcp","不是有 AI 吗，试试 MCP？",[14,3132,3133],{},"我记得之前用过 MCP（Model Context Protocol）。我想，能不能用 MCP 让 AI 来做这件事？",[14,3135,3136],{},"我给 AI 定义了一个\"调用数据库查询接口\"的工具。理论上，别人可以问 AI 数据问题，AI 会自动调用这个工具。",[14,3138,3139],{},[49,3140,3141],{},"结果呢？",[14,3143,3144,3147],{},[49,3145,3146],{},"同事再问一次："," \"帮我查用户年龄分布。\"",[14,3149,3150,3151,3154],{},"AI 调用了工具，但还是返回了错误的结果。因为 ",[49,3152,3153],{},"AI 不知道","：",[181,3156,3157,3160,3163],{},[184,3158,3159],{},"不同表，不同字段可以怎么配合使用",[184,3161,3162],{},"同事每次的需求差别很大，怎么组合查询才能满足不同场景",[184,3164,3165],{},"怎么二次加工数据才能符合需求",[14,3167,3168,3171],{},[49,3169,3170],{},"每次 AI 都需要我手工\"教\"它。"," 相当于没解决问题，反而多了一个中间环节。",[14,3173,3174],{},[55,3175],{"alt":3176,"src":3177},"MCP 的局限","\u002Fa\u002Fskill-vs-mcp\u002Fmcp-limitation.png",[1023,3179],{},[18,3181,3183],{"id":3182},"我为什么转而制作自己的-skill","我为什么转而制作自己的 Skill？",[14,3185,3186,3187,130],{},"就在我快放弃的时候，我发现了 ",[49,3188,3189],{},"Agent Skills",[14,3191,3192,3193,130],{},"和 MCP 不同，Skill 不只是定义一个工具，而是定义一整套 ",[49,3194,3195],{},"工作流程和人设",[14,3197,3198],{},"我决定试试，给这个\"数据查询\"的事制作一个 Skill。",[496,3200,3202],{"id":3201},"skill-里我做了什么","Skill 里我做了什么？",[14,3204,3205],{},"就像写一个标准的文章创作流程一样，我在这个 Skill 里定义了：",[181,3207,3208,3214,3220,3226],{},[184,3209,3210,3213],{},[49,3211,3212],{},"我是谁？"," 这个 Agent 是一个\"数据分析专家\"，理解我们的业务逻辑",[184,3215,3216,3219],{},[49,3217,3218],{},"我怎么做事？"," 我定义了常见的数据查询场景、加工规则、输出格式",[184,3221,3222,3225],{},[49,3223,3224],{},"我有什么工具？"," 我给了它调用后端 API 的脚本",[184,3227,3228,3231],{},[49,3229,3230],{},"我有什么素材？"," 我给了它数据字典、模版文件、素材资料",[14,3233,3234],{},[55,3235],{"alt":3236,"src":3237},"Skill 的四层架构","\u002Fa\u002Fskill-vs-mcp\u002Fskill-architecture.png",[14,3239,3240,3241],{},"简单说： ",[49,3242,3243],{},"我不仅给了 AI 一个人设，还给了它一组工具和使用说明书，甚至还定义了完成工作的流程。",[496,3245,3246],{"id":3246},"神奇的事发生了",[14,3248,3249],{},"现在同事直接问我的 AI Agent：",[14,3251,3252,3254],{},[49,3253,3090],{}," \"最近 30 天登录用户的年龄分布，按地区分组。\"",[14,3256,3257,3260],{},[49,3258,3259],{},"AI Agent："," 通过技能和流程，加工数据后，返回正确的结果。",[14,3262,3263,3264],{},"没有错误，没有\"需要教它\"的过程。 ",[49,3265,3266],{},"因为 Agent 已经\"知道\"可以上手什么工具，手搓代码解决需求了。",[14,3268,3269],{},[49,3270,3271],{},"我的数据运营工作彻底解放了。",[1023,3273],{},[18,3275,3277],{"id":3276},"这篇文章真是用-skill-写出来的吗","这篇文章真是用 Skill 写出来的吗？",[14,3279,3280,3281],{},"有趣的是，",[49,3282,3283],{},"这篇文章本身就是用我自己制作的公众号文章 Skill 写出来的。",[14,3285,3286],{},"我之前写文章特别低效：",[181,3288,3289,3292,3295],{},[184,3290,3291],{},"一个人想选题，想半天",[184,3293,3294],{},"写框架时要反复调整",[184,3296,3297],{},"正文写到一半又要改思路",[14,3299,3300],{},"所以我制作了一个公众号文章创作 Skill，定义了整个微信文章的创作流程：",[181,3302,3303,3306,3309],{},[184,3304,3305],{},"如何分析读者和选题",[184,3307,3308],{},"如何梳理论点、设计框架",[184,3310,3311],{},"如何撰写正文、调整节奏",[14,3313,3314,3315,3154],{},"现在，",[49,3316,3317],{},"我和这个 AI Agent 一起写文章",[181,3319,3320,3323,3326],{},[184,3321,3322],{},"我提出想法 → Agent 帮我梳理框架",[184,3324,3325],{},"Agent 提出角度 → 我选择或反驳",[184,3327,3328],{},"Agent 生成初稿 → 我快速审阅调整",[14,3330,3331],{},[49,3332,3333],{},"效率提升 3-5 倍，质量还更好。",[14,3335,3336],{},[55,3337],{"alt":3338,"src":3339},"文章创作协作流程","\u002Fa\u002Fskill-vs-mcp\u002Fwriting-workflow.png",[496,3341,3343],{"id":3342},"这才是释放-ai-潜力的方式","这才是释放 AI 潜力的方式",[14,3345,3346,3347],{},"2026 年，AI Agent 产品为什么出现？",[49,3348,3349],{},"因为 AI 不再只活在对话框里，而是开始成为能实际干活的 Agent。",[14,3351,3352],{},"而 Skill，就是让每个人都能为自己的工作打造一个 AI Agent。",[1023,3354],{},[14,3356,3357],{},"最后，你工作中有什么繁琐重复的事，可以交给 AI Agent 去做吗？",{"title":316,"searchDepth":317,"depth":317,"links":3359},[3360,3363,3367],{"id":3081,"depth":320,"text":3082,"children":3361},[3362],{"id":3129,"depth":317,"text":3130},{"id":3182,"depth":320,"text":3183,"children":3364},[3365,3366],{"id":3201,"depth":317,"text":3202},{"id":3246,"depth":317,"text":3246},{"id":3276,"depth":320,"text":3277,"children":3368},[3369],{"id":3342,"depth":317,"text":3343},"2026-02-11","对比 MCP 和 Agent Skills 的差异：Skill 通过人设+工具+流程+素材四层架构，解决 MCP 解决不了的复杂场景",[3373,3376,3379,3382],{"q":3374,"a":3375},"MCP 和 Agent Skill 有什么本质区别？","MCP 只定义了一个工具接口，AI 知道怎么调用但不知道何时、为什么调用。Skill 则定义了完整的四层架构：人设（AI 是什么角色）、流程（怎么做事）、工具（用什么）、素材（参考什么）。相当于 MCP 只给了一把锤子，Skill 给了一个懂装修的师傅。",{"q":3377,"a":3378},"什么场景适合用 Skill 而不是 MCP？","当任务涉及业务理解、多步骤流程、动态判断时，Skill 远优于 MCP。比如数据查询需要理解不同表和字段的组合方式，文章创作需要遵循特定的写作流程。简单说：一次性调用用 MCP，需要'懂行'的复杂任务用 Skill。",{"q":3380,"a":3381},"Agent Skill 的四层架构具体包含什么？","四层分别是：1）人设——定义 Agent 是什么角色，理解什么业务；2）流程——定义常见场景的处理步骤、加工规则、输出格式；3）工具——提供可调用的脚本和 API 接口；4）素材——附带数据字典、模版文件、参考资料。这四层让 AI 不只是有工具，还知道何时、为何、怎样使用工具。",{"q":3383,"a":3384},"普通人可以自己制作 Skill 吗？","完全可以。Skill 的本质是把你的工作流程和专业知识结构化地写下来，让 AI 按照你的方式做事。比如作者就用 Skill 搞定了数据运营工作，还制作了公众号文章创作 Skill。只要你能把自己做事的方法说清楚，就能做成一个 Skill。",{},"\u002Farticles\u002Fskill-vs-mcp",{"title":3071,"description":3371},[3389,3390,3391,3392,1742,3393,3394],"Agent Skill vs MCP","AI Agent 开发","MCP 局限性","AI 工作流","Agent 人设","AI 分身","articles\u002Fskill-vs-mcp",[360,361,1746],"13k0p4ig7SoI2ui_ZS-3X-MkrYEUeB7FVBiiIELCZbA",{"id":3399,"title":3400,"body":3401,"cover":3620,"date":3621,"description":3622,"draft":329,"extension":330,"faq":3623,"featured":329,"meta":3636,"navigation":345,"path":3637,"readingTime":347,"seo":3638,"seoKeywords":3639,"stem":3647,"summary":3407,"tags":3648,"type":362,"updated":363,"video":363,"__hash__":3649},"articles\u002Farticles\u002Fai-quiz-level-game.md","把练习册变成闯关游戏，学上瘾了",{"type":8,"value":3402,"toc":3609},[3403,3408,3412,3417,3422,3429,3449,3452,3457,3461,3467,3474,3484,3490,3495,3499,3505,3510,3530,3536,3540,3544,3550,3554,3557,3561,3564,3571,3577,3580,3583,3588,3591,3598,3600],[11,3404,3405],{},[14,3406,3407],{},"学习犯困不是意志力问题，是大脑缺少即时反馈。把知识点变成'地下城关卡'，AI 动态调整难度，让学习像游戏一样上瘾，一次性解决启动困难、无效复习和缺乏反馈三大痛点。",[18,3409,3411],{"id":3410},"不是意志力不行是大脑被游戏调戏了","不是意志力不行，是大脑被游戏\"调戏\"了",[11,3413,3414],{},[14,3415,3416],{},"\"这孩子，打游戏能通宵，看书五分钟就打瞌睡，就是没毅力。\"",[14,3418,3419],{},[49,3420,3421],{},"为什么我们能对游戏投入成百上千小时，却对学习避之不及？",[14,3423,3424,3425,3428],{},"这不是意志力问题，而是",[49,3426,3427],{},"大脑反馈机制","的差异。游戏精通\"多巴胺操控术\"：",[1193,3430,3431,3437,3443],{},[184,3432,3433,3436],{},[49,3434,3435],{},"目标极小","：下一关就在前面",[184,3438,3439,3442],{},[49,3440,3441],{},"反馈极快","：打怪掉金币，砍一刀掉血",[184,3444,3445,3448],{},[49,3446,3447],{},"难度动态调整","：永远让你在\"差一点就能赢\"的边缘",[14,3450,3451],{},"而传统学习？面对的是一座沉默的知识大山，你推了一天山没动，大脑自然产生生理性厌恶。",[14,3453,3454],{},[49,3455,3456],{},"如果用 AI 充当\"游戏策划\"，把知识点变成\"活\"的关卡呢？",[18,3458,3460],{"id":3459},"为什么说注意力才是稀缺资源","为什么说注意力才是稀缺资源？",[14,3462,3463,3464],{},"AI 时代，获取信息不值钱了。",[49,3465,3466],{},"核心矛盾是：信息太多，注意力太少。",[14,3468,3469,3470,3473],{},"教育学里有个概念叫 ",[49,3471,3472],{},"\"最近发展区\""," ——那个\"跳一跳能摘到的果子\"：",[181,3475,3476,3479],{},[184,3477,3478],{},"太容易，无聊；太难，崩溃",[184,3480,3481],{},[49,3482,3483],{},"正好在边缘，就是\"心流\"",[14,3485,3486,3487],{},"我做了 Treeflow，目标是：",[49,3488,3489],{},"用 AI 为每个人定制一条\"心流复习路径\"。",[3491,3492],"video-player",{"alt":3493,"src":3494},"Treeflow答题闯关","\u002Fa\u002Fai-quiz-level-game\u002FTreeflow答题闯关demo.mp4",[18,3496,3498],{"id":3497},"怎样把知识点变成地下城","怎样把知识点变成「地下城」？",[14,3500,3501,3502],{},"新版 Treeflow 完成了一次进化：",[49,3503,3504],{},"它不再只是出题老师，而是你的专属\"游戏地下城城主\"。",[14,3506,3507],{},[49,3508,3509],{},"工作流程：",[1193,3511,3512,3518,3524],{},[184,3513,3514,3517],{},[49,3515,3516],{},"自动提取知识脉络"," — 丢给它法考资料、雅思阅读、学习笔记，AI 瞬间理解逻辑结构",[184,3519,3520,3523],{},[49,3521,3522],{},"生成\"知识地图\""," — 每个关卡是一个知识模块，完成答题给能量条充电，充满后进入下一 Level",[184,3525,3526,3529],{},[49,3527,3528],{},"实时关卡挑战"," — AI 从特定知识点实时生成针对性题目，像打怪一样互动",[14,3531,3532],{},[55,3533],{"alt":3534,"src":3535},"Treeflow 闯关流程图","\u002Fa\u002Fai-quiz-level-game\u002Ftreeflow%E6%B5%81%E7%A8%8B%E6%BC%94%E7%A4%BA2.png",[18,3537,3539],{"id":3538},"能一次性解决哪三大学习痛点","能一次性解决哪三大学习痛点？",[496,3541,3543],{"id":3542},"_1-消除启动困难症","1. 消除\"启动困难症\"",[14,3545,3546,3547],{},"不知道从哪开始？看一眼地图，点击那个唯一亮着的\"下一关\"。",[49,3548,3549],{},"不需要做决定，只需要去通关。",[496,3551,3553],{"id":3552},"_2-拒绝无效复习","2. 拒绝\"无效复习\"",[14,3555,3556],{},"AI 根据表现动态调整关卡。在某个知识点卡住了？自动增加支线任务，直到你真正掌握。",[496,3558,3560],{"id":3559},"_3-给大脑即时赏金","3. 给大脑\"即时赏金\"",[14,3562,3563],{},"每通一关，\"点亮地图\"的视觉快感驱动你继续下一关。很多同学反馈：",[11,3565,3566],{},[14,3567,3568],{},[49,3569,3570],{},"\"本来想试一下，结果一抬头，刷了两个小时还没觉得累。\"",[14,3572,3573],{},[55,3574],{"alt":3575,"src":3576},"用户反馈截图","\u002Fa\u002Fai-quiz-level-game\u002Fuser-feedback.png",[18,3578,3579],{"id":3579},"学习本不该是苦修",[14,3581,3582],{},"我们大脑的进化，是为了探索和竞技，不是对着纸张发呆。",[14,3584,3585],{},[49,3586,3587],{},"AI 不应该只是\"代笔\"，更应该是能把枯燥世界变有趣的\"魔法师\"。",[14,3589,3590],{},"如果你也觉得复习太累、学习太苦，不妨把那堆资料丢进 AI，看看它能生成一张什么样的冒险地图。",[11,3592,3593],{},[14,3594,3595],{},[49,3596,3597],{},"学习这件事，本不该是一场苦修，而是一场冒险。",[1023,3599],{},[14,3601,3602,3603,3608],{},"想要体验？欢迎访问 ",[279,3604,3607],{"href":3605,"rel":3606,"target":2108},"https:\u002F\u002Ftreeflow.chat",[283],"treeflow.chat","，和大家一起探索学习方法。",{"title":316,"searchDepth":317,"depth":317,"links":3610},[3611,3612,3613,3614,3619],{"id":3410,"depth":320,"text":3411},{"id":3459,"depth":320,"text":3460},{"id":3497,"depth":320,"text":3498},{"id":3538,"depth":320,"text":3539,"children":3615},[3616,3617,3618],{"id":3542,"depth":317,"text":3543},{"id":3552,"depth":317,"text":3553},{"id":3559,"depth":317,"text":3560},{"id":3579,"depth":320,"text":3579},"\u002Fa\u002Fai-quiz-level-game\u002Fcover.png","2026-02-10","用 AI 把知识点变成地下城关卡，解决启动困难、无效复习和缺乏即时反馈三大学习痛点",[3624,3627,3630,3633],{"q":3625,"a":3626},"为什么打游戏不困但学习就犯困？","不是意志力差，而是大脑反馈机制不同。游戏精通'多巴胺操控术'：目标极小（下一关就在前面）、反馈极快（打怪掉金币）、难度动态调整（永远在'差一点就赢'的边缘）。传统学习却是面对一座沉默的知识大山，推了一天没反馈，大脑自然产生生理性厌恶。",{"q":3628,"a":3629},"AI 闯关学习具体是怎么运作的？","三步流程：1）AI 自动提取学习材料的知识脉络，生成'知识地图'；2）每个关卡对应一个知识模块，AI 实时生成针对性题目；3）根据你的表现动态调整难度，卡住了自动增加支线任务。通关的视觉快感驱动你继续下一关，很多人反馈'刷了两小时没觉得累'。",{"q":3631,"a":3632},"AI 闯关学习解决了传统学习的哪些痛点？","三大痛点：1）启动困难——不知道从哪开始，闯关模式只需点击下一关；2）无效复习——AI 根据表现动态调整，在薄弱点自动增加支线任务；3）缺乏即时反馈——每通一关都有视觉反馈，像游戏一样有'通关成就感'，而不是面对沉默的知识大山。",{"q":3634,"a":3635},"什么学习材料适合做成闯关游戏？","几乎所有需要记忆和理解的内容都适合：法考资料、雅思阅读、课程笔记、专业教材等。只需把材料丢给 AI，它就能自动提取知识脉络并生成个性化关卡。内容越结构化（有明确的知识点和层级），生成的闯关体验越好。",{},"\u002Farticles\u002Fai-quiz-level-game",{"title":3400,"description":3622},[3640,3641,3642,3643,3644,3645,3646],"AI 闯关学习","游戏化学习","多巴胺学习法","最近发展区","AI 出题","个性化复习","Treeflow","articles\u002Fai-quiz-level-game",[1268,361,1746],"XdkMrjhAyYLMsjlWxMGBvSXnq_vspTanU5dzet2tT-E",{"id":3651,"title":3652,"body":3653,"cover":3756,"date":3806,"description":3807,"draft":329,"extension":330,"faq":3808,"featured":329,"meta":3821,"navigation":345,"path":3822,"readingTime":541,"seo":3823,"seoKeywords":3824,"stem":3832,"summary":3659,"tags":3833,"type":362,"updated":363,"video":363,"__hash__":3834},"articles\u002Farticles\u002Ffind-human-video.md","12T 硬盘告急！我写了个 AI 抓\"鬼\"，把监控视频里的无人片段全删了",{"type":8,"value":3654,"toc":3799},[3655,3660,3663,3669,3675,3681,3685,3688,3694,3700,3703,3721,3724,3728,3731,3737,3741,3744,3751,3757,3760,3764,3767,3775,3778,3780,3783,3788,3794],[11,3656,3657],{},[14,3658,3659],{},"家庭监控的'移动侦测'太笨，蚊子飞过都录，12T 硬盘一年就满。用 AI 人体识别只保留有人的片段，硬盘空间瞬间释放 50%。",[14,3661,3662],{},"家里有娃之后，安全感成了刚需。",[14,3664,3665,3666,130],{},"为了随时能看到孩子，也为了阿姨在家带娃时多一份安心，我把家里的监控武装到了牙齿。作为一个稍微懂点技术的理工男，由于不放心把家庭隐私视频传到云端，我选择了一个更极客的方案：",[49,3667,3668],{},"视频存本地 NAS (类似私有的百度网盘)",[14,3670,3671],{},[55,3672],{"alt":3673,"src":3674},"家里的监控摄像头","\u002Fa\u002Ffind-human-video\u002Fcctv.png",[14,3676,3677,3678],{},"本以为有了 12T 的超大硬盘，我可以高枕无忧地存个几年。万万没想到，",[49,3679,3680],{},"仅仅过了1-2年，我的 NAS 就开始红灯报警——存储空间满了！",[18,3682,3684],{"id":3683},"谁吃了我的硬盘","谁\"吃\"了我的硬盘？",[14,3686,3687],{},"我打开文件夹一看，好家伙，密密麻麻的视频文件，甚至能把电脑卡死!",[14,3689,3690],{},[55,3691],{"alt":3692,"src":3693},"密密麻麻的视频文件","\u002Fa\u002Ffind-human-video\u002Ffolders.png",[14,3695,3696,3697],{},"现在的摄像头虽然都有\"移动侦测\"功能（只在画面有动静时录像），但这个功能实在是",[49,3698,3699],{},"太！笨！了！",[14,3701,3702],{},"只要画面里有一丁点像素变化，它就开始疯狂录制：",[181,3704,3705,3712,3718],{},[184,3706,3707,3708,3711],{},"一只",[49,3709,3710],{},"蚊子","飞过镜头……录！存下来！",[184,3713,3714,3717],{},[49,3715,3716],{},"扫地机器人","准时出来工作……录！存下来！",[184,3719,3720],{},"窗外树影晃动，或者光线变暗了……录！存下来！",[14,3722,3723],{},"我的 12T 硬盘里，存的不仅有孩子的欢笑，还有大量的\"电子垃圾\"。",[18,3725,3727],{"id":3726},"现成的方案不好用怎么办","现成的方案不好用怎么办？",[14,3729,3730],{},"作为一个爱折腾的 AI 程序员，我决定发起反击。我不需要更贵的硬盘，我需要更聪明的\"眼睛\"。",[14,3732,3733,3734],{},"于是，我利用周末时间，和 Claude Code 配合开发了一个基于 AI 的小工具。我的核心诉求只有一个：",[49,3735,3736],{},"只保留\"含人量\" 100% 的视频。",[18,3738,3740],{"id":3739},"实际效果如何","实际效果如何？",[14,3742,3743],{},"程序跑了一晚上，对着我 NAS 里囤积的视频库一顿输出。",[14,3745,3746,3747,3750],{},"结果令人极度舒适：",[49,3748,3749],{},"硬盘空间瞬间释放了 50% 以上！"," 那些长达几小时的\"扫地机工作实录\"和\"午夜蚊子飞舞\"统统消失了，剩下的全是有家人出现的有效片段。",[14,3752,3753],{},[55,3754],{"alt":3755,"src":3756},"NAS 瘦身效果","\u002Fa\u002Ffind-human-video\u002Fnas.png",[14,3758,3759],{},"不仅省了买新硬盘的钱，现在我回看视频时，每一秒都是有效信息，再也不用手动拖进度条了。",[18,3761,3763],{"id":3762},"代码开源了吗","代码开源了吗？",[14,3765,3766],{},"独乐乐不如众乐乐。我知道肯定有很多像我一样，家里装了监控、买了 NAS，却被垃圾视频塞满硬盘的朋友。",[14,3768,3769,3770,130],{},"我已经将这个工具的核心代码开源到了 ",[279,3771,3774],{"href":3772,"rel":3773,"target":2108},"https:\u002F\u002Fgithub.com\u002FMorvanZhou\u002Ffind-human-video",[283],"GitHub",[14,3776,3777],{},"如果你是懂点代码的极客，或者想学习怎么用 Python 玩转 YOLO 模型，欢迎去看看。",[18,3779,1401],{"id":1401},[14,3781,3782],{},"目前这个工具还是一个需要懂点 Python 代码的小项目，对于不会编程的朋友来说，使用门槛确实有点高，需要自己配置环境、跑脚本。",[14,3784,3785],{},[49,3786,3787],{},"但是！",[14,3789,3790,3791,130],{},"如果大家呼声够高，我就知道这确实是",[49,3792,3793],{},"大家的痛点",[14,3795,3796],{},[49,3797,3798],{},"我会考虑把它打包成一个傻瓜式的桌面软件（App）！",{"title":316,"searchDepth":317,"depth":317,"links":3800},[3801,3802,3803,3804,3805],{"id":3683,"depth":320,"text":3684},{"id":3726,"depth":320,"text":3727},{"id":3739,"depth":320,"text":3740},{"id":3762,"depth":320,"text":3763},{"id":1401,"depth":320,"text":1401},"2026-02-03","家里监控存本地 NAS，硬盘被垃圾视频塞满？用 AI 识别人体，只保留有人的片段，硬盘空间瞬间释放 50%",[3809,3812,3815,3818],{"q":3810,"a":3811},"为什么家庭监控会产生大量无用视频？","现有摄像头的'移动侦测'功能只检测画面像素变化，无法区分蚊子、扫地机器人、光线变化和真正的人。只要有一丁点变化就开始录制，导致硬盘里存满了'电子垃圾'。12T 硬盘在多个摄像头下，1-2 年就会存满。",{"q":3813,"a":3814},"这个 AI 视频清理工具是怎么工作的？","利用 YOLO AI 模型对监控视频进行人体识别，只保留画面中有人出现的片段，自动删除无人的'垃圾视频'。实测能释放 50% 以上的硬盘空间，而且保留下来的每一秒都是有效信息。项目已在 GitHub 开源。",{"q":3816,"a":3817},"为什么不用摄像头自带的移动侦测功能？","因为移动侦测只检测像素变化，无法区分蚊子、扫地机器人、光线变化和真正的人。一只蚊子飞过镜头就触发录制，窗外树影晃动也会录。结果就是硬盘里充满了'电子垃圾'，真正有价值的片段反而被淹没。AI 人体识别才能精准过滤。",{"q":3819,"a":3820},"不会编程的人能用这个工具吗？","目前需要懂一些 Python 基础来配置环境和运行脚本，使用门槛确实有点高。代码已开源在 GitHub 上，适合有一定技术基础的用户。如果使用需求呼声够高，作者计划将其打包成傻瓜式的桌面应用，让非技术用户也能一键使用。",{},"\u002Farticles\u002Ffind-human-video",{"title":3652,"description":3807},[3825,3826,3827,3828,3829,3830,3831],"NAS 存储优化","监控视频清理","AI 人体识别","YOLO 模型","家庭监控","硬盘空间不足","智能视频筛选","articles\u002Ffind-human-video",[361,1078],"OxbqNfGVeCVSfa5-8xCyMflbSOgCONgKOpOD2xatmR0",{"id":3836,"title":3837,"body":3838,"cover":3919,"date":3952,"description":3953,"draft":329,"extension":330,"faq":3954,"featured":329,"meta":3967,"navigation":345,"path":3968,"readingTime":557,"seo":3969,"seoKeywords":3970,"stem":3977,"summary":3844,"tags":3978,"type":362,"updated":363,"video":363,"__hash__":3980},"articles\u002Farticles\u002Fai-level-game.md","用AI把学习内容做成闯关游戏",{"type":8,"value":3839,"toc":3946},[3840,3845,3849,3852,3855,3860,3864,3867,3873,3876,3881,3885,3888,3896,3899,3903,3911,3914,3920,3927,3933,3939],[11,3841,3842],{},[14,3843,3844],{},"MIT 研究证实：用 ChatGPT 获取信息会降低大脑活跃度。真正有效的学习需要'费力'，让 AI 反过来考你，才能激活大脑的深度思考。",[18,3846,3848],{"id":3847},"一开始学习就困的你让-ai-教你反而不困了","一开始学习就困的你，让 AI 教你反而不困了？",[14,3850,3851],{},"理解新知识需要在大脑中建立足够多的神经连接，进行大量的电信号传递与信息整合处理，而这个过程必然需要消耗大量能量。因此，越学越困是完全正常的现象。",[14,3853,3854],{},"而当我们利用 AI 帮助生成信息时，实际上跳过了整理、加工未知信息、迁移已有知识的过程。简单来说就是\"跳过了费脑子的环节\"，所以你反而觉得不困了。",[14,3856,3857],{},[49,3858,3859],{},"但是，轻松获取知识真的比费时费力的主动学习更有效吗？",[18,3861,3863],{"id":3862},"麻省理工的-chatgpt-学习实验发现了什么","麻省理工的 ChatGPT 学习实验发现了什么？",[14,3865,3866],{},"今年 6 月，麻省理工学院的研究团队发表了一篇重要论文《Your Brain on ChatGPT: Accumulation of Cognitive Debt when Using an AI Assistant for Essay Writing Task》。",[14,3868,3869],{},[55,3870],{"alt":3871,"src":3872},"ChatGPT、搜索引擎、纯脑力","\u002Fa\u002Fai-level-game\u002Falpha_band.png",[14,3874,3875],{},"研究人员观察了三组学生在日常写作时的表现：使用 ChatGPT 组、使用搜索引擎组和纯脑力思考组。结果发现，纯脑力组的大脑活跃状态最强，搜索引擎组次之，而 ChatGPT 组的大脑活跃度最低。",[14,3877,3878],{},[49,3879,3880],{},"这意味着，使用 ChatGPT 作为辅助工具，实际上会降低学生的大脑活跃度。",[18,3882,3884],{"id":3883},"为什么说费力的学习效果更好","为什么说费力的学习效果更好？",[14,3886,3887],{},"MIT 的研究结果清楚地表明：当大脑需要参与决策、思考、信息整合、记忆、推理等复杂任务时，大脑活动量越大，学习效果就越好。",[14,3889,3890,3891,3895],{},"我在 ",[279,3892,3894],{"href":3893},"\u002Farticles\u002Fcompress-learning","压缩学习的文章"," 中也提到过：\"真正过脑子、留下深刻印象的知识，实际上是通过将知识压缩提炼后再解压的学习模式获得的。\"",[14,3897,3898],{},"现在我们习惯于不假思索地获取AI\"预处理\"的信息，看似学到了知识，实则只是\"看见\"了知识 —— 缺乏大脑加工和知识关联。而主动搜集、加工信息的\"费力学习\"，反而能让大脑保持活跃，获得更好的锻炼效果。",[18,3900,3902],{"id":3901},"为什么让-ai-出题你来思考更有效","为什么让 AI 出题、你来思考更有效？",[14,3904,3905,3906,3910],{},"在我的文章",[279,3907,3909],{"href":3908},"\u002Farticles\u002Fintroduce-treeflow-qa","《从\"被动接受\"到\"主动思考\"》"," 中，我探讨了将 AI 反向使用的方法，即不要让它给你答案，而是让它来考察你。",[14,3912,3913],{},"这种苏格拉底式的提问学习法，能够引发学习者的深入思考，是一种真正有效的学习方法。",[14,3915,3916],{},[55,3917],{"alt":3918,"src":3919},"学习流程","\u002Fa\u002Fai-level-game\u002Fstudy-test-analysis.png",[14,3921,3922,3923,3926],{},"在传统学校教育中：",[49,3924,3925],{},"学习 → 测试 → 错误分析 → 改进提升"," 是被无数人验证过的有效学习方法，而我想反向利用 AI，协助完成真正的学习闭环。",[14,3928,3929],{},[55,3930],{"alt":3931,"src":3932},"Treeflow 问答闯关学习流程","\u002Fa\u002Fai-level-game\u002Fqa_flow.png",[14,3934,3935,3938],{},[49,3936,3937],{},"学习材料 → AI 生成个性化关卡 → AI 闯关结果分析"," —— 这样的流程构成了一种全新的 \"苏格拉底式 AI 学习方式\"。它将传统的学习材料（如书本）转化为个性化的闯关体验，并通过 AI 分析闯关结果，帮你了解哪些地方掌握得不够好，哪些方面需要加强。",[14,3940,3941,3942,3945],{},"现在我已经将这套学习方式开放在 ",[279,3943,3607],{"href":3605,"rel":3944},[283]," 上，你可以亲自尝试一下。",{"title":316,"searchDepth":317,"depth":317,"links":3947},[3948,3949,3950,3951],{"id":3847,"depth":320,"text":3848},{"id":3862,"depth":320,"text":3863},{"id":3883,"depth":320,"text":3884},{"id":3901,"depth":320,"text":3902},"2025-09-11","为什么用 AI 获取信息会犯困，而让 AI 考你反而更清醒？",[3955,3958,3961,3964],{"q":3956,"a":3957},"为什么用 AI 获取信息反而不困，但学习效果差？","MIT 研究发现，使用 ChatGPT 时大脑活跃度最低。因为 AI 帮你跳过了整理、加工、迁移知识的过程——也就是'费脑子的环节'。大脑不费力就不会真正学习，轻松获取的知识只是'看见'了而非'理解'了。",{"q":3959,"a":3960},"如何用 AI 实现真正有效的学习？","反向使用 AI：不让它给答案，让它来考你。这种苏格拉底式提问法构成学习闭环：学习材料 → AI 生成个性化关卡 → 你主动思考作答 → AI 分析结果找出薄弱点。大脑参与决策和推理的过程越多，学习效果越好。",{"q":3962,"a":3963},"MIT 的 ChatGPT 学习实验具体发现了什么？","麻省理工研究团队对比了三组学生写作时的大脑活跃度：使用 ChatGPT 组活跃度最低，搜索引擎组次之，纯脑力思考组最高。这证明 AI 辅助虽然让任务更轻松，但也降低了大脑的参与度，而大脑活跃度越高，学习和记忆效果越好。",{"q":3965,"a":3966},"什么是认知负荷理论？它与 AI 学习有什么关系？","认知负荷理论指出学习需要适度的心智努力：太简单大脑不认真对待，太难大脑会放弃，只有在'舒适区边缘'的挑战才能促进真正的学习。传统 AI 对话让获取信息太轻松，认知负荷过低。让 AI 反过来出题考你，恰好能提供适度的认知负荷。",{},"\u002Farticles\u002Fai-level-game",{"title":3837,"description":3953},[3971,3972,3973,3644,3974,3975,3976],"AI 学习方法","主动学习 vs 被动学习","苏格拉底式教学","认知负荷","大脑活跃度","费力学习","articles\u002Fai-level-game",[1268,361,3979],"认知科学","El25SQpG9YZqV3ne27_j9qe4x-5hLxtIl5OmYRDnuF4",{"id":3982,"title":3983,"body":3984,"cover":4254,"date":4255,"description":4256,"draft":329,"extension":330,"faq":4257,"featured":329,"meta":4270,"navigation":345,"path":3908,"readingTime":347,"seo":4271,"seoKeywords":4272,"stem":4279,"summary":3990,"tags":4280,"type":362,"updated":363,"video":363,"__hash__":4281},"articles\u002Farticles\u002Fintroduce-treeflow-qa.md","从「被动接受」到「主动思考」：让 AI 学习更像闯关游戏",{"type":8,"value":3985,"toc":4240},[3986,3991,3997,4001,4004,4007,4013,4016,4022,4025,4029,4033,4037,4040,4047,4050,4054,4057,4060,4063,4069,4073,4078,4081,4086,4103,4106,4112,4116,4119,4125,4131,4135,4141,4144,4150,4154,4157,4160,4180,4183,4187,4193,4196,4199,4202,4212,4215,4222,4225,4229,4235],[11,3987,3988],{},[14,3989,3990],{},"让 AI 来考你，比让 AI 给你答案更有效。主动回忆比被动阅读的学习效果好得多，TreeFlow 把 AI 从'答题机器'变成你的私人考官。",[14,3992,3993,3994],{},"今天，我想和你分享一个更有趣的发现：",[49,3995,3996],{},"原来让AI来提问，比让AI来回答，学习效果更好！",[18,3998,4000],{"id":3999},"为什么被-ai-考试竟然比听-ai-讲课更有效","为什么被 AI 考试竟然比听 AI 讲课更有效？",[14,4002,4003],{},"前段时间，我在用 AI 学习区块链技术。按照惯例，我问：\"帮我解释什么是区块链\"",[14,4005,4006],{},"AI给了一个很详细的回答，涵盖了定义、特点、应用场景等等。我看完觉得\"嗯，懂了\"，然后就继续问下一个问题。",[14,4008,4009],{},[55,4010],{"alt":4011,"src":4012},"帮我解释什么是区块链","\u002Fa\u002Fintroduce-treeflow-qa\u002F%E5%B8%AE%E6%88%91%E8%A7%A3%E9%87%8A%E4%BB%80%E4%B9%88%E6%98%AF%E5%8C%BA%E5%9D%97%E9%93%BE.png",[14,4014,4015],{},"但几天后，当朋友问我区块链是什么时，我发现自己竟然说不清楚！明明当时觉得理解了，为什么这么快就忘了？",[14,4017,4018,4019],{},"这让我想起了一个经典的学习理论：",[49,4020,4021],{},"主动回忆比被动阅读的学习效果要好得多。",[14,4023,4024],{},"于是我尝试了一种新的学习方式：让AI来考我！",[3491,4026],{"alt":4027,"src":4028},"QA 学习界面演示","\u002Fa\u002Fintroduce-treeflow-qa\u002Fdemo.mp4",[18,4030,4032],{"id":4031},"ai-提问能带来哪些意想不到的学习效果","AI 提问能带来哪些意想不到的学习效果？",[496,4034,4036],{"id":4035},"_1-主动思考-vs-被动接受","1. 主动思考 vs 被动接受",[14,4038,4039],{},"当AI问我：\"区块链中的区块指的是什么？\"时，我必须主动调用大脑中的相关知识，进行思考和判断。",[14,4041,4042,4043,4046],{},"这种",[49,4044,4045],{},"主动回忆","的过程，比单纯听AI讲解要费脑子得多，但也正因如此，记忆更加深刻。",[14,4048,4049],{},"就像健身一样，只有给肌肉施加阻力，它才会变得更强壮。学习也是如此，只有让大脑\"费力\"思考，知识才能真正内化。",[496,4051,4053],{"id":4052},"_2-认知边界的意外扩展","2. 认知边界的意外扩展",[14,4055,4056],{},"更有趣的是，AI提出的问题经常让我意识到自己的知识盲区。",[14,4058,4059],{},"比如这道题：\"区块链在以下哪种情况下可能面临51%攻击的风险？\"",[14,4061,4062],{},"我当时想：\"咦，区块链还会被攻击？我之前怎么没想过这个角度！\"",[14,4064,4065,4068],{},[49,4066,4067],{},"AI的提问视角往往比我们自己的思考更全面","，它会从我们可能忽略的角度来考察知识点，帮我们查漏补缺。",[496,4070,4072],{"id":4071},"_3-为你而生的个性化答题体验","3. 为你而生的个性化答题体验",[14,4074,4075],{},[49,4076,4077],{},"答题越深入，AI 越懂你。",[14,4079,4080],{},"不需要预设题库，AI会根据你想学习的任何主题，实时生成相关的选择题。",[14,4082,4083,3154],{},[49,4084,4085],{},"AI会从你的答题表现中动态判断你的知识水平和思维模式",[181,4087,4088,4091,4094,4097,4100],{},[184,4089,4090],{},"连续答对基础题？AI自动提升难度，挑战你的认知边界",[184,4092,4093],{},"某个知识点答错？AI生成相关补充题目，帮你查漏补缺",[184,4095,4096],{},"表现出深度理解？AI出跨领域的综合应用题",[184,4098,4099],{},"答对了？AI肯定你的理解，推荐下一个探索方向",[184,4101,4102],{},"答错了？AI分析你的思维误区，给出针对性学习建议",[14,4104,4105],{},"想学Python？从语法题到算法题，再到项目设计题。\n想了解量子计算？从基础概念到量子算法，再到实际应用。\n想研究市场营销？不同行业、不同场景的案例分析题。",[14,4107,4108,4109,130],{},"这就像有一个既了解你知识水平又懂你思维习惯的",[49,4110,4111],{},"私人导师",[496,4113,4115],{"id":4114},"_4-游戏化的学习体验","4. 游戏化的学习体验",[14,4117,4118],{},"还记得多邻国吗？那个让无数人沉迷的语言学习App。",[14,4120,4121,4122,130],{},"它的核心就是把学习包装成\"答题闯关\"的游戏模式。用户不是在\"学英语\"，而是在\"玩游戏\"，但学习效果却出奇地好。",[49,4123,4124],{},"把严肃的学习变成有趣的互动",[14,4126,4127],{},[55,4128],{"alt":4129,"src":4130},"多邻国对比","\u002Fa\u002Fintroduce-treeflow-qa\u002Fduolingo.gif",[18,4132,4134],{"id":4133},"为什么要把这套方法做成-treeflow-这个产品","为什么要把这套方法做成 TreeFlow 这个产品？",[14,4136,4137,4138],{},"其实上面的介绍都来自于我对这个想法的实践，这个产品是 ",[279,4139,3607],{"href":3605,"rel":4140},[283],[14,4142,4143],{},"你也可能会问：市面上学习工具那么多，为什么还要做 TreeFlow 产品？",[14,4145,4146,4147],{},"答案很简单：",[49,4148,4149],{},"现有的工具都在解决\"获取信息\"的问题，但少有人关注\"如何更好地学习\"。",[496,4151,4153],{"id":4152},"信息获取-知识掌握","信息获取 ≠ 知识掌握",[14,4155,4156],{},"ChatGPT、Claude、豆包...这些AI工具确实让我们获取信息变得前所未有的容易。",[14,4158,4159],{},"但获取信息只是学习的第一步。真正的学习，需要：",[181,4161,4162,4168,4174],{},[184,4163,4164,4167],{},[49,4165,4166],{},"理解","：把信息转化为自己的认知",[184,4169,4170,4173],{},[49,4171,4172],{},"记忆","：让知识在大脑中留存",[184,4175,4176,4179],{},[49,4177,4178],{},"应用","：能在需要时调用这些知识",[14,4181,4182],{},"而传统的\"问AI答\"模式，主要解决的是信息获取问题，对后面三个环节帮助有限。",[496,4184,4186],{"id":4185},"学习需要认知负荷","学习需要\"认知负荷\"",[14,4188,4189,4190,130],{},"现代认知科学告诉我们：",[49,4191,4192],{},"学习需要适度的认知负荷",[14,4194,4195],{},"太简单了，大脑不会认真对待；太难了，大脑会放弃。只有在\"舒适区边缘\"的挑战，才能促进真正的学习。",[14,4197,4198],{},"以前，学习的重点是\"记住知识\"。但在AI时代，任何事实性的知识都可以瞬间获取。",[14,4200,4201],{},"那么，人类学习的价值在哪里？",[14,4203,4204,4205,4208,4209,130],{},"我认为是 ",[49,4206,4207],{},"思维方式"," 和 ",[49,4210,4211],{},"判断能力",[14,4213,4214],{},"AI可以告诉你\"区块链是什么\"，但只有通过主动思考和练习，你才能培养出\"在什么情况下应该使用区块链技术\"的判断力。",[14,4216,4217,4218,4221],{},"AI的优势在于它可以提供",[49,4219,4220],{},"个性化的学习路径","。每个人的知识背景不同，思维方式不同，学习节奏不同，AI都可以适应。",[14,4223,4224],{},"TreeFlow 就是这种个性化学习的一次尝试。",[18,4226,4228],{"id":4227},"想要体验-treeflow-qa","想要体验 TreeFlow QA？",[14,4230,4231,4232,130],{},"如果你也认同\"主动学习比被动接受更有效\"，如果你也想体验这种\"AI当老师，你当学生\"的新奇感觉，欢迎访问 ",[279,4233,3607],{"href":3605,"rel":4234},[283],[14,4236,4237],{},[49,4238,4239],{},"让我们一起重新定义AI时代的学习方式！",{"title":316,"searchDepth":317,"depth":317,"links":4241},[4242,4243,4249,4253],{"id":3999,"depth":320,"text":4000},{"id":4031,"depth":320,"text":4032,"children":4244},[4245,4246,4247,4248],{"id":4035,"depth":317,"text":4036},{"id":4052,"depth":317,"text":4053},{"id":4071,"depth":317,"text":4072},{"id":4114,"depth":317,"text":4115},{"id":4133,"depth":320,"text":4134,"children":4250},[4251,4252],{"id":4152,"depth":317,"text":4153},{"id":4185,"depth":317,"text":4186},{"id":4227,"depth":320,"text":4228},"\u002Fa\u002Fintroduce-treeflow-qa\u002F帮我解释什么是区块链.png","2025-08-08","让 AI 来考你，比让 AI 给你答案更有效的学习方式",[4258,4261,4264,4267],{"q":4259,"a":4260},"为什么让 AI 提问比让 AI 回答更有效？","当 AI 给你答案时，大脑处于被动接收模式，容易产生'已经懂了'的错觉。而让 AI 来考你，大脑必须主动调用知识进行思考和判断，这种'费力'的过程才能形成深刻记忆，就像健身要给肌肉施加阻力才能变强。",{"q":4262,"a":4263},"AI 出题学习和传统刷题有什么区别？","传统刷题用的是固定题库，AI 出题则是根据你的实时表现动态调整：答对基础题自动升难度，答错某知识点自动补充相关题目。它像一个了解你知识水平和思维习惯的私人导师，提供真正个性化的学习路径。",{"q":4265,"a":4266},"主动回忆为什么比被动阅读更有效？","被动阅读时大脑处于'接收模式'，容易产生'我懂了'的错觉。但主动回忆强迫大脑从记忆中检索和重组信息，这个'费力'的过程会加强神经连接。就像健身需要给肌肉施加阻力才能生长，大脑也需要'认知阻力'才能真正内化知识。",{"q":4268,"a":4269},"TreeFlow 适合学习什么类型的内容？","几乎任何知识型内容都适用。想学 Python？从语法题到算法题再到项目设计题。想了解量子计算？从基础概念到实际应用。想研究市场营销？不同行业的案例分析题。AI 会根据你输入的主题实时生成相关选择题，不受预设题库限制。",{},{"title":3983,"description":4256},[4273,4274,4045,4275,4276,4277,4278],"AI 主动学习","AI 出题学习","被动学习 vs 主动学习","AI 学习工具","个性化学习","TreeFlow","articles\u002Fintroduce-treeflow-qa",[1268,361,1746],"IWNBU8UKR26FMD-Bk2O9EoitJU98tS_mcerIx78SDMM",{"id":4283,"title":4284,"body":4285,"cover":4356,"date":4508,"description":4509,"draft":329,"extension":330,"faq":4510,"featured":329,"meta":4523,"navigation":345,"path":4524,"readingTime":557,"seo":4525,"seoKeywords":4526,"stem":4533,"summary":4291,"tags":4534,"type":362,"updated":363,"video":363,"__hash__":4535},"articles\u002Farticles\u002Fwhy-chat-with-branch.md","为什么要用分支聊天来学习",{"type":8,"value":4286,"toc":4500},[4287,4292,4297,4300,4303,4307,4310,4313,4319,4324,4327,4333,4337,4340,4345,4348,4351,4357,4360,4364,4367,4370,4375,4378,4404,4407,4412,4416,4419,4425,4428,4434,4437,4440,4446,4449,4453,4456,4459,4464,4475,4479,4486,4489],[11,4288,4289],{},[14,4290,4291],{},"人的思维本身是分叉的、树状的，线性对话让深度学习顾此失彼。分支聊天让你在 AI 回答的任何知识点上开启新探索，像代码分支一样并行深入。",[11,4293,4294],{},[14,4295,4296],{},"你有没有遇到过这种情况：和 AI 聊着聊着，突然发现前面的回答里有好几个不懂的概念。这时候你陷入了两难：要么打断主话题去问概念（结果把主线弄乱了），要么新开一个对话，费力地把刚刚的必要信息再重说给 AI。",[14,4298,4299],{},"这种\"一条线\"的聊天方式，让我们在深度学习时总是顾此失彼。",[14,4301,4302],{},"可是你想过吗？我们的思维本身就是分叉的、树状的，为什么要强迫自己用\"线性\"的方式和AI对话学习呢？",[18,4304,4306],{"id":4305},"为什么和-ai-的对话会被困在一条线上","为什么和 AI 的对话会被困在一条线上？",[14,4308,4309],{},"设想一个场景：你正在向AI请教\"如何学习Python编程\"。AI给出了一个详细的回复，提到了\"环境配置\"、\"基础语法\"、\"面向对象编程\"等几个关键概念。",[14,4311,4312],{},"作为编程新手，你对每个概念都想深入了解。但问题来了...",[14,4314,4315],{},[55,4316],{"alt":4317,"src":4318},"聊天窗","\u002Fa\u002Fwhy-chat-with-branch\u002FchatScreen.png",[14,4320,4321],{},[49,4322,4323],{},"现在的AI工具（豆包、元宝、ChatGPT）只能让你一直往下问，对话流程笔直得像一根筷子。",[14,4325,4326],{},"你看这个例子：\"你之前说的列表和字典有什么区别？\" 这个问题本质上是想回到第一个问题继续深挖，但因为中间插入了其他对话，你只能祈祷AI还记得之前的上下文。",[14,4328,4329],{},[55,4330],{"alt":4331,"src":4332},"单线对话流","\u002Fa\u002Fwhy-chat-with-branch\u002FlinearChat.png",[18,4334,4336],{"id":4335},"线性对话为何让深度学习这么痛苦","线性对话为何让深度学习这么痛苦？",[14,4338,4339],{},"作为AI工具的重度用户，我深知这种痛苦：",[14,4341,4342],{},[49,4343,4344],{},"AI的解答信息量太大，包含多个我想深入了解的知识点，但我没法同时追问不同的方向！",[14,4346,4347],{},"就像被困在一条单行道上，明明看到了很多有趣的岔路，却只能眼睁睁看着它们从身边溜走。",[14,4349,4350],{},"而真正自然的学习过程，应该是这样的：",[14,4352,4353],{},[55,4354],{"alt":4355,"src":4356},"更自然的学习过程","\u002Fa\u002Fwhy-chat-with-branch\u002FnonlinearChat.png",[14,4358,4359],{},"在任何一个节点上，我都能开启新的探索分支，在各自独立的空间里深入追问，互不干扰。",[18,4361,4363],{"id":4362},"灵感从代码分支到思维分支","灵感：从代码分支到思维分支",[14,4365,4366],{},"作为程序员，开发新功能时我们会怎么做？",[14,4368,4369],{},"当然是从主代码库切出不同的功能分支，在各自独立的环境中并行开发！",[14,4371,4372],{},[55,4373],{"alt":520,"src":4374},"\u002Fa\u002Fwhy-chat-with-branch\u002FgitBranch.svg",[14,4376,4377],{},"这种分支开发模式的好处显而易见：",[181,4379,4380,4386,4392,4398],{},[184,4381,4382,4385],{},[49,4383,4384],{},"并行开发","：多个功能同时推进，不互相干扰",[184,4387,4388,4391],{},[49,4389,4390],{},"保持主线稳定","：不会因为试验性功能影响主流程",[184,4393,4394,4397],{},[49,4395,4396],{},"独立调试","：各个分支可以独立测试和优化",[184,4399,4400,4403],{},[49,4401,4402],{},"灵活切换","：随时切换工作重点",[14,4405,4406],{},"等等！这不就是我们理想中的学习方式吗？",[14,4408,4409],{},[49,4410,4411],{},"既然代码可以分支开发，为什么学习不能分支思考？",[18,4413,4415],{"id":4414},"让用ai学习回归自然","让\"用AI学习\"回归自然",[14,4417,4418],{},"想象一下，如果你可以在对话的任意位置，针对AI回答中的任何知识点，都能开启一个全新的探索分支...",[14,4420,4421],{},[55,4422],{"alt":4423,"src":4424},"add branch","\u002Fa\u002Fwhy-chat-with-branch\u002FaddBranch.png",[14,4426,4427],{},"每个分支都保持清晰的上下文，不被其他话题干扰。经常用AI的朋友一定懂\"上下文污染\"的痛苦！",[14,4429,4430],{},[55,4431],{"alt":4432,"src":4433},"branch view","\u002Fa\u002Fwhy-chat-with-branch\u002FaddBranchView.png",[14,4435,4436],{},"分叉后，你就拥有了两条干净、独立的对话线程，每条线程专注于自己的主题。",[14,4438,4439],{},"而且，好奇心是会传染的！在新的分支中，你可能又会遇到新的疑问...",[14,4441,4442],{},[55,4443],{"alt":4444,"src":4445},"branch in branch","\u002Fa\u002Fwhy-chat-with-branch\u002FbranchInBranch.png",[14,4447,4448],{},"一分二，二分四，四分八...你的知识树就这样自然地生长起来！",[18,4450,4452],{"id":4451},"treeflow-是怎么诞生的","TreeFlow 是怎么诞生的？",[14,4454,4455],{},"我的工作经常需要接触新领域，学习新知识。AI确实大大降低了获取信息的成本，但线性对话的局限性让我这个\"好奇宝宝\"经常感到 frustrated！",[14,4457,4458],{},"于是，TreeFlow 诞生了。",[14,4460,4461],{},[49,4462,4463],{},"我希望用AI学习能够：",[181,4465,4466,4469,4472],{},[184,4467,4468],{},"让思绪自由分叉，不受线性限制",[184,4470,4471],{},"让研究持续深入，保持专注",[184,4473,4474],{},"让知识管理变得结构化，便于回顾",[18,4476,4478],{"id":4477},"想要体验-treeflow","想要体验 TreeFlow？",[14,4480,4481,4482,4485],{},"TreeFlow 目前已经开放体验了，可以通过 ",[279,4483,3607],{"href":3605,"rel":4484},[283]," 来访问。",[14,4487,4488],{},"相关文章：",[181,4490,4491,4495],{},[184,4492,4493],{},[279,4494,3983],{"href":3908},[184,4496,4497],{},[279,4498,4499],{"href":3968},"一开始学习就困？让 AI 出题反而不困了",{"title":316,"searchDepth":317,"depth":317,"links":4501},[4502,4503,4504,4505,4506,4507],{"id":4305,"depth":320,"text":4306},{"id":4335,"depth":320,"text":4336},{"id":4362,"depth":320,"text":4363},{"id":4414,"depth":320,"text":4415},{"id":4451,"depth":320,"text":4452},{"id":4477,"depth":320,"text":4478},"2025-06-17","从代码分支到思维分支，探索更自然的 AI 对话学习方式",[4511,4514,4517,4520],{"q":4512,"a":4513},"为什么线性对话不适合用 AI 学习？","AI 的回答信息量大，往往包含多个值得深入的知识点。但线性对话只能一条线往下问，要么打断主话题去追问概念（弄乱主线），要么新开对话重新解释上下文。这就像被困在单行道上，看到很多有趣的岔路却只能错过。",{"q":4515,"a":4516},"分支聊天如何帮助深度学习？","分支聊天允许你在对话的任意位置，针对任何知识点开启独立的探索线程。每个分支保持清晰的上下文，不被其他话题干扰。就像代码的分支开发：并行探索、互不干扰、随时切换，知识树自然生长。",{"q":4518,"a":4519},"什么是 AI 对话中的'上下文污染'？","当你在一条线性对话中插入不同话题的追问，AI 的上下文会被混杂的信息污染。比如你正在学 Python，中间追问了一个数学概念，之后再回到 Python 话题时，AI 可能把数学讨论的内容混入回答。分支聊天的独立线程彻底解决了这个问题。",{"q":4521,"a":4522},"分支聊天的灵感从何而来？","来自程序员日常使用的 Git 分支开发模式。开发新功能时从主代码库切出独立分支，并行开发互不干扰，各自独立测试和优化，随时切换工作重点。这种模式的好处——并行、独立、灵活——正好对应了深度学习时的需求。",{},"\u002Farticles\u002Fwhy-chat-with-branch",{"title":4284,"description":4509},[4527,4528,4529,4530,4278,4531,4532],"分支聊天","AI 学习方式","非线性对话","思维导图式学习","AI 对话工具","知识管理","articles\u002Fwhy-chat-with-branch",[1268,361,1746],"80IR46a8M0JmwEmFXnEj9jijEpG6A1NAgPq8XZGR2bE",{"id":4537,"title":4538,"body":4539,"cover":4763,"date":4764,"description":4765,"draft":329,"extension":330,"faq":4766,"featured":329,"meta":4779,"navigation":345,"path":4780,"readingTime":347,"seo":4781,"seoKeywords":4782,"stem":4789,"summary":4545,"tags":4790,"type":362,"updated":363,"video":363,"__hash__":4791},"articles\u002Farticles\u002Fchild-emotion-control.md","无法控制的闹情绪孩子",{"type":8,"value":4540,"toc":4753},[4541,4546,4551,4554,4560,4563,4566,4569,4573,4579,4585,4588,4591,4596,4599,4602,4608,4611,4614,4620,4623,4626,4630,4633,4636,4642,4649,4653,4659,4664,4667,4687,4690,4693,4696,4707,4710,4713,4717,4720,4740,4743,4747,4750],[11,4542,4543],{},[14,4544,4545],{},"3-6 岁孩子情绪失控不是性格问题，而是大脑发育的必然——杏仁核反应强烈而前额叶'刹车系统'尚未成熟。正确做法是换环境、不讲理、转移注意力。",[11,4547,4548],{},[14,4549,4550],{},"我有两个 3 岁的和一个 5 岁的孩子。他们在索要被拒绝时（比如不给晚上吃糖），情绪会逐渐累积，直至爆发，原地打滚，一发不可收拾。无论我用理论说教、安抚，还是抱抱，通常都难以平复，情绪完全主导了他们的行为。",[14,4552,4553],{},"以上是我日常带娃的真实写照，每天都会经历几次这样的场景。当我的孩子 2-3 岁后，虽然对世界有了一定的认知，但还不能理解太多自然规律。只要有事件触发了他们的情绪警铃，我就得做好一场\"大战\"的准备。",[14,4555,4556],{},[55,4557],{"alt":4558,"src":4559},"情绪中","\u002Fa\u002Fchild-emotion-control\u002F%E5%AD%A9%E5%AD%90%E5%93%AD%E9%97%B9.png",[14,4561,4562],{},"我们家长也有情绪。孩子越情绪化，我们越容易火大，甚至可能动手打人（虽然我不会打，但我小时候也经历过被打的情况）。",[14,4564,4565],{},"发火、打人是一种方法，但真的能产生正面作用吗？我并不是一个坐以待毙的人。我在 AI 圈训练了许多行为模型，分析理解了各种模型行为的特点。我想，是时候去理解人类儿童的\"行为模型\"了，找到理论支持，并做出正确的决策。",[14,4567,4568],{},"如果你也是父母，也有同样的\"情绪小怪兽\"，不妨看看我的\"处方\"。以下内容可能有些硬核，但我会尽量用通俗的语言解释清楚。",[18,4570,4572],{"id":4571},"小孩情绪为什么收不住","小孩情绪为什么收不住？",[14,4574,4575,4576],{},"简单来说，就是因为他们的 ",[49,4577,4578],{},"大脑发育还不够成熟，尤其是负责情绪调节的部分。",[14,4580,4581,4582],{},"再通俗一些就是：",[49,4583,4584],{},"3-6 岁的孩子就像一辆装了强劲引擎但刹车系统还没完全装好的车，动力十足，但控制力不足。",[14,4586,4587],{},"对于我们常采取的方法：孩子越控制不住，我们越来火，甚至可能打人。",[14,4589,4590],{},"首先结论摆上来，这种做法绝对是错误的。孩子的情绪会越陷越深，我们也会越来越火大，最终陷入两败俱伤的局面。",[14,4592,4593],{},[49,4594,4595],{},"孩子情绪收不住是必然的，我们千万不要从\"控制情绪\"的角度去思考方法，而是要从匹配脑部发展规律的角度去寻找解决方案。",[496,4597,4598],{"id":4598},"情绪元凶-杏仁核",[14,4600,4601],{},"情绪的根源是杏仁核。3-6 岁时，杏仁核的反应非常敏感。遇到让他们不开心的事情，比如被拒绝吃糖，杏仁核会迅速发出\"情绪警报\"，让孩子进入情绪爆发的状态。",[14,4603,4604],{},[55,4605],{"alt":4606,"src":4607},"杏仁核","\u002Fa\u002Fchild-emotion-control\u002F%E7%94%A8%E6%BC%AB%E7%94%BB%E8%A7%A3%E9%87%8A%E6%9D%8F%E4%BB%81%E6%A0%B8%E4%BD%8D%E7%BD%AE.png",[496,4609,4610],{"id":4610},"理性的来源-前额叶",[14,4612,4613],{},"为什么我们成人可以在悲伤时不流泪，在开心时表现平静？主要是因为我们有成熟的前额叶皮层帮忙控制情绪。",[14,4615,4616],{},[55,4617],{"alt":4618,"src":4619},"前额叶","\u002Fa\u002Fchild-emotion-control\u002F%E5%89%8D%E9%A2%9D%E5%8F%B6.png",[14,4621,4622],{},"然而，3-6 岁的娃，他们情绪中负责\"刹车\"的前额叶皮层还在发育中。这个部分的神经回路虽然在逐渐成熟，但还远远没有达到能够完全控制情绪的水平。",[14,4624,4625],{},"所以，当孩子情绪爆发时，他们很难像成年人一样快速平复下来。",[496,4627,4629],{"id":4628},"说不出来就宣泄出来","说不出来，就宣泄出来",[14,4631,4632],{},"孩子的语言能力和认知能力也在发展中。他们可能还无法用语言清楚地表达自己的感受，也不太能理解复杂的情绪原因。",[14,4634,4635],{},"这种\"说不清、想不透\"的状态，也让他们更容易通过哭闹或发脾气来宣泄情绪。",[14,4637,4638],{},[55,4639],{"alt":4640,"src":4641},"不知道怎么描述","\u002Fa\u002Fchild-emotion-control\u002F%E4%B8%8D%E7%9F%A5%E9%81%93%E6%80%8E%E4%B9%88%E6%8F%8F%E8%BF%B0.png",[14,4643,4644,4645,4648],{},"这几股力量互相拉扯。",[49,4646,4647],{},"来情绪了，让杏仁核一放大，前额叶又不管，孩子也说不出情况。"," 做好准备，属于你我的黑暗时刻就到来了。",[18,4650,4652],{"id":4651},"为什么孩子闹情绪时家长要先把自己稳住","为什么孩子闹情绪时，家长要先把自己稳住？",[14,4654,4655,4656],{},"孩子释放情绪是必然的，面对这件事的处世之道是：改变自己对待\"情绪中孩子\"的态度，让这件事不再困扰我们。",[49,4657,4658],{},"只有你变佛系了，才好让他们平静。",[14,4660,4661],{},[49,4662,4663],{},"现在我们不要想着怎么收住他们的情绪，而是锻炼自己在高压下平静下来的能力。",[14,4665,4666],{},"接着，我提供一些我常用且比较有效的\"情绪布洛芬\"方法，暂时缓解\"情绪症状\"，之后再逐步用其他方法根治。",[1193,4668,4669,4675,4681],{},[184,4670,4671,4674],{},[49,4672,4673],{},"立马切换环境","：如果还在原场景，很容易触景生情。先逃离现场，离开\"伤心地\"，为下一步做好准备。",[184,4676,4677,4680],{},[49,4678,4679],{},"不要让他思考，不要提问！","：\"你为什么哭？\"，\"刚刚发生了什么？\"，\"要么继续哭，要么跟我走。\" 这类选择或问题，根本进不到前额叶。情绪脑被杏仁核攻占了，大脑已经不正常工作，这类问题没有意义，只会加剧情绪化。",[184,4682,4683,4686],{},[49,4684,4685],{},"转移注意力大法","：\"看，那有一只猫\"，\"听，这是什么奇怪的声音\"，\"快看你爸在拍肚皮。\" 最好给出带上感官系统参与的注意力切换，让他的感官迅速被使用，用感官信号切断情绪信号。",[14,4688,4689],{},"这就是我的三大绝招。",[14,4691,4692],{},"举个昨天发生的例子。我大女儿生病睡前吃了一颗药，被小女儿看见了。她以为是什么好吃的东西，但我们不让她吃。我们试图讲道理，结果她在床上开始闹情绪。情绪到达巅峰的过程有 5 分钟。如果我在 5 分钟内灭火了还好，但我没抓住黄金时间，她爆发了。",[14,4694,4695],{},"没办法，我从我的\"工具箱\"开始调用秘密工具：",[1193,4697,4698,4701,4704],{},[184,4699,4700],{},"从床上抱走，在房子里走了 1 分钟，最后不见好，我走到离卧室最远的生活阳台（也避免吵到其他人睡觉）。",[184,4702,4703],{},"在走的过程中，我还尝试问\"为什么哭？\"，\"我能怎么帮你？\"，\"解释为什么不能吃药\"。结果屁用没有，继续哭（这是反例）。",[184,4705,4706],{},"发现窗外有个很像猫咪的黑影（找到救星了）。\"你看那里怎么会有只猫\"，\"那黑黑的是不是猫？（表面是提问，实则视觉切换）。\"",[14,4708,4709],{},"当我试探性地用猫咪救星切换成感官信号时，她立马转头看向我指的方向，我就知道奏效了！趁热打铁，我继续这个话题，在救命稻草上持续进攻，直到她从哭转变成啜泣。",[14,4711,4712],{},"整个\"灭火\"过程持续了 5 分钟，对我来说也算快的了。",[18,4714,4716],{"id":4715},"怎样在日常中帮孩子巩固情绪掌控力","怎样在日常中帮孩子巩固情绪掌控力？",[14,4718,4719],{},"了解了大脑发育规律后，我们知道 3-6 岁是情绪控制能力发展的关键期。虽然不能强求孩子立刻\"控制\"住情绪，但我们可以顺应大脑发展，通过日常互动帮助他们逐步巩固情绪掌控力。",[1193,4721,4722,4728,4734],{},[184,4723,4724,4727],{},[49,4725,4726],{},"接纳并命名情绪","：当孩子情绪爆发时，首先要提供安全感，让他们知道情绪是被允许的。然后，用简单的语言帮他们识别和命名情绪（\"你现在很生气\u002F伤心\"）。这有助于激活尚在发育的前额叶，将失控的情绪转化为可理解的语言信号。",[184,4729,4730,4733],{},[49,4731,4732],{},"平静时复盘与演练","：情绪中，完全无理性，但情绪过后，是可以安排理性的黄金时间。和孩子一起回顾刚才发生的事，讨论除了哭闹之外，还可以用什么方式表达需求或不满。可以通过角色扮演、情绪卡片等游戏方式，模拟情景，练习深呼吸、暂停等调节技巧。",[184,4735,4736,4739],{},[49,4737,4738],{},"强化正向行为","：当孩子尝试用语言表达、或者用了练习过的方法（哪怕只有一点点进步），要及时给予具体的表扬和鼓励。正向反馈能有效强化大脑中负责情绪调节的神经连接，让他们更有动力去尝试自我控制。",[14,4741,4742],{},"这个过程需要耐心，重点在于利用每一次情绪事件，将其转化为孩子学习和大脑发育的机会，逐步巩固他们的情绪掌控能力。",[18,4744,4746],{"id":4745},"读完后可以带走哪些要点","读完后可以带走哪些要点？",[14,4748,4749],{},"小孩有情绪很正常！根本原因是大脑未成熟（前额叶弱，杏仁核强）。有了这个认知，接下来都好处理。",[14,4751,4752],{},"我们应先冷静，即时策略是换环境、不讲理、转移注意。长期需在平静时帮孩子识别情绪、复盘演练、正向强化，助其逐步提升情绪掌控力。",{"title":316,"searchDepth":317,"depth":317,"links":4754},[4755,4760,4761,4762],{"id":4571,"depth":320,"text":4572,"children":4756},[4757,4758,4759],{"id":4598,"depth":317,"text":4598},{"id":4610,"depth":317,"text":4610},{"id":4628,"depth":317,"text":4629},{"id":4651,"depth":320,"text":4652},{"id":4715,"depth":320,"text":4716},{"id":4745,"depth":320,"text":4746},"\u002Fa\u002Fchild-emotion-control\u002F孩子哭闹.png","2025-05-20","从杏仁核和前额叶发育角度，理解 3-6 岁孩子情绪失控的原因，附三大即时策略",[4767,4770,4773,4776],{"q":4768,"a":4769},"为什么 3-6 岁的孩子情绪总是收不住？","因为大脑发育不成熟。负责情绪警报的杏仁核在这个阶段非常敏感，而负责情绪控制的前额叶皮层还在发育中。就像一辆装了强劲引擎但刹车没装好的车，动力十足但控制力不足，情绪爆发是生理性的必然现象。",{"q":4771,"a":4772},"孩子哭闹时家长应该怎么做？","三步即时策略：1）立即切换环境，离开触发情绪的现场；2）不要提问或讲道理，情绪中大脑已被杏仁核'劫持'，理性对话无效；3）用感官信号转移注意力，如'看那边有只猫'，用视觉、听觉切断情绪信号。最关键的前提是先让自己冷静下来。",{"q":4774,"a":4775},"为什么孩子情绪爆发时讲道理没用？","因为情绪爆发时，杏仁核完全占领了大脑的控制权，负责理性思考的前额叶根本无法正常工作。这时候问'你为什么哭'或解释'为什么不能吃糖'，信息根本进不到理性脑区，只会加剧情绪化。要等情绪平复后，在'理性黄金时间'再做复盘和引导。",{"q":4777,"a":4778},"如何在日常中帮助孩子逐步提升情绪控制力？","三步长期策略：1）接纳并命名情绪——告诉孩子'你现在很生气'，帮助激活正在发育的前额叶；2）平静时复盘——情绪过后和孩子讨论除了哭闹还能怎么表达，用角色扮演或情绪卡片做练习；3）正向强化——当孩子尝试用语言表达时及时表扬，强化大脑中负责情绪调节的神经连接。",{},"\u002Farticles\u002Fchild-emotion-control",{"title":4538,"description":4765},[4783,4784,4606,4785,4786,4787,4788],"儿童情绪管理","孩子发脾气怎么办","前额叶发育","3-6岁情绪控制","育儿方法","儿童脑科学","articles\u002Fchild-emotion-control",[2866,3979],"c-3gkE-_GMPKrHvDpVaHo3fgPT_OD8pcqp9REHFdwDg",{"id":4793,"title":4794,"body":4795,"cover":4815,"date":4956,"description":4957,"draft":329,"extension":330,"faq":4958,"featured":329,"meta":4971,"navigation":345,"path":4972,"readingTime":347,"seo":4973,"seoKeywords":4974,"stem":4982,"summary":4801,"tags":4983,"type":362,"updated":363,"video":363,"__hash__":4984},"articles\u002Farticles\u002Ftransfer-learning-for-me.md","迁移学习思维：AI 时代的核心生存技能",{"type":8,"value":4796,"toc":4945},[4797,4802,4807,4810,4816,4822,4826,4829,4832,4835,4838,4844,4848,4851,4854,4860,4863,4869,4872,4878,4881,4888,4894,4897,4901,4904,4907,4910,4913,4916,4923,4926,4929,4933,4936,4939,4942],[11,4798,4799],{},[14,4800,4801],{},"AI 时代单点技能快速贬值，迁移学习思维才是核心生存技能。将新旧知识在本质层面做关联，用一套知识体系应对不断变化的时代。",[11,4803,4804],{},[14,4805,4806],{},"标题的确比较营销，但时代的变化，你我都切身体会着。这是一个高速迭代的时代，今天一个\"AI 大模型又突破，不用 AI 就跟不上时代\"，明天发现\"整个工厂没有工人，全都是机器人在工作\"。难道你我就只能拍桌子说\"老子不干了\"？我想大多数人并不会这样选，而是着手寻找一种能够快速学会新技能的方法。",[14,4808,4809],{},"我本科是土木专业，说真的，那时候面对着混凝土，我对自己的未来的期望就是一个搬砖盖楼的。",[14,4811,4812],{},[55,4813],{"alt":4814,"src":4815},"当时的混凝土科研项目","\u002Fa\u002Ftransfer-learning-for-me\u002FIMG_20140509_111341.jpg",[14,4817,4818,4819,130],{},"哪成想现在变成了一个 AI 从业者，下次转型说不定就变成了一个科技奶爸。能给我带来如此多变的条件，我想归根结底是一种 ",[49,4820,4821],{},"迁移学习的思维模式",[18,4823,4825],{"id":4824},"为什么过去的成长观不再适合-ai-时代","为什么过去的成长观不再适合 AI 时代？",[14,4827,4828],{},"在过去的几十年里，我们一直推崇 T 型或 π 型人才的培养模式，强调\"一专多能\"的发展路径。然而，随着AI大模型的快速发展，这种传统的能力培养模式正面临着前所未有的挑战。",[14,4830,4831],{},"AI，尤其是生成式 AI 使得知识获取变得前所未有的简单，信息壁垒被打破，通用技能，甚至是一些普遍的专业性技能的价值正在快速贬值。",[14,4833,4834],{},"我们正目睹着这样的现实：工业机器人取代了流水线工人，而许多工人却难以快速转型；AI绘画工具的普及使得原本需要10个设计师的项目，现在只需要1个懂AI的设计师就能完成。这些案例都在警示我们：当 AI 已可以替掉我们花了数年时间培养的熟练技能后，我们却可能无法顺利转型，去到新的领域。",[14,4836,4837],{},"就从我们接受 AI 的趋势来看，这种趋势会发生得越来越快。",[14,4839,4840],{},[55,4841],{"alt":4842,"src":4843},"DeepSeek 获取 1 亿用户的时间对比","\u002Fa\u002Ftransfer-learning-for-me\u002Fdeepseek1m_user.jpg",[18,4845,4847],{"id":4846},"怎样从-ai-的迁移学习算法理解人类学习","怎样从 AI 的迁移学习算法理解人类学习？",[14,4849,4850],{},"在人类的学习思考中，类比是一种十分有效的方式。就像小孩通过观察猫的行为来理解老虎一样，我们常常通过已知的知识来理解新事物。",[14,4852,4853],{},"这种学习方式与AI中的迁移学习、领域适应算法（Domain Adaptation）有着惊人的相似之处。",[14,4855,4856],{},[55,4857],{"alt":4858,"src":4859},"领域迁移","\u002Fa\u002Ftransfer-learning-for-me\u002Finfrastructures-09-00131-g001-550.jpg",[14,4861,4862],{},"这是一篇介绍如何迁移对历史桥梁结构的认知，到新桥梁上，利用对旧桥梁的健康数据，来判断新桥梁的健康状态的论文。左边坐标图中看到的是旧桥梁和新桥梁的数据差别，右边是模型训练理解之后，将新旧桥梁的认知进行了融合，迁移了旧桥梁的知识。这样就能对新桥梁做决策与判断了。",[14,4864,4865,4866],{},"很学术的介绍哈。让我来用能听懂的话再说一次：",[49,4867,4868],{},"将新旧知识建立起关联，并利用旧知识辅助新知识的理解，其实在 AI 模型训练中是一种经典方法。",[14,4870,4871],{},"再深入一些，模型对新旧认知的理解，并不是直白的表层信息（特征）的理解，而是掰开了揉碎了，做了刨根问底的 \"非线性变化\" 之后的理解。",[14,4873,4874],{},[55,4875],{"alt":4876,"src":4877},"非线性变化","\u002Fa\u002Ftransfer-learning-for-me\u002Fnonlinear_transformation.gif",[14,4879,4880],{},"对新旧数据的这种非线性变化，在 \"潜空间\" Latent Space 进行\"数据本质\"的对齐操作，恰恰是模型能够比较容易地做新旧知识迁移的底层原因。",[14,4882,4883,4884,4887],{},"我再翻译成人话，举个例子： ",[49,4885,4886],{},"要想将动物研究的理论迁移到人身上，我们必然会对动物的行为进行深度分析，同时也在人身上深度分析类似的可以对比的行为，将两者在生物本质层面做关联，然后才能从动物实验中迁移一些研究成果到人身上。"," 老鼠的 25 号宇宙实验就是一个用老鼠研究人类社会现象的案例。",[14,4889,4890],{},[55,4891],{"alt":4892,"src":4893},"老鼠 25 号宇宙实验","\u002Fa\u002Ftransfer-learning-for-me\u002F25universe.jpg",[14,4895,4896],{},"在我们的日常生活中，迁移学习的思维模式无处不在。例如，我经常从AI算法的角度来思考人脑的学习过程，发现两者在信息处理、模式识别等方面有着惊人的相似性。另一个有趣的案例是，有人用物理学中的能量波理论来解释股票市场的波动，这种跨学科的知识迁移往往能带来新的洞见。",[18,4898,4900],{"id":4899},"不断转型给我带来了什么启示","不断转型给我带来了什么启示？",[14,4902,4903],{},"我从国内教育体系迁移到国外，从土木专业迁移到 AI 专业，现在又从开发迁移到产品经理，甚至以后可能要去做科技奶爸。不断地迁移，让我持续发掘出迁移、跨领域的好处。",[496,4905,4906],{"id":4906},"记性不好者的福音",[14,4908,4909],{},"我记不住东西，特别年纪越大，越容易忘。不断地转型，学习新领域的事物，迫使我去发现这些事物在本质上的共性。",[14,4911,4912],{},"让我能用有限的认知，管理快速增长的知识面。",[496,4914,4915],{"id":4915},"带来更深度的理解",[14,4917,4918,4919,4922],{},"我前面也提到，想要成功地迁移新旧知识，就必须对其做深度的理解。而在深度理解的时候，我们实际在做的也是对知识的压缩。我在之前的",[279,4920,4921],{"href":3893},"《会学习=会压缩》","的文章中也提过，压缩学习看上去会丢掉很多信息，但丢掉的是噪声，让我们在庞大的信息中找到核心本质信息，在这种更纯净信息上建立知识体系，这是一种更有效的学习方式。",[496,4924,4925],{"id":4925},"从单点到体系的知识建设",[14,4927,4928],{},"迁移学习，是牵一发而动全身的！别光看我为新知识找到了对应的老知识，但是别忘了，这也是回忆巩固老知识的时刻。让我们能充分利用这一时刻来构建整体的知识网络。相比单纯去学习新知识，迁移学习，让我们提升了整个知识体系的稳定性。",[18,4930,4932],{"id":4931},"败也-ai成也-ai","败也 AI，成也 AI",[14,4934,4935],{},"AI 确实带来了对我们知识的降维打击。但它同时也为我们提供了快速迁移技能的途径。关键在于学会如何有效地利用AI工具。让我们利用 AI 搭建一个迁移知识的桥梁，让它多为我们建立类比的基础。做更有效率的迁移学习。",[18,4937,4938],{"id":4938},"结语",[14,4940,4941],{},"在这个 AI 快速发展的时代，迁移学习不仅是一种学习方法，更是一种生存智慧。它让我们能够在不断变化的环境中保持竞争力，在知识的海洋中游刃有余。通过建立知识间的联系，深入理解本质，我们不仅能更好地适应变化，还能在这个过程中不断提升自己的认知水平。",[14,4943,4944],{},"记住，重要的不是我们掌握了多少具体的技能，而是我们是否掌握了快速学习和迁移知识的能力。在 AI 时代，这种能力将成为我们最宝贵的财富。让我们拥抱变化，善用 AI 工具，在知识的迁移中不断成长，在变革的浪潮中扬帆远航。",{"title":316,"searchDepth":317,"depth":317,"links":4946},[4947,4948,4949,4954,4955],{"id":4824,"depth":320,"text":4825},{"id":4846,"depth":320,"text":4847},{"id":4899,"depth":320,"text":4900,"children":4950},[4951,4952,4953],{"id":4906,"depth":317,"text":4906},{"id":4915,"depth":317,"text":4915},{"id":4925,"depth":317,"text":4925},{"id":4931,"depth":320,"text":4932},{"id":4938,"depth":320,"text":4938},"2025-03-28","从土木到 AI 再到产品经理，用迁移学习的思维模式拥抱每一次转型",[4959,4962,4965,4968],{"q":4960,"a":4961},"什么是迁移学习思维？","将已有领域的知识'迁移'到新领域，通过深度理解找到新旧知识在本质层面的共性。就像 AI 中的 Domain Adaptation 算法一样，不是表面信息的简单对比，而是'掰开揉碎'后在潜空间做本质对齐。从土木到 AI 到产品经理，每次转型都是一次成功的迁移。",{"q":4963,"a":4964},"AI 时代为什么传统的 T 型人才模式不够用了？","AI 使得通用技能甚至普遍专业技能快速贬值，工业机器人取代流水线工人、AI 绘画让一个人顶十个设计师。当花数年培养的技能被替代后，缺乏迁移能力的人难以转型。迁移学习思维让你能用有限认知管理快速增长的知识面，在变化中保持竞争力。",{"q":4966,"a":4967},"迁移学习如何帮助构建更稳定的知识体系？","迁移学习是牵一发而动全身的过程。为新知识找到对应的老知识时，同时也在回忆巩固老知识。相比单纯学习新知识，迁移学习让我们在建立新连接的同时加固旧连接，提升整个知识体系的稳定性。知识之间的连接越多，抗遗忘能力越强。",{"q":4969,"a":4970},"如何用 AI 工具辅助迁移学习？","AI 虽然带来了对传统技能的降维打击，但同时也为快速迁移提供了途径。可以让 AI 帮你在新旧领域之间建立类比基础——比如请 AI 分析'机器学习的训练过程和人类学习有哪些相似之处'，利用 AI 搭建迁移知识的桥梁，做更有效率的跨领域学习。",{},"\u002Farticles\u002Ftransfer-learning-for-me",{"title":4794,"description":4957},[4975,4976,4977,4978,4979,4980,4981],"迁移学习","跨领域转型","AI 时代生存技能","知识迁移","类比学习","职业转型","知识体系构建","articles\u002Ftransfer-learning-for-me",[1268,360],"iOjPpaac5fxtq7v_bxRv8n8dXyE8HLJy_4EfTn7oU0A",{"id":4986,"title":4987,"body":4988,"cover":5241,"date":5242,"description":5243,"draft":329,"extension":330,"faq":5244,"featured":329,"meta":5257,"navigation":345,"path":5258,"readingTime":347,"seo":5259,"seoKeywords":5260,"stem":5267,"summary":4994,"tags":5268,"type":362,"updated":363,"video":363,"__hash__":5269},"articles\u002Farticles\u002Fai-prompt-for-teens.md","AI 不懂我？三步得到「超懂你」的智能助手",{"type":8,"value":4989,"toc":5227},[4990,4995,5003,5005,5009,5017,5020,5023,5029,5032,5037,5040,5043,5045,5049,5053,5056,5062,5069,5075,5078,5082,5085,5091,5098,5104,5107,5111,5114,5120,5127,5133,5136,5138,5142,5148,5154,5160,5171,5177,5180,5182,5186,5192,5198,5204,5206,5210,5213,5224],[11,4991,4992],{},[14,4993,4994],{},"和 AI 对话总得到无用回答？掌握身份卡、坐标系、脚手架三要素，让 AI 从'书呆子学霸'秒变你的专属学习搭子。",[11,4996,4997],{},[14,4998,4999,5002],{},[49,5000,5001],{},"30秒导读","\n你是不是经常觉得 AI 就像个「书呆子学霸」？明明认真提问，却总收到用不上的答案：想提高成绩却被塞清华作息表，求背单词技巧得到学术论文......\n这篇攻略专治 AI 的「听不懂人话」！用 3 个课间就能掌握的方法+真实场景模板，让 AI 秒变懂你的学习搭子。",[1023,5004],{},[18,5006,5008],{"id":5007},"为什么-ai-总在假装听懂","为什么 AI 总在「假装听懂」？",[11,5010,5011],{},[14,5012,5013,5014],{},"和 AI 对话就像给新同学指路，",[49,5015,5016],{},"细节决定 TA 能不能找到你",[496,5018,5019],{"id":5019},"对比实验",[14,5021,5022],{},"普通提问：\"怎么提高数学？\" → 收到过于笼统的概念描述\n（AI 可能会回答：\"多做题、打好基础、查漏补缺。\"——听起来对，但完全不知道从哪儿下手）",[14,5024,5025],{},[55,5026],{"alt":5027,"src":5028},"怎么提高数学","\u002Fa\u002Fai-prompt-for-teens\u002F%E6%80%8E%E4%B9%88%E6%8F%90%E9%AB%98%E6%95%B0%E5%AD%A6.png",[14,5030,5031],{},"精准提问：\"我现在初二，函数题总丢分，每天最多花30分钟补基础，用做错题手账的方法帮我规划两周提升计划\"\n（就像告诉同学「帮我带999感冒灵颗粒，绿色包装，放在小卖部冰柜第二层」）",[14,5033,5034],{},[55,5035],{"alt":5019,"src":5036},"\u002Fa\u002Fai-prompt-for-teens\u002F%E5%AF%B9%E6%AF%94%E5%AE%9E%E9%AA%8C.png",[496,5038,5039],{"id":5039},"理解差距",[14,5041,5042],{},"模糊需求 = 广播站寻人启事只说「找穿校服的同学」\n精准需求 = 班级群里发「找穿3XL蓝色校服、戴圆框眼镜的小林」",[1023,5044],{},[18,5046,5048],{"id":5047},"怎样用黄金三要素把-ai-变成你的学习外挂","怎样用黄金三要素把 AI 变成你的「学习外挂」？",[496,5050,5052],{"id":5051},"一身份卡给-ai-一个明确角色","（一）身份卡：给 AI 一个明确角色",[14,5054,5055],{},"✖️ 错误示范：\"推荐书单\" → 得到《百年孤独》《资本论》\n（就像让英语老师推荐物理辅导书）",[14,5057,5058],{},[55,5059],{"alt":5060,"src":5061},"推荐书","\u002Fa\u002Fai-prompt-for-teens\u002F%E6%8E%A8%E8%8D%90%E4%B9%A6.png",[14,5063,5064,5065,5068],{},"✔️ 正确姿势：",[79,5066,5067],{},"\"你现在是初中语文课代表，根据我读完了《朝花夕拾》但觉得《西游记》文言文太难的情况，推荐3本易读的近代散文集，每本用追星打榜的安利方式写推荐语\"","\n（就像指定「让同桌帮忙整理笔记」而不是「随便找人借笔记」）",[14,5070,5071],{},[55,5072],{"alt":5073,"src":5074},"身份卡","\u002Fa\u002Fai-prompt-for-teens\u002F%E8%AF%AD%E6%96%87%E8%AF%BE%E4%BB%A3%E8%A1%A8.png",[14,5076,5077],{},"原理：让 AI 从「图书馆管理员」变成「你的专属学习委员」",[496,5079,5081],{"id":5080},"二坐标系标出你的知识定位","（二）坐标系：标出你的知识定位",[14,5083,5084],{},"✖️ 翻车现场：\"解释碳中和\" → 输出学术报告\n（就像问老师题却听到「根据拉格朗日定理可知...」）",[14,5086,5087],{},[55,5088],{"alt":5089,"src":5090},"解释碳中和","\u002Fa\u002Fai-prompt-for-teens\u002F%E8%A7%A3%E9%87%8A%E7%A2%B3%E4%B8%AD%E5%92%8C.png",[14,5092,5093,5094,5097],{},"✔️ 救命操作：",[79,5095,5096],{},"\"我只有地理课学过温室效应基础概念，请用班级回收塑料瓶换班费的过程，解释碳中和怎么减少碳排放\"","\n（用值日生工作类比专业概念）",[14,5099,5100],{},[55,5101],{"alt":5102,"src":5103},"坐标系","\u002Fa\u002Fai-prompt-for-teens\u002F%E5%9D%90%E6%A0%87%E7%B3%BB.png",[14,5105,5106],{},"效果对比：就像告诉食堂阿姨「少放辣」VS「辣度是上周四吃炸酱面时的一半」",[496,5108,5110],{"id":5109},"三脚手架搭建理解阶梯","（三）脚手架：搭建理解阶梯",[14,5112,5113],{},"✖️ 无效沟通：\"什么是向量？\" → 继续迷惑\n（就像直接问「怎么考进年级前十」）",[14,5115,5116],{},[55,5117],{"alt":5118,"src":5119},"什么是向量","\u002Fa\u002Fai-prompt-for-teens\u002F%E4%BB%80%E4%B9%88%E6%98%AF%E5%90%91%E9%87%8F.png",[14,5121,5122,5123,5126],{},"✔️ 有效方法：",[79,5124,5125],{},"\"用体育课接力赛时传接力棒的方向和力度，解释向量为什么要有大小和方向两个要素\"","\n（用跑步比赛理解数学概念）",[14,5128,5129],{},[55,5130],{"alt":5131,"src":5132},"脚手架","\u002Fa\u002Fai-prompt-for-teens\u002F%E8%84%9A%E6%89%8B%E6%9E%B6.png",[14,5134,5135],{},"记忆技巧：把新知识「挂」在熟悉的校园生活场景上",[1023,5137],{},[18,5139,5141],{"id":5140},"提问改写前后效果差别有多大","提问改写前后，效果差别有多大？",[14,5143,5144,5147],{},[49,5145,5146],{},"翻车案例","：\n提问：\"怎么背化学元素周期表\" → 感觉过于泛，说了等于没说",[14,5149,5150],{},[55,5151],{"alt":5152,"src":5153},"怎么背化学元素周期表","\u002Fa\u002Fai-prompt-for-teens\u002F%E6%80%8E%E4%B9%88%E8%83%8C%E5%8C%96%E5%AD%A6%E5%85%83%E7%B4%A0%E5%91%A8%E6%9C%9F%E8%A1%A8.png",[14,5155,5156,5159],{},[49,5157,5158],{},"满级操作","：\n`\"你现在是化学课代表，为满足以下条件的我设计计划：",[181,5161,5162,5165,5168],{},[184,5163,5164],{},"每天背15分钟",[184,5166,5167],{},"目前只记得氢氦锂铍硼",[184,5169,5170],{},"想用课间操排队时间记忆\n用记同班同学座位表的方法，把前20号元素做成教室座位闯关游戏\"`\n（获得可执行的场景化方案）",[14,5172,5173],{},[55,5174],{"alt":5175,"src":5176},"迷茫到清晰","\u002Fa\u002Fai-prompt-for-teens\u002F%E8%BF%B7%E8%8C%AB%E5%88%B0%E6%B8%85%E6%99%B0.png",[14,5178,5179],{},"效果对比：从「不知所措」变成「在教室里玩寻宝游戏」",[1023,5181],{},[18,5183,5185],{"id":5184},"即学即用的校园场景工具包","即学即用的「校园场景工具包」",[14,5187,5188,5191],{},[49,5189,5190],{},"学习攻坚","：\n\"假设你是从年级200名逆袭到前50的学姐，用整理爱豆行程表的方式，帮我制定期中考试前英语语法突击计划\"",[14,5193,5194,5197],{},[49,5195,5196],{},"时间管理","：\n\"你作为成功平衡社团活动和学习的学长，请用规划校运会接力赛训练的方法，教我怎么安排晚自习写作业、预习和休息的时间\"",[14,5199,5200,5203],{},[49,5201,5202],{},"社交难题","：\n\"你现在是调解过同桌矛盾的班长，用处理班级辩论赛分歧的经验，帮我想3个化解闺蜜因偶像塌房吵架的方法\"",[1023,5205],{},[18,5207,5209],{"id":5208},"下次用-ai-前要先完成哪三步","下次用 AI 前要先完成哪三步？",[14,5211,5212],{},"下次高效使用 AI，为你量身订制回答内容前完成「灵魂三问」：",[1193,5214,5215,5218,5221],{},[184,5216,5217],{},"我给 AI 戴了「学生证」吗？（身份卡）",[184,5219,5220],{},"我说清「我现在哪儿」了吗？（坐标系）",[184,5222,5223],{},"我搭了「爬向答案的梯子」吗？（脚手架）",[14,5225,5226],{},"这样你才能收获一个超懂你的智能助手。",{"title":316,"searchDepth":317,"depth":317,"links":5228},[5229,5233,5238,5239,5240],{"id":5007,"depth":320,"text":5008,"children":5230},[5231,5232],{"id":5019,"depth":317,"text":5019},{"id":5039,"depth":317,"text":5039},{"id":5047,"depth":320,"text":5048,"children":5234},[5235,5236,5237],{"id":5051,"depth":317,"text":5052},{"id":5080,"depth":317,"text":5081},{"id":5109,"depth":317,"text":5110},{"id":5140,"depth":320,"text":5141},{"id":5184,"depth":320,"text":5185},{"id":5208,"depth":320,"text":5209},"\u002Fa\u002Fai-prompt-for-teens\u002F怎么提高数学.png","2025-03-03","教青少年用身份卡、坐标系、脚手架三要素精准提问 AI，让 AI 秒变学习搭子",[5245,5248,5251,5254],{"q":5246,"a":5247},"为什么 AI 总是给出笼统无用的回答？","因为提问太模糊，AI 缺少关键上下文。就像给新同学指路只说'往前走'一样，AI 需要你的身份信息（年级、水平）、知识定位（已学什么）和理解方式（用什么类比），才能给出真正有用的回答。",{"q":5249,"a":5250},"青少年如何快速学会和 AI 高效对话？","记住'灵魂三问'：1）给 AI 戴'学生证'——明确它的角色（如语文课代表）；2）说清'我在哪'——标出你的知识水平；3）搭'理解梯子'——用熟悉的校园场景做类比。三步下来，AI 的回答质量会有质的飞跃。",{"q":5252,"a":5253},"什么是'身份卡'提问法？","就是给 AI 指定一个明确角色，而不是让它当'万能百科全书'。比如'你是初中语文课代表'比'推荐书单'有效得多。就像指定'让同桌帮忙整理笔记'而不是'随便找人借笔记'，角色越具体，AI 的回答越贴合你的实际需求。",{"q":5255,"a":5256},"为什么要用熟悉的场景做类比来向 AI 提问？","这就是'脚手架'法——用你已经理解的东西作为理解新知识的阶梯。直接问'什么是向量'可能得到一堆公式，但如果说'用接力赛传接力棒的方向和力度来解释向量'，AI 就能把抽象概念挂在你熟悉的校园场景上，理解起来自然又快又深。",{},"\u002Farticles\u002Fai-prompt-for-teens",{"title":4987,"description":5243},[5261,5262,5263,5264,5265,5266],"AI 提问技巧","青少年 AI 使用","prompt 提示词","AI 学习助手","精准提问方法","初中生 AI 学习","articles\u002Fai-prompt-for-teens",[361,1268],"2KTpHMhGyrQ2ncNAVTL3WSWAbO-gRcZ6_sIE-ovQMDk",{"id":5271,"title":5272,"body":5273,"cover":5299,"date":5480,"description":5481,"draft":329,"extension":330,"faq":5482,"featured":329,"meta":5495,"navigation":345,"path":3893,"readingTime":591,"seo":5496,"seoKeywords":5497,"stem":5504,"summary":5279,"tags":5505,"type":362,"updated":363,"video":363,"__hash__":5506},"articles\u002Farticles\u002Fcompress-learning.md","会学习 = 善于压缩信息",{"type":8,"value":5274,"toc":5467},[5275,5280,5285,5288,5291,5294,5300,5304,5310,5316,5319,5325,5328,5333,5337,5340,5345,5355,5358,5361,5367,5370,5376,5379,5384,5388,5391,5395,5406,5412,5416,5419,5424,5427,5431,5434,5439,5442,5446,5449,5452,5457,5461,5464],[11,5276,5277],{},[14,5278,5279],{},"高效学习的本质是信息压缩。类比 AI 自编码器的中间层瓶颈设计，人脑只有被迫压缩知识时才会形成深层理解，而非机械记忆。",[11,5281,5282],{},[14,5283,5284],{},"我家儿子 3 岁时，迷上了模仿游戏。有一天，我假装生气叉腰走开，他立刻学我生气叉腰走开，像模像样十分有趣。不过这个简单的模仿行为让我不禁思考：模仿本质上是一种数据无损搬运，并不是一种深度思考后的学习过程。类似的抄单词，死记硬背这类的学习过程和模仿并无差异，所以不算真正的学习。",[14,5286,5287],{},"那么看透\"会学习\"的本质，才能让我从\"模仿式学习\"升级到\"理解型学习\"！",[14,5289,5290],{},"我十分熟悉 AI，见证了 AI 从复制知识，到应用知识的过程。为什么我标题说：学会学习=善于压缩信息？这两个看似不相关的描述，其实背后有着深刻的联系。现在，我们就从 AI 模型训练的视角，探讨一下模型的\"压缩式学习\"，并最终应用这种技巧到自己的学习中。",[14,5292,5293],{},"熟悉 AI 的朋友应该见过各式各样的模型结构。你们有没有发现很多神经网络模型的设计往往是两头大中间小？",[14,5295,5296],{},[55,5297],{"alt":5298,"src":5299},"Basics of Autoencoders","\u002Fa\u002Fcompress-learning\u002Fc8f3f2c8914d58fec5563d3c687bc7e1.png",[18,5301,5303],{"id":5302},"自编码模型如何体现压缩学习的优势","自编码模型如何体现压缩学习的优势？",[14,5305,5306,5307,130],{},"自编码器（Autoencoder）是一种神经网络模型，它的结构特点是输入层和输出层的神经元较多，而中间的隐藏层神经元较少。这种设计的目的，正是为了",[49,5308,5309],{},"强迫模型压缩信息",[14,5311,5312],{},[55,5313],{"alt":5314,"src":5315},"UNET architecture","\u002Fa\u002Fcompress-learning\u002FUNET-architecture-with-Sentinel-2-10-bands-as-input.png",[14,5317,5318],{},"想象一下，如果1G的数据信息要从输入传递到输出，每层信息传递的通道大小一样，那么信息可以完全无损地一个字节一个字节被copy过去。神经网络也不需要理解你那1G的信息有些啥，照搬就好。",[14,5320,5321],{},[55,5322],{"alt":5323,"src":5324},"image.png","\u002Fa\u002Fcompress-learning\u002F5533eff7925426d84670d485c028215e.png",[14,5326,5327],{},"但如果是两头大中间小的结构，中间没法让你直传1G数据，你得想办法把源数据压缩了，然后再在输出端解压出来。在这个过程中，模型得学会在这1G的数据中，丢弃什么，保留什么。解压时得从更少的信息中，还原出所有信息量来。通过这种模式的模型训练，模型才在它的权重中训练出了对源信息的理解能力。",[14,5329,5330],{},[55,5331],{"alt":5323,"src":5332},"\u002Fa\u002Fcompress-learning\u002Fbbf7ebfcc0c992deb430309da80fc0f5.png",[496,5334,5336],{"id":5335},"清华半开卷考试怎样在实践中做知识压缩","清华半开卷考试怎样在实践中做知识压缩？",[14,5338,5339],{},"我们生活实际中也有压缩学习的案例。清华大学有一种半开卷考试，允许学生带一张A4纸进考场，但要求他们把书本知识压缩到这张纸上。",[14,5341,5342],{},[55,5343],{"alt":316,"src":5344},"\u002Fa\u002Fcompress-learning\u002Fad14aa3165243f48e0eb0273af1efd14.png",[14,5346,5347,5348,5351,5352,130],{},"这种做法，本质上也是一种信息压缩的学习方法。学生们必须在有限的空间内，提炼出最重要的知识点，建立知识之间的链接。和 ",[49,5349,5350],{},"两头大中间小"," 的模型一样，",[49,5353,5354],{},"迫使我们将书本知识（大）压缩成 A4 纸（小），然后再利用 A4 纸解压出知识去考试作答（大）",[496,5356,5357],{"id":5357},"两头大中间小的结构在模型中无处不在",[14,5359,5360],{},"神经网络之父 Hinton 曾提到，大语言模型的体积和链接数是有限的，因此它只能将知识压缩、提炼、找到关联并存储到权重中。这种压缩和提炼的过程，正是迫使模型主动去\"理解\"知识，将知识关联在同一个网络连接的关键。",[14,5362,5363],{},[55,5364],{"alt":5365,"src":5366},"实践中的扩散模型","\u002Fa\u002Fcompress-learning\u002F7d8803fe879f5797cfafb7d965cb5d88.jpg",[14,5368,5369],{},"在大语言模型 GPT，扩散模型 SD，生成对抗模型 GAN，UNet 等等，都能找到这样类似的两头大中间小的强迫性信息压缩结构。可以说，算法研究者们正在验证 AI 的学习方法就是一种\"压缩学习\"的方法。",[14,5371,5372],{},[55,5373],{"alt":5374,"src":5375},"U-Net Explained","\u002Fa\u002Fcompress-learning\u002Fd1b06f17d046d217fa5ce76ff5b7d038.png",[14,5377,5378],{},"有兴趣的同学可以再去搜搜机器学习的 \"潜空间 Latent Space\" 这个关键词，模型潜空间的形成，就是模型训练出排除信息中噪声数据，能对源数据的本质特征做提炼的模式。",[14,5380,5381],{},[49,5382,5383],{},"类比人类，潜空间可以被认为是人类对不同事物共性认知的空间。",[18,5385,5387],{"id":5386},"那么我们要怎样学习","那么我们要怎样学习？",[14,5389,5390],{},"既然我们已经从AI模型的视角理解了\"会学习\"的本质是\"善于压缩信息\"，那么接下来，我们该如何将这一洞察应用到自己的学习过程中呢？以下从我自身实践经历中提炼出的实用建议，帮助你从\"模仿式学习\"升级到\"理解型学习\"。",[496,5392,5394],{"id":5393},"_1-用自己的话总结","1. 用自己的话总结",[14,5396,5397,5398,5401,5402,5405],{},"用上文提到的 ",[49,5399,5400],{},"A4 纸总结模式","。每学一本新书或新章节时，即使书中有现成的总结段落，也不要照着抄。强迫用",[49,5403,5404],{},"自己的话","进行压缩和总结。",[14,5407,5408,5409,130],{},"这种提炼过程，本质上是对信息的压缩和重构。它",[49,5410,5411],{},"迫使你主动思考哪些信息是核心，哪些是冗余的，从而形成对知识的深度理解",[496,5413,5415],{"id":5414},"_2-建立知识之间的关联","2. 建立知识之间的关联",[14,5417,5418],{},"压缩信息的另一层含义是找到不同知识之间的关联。AI模型通过压缩信息，将看似不相关的数据点链接在一起，形成潜空间中的抽象表示。同样，我们在学习时，也应该尝试将不同领域的知识联系起来。",[14,5420,5421],{},[55,5422],{"alt":5323,"src":5423},"\u002Fa\u002Fcompress-learning\u002F808979673b661f4454746651aab07d12.png",[14,5425,5426],{},"例如，学习物理时，可以思考它与数学的关系；学习经济学时，可以结合心理学和社会学的视角。这种跨学科的关联不仅能够加深理解，还能激发创造性的思考。",[496,5428,5430],{"id":5429},"_3-从被动接收转为主动输出","3. 从被动接收转为主动输出",[14,5432,5433],{},"AI模型在压缩信息的过程中，不仅仅是接收数据，还需要通过训练不断调整自己的权重，以更好地表达信息。同样，我们在学习时，只有主动\"输出\"后得到反馈，你才能在你的\"潜空间\"修正完善你的认知体系。",[14,5435,5436],{},[55,5437],{"alt":5323,"src":5438},"\u002Fa\u002Fcompress-learning\u002F36a27ac1bfc013354a527e7382624510.png",[14,5440,5441],{},"输出可以是写一篇总结文章、绘制一张思维导图，或者向他人讲解所学内容。通过输出，你可以检验自己是否真正理解了知识，同时也能进一步压缩和提炼信息。",[496,5443,5445],{"id":5444},"_4-培养潜空间思维","4. 培养\"潜空间\"思维",[14,5447,5448],{},"潜空间是AI模型对信息进行抽象和提炼的结果，它代表了模型对数据的本质理解。同样，我们在学习时，也应该培养一种\"潜空间\"思维，即透过现象看本质。",[14,5450,5451],{},"例如，在学习一门语言时，不要仅仅记忆单词和语法，而是多耗些脑力尝试理解语言背后的逻辑和文化；在学习艺术时，不要仅仅模仿技巧，而是多耗些脑力思考艺术表达的情感和思想。",[14,5453,5454],{},[49,5455,5456],{},"你会发现透过现象看本质总是需要更多的脑力消耗，也总是能让你印象更深刻。",[18,5458,5460],{"id":5459},"压缩式学习给我们的学习观带来什么启示","压缩式学习给我们的学习观带来什么启示？",[14,5462,5463],{},"\"会学习\"不仅仅是记忆和模仿，而是一种对信息的深度压缩和提炼。通过借鉴AI模型的\"压缩式学习\"方法，我们可以从被动的\"模仿式学习\"升级到主动的\"理解型学习\"。这不仅能够提高学习效率，还能帮助我们更好地掌握知识的本质，从而在复杂多变的世界中游刃有余。",[14,5465,5466],{},"所以，下一次当你面对大量信息时，不妨问问自己：我该如何压缩这些信息？我该如何提炼它们的核心？当你开始用这种思维方式去学习时，你会发现，学习不再是负担，而是一种充满乐趣的探索过程。",{"title":316,"searchDepth":317,"depth":317,"links":5468},[5469,5473,5479],{"id":5302,"depth":320,"text":5303,"children":5470},[5471,5472],{"id":5335,"depth":317,"text":5336},{"id":5357,"depth":317,"text":5357},{"id":5386,"depth":320,"text":5387,"children":5474},[5475,5476,5477,5478],{"id":5393,"depth":317,"text":5394},{"id":5414,"depth":317,"text":5415},{"id":5429,"depth":317,"text":5430},{"id":5444,"depth":317,"text":5445},{"id":5459,"depth":320,"text":5460},"2024-09-01","从 AI 模型的压缩式学习方法，领悟人类高效学习的本质",[5483,5486,5489,5492],{"q":5484,"a":5485},"什么是压缩式学习？","压缩式学习是指将大量信息提炼为核心原理和规律的学习方式。类比 AI 中的自编码器模型，输入大量数据后通过中间层的'瓶颈'强迫模型学会信息的本质特征，而非逐字逐句记忆。",{"q":5487,"a":5488},"为什么死记硬背不算真正的学习？","死记硬背本质上是数据的'无损搬运'，类似复制粘贴，并没有经过大脑的深度加工。真正的学习需要信息压缩——把知识转化为更精炼的理解形式，这样才能实现知识的灵活应用和迁移。",{"q":5490,"a":5491},"如何在日常学习中实践压缩式学习？","核心方法是：学完一个知识后，尝试用一句话或一个类比向别人解释清楚。如果说不出来，说明还没有真正压缩理解。就像 AI 自编码器的瓶颈层一样，强迫自己用更少的'带宽'表达，反而能抓住知识的本质特征。",{"q":5493,"a":5494},"压缩式学习和 AI 自编码器有什么关系？","AI 自编码器的设计是两头大中间小，中间的'瓶颈层'强迫模型只保留最核心的特征。人脑学习也类似：当你被迫用更精炼的方式理解知识时，大脑会自动过滤噪声，提取本质。这种'被迫压缩'的过程，才是从浅层模仿到深度理解的关键转折。",{},{"title":5272,"description":5481},[5498,5499,5500,5501,3971,5502,5503],"高效学习方法","信息压缩","自编码器","学习本质","知识压缩","深度理解","articles\u002Fcompress-learning",[1268,3979],"V_Y7vs6N_XSk0YEcw6o_CBmantqNtbB5hweh7tqPvWA",{"id":5508,"title":1149,"body":5509,"cover":5571,"date":5688,"description":5689,"draft":329,"extension":330,"faq":5690,"featured":329,"meta":5703,"navigation":345,"path":1148,"readingTime":347,"seo":5704,"seoKeywords":5705,"stem":5712,"summary":5515,"tags":5713,"type":362,"updated":363,"video":363,"__hash__":5714},"articles\u002Farticles\u002Fhuman-with-llm.md",{"type":8,"value":5510,"toc":5681},[5511,5516,5519,5522,5526,5529,5532,5538,5541,5547,5550,5556,5560,5563,5566,5572,5575,5582,5589,5593,5599,5602,5613,5627,5630,5648,5655,5659,5662,5672,5675,5678],[11,5512,5513],{},[14,5514,5515],{},"大语言模型（LLM）正在打破靠知识构建的专业壁垒。人类的剩余价值在于创造力、审美和跨领域连接能力。",[14,5517,5518],{},"经历了一年与大语言模型（LLM）的相处之后，我渐渐感悟到，在当今大模型下，人类的很多引以为傲的能力被淡化了。\n许多靠知识构建的壁垒一一被 LLM 给轻易攻下。我们需要及时调整自己的生存策略以保有未来生存的一席之地。",[14,5520,5521],{},"我想先分享一下我自己的学习工作模式变化，大语言模型怎么打破我们的知识壁垒，接着试着分析在这种情况下，人类的剩余价值是什么，怎么去保有这种价值。",[18,5523,5525],{"id":5524},"llm-给学习与工作模式带来了什么变化与冲击","LLM 给学习与工作模式带来了什么变化与冲击？",[14,5527,5528],{},"大语言模型 LLM 的出现，特别是 2022 年 12 月的 ChatGPT 横空出现后，到目前很多没有深刻认知 LLM 的人还不能理解它对人类的威胁。\n以为新闻里大佬说的 AI 威胁是一种炒作和噱头。",[14,5530,5531],{},"但是我是计算机互联网行业，和 LLM 配合工作，已经有一个年头了。并且还深度参与了 LLM 应用的建设。\n对于我来说，我的工作生活模式，已经完全被 LLM 重新定义了一遍。比如开发一个项目时，我会直接从 LLM 获取信息。\n而在以前，我需要通过搜索引擎，并且层层过滤，才能获取到我想要的信息。",[14,5533,5534],{},[55,5535],{"alt":5536,"src":5537},"copilot","\u002Fa\u002Fhuman-with-llm\u002Fcopilot.png",[14,5539,5540],{},"而平时的通用知识，我会更偏向于从 LLM 里获取。这可比搜索引擎步骤少太多了。",[14,5542,5543],{},[55,5544],{"alt":5545,"src":5546},"chat","\u002Fa\u002Fhuman-with-llm\u002Fchat.png",[14,5548,5549],{},"相比起用搜索引擎，你可以明显地感受出，LLM 的回答更加直击你的问题，而不是像搜索引擎那样提供给你一大堆材料，让你自己分析对错。",[14,5551,5552],{},[55,5553],{"alt":5554,"src":5555},"search","\u002Fa\u002Fhuman-with-llm\u002Fsearch.png",[18,5557,5559],{"id":5558},"人类的知识壁垒为什么会崩塌","人类的知识壁垒为什么会崩塌？",[14,5561,5562],{},"学习工作模式的改变，也从侧面反映了，人类知识壁垒的崩塌。过往每个人之间的阅历不同，学习的知识覆盖面也不同。\n在人需要完成某项宏大目标时，往往无法通过一个人的点状知识能够完成。比如要盖一栋楼，完成一个稍微大型的 web 应用。\n一个人的知识面是有限的，人类往往需要通过分工合作，让每一个人的知识覆盖每一个项目中的点，最终完成整个项目。",[14,5564,5565],{},"假设下方每一个点代表一个人类的能力范围。而一个项目的完成，需要绿色区域的知识覆盖。那么我们就能利用绿色区域的人来完成这个项目。",[14,5567,5568],{},[55,5569],{"alt":5570,"src":5571},"sampling","\u002Fa\u002Fhuman-with-llm\u002Fsampling.jpeg",[14,5573,5574],{},"但是，随着 LLM 的出现，我们可以发现，绿色区域的知识覆盖，已经不再是人类的专利了。绿色区域中，肯定有很多是通用知识，\nLLM 能替代很多的绿色点。这就意味着，我们不再需要那么多的人来完成一个项目了。这也是为什么很多 AI 大佬，比如 Geoffrey Hinton 说，\n未来 AI 会威胁到人类的生存空间。",[14,5576,5577,5578,5581],{},"假设",[49,5579,5580],{},"通用知识","在未来已经不是我们人类个体的生存壁垒，教师、律师、医生、程序员等职业都将面临被替换的风险。",[14,5583,5584,5585,5588],{},"而更可怕的是，现代的国内学科教育，高度标准化的教学，虽然其主要目的是为了在这套体系内筛选出人才，\n但是副产品却是培养出了众多",[49,5586,5587],{},"通用型人才","。LLM 的出现，将使得这种模式失去意义。",[18,5590,5592],{"id":5591},"人为何为人","人为何为人？",[14,5594,5595,5596],{},"我一直在思考：",[49,5597,5598],{},"既然机器最终可以代替提供大多数的人类知识。那么人未来还有什么价值，或者说，人类要怎样做，才能保有自己作为人的价值？",[14,5600,5601],{},"回答这个问题，必须清楚人与机器相比，究竟还有什么样的差别？我们需要在未来放大人类的优势。",[14,5603,5604,5605,5608,5609,5612],{},"学 AI 的同学应该都知道，模型优化的目标就是在大数据集上，找到一个尽可能的最大范围的解法（即",[49,5606,5607],{},"泛化性最强","的模型参数）。然后利用这种泛化性，\n为我们在某类问题上",[49,5610,5611],{},"提供高效","的解决方案。",[14,5614,5615,5616,5619,5620,5623,5624,130],{},"假定机器的终极目标目前还不超脱于",[49,5617,5618],{},"服务于人","，那么机器的特性则是",[49,5621,5622],{},"泛化性","和",[49,5625,5626],{},"高效性",[14,5628,5629],{},"朝这个方向分析，人类如果要避免和机器同质化，就务必需要：",[181,5631,5632,5642],{},[184,5633,5634,5637,5638,5641],{},[49,5635,5636],{},"\"反泛化\"","：每个人都应该更笃定自己的个性化发展，让每个人的背景经验都不同，从你个性化的经历当中，可以得到",[49,5639,5640],{},"非通用解决方案","。\n如果你还处在一个通用范围内，那么你的价值就会被机器替代。",[184,5643,5644,5647],{},[49,5645,5646],{},"\"反效率\"","：更多的精力应该放在如何想出、创造出新的东西。而不是花大量精力研究如何标准化，高效化。因为你这点根本比不过机器。",[14,5649,5650,5651,5654],{},"再说说",[49,5652,5653],{},"为什么机器没办法侵犯人类的 \"反泛化\"、\"反效率\"领域","。其核心原因是资源的瓶颈。就目前的状况来看，训练出一个能力强的模型，\n必须消耗巨量的资源，算力和能量。如果想要让模型变得\"反泛化\"而消耗更多的资源，这是没必要的，投入产出完全不成正比。\n所以模型就应该是通用的，泛化的，高效的。",[18,5656,5658],{"id":5657},"人机共处时人应该把精力花在哪里","人机共处时，人应该把精力花在哪里？",[14,5660,5661],{},"思考完上面的点，你就会发现，为什么专家说，未来人机共处时，人类更加重视自己的创造力，想象力。这对应的就是上面的 \"反泛化\"、\"反效率\"。",[14,5663,5664,5665,5668,130],{},"未来，至少在 30 年内，我认为新的工作和学习模式需要切换成，\n",[49,5666,5667],{},"人类就应该低效点，多花时间接触不同的东西，多提出独到的见解，多发挥无边际的想象力，在反泛化上继续深挖。",[279,5669,5671],{"href":5670},"\u002Farticles\u002Fstudy-broadly","会的东西很杂，也能让人变优秀",[14,5673,5674],{},"现在我生娃了，和大多数家长不同，我非常焦虑现在的教育体系无法培养出一个 LLM 时代的人机共生之娃。\n所以会一直思考如何培养出一个面向未来的娃。",[18,5676,5677],{"id":5677},"结论",[14,5679,5680],{},"LLM 的时代是不可逆的，有些事情的发展，会超乎我们的想象。但是如果我们能提前看到人类与 LLM 的区别，提前将我们生存的目标调整成\"反泛化\"、\"反效率\"。\n或许你还是可以在未来这个时代，找到自己存在的意义，甚至为我们的后代，留出一个更好的未来。",{"title":316,"searchDepth":317,"depth":317,"links":5682},[5683,5684,5685,5686,5687],{"id":5524,"depth":320,"text":5525},{"id":5558,"depth":320,"text":5559},{"id":5591,"depth":320,"text":5592},{"id":5657,"depth":320,"text":5658},{"id":5677,"depth":320,"text":5677},"2024-02-02","当 LLM 打破人类知识壁垒，我们该如何找到自己的价值？",[5691,5694,5697,5700],{"q":5692,"a":5693},"大语言模型（LLM）对人类工作最大的威胁是什么？","LLM 最大的威胁不是替代人类，而是打破靠知识差建立的专业壁垒。过去需要多年积累的信息检索和整理能力，现在 AI 几秒就能完成。",{"q":5695,"a":5696},"在 AI 时代，人类还有哪些不可替代的价值？","人类的核心价值在于三个方面：1）创造力——提出 AI 无法自发产生的新问题；2）审美判断——在众多可能性中做出价值选择；3）跨领域连接——将不同领域的知识融合产生新洞察。",{"q":5698,"a":5699},"普通人应该如何调整自己的生存策略？","首先接受一个事实：靠信息差和知识壁垒建立的优势正在快速瓦解。然后把精力放在 AI 做不好的事上——深度思考、提出有价值的新问题、在不同领域之间做创造性连接。不是和 AI 比谁记得多、查得快，而是利用 AI 释放的时间去做更高层次的思考。",{"q":5701,"a":5702},"LLM 是如何打破人类知识壁垒的？","过去很多专业人士的核心竞争力是信息检索和整理能力——需要多年积累才能快速找到和组织某个领域的知识。但 LLM 几秒钟就能完成这些工作。这意味着'我知道你不知道的'这种信息差优势正在失效，真正有价值的是'我能想到你想不到的'。",{},{"title":1149,"description":5689},[5706,5707,5708,5709,5710,5711],"大语言模型","LLM","AI 对人类的影响","知识壁垒","AI 生存策略","人工智能职业发展","articles\u002Fhuman-with-llm",[360,361],"5LmbQxPKifQpFdWuSy8iuin4Rlq6H2ch2R7AdDawqQg",{"id":5716,"title":5717,"body":5718,"cover":5781,"date":5855,"description":5856,"draft":329,"extension":330,"faq":5857,"featured":329,"meta":5870,"navigation":345,"path":5871,"readingTime":591,"seo":5872,"seoKeywords":5873,"stem":5880,"summary":5724,"tags":5881,"type":362,"updated":363,"video":363,"__hash__":5882},"articles\u002Farticles\u002Fabout-mofan-sharing.md","关于莫烦的教学分享",{"type":8,"value":5719,"toc":5848},[5720,5725,5737,5741,5744,5750,5756,5762,5765,5769,5776,5782,5789,5796,5801,5805,5811,5817,5824,5827,5830,5833,5839,5842,5845],[11,5721,5722],{},[14,5723,5724],{},"输出不只是分享，更是对自己认知体系的解码与重构。通过教学倒逼学习，在输出中发现知识缺失，形成'学习→输出→发现不足→再学习'的正反馈循环。",[14,5726,5727,5728,5731,5732,5736],{},"对于学习，我在 ",[279,5729,5730],{"href":5670},"会的东西很杂，也能让人变优秀？","，\n",[279,5733,5735],{"href":5734},"\u002Farticles\u002Fgeneral-understanding-and-encoder-with-decoder","对编码解码的理解","\n这些文章里都讨论过一些自己总结的经验。今天我想来谈谈教学的思考。",[18,5738,5740],{"id":5739},"我为什么还在坚持做教学分享","我为什么还在坚持做教学分享？",[14,5742,5743],{},"至于动机，如果你想听短答案，那么是\"想看看能不能搞钱\"。但是后来发现，这条路对于技术博主来说，是很难发家致富的。\n对于那些真发家致富的博主来说，他们才是找对路子的人。\n我那时候靠着大家的打赏，和一些微薄的广告收入，一个月多的时候也就 1000~2000 来块。\n这还是建立在机器学习很火的时候，在现在，打赏和广告收入已经下降太多了，\n尤其是我工作后，更新频率断崖式下跌，一直忙于工作，让我这几年的生日愿望许的愿都是\"希望有更多的时间做我想做的事情\"。",[14,5745,5746,5747],{},"不过到现在为止，靠着网站的收入方面，我已经没什么指望了，一直是亏本状态。",[49,5748,5749],{},"为什么亏本我还在运营网站呢？",[14,5751,5752,5753],{},"这就要谈到我真正的动机了：",[49,5754,5755],{},"学习原动力",[14,5757,5758,5759],{},"做教学分享是一个平台，也是一个不断让我突破自己，创新尝试的试验场。让我所学的东西有一个地方\"释放\"，而且正因为它是公开的，\n也会有无数的眼睛监督着我提升自己。",[49,5760,5761],{},"严格要求自己输出，才有动力不断对自己输入。",[14,5763,5764],{},"虽然看着不多，但是的确占用了我挺多个人时间的，所以我刚刚才说我的生日愿望都是\"希望有更多的时间做我想做的事情\"。",[18,5766,5768],{"id":5767},"什么是学习自循环","什么是「学习自循环」？",[14,5770,5771,5772,5775],{},"前面都在说我做教学的动力和动机，接着我想谈谈具体的，做\"教学\"（",[49,5773,5774],{},"泛指做输出的事情","）是怎么样促进我自身的发展的。",[14,5777,5778],{},[55,5779],{"alt":5780,"src":5781},"cycle","\u002Fa\u002Fabout-mofan-sharing\u002Fcycle.png",[14,5783,5784,5785,5788],{},"我并不是在学习的时候构建好完整的知识体系，因为工作后，我并没有很多一整块或一大段连续的时间专门学习。\n通常我都是零散的学习，而且很多时候还是跳跃学习，这导致的知识点都比较离散，不成体系。但这也有好处，\n我在",[279,5786,5787],{"href":5670},"广泛学习","的文章中有详细探讨。简单来说，就是创造了发现不同事物本质的机会。",[14,5790,5791,5792,5795],{},"正是因为学习是零散的，我需要找一个方法把这些零散的知识、认知串起来，\"输出\"正适合我自身的情况。",[49,5793,5794],{},"每当我要输出某个东西的时候，\n我都会围绕这个东西做知识、认知的收罗，这是一个将原本零散知识再重新组织的绝佳机会。","\n这也是我想做 mofanx 的原因之一，针对每一篇 mofanx，做知识的整理和重构。",[14,5797,5798],{},[49,5799,5800],{},"在这个重构整理和输出的子循环中，往往我还能发现自己技能和相关知识的缺失，这就诱使我将重构认知链接到学习上，进入下一轮正反馈的循环。",[18,5802,5804],{"id":5803},"为什么说输出是一种认知解码","为什么说输出是一种「认知解码」？",[14,5806,5807,5808,5810],{},"换另一个角度，我在 ",[279,5809,5735],{"href":5734}," 中也提到，不管是说话，写作，\n都是对自己编码的认知体系的再提取和解码。每一次输出分享内容的时候，\n就是对和这次内容有关的认知节点进行解码的过程。",[14,5812,5813],{},[55,5814],{"alt":5815,"src":5816},"encoder decoder","\u002Fa\u002Fgeneral-understanding-and-encoder-with-decoder\u002Fencoder_decoder.png",[14,5818,5819,5820,5823],{},"而且解码也不是光解码，这种解码还会反向传播至我的编码体系，\n让编码体系做进一步调整，从而向一个通用编码器演变。这就是我对于 ",[49,5821,5822],{},"人类怎样认识事物本质"," 的解释。",[14,5825,5826],{},"正因为我对教学分享的定位成这种类型的 \"输出解码\"，我才会在一直亏本的状态下，一直走下去。",[18,5828,5829],{"id":5829},"教学方法变迁",[14,5831,5832],{},"其实吧，你从上文就能看出，教学已经经历了多次变迁，从纯视频，到网页+视频模式，到交互式模式。\n无疑都是对如何有效学习的探索。因为交互型运行代码和试错沉淀对程序认知的过程也完美匹配我画的\"学习自循环图\"。",[14,5834,5835],{},[55,5836],{"alt":5837,"src":5838},"interactive","\u002Fa\u002Fabout-mofan-sharing\u002Finteractive_coding.png",[14,5840,5841],{},"这套方案基于 Pyodide + CodeMirror，实现了零服务器成本的浏览器端 Python 运行环境，让学习者可以即写即运行、即时看到结果。",[18,5843,5844],{"id":5844},"总结",[14,5846,5847],{},"输出自己，是对自我学习动机的一种最好补充之一。我已经沿用了很多年，而且在这种自循环的体系下，我也感受到了强大的驱动力，\n希望我在这里分享的对学习和输出的思考，也会有对你有用的部分。",{"title":316,"searchDepth":317,"depth":317,"links":5849},[5850,5851,5852,5853,5854],{"id":5739,"depth":320,"text":5740},{"id":5767,"depth":320,"text":5768},{"id":5803,"depth":320,"text":5804},{"id":5829,"depth":320,"text":5829},{"id":5844,"depth":320,"text":5844},"2022-01-01","从学习原动力到输出驱动成长，分享我做教学的思考与方法论",[5858,5861,5864,5867],{"q":5859,"a":5860},"为什么教学分享能促进自身学习？","每次输出都是对认知体系的再提取和解码，这个过程会倒逼你将零散知识重新组织成体系。而且输出时往往会发现自己的知识缺失，这就诱使你进入下一轮学习，形成'学习→输出→发现不足→再学习'的正反馈自循环。",{"q":5862,"a":5863},"如何开始用'输出'的方式促进学习？","不需要追求完美的输出形式。核心是围绕某个主题做知识的收罗和重新组织——可以是写文章、做笔记、录视频，甚至是给朋友讲解。关键在于：严格要求自己输出，才有动力不断对自己输入。公开分享还能让外界监督你持续提升。",{"q":5865,"a":5866},"做技术教学博主能赚钱吗？","坦白说很难发家致富。靠打赏和广告收入，最好的时候月入一两千，而且随着更新频率降低收入会断崖式下跌。但教学分享的真正价值不在收入，而在于它是不断突破自己的试验场——严格要求输出，才有动力持续输入，这个学习自循环才是最大的回报。",{"q":5868,"a":5869},"为什么说输出是一种'认知解码'？","每一次分享内容，都是对认知体系中相关节点的提取和解码过程。而解码不只是单向的——它会反向传播至你的编码体系，让整个认知系统做进一步调整，向通用编码器演变。简单说：你教别人的过程中，自己的理解也在被重塑和加深。",{},"\u002Farticles\u002Fabout-mofan-sharing",{"title":5717,"description":5856},[5874,5875,5876,5877,4981,5878,5879],"教学分享","输出驱动学习","学习自循环","认知解码","费曼学习法","独立博主","articles\u002Fabout-mofan-sharing",[1268,1078],"W3J4hlnEC5WX7zydS_3Ys2rbiqJdr4Bzw-wHW3HR95I",{"id":5884,"title":5885,"body":5886,"cover":5927,"date":6157,"description":6158,"draft":329,"extension":330,"faq":6159,"featured":329,"meta":6172,"navigation":345,"path":6173,"readingTime":6174,"seo":6175,"seoKeywords":6176,"stem":6180,"summary":5892,"tags":6181,"type":362,"updated":363,"video":363,"__hash__":6183},"articles\u002Farticles\u002Fthought-of-surfaces-and-essences.md","《表象与本质》读后感",{"type":8,"value":5887,"toc":6148},[5888,5893,5896,5910,5919,5922,5928,5932,5935,5941,5944,5948,5957,5963,5966,6004,6007,6010,6017,6023,6026,6032,6036,6045,6048,6051,6054,6057,6060,6067,6073,6083,6086,6091,6096,6099,6103,6106,6121,6124,6130,6137,6140,6142,6145],[11,5889,5890],{},[14,5891,5892],{},"《表象与本质》揭示了人类学习的核心机制：通过类比（范畴化）理解新概念。我们的认知空间类似 AI 的词向量空间，新知识不仅被安放其中，还会反向重构整个认知体系。",[14,5894,5895],{},"今年读了一本觉得比较厉害的书——《表象与本质》，\n想谈谈感受，我首先需要介绍一下这本书的作者，因为如果你知道他是谁，你可能就理解了他为什么这样写，\n为什么会有这样的观点。",[14,5897,5898,5903,5904,5909],{},[279,5899,5902],{"href":5900,"rel":5901},"https:\u002F\u002Fbook.douban.com\u002Fsubject\u002F30383926\u002F",[283],"表象与本质"," 的作者是 ",[279,5905,5908],{"href":5906,"rel":5907},"https:\u002F\u002Fbook.douban.com\u002Fauthor\u002F3285877\u002F",[283],"侯世达","，诺贝尔物理学奖得主，斯坦福教授，\n心理学教授，认知科学家，计算机科学家，会多语言（包括中文）。还有很多其他的标签。",[14,5911,5912,5913,5918],{},"甚至他的学生也很有名，其中有一个出过 ",[279,5914,5917],{"href":5915,"rel":5916},"https:\u002F\u002Fbook.douban.com\u002Fsubject\u002F30171338\u002F",[283],"复杂"," 这本也是非常推荐的书。\n不管是侯世达还是他的学生，他们都抱着一颗想要了解生命，了解系统秩序，了解本质的心去钻研。",[14,5920,5921],{},"读完表象与本质这本书后，其实我一直想找机会沉淀一下，但由于这本书体系实在有点庞大，我直到现在才开始决定要开始写感受和思考。这下面是我读的时候梳理的脑图，\n可以看出，体量真的比较大。",[14,5923,5924],{},[55,5925],{"alt":5926,"src":5927},"xmind","\u002Fa\u002Fthought-of-surfaces-and-essences\u002Fxmind.png",[18,5929,5931],{"id":5930},"这本书主要在讲什么","这本书主要在讲什么？",[14,5933,5934],{},"接下来，我假设你已经有一定的机器学习背景。因为我还是想从机器学习的角度去思考作者表述的事情。\n作为一位计算机科学家和认知学家，我很佩服侯世达在写这本书的时候，居然没有用上计算机一个专业词汇，虽然一开始，\n我就嗅到了浓浓的词向量技术，有可能是因为这本书写在 2013 年前，词向量技术还没有普及，所以他也没提过词向量。\n但是向量化的表达那时候肯定已经有了，不过也没见作者使用任何的计算机语言，实在是高。\n用普通人能接受的语言，表述了空间，向量，编码这样的计算机词汇。",[14,5936,5937],{},[55,5938],{"alt":5939,"src":5940},"w2v","\u002Fa\u002Fthought-of-surfaces-and-essences\u002Fw2v.png",[14,5942,5943],{},"书里面有很多细节，我大概说一下，这本书的精华部分。它以人类语言为基础，阐述人类是如何学习语言基础，从词语到句子，学习的方法又是什么，为什么人类具有学习能力，\n这种学习能力又是什么？我们如何利用这种学习能力理解新事物的？这些都是这本书里面要解释的重点问题。",[18,5945,5947],{"id":5946},"什么是范畴和范畴化","什么是「范畴」和「范畴化」？",[14,5949,5950,4208,5953,5956],{},[49,5951,5952],{},"\"范畴\"",[49,5954,5955],{},"\"范畴化\""," 这两个关键词一直贯穿整书。说白了，范畴就是对某个物体，某个事件，某种行为的一个定义，而这个定义拥有自己所属的一块区域。\n与它同含义，同属性的其他物体，事件，行为也会有另一块区域，而这两块区域在距离上将会非常接近，表达它们是非常类似的东西。",[14,5958,5959],{},[55,5960],{"alt":5961,"src":5962},"land","\u002Fa\u002Fthought-of-surfaces-and-essences\u002Fland.jpg",[14,5964,5965],{},"而范畴化指的是将一个物体，事件，行为进行归类，划分区域的行为。我们时刻都在做范畴化的工作，只是可能需要使用另一个你熟悉的词或者解释，你可能比较容易理解。\n下面的表格，我从生活场景和机器学习的场景分别解释一下，在这些场景中的范畴和范畴化是什么意思。",[949,5967,5968,5980],{},[952,5969,5970],{},[955,5971,5972,5974,5977],{},[958,5973,5902],{},[958,5975,5976],{},"生活场景",[958,5978,5979],{},"机器学习",[965,5981,5982,5993],{},[955,5983,5984,5987,5990],{},[970,5985,5986],{},"范畴",[970,5988,5989],{},"类别",[970,5991,5992],{},"向量空间的不同区域",[955,5994,5995,5998,6001],{},[970,5996,5997],{},"范畴化",[970,5999,6000],{},"类比",[970,6002,6003],{},"向量化，向量操作",[18,6005,6006],{"id":6006},"假设你是幼儿",[14,6008,6009],{},"世界对幼儿而言，是陌生的，充满未知的，他们正是通过范畴化来学习的。首先小孩第一个学会的词可能是爸爸或妈妈，但如果你观察身边的婴儿，有时候，他们会将爸爸妈妈弄混，\n甚至将所有温暖的，柔软的东西，比如对着玩偶喊妈妈。我也发现我家小孩的一个现象，他对妈妈的定义是：当我喊妈妈，我的困难就会消失，想要的东西就会到我的手里来。\n所以他的\"妈妈\"的范畴并不是我们成年人这样。他还需要进一步学习到底什么才是妈妈。",[14,6011,6012,6013,6016],{},"随着小孩生活阅历的丰富，他自己构建的范畴将会越来越多，但是很多时候他们的范畴都是相对独立的。那些共享底层逻辑的范畴，他们是还没办法归类总结的。\n比如当他知道爸爸是爸爸，但他却没办法迁移这个爸爸的概念，也没办法理解爸爸的爸爸为什么是爷爷。从这个角度拓展开来看，我们也是一样，\n在我们的认知中，肯定存在很多范畴，而且确实有很多范畴本可以具有共通性，但是我们并没有发现其共通性，也没办法利用其共通性去理解更多的事物。\n我在",[279,6014,6015],{"href":5734},"编码解码的这篇文章","中也提到了\"广泛的编码能力\"这回事，其本意也就是在说：提炼不同范畴的共通性。",[14,6018,6019],{},[55,6020],{"alt":6021,"src":6022},"father grandpa","\u002Fa\u002Fthought-of-surfaces-and-essences\u002Ffather_grandpa.jpg",[18,6024,6025],{"id":6025},"认知空间",[14,6027,6028,6029,6031],{},"现在你理解了范畴和范畴化，那这个 ",[49,6030,6025],{}," 这个词，其实是我参考机器学习中的\"向量空间\"自己创造的。学过词向量的同学肯定都很熟悉，使用向量能够表达一个词。\n而且这些词在空间中有自己的位置，词与词在空间中的位置关系，表明了词语之间的关系，比如男人和女人的空间距离，其实和国王与皇后距离类似。",[14,6033,6034],{},[55,6035],{"alt":5939,"src":5940},[14,6037,6038,6039,6042],{},"那么用侯世达认知科学的范畴理论，那么人类也是有向量空间（认知空间）的。而且训练的过程和词向量训练过程十分类似，都是大数据的非监督学习。\n我们从幼儿时，就一直听到很多不同的词汇，我们是怎么区分不同词的区别呢？比如我们如何学着将\"妈妈\"对应上那个照顾我的妈妈呢？\n其实我们本身就在做非监督学习，",[49,6040,6041],{},"我们听到\"妈妈\"这个字的时候，一个长头发的女人就经常一同出现，奶头也会靠近，奶香也随之而来，一张笑脸也会经常共现，温柔的声音也随之而来。",[49,6043,6044],{},"而且我们不光利用了文字信息，还利用了多种模态的信息，包括声音，视觉，嗅觉等。\n这就是一个多模态的认知向量训练。",[14,6046,6047],{},"到现在为止，婴儿时期多半都是被动地接收信息，我们只是在做 Encoding 的训练。等我们长大了，Decoding 也变得越发重要。具备一定的认知空间后，我们再利用这个初出茅庐的，不成熟的认知空间，\n进行空间的转换，将认知空间映射到行为空间，做 Decoding 解码处理。举个例子，现在我已经能成功地将听到的\"妈妈\"，映射到我的认知空间对应的位置，下一步，我结合身处的环境，\n对这个认知空间进行行为的解码，输出我下一步的行为。\n处处都是机器学习，处处都是人类与机器的共同之处。",[14,6049,6050],{},"这就是为什么我在读这本书的时候，脑中一直回荡 NLP 知识的原因。如果立马就运用刚才讲的结论，也就意味着在我脑中，自然语言处理和人类的认知空间这两者所处的位置十分接近。",[18,6052,6053],{"id":6053},"用类比理解新概念",[14,6055,6056],{},"我非常清楚机器学习算法中的训练过程，但是人类的学习训练的过程，真的和机器一样吗？前面我们只是讨论了人类学习的皮毛，而且也是一笔带过，只说和机器学习非监督训练很像。\n现在我再深挖一下，再下探一下。",[14,6058,6059],{},"现在请你马上回忆一下，你最近的一次学习过程，或者是听到某个新词的时候，你是如何理解他们的？",[14,6061,6062,6063,6066],{},"人类是一种基于经验来生存的生物，我们几乎所有的认知，都是基于生活的经验中推理来的。如果你是 90 后，00 后，那你必定应该听过\"赛博朋克\"，我对赛博朋克的理解很明显分了两个阶段，\n第一个阶段是认识到，它是一个很炫酷的游戏，我见到了游戏画面，玩家试玩视频等等，这让我建立了对\"赛博朋克\"这个词的认知，我把这个认知放在 ",[49,6064,6065],{},"游戏"," 的认知空间中。",[14,6068,6069],{},[55,6070],{"alt":6071,"src":6072},"赛博朋克","\u002Fa\u002Fthought-of-surfaces-and-essences\u002Fsaibo.jpg",[14,6074,6075,6076,6079,6080,6082],{},"可是几个月后，我发现，怎么有时候听不懂别人的聊天了呢？\"你好赛博朋克啊\"，\"这么做，真 TM 赛博朋克\" 等等这类的对话，我就在想，这游戏名字怎么可以这样用？\n我没办法理解呀，其他游戏的名字从来没有和这些情绪表达，和这些词汇一起出现过。",[49,6077,6078],{},"这时我的认知空间开始动摇了，赛博朋克开始游离出游戏的认知空间。","\n不过我还是没办法安放这个新的认知，因为我还是不太确定他们在说赛博朋克的时候到底是想表达什么样的情绪。\n但随着数据量的上升，我听到的\"情绪赛博朋克\"越来越多，我开始尝试将他们分类到\"炫酷\"，\"高大上\"，\"虚幻\"或者还存在一些\"羡慕\"的情绪上。\n这就是我一整个学习过程，这也是一个完整的 ",[49,6081,5997],{}," 过程。",[14,6084,6085],{},"从上面我经历的赛博朋克的例子，就不难看出，我们一直是通过类比（范畴化）来学习新的概念的。也就是我们需要有一个原始的认知空间，在这个认知空间上寻找对应的领域，\n将新向量加入进此领域。但是你以为这样就完了吗？并没有！",[14,6087,6088],{},[49,6089,6090],{},"深度学习的朋友们，你们肯定知道 finetune 这回事，你想为新数据找到合适的向量空间，但是反过来，新数据也会对原有的向量空间产生影响，甚至会大幅改动原有的空间分布。\n当你在学习新知识的时候，如果瞬间感叹，并发出\"啊哈！\"的时候，这时候，就是你的原认知空间被新数据改变的时候。所以他们是互相影响的。",[14,6092,6093],{},[49,6094,6095],{},"这个过程才是学习，利用原有认知，类比迁移去理解新的概念，而且更重要的是，新改变并不是独立存在的，它也会反过来影响改变你的认知空间，铸造新的认知空间分布。",[14,6097,6098],{},"终于，我把最重要的概念说完了。接下来，看看如何利用这个概念吧。",[18,6100,6102],{"id":6101},"按这套理解该怎么学才更有效","按这套理解，该怎么学才更有效？",[14,6104,6105],{},"很多人非常苦恼学不好，不会学。当然我以前也会有这样的困惑。不过当我想明白上面这件认知空间的事后，我便有了我的学习方法。",[14,6107,6108,6109,4208,6111,6114,6115,6120],{},"如果学习新知识需要基于原有的认知空间，那么越交叉，越丰富的认知空间，将会给你更强健的理解基石。我在",[279,6110,5787],{"href":5670},[279,6112,6113],{"href":5734},"编码解码","的文章中都表达过类似思想。\n甚至我最近在 ",[279,6116,6119],{"href":6117,"rel":6118},"https:\u002F\u002Fbook.douban.com\u002Fsubject\u002F30353486\u002F",[283],"《认知天性》","这本书中也看到了类似的观点。",[14,6122,6123],{},"简单来说，我们要认识到，任何领域，学科都可以关联起来，我们要构建一个认知整体，所以请在学习的时候多回忆不相关的领域，并且尝试连接它们，让你的整体认知更加牢固，\n在知识图谱中的边更加茂密，不可分割。",[14,6125,6126],{},[55,6127],{"alt":6128,"src":6129},"kg","\u002Fa\u002Fthought-of-surfaces-and-essences\u002Fkg.png",[14,6131,6132,6133,6136],{},"每次学习都是对整体的一次更新，添加新的认知，和修改原有体系的认知。这就是我认为的 ",[49,6134,6135],{},"学习"," 。利用类比，网状思维，解决新的问题。",[14,6138,6139],{},"还要强调的一点，如果你的学习动机是自己，而不是学校\u002F老师\u002F家长，那么恭喜你，你这时候的学习动机才是正确的，而且你去丰富认知空间中的链接才对你有意义。",[18,6141,5844],{"id":5844},[14,6143,6144],{},"人学习和机器学习的本质其实并不是完全不能类比，机器对事物的理解和人对事物的理解也并不是完全不能类比。我认为仅仅只是构建认知的手段不一样，\n目前很多机器用的手段是梯度更新，而人是构建新的神经链接（虽然现在科学家并不是很确定是不是这样）。",[14,6146,6147],{},"我对学习这回事一直抱有很强的兴趣，也会一直输出我对学习，认知的理解。说不定，以后还有机会在认知科学中，出一份力呢。",{"title":316,"searchDepth":317,"depth":317,"links":6149},[6150,6151,6152,6153,6154,6155,6156],{"id":5930,"depth":320,"text":5931},{"id":5946,"depth":320,"text":5947},{"id":6006,"depth":320,"text":6006},{"id":6025,"depth":320,"text":6025},{"id":6053,"depth":320,"text":6053},{"id":6101,"depth":320,"text":6102},{"id":5844,"depth":320,"text":5844},"2021-06-01","从认知科学经典著作中，发现人类学习与机器学习的深层联系",[6160,6163,6166,6169],{"q":6161,"a":6162},"人类是如何学习新概念的？","通过类比（范畴化）。我们在已有的认知空间中寻找与新概念对应的区域，将新知识'安放'进去。比如学习'赛博朋克'，最初放在'游戏'的认知区域，后来随着更多使用场景的接触，逐步迁移到'炫酷\u002F虚幻'的情绪区域。这个过程和 AI 训练词向量惊人地相似。",{"q":6164,"a":6165},"为什么跨学科学习能让人学得更快？","因为学习需要基于已有的认知空间做类比。认知空间越丰富、跨领域越多，能用来理解新知识的'参考点'就越多。而且新知识不是独立存在的，它会反向影响和重构你的整个认知空间——这就是'啊哈！'顿悟时刻的本质。",{"q":6167,"a":6168},"《表象与本质》这本书的核心观点是什么？","人类学习的核心机制是'范畴化'——即类比。我们时刻在将新事物归入已有的认知范畴中，就像 AI 训练词向量一样，通过大量数据构建认知空间。新信息不是被独立存储，而是在这个空间中找到位置，同时反向更新整个空间的分布。",{"q":6170,"a":6171},"人类的认知空间和 AI 的词向量空间有什么相似之处？","两者惊人地相似。AI 通过大规模无监督学习训练出词向量空间，词之间的距离关系反映语义关系。人类从婴儿期也在做同样的事：通过多模态信息（声音、视觉、嗅觉）的共现关系，构建自己的认知向量空间。区别只是训练手段不同——AI 用梯度更新，人类用神经连接重构。",{},"\u002Farticles\u002Fthought-of-surfaces-and-essences",14,{"title":5885,"description":6158},[5902,5908,6177,6025,5997,6178,6179],"类比思维","词向量与认知","学习方法论","articles\u002Fthought-of-surfaces-and-essences",[6182,3979,1268],"读书笔记","ZKocwvKIfB7Km-RPj9iuZgGYw6Ns7psIrTXItvtrZZE",{"id":6185,"title":6186,"body":6187,"cover":6386,"date":6387,"description":6388,"draft":329,"extension":330,"faq":6389,"featured":329,"meta":6402,"navigation":345,"path":6403,"readingTime":2519,"seo":6404,"seoKeywords":6405,"stem":6412,"summary":6193,"tags":6413,"type":362,"updated":363,"video":363,"__hash__":6414},"articles\u002Farticles\u002Fsleep-and-study.md","想学好就得休息好",{"type":8,"value":6188,"toc":6379},[6189,6194,6197,6200,6203,6207,6210,6216,6219,6225,6236,6242,6246,6249,6255,6258,6265,6271,6274,6282,6291,6295,6298,6301,6307,6315,6322,6330,6336,6339,6342,6345,6358,6365,6367,6370,6376],[11,6190,6191],{},[14,6192,6193],{},"高效记忆的秘诀不是拼命学，而是学完好好睡。间隔性学习增强记忆编码，睡眠中的非快速眼动期将短期记忆迁移为长期记忆。白天多思考，晚上多睡觉。",[14,6195,6196],{},"我处在一个信息轰炸的年代，持续不断的信息，抢占了我的时间，\n如果我不能从这些信息中甄选出优质的信息，我将会被淹没在信息的红海中。",[14,6198,6199],{},"假设，\n我可以分辨优劣信息，那么接下来就是另外一个问题，通常我觉得有用的信息，我会默默想着，\n\"这么有用的信息，我肯定不会忘记的\"，但是大多数情况下，不出意外，我在隔天就把它抛到九霄云外了。\n这可不是我故意抛的哦，我是十分想记下来这些有用的东西，只不过苦于没有好的记忆方法。",[14,6201,6202],{},"所以我开始了收集有关记忆的学术研究和资料，得到的一些结论也和大家分享一下。",[18,6204,6206],{"id":6205},"间隔性学习为什么更有效","间隔性学习为什么更有效？",[14,6208,6209],{},"回忆高中那会儿，我常常是从早上 7 点一直不间断上课到晚上 5 点，然后又不间断晚自习写作业到 12 点，高强度的学习，我感觉我是没有有效记住太多东西。\n现在回想起来，的确学习效率有些弱，因为当时并没有什么真正的学习方法，取而代之的都是老师一遍遍强调的题海战术。现在的我看来，\n我当时真的对\"学习\"这件事太不专业了。浪费了很多时间。",[14,6211,6212,6213],{},"2021 年 7 月 28 日，\n来自德国马克斯-普朗克神经生物学研究所的团队发表了题为\nSpaced training enhances memory and prefrontal ensemble stability in mice 的研究性文章，\n报道了间隔训练的确可以改善记忆。这研究的一个结论是：",[49,6214,6215],{},"每隔半分钟，十分钟，半小时或一小时学习一下，发现在一天后，间隔时间越久，记忆提取能力越强。",[14,6217,6218],{},"背后的理论知识我不太清楚，有兴趣的朋友可以查阅相关论文。\n里面大概是这么个意思，如果我转述有点问题，还请指出来。在间隔时间中，脑神经要对新信息进行编码，而间隔时间越久，编码过程中的记忆整体活动模式被增强激活，\n导致了记忆越深刻。同时也加强了不同学习阶段的脑细胞之间的联系。它的结论有点像艾宾浩斯记忆曲线，只是这条曲线是一种表象，而他们的研究是研究本质。",[14,6220,6221],{},[55,6222],{"alt":6223,"src":6224},"艾宾浩斯","\u002Fa\u002Fsleep-and-study\u002F%E8%89%BE%E5%AE%BE%E6%B5%A9%E6%96%AF%E8%AE%B0%E5%BF%86.jpg",[14,6226,6227,6228,6231,6232,6235],{},"按我的思路，",[49,6229,6230],{},"在休息的这段时间中，我觉得是给脑袋引入了一些噪声，重要的信息可能受噪声影响小，可能是被沉淀下来了。然后间隔过完，\n重新学习的时候，会基于这些重点信息，再次构造知识认知体系，这样有一种取其精华，不断更新的模式（都是我假设的）","。\n这让我想到，",[49,6233,6234],{},"在机器学习中，虽然没有休息这一前提，但是同样会对学习引入噪声","，比如 random batch sampling，也是通过不按套路 sample data，\n让模型在噪声的 data distribution 中学习，达到一个好的抗噪声能力。",[14,6237,6238],{},[55,6239],{"alt":6240,"src":6241},"minibatch","\u002Fa\u002Fsleep-and-study\u002Fminibatchgraddesc.png",[18,6243,6245],{"id":6244},"记忆分为哪几类","记忆分为哪几类？",[14,6247,6248],{},"前面，我提到了间隔学习的好处，但是还没提到记忆是如何产生的，又是什么运作的。提到记忆，不得不提到一个 1950 年著名的病例，有一个叫 H.M. 的病人，\n因为一些原因，被切除了脑中的海马体（下图就是海马体在你脑中的位置）。",[14,6250,6251],{},[55,6252],{"alt":6253,"src":6254},"hippocampus","\u002Fa\u002Fsleep-and-study\u002Fhippocampus.jpeg",[14,6256,6257],{},"切除海马体后，这个病人的行为就很奇怪了，他只能记住刚刚发生的事件，过了一阵子，就都忘记了，就有点像失忆后，每次醒来，你都不记得前一天发生了什么，50 岁的时候起床，\n你脑中的自己还停留在 30 岁，每天一起床就会被自己年老的身体吓一跳，还以为自己是穿越了。",[14,6259,6260,6261,6264],{},"这个病人日后也就成名了，很多学者都来研究他，甚至基于这个病例，还真研究出了一个体系，那就是",[49,6262,6263],{},"人类记忆分为短期记忆（working memory）和长期记忆（long term memory）","。\n而且长短期记忆之间还可能存在一种迁移关系。",[14,6266,6267],{},[55,6268],{"alt":6269,"src":6270},"working memory long term memory","\u002Fa\u002Fsleep-and-study\u002FCognitive-learning-process2.gif",[14,6272,6273],{},"上图中除了长短期记忆，还有一个感知记忆，这个是更前端的记忆模块了，发生在无时无刻，你肯定都熟悉，我们就来说说在幕后，你看不见的短期记忆和长期记忆吧。",[181,6275,6276,6279],{},[184,6277,6278],{},"短期记忆（海马体）：记录你当前这些鲜活的记忆",[184,6280,6281],{},"长期记忆（大脑皮层）：通过筛选过滤后的记忆沉淀",[14,6283,6284,6285,6290],{},"顾名思义，短期记忆，是通往长期记忆的必经之路，是先形成了短期记忆之后，再往长期记忆搬运的\n（有个 ",[279,6286,6289],{"href":6287,"rel":6288},"https:\u002F\u002Fwww.ted.com\u002Ftalks\u002Fmatt_walker_hacking_your_memory_with_sleep\u002Ftranscript?referrer=playlist-sleeping_with_science",[283],"TED 视频","\n可以看看）。而搬运的过程就和睡眠有关。",[18,6292,6294],{"id":6293},"睡眠怎样帮助记忆迁移","睡眠怎样帮助记忆迁移？",[14,6296,6297],{},"你有没有想过，人为什么会做梦？人做梦的时候，为什么总和你经历过的事情有联系？使用想象力，编造出来一个场景，来温故学习，重复在脑中练习处理白天的事物。",[14,6299,6300],{},"当我深入了解睡眠对记忆的作用的时候，发现结论并没有想象中那么简单。睡眠还可以分不同的阶段。我大概总结在图中，也可能有些不准确，姑且先自用。",[14,6302,6303],{},[55,6304],{"alt":6305,"src":6306},"steps","\u002Fa\u002Fsleep-and-study\u002FREM_non_REM.png",[181,6308,6309,6312],{},[184,6310,6311],{},"Non-REM 非快速眼动期：有四个不同阶段，有些和身体性技能恢复有关，有些和构建长期记忆有关",[184,6313,6314],{},"REM 快速眼动期：做梦，激发创造力等",[14,6316,6317,6318,6321],{},"已经有很多实验证明，在睡眠的过程中，延长非快速眼动期的睡眠，确实有利记忆的迁移过程，让人记得更多。\n而更进一步，Tucker 等人证明，非快速眼动期，\n促进的是一种叫",[49,6319,6320],{},"陈述性记忆","，而不是程序性记忆。这两种记忆又是个什么鬼？",[181,6323,6324,6327],{},[184,6325,6326],{},"程序性记忆：行为技巧，技能，不需要思考，反复练习就能提高。如演奏乐器，体育运动等。",[184,6328,6329],{},"陈述性记忆：\"日记\"式记忆（每天发生了什么），空间记忆（对位置的记忆），语义认知型记忆（更偏理解记忆）",[14,6331,6332,6333,130],{},"所以，如果你想当运动员，演员等，你想要关注的应该是程序性记忆，而如果你的目标是高级知识分子，你应该要更关注陈述性记忆。\n依据这些科研材料，我想我也得出我关于记忆的结论了。那就是——",[49,6334,6335],{},"白天多思考，晚上多睡觉",[18,6337,6338],{"id":6338},"我的记忆方法",[14,6340,6341],{},"我之所以做这些研究，是因为我遇到了记忆的瓶颈，当时觉得重要的东西，过一阵子就忘记了。经过我这些研究发现，其实我\"当时认为的重要信息\"，\n在我的大脑看来，\"并没有什么卵用\"，所以它选择直接放弃。这没有办法，这是自然选择进化出来的\"忘记\"能力，忘记也是十分重要的，不然你的大脑会记住很多没必要的信息。",[14,6343,6344],{},"不过大脑是如何确定什么才对你的生存重要呢？才愿意去记忆呢？其实也不难想出来。重要意味着在你的生活中经常会遇到，或者不经常但是一发生就能左右你的生活进度。\n比如你经常要用到 99 乘法表，那么它肯定会深埋在你的记忆中。说实话，当我开始编程以后，口算能力退化了很多，有时候连 99 乘法表都有点难回忆起来了。\n这就是我大脑对我的记忆做出了妥协。那么换一个思路，如果你想欺骗大脑重要性，那么就时不时，隔一段时间，让这段重要的信息出现一次。\n我想，这就是我上文在间隔学习中提到的\"艾宾浩斯记忆曲线\"的本质了。",[14,6346,6347,6348,6351,6352,5731,6354,130],{},"而且，我想再提的是，",[49,6349,6350],{},"重复记忆，并不是像我们以前背单词那样，每天都背。而是需要不断提取深层次的因果关系，本质属性，再尝试拓展到其他记忆点上去，\n形成网状的知识结构。"," 我对于这个话题还有更广的思考，有兴趣可以看看我写的 ",[279,6353,5735],{"href":5734},[279,6355,6357],{"href":6356},"\u002Farticles\u002Fmemory-change-and-deep-learning","记忆与深度学习的关系",[14,6359,6360,6361,6364],{},"其他的事情也是一样，要不常常重复记忆，\n要不你就",[49,6362,6363],{},"为自己的生活创造紧急情况，给这个紧急情况挂上一个你觉得重要的信息，这样这个信息也会伴随着紧急情况一同被记下来","。比如，\n有天下雨开车，我遇上了一个急拐弯，在马上就要撞上路牙的时候，我一直在分析，不能急踩刹车，容易侧翻，所以我都是点刹，但是还是没有避免前轮开上了路牙，\n但是很险，车子并没大碍，就是大腿擦伤了一下。这次的紧急事故，我想我会记住一辈子，而且，一同写入记忆的\"我需要冷静思考，避免侧翻\"也会随之记一辈子。",[18,6366,5844],{"id":5844},[14,6368,6369],{},"写了很多，将我对记忆的研究都记录了下来，下面也总结了一份脑图。",[14,6371,6372],{},[55,6373],{"alt":6374,"src":6375},"summary","\u002Fa\u002Fsleep-and-study\u002F%E7%9D%A1%E7%9C%A0%E4%B8%8E%E8%AE%B0%E5%BF%86%E6%80%BB%E7%BB%93.png",[14,6377,6378],{},"越是想学得更好，学会\"学习\"，我对于记忆也就越有感触。希望我也能将这些自己的思考用进未来的生活中，让这些记忆永不褪色。",{"title":316,"searchDepth":317,"depth":317,"links":6380},[6381,6382,6383,6384,6385],{"id":6205,"depth":320,"text":6206},{"id":6244,"depth":320,"text":6245},{"id":6293,"depth":320,"text":6294},{"id":6338,"depth":320,"text":6338},{"id":5844,"depth":320,"text":5844},"\u002Fa\u002Fsleep-and-study\u002F艾宾浩斯记忆.jpg","2021-03-01","从间隔性学习到睡眠记忆迁移，探索高效记忆的科学方法",[6390,6393,6396,6399],{"q":6391,"a":6392},"为什么间隔学习比连续学习记忆效果更好？","德国马克斯-普朗克研究所的研究表明，间隔时间越久，一天后的记忆提取能力越强。因为在间隔时间中，大脑对新信息进行编码，重要信息被沉淀，再次学习时会基于这些重点重新构建认知体系，形成'取其精华、不断更新'的模式。",{"q":6394,"a":6395},"睡眠是如何帮助我们记忆的？","白天学到的知识先存在海马体（短期记忆），晚上进入睡眠的非快速眼动期时，大脑会将这些短期记忆迁移到大脑皮层（长期记忆）。研究发现大脑还会以 10 倍速'重放'白天的经历，不断强化新的神经连接。所以想记得更牢，最好的方法就是睡个好觉。",{"q":6397,"a":6398},"如何利用艾宾浩斯遗忘曲线来提升记忆？","核心不是简单地重复背诵，而是间隔性地提取深层次的因果关系和本质属性，并尝试将其与其他知识点连接，形成网状结构。同时可以'制造紧急情况'——让重要信息与某个深刻体验绑定，利用大脑对生存相关信息的优先记忆机制来加强记忆。",{"q":6400,"a":6401},"陈述性记忆和程序性记忆有什么区别？","程序性记忆是行为技巧类的，如演奏乐器、体育运动，通过反复练习提高，不需要太多思考。陈述性记忆包括'日记式'记忆、空间记忆和语义认知型记忆，更偏理解性质。研究表明睡眠中的非快速眼动期主要促进陈述性记忆，所以想提升知识理解类的记忆，保证充足睡眠尤为关键。",{},"\u002Farticles\u002Fsleep-and-study",{"title":6186,"description":6388},[6406,6407,6408,6409,6410,6320,6411],"睡眠与记忆","间隔学习","艾宾浩斯记忆曲线","高效记忆方法","海马体","学习科学","articles\u002Fsleep-and-study",[1268,3979],"HQUCVNft1RLcNqu7DzNCCbg74u-pPsMg3S6k9XmfFkA",{"id":6416,"title":5730,"body":6417,"cover":6528,"date":6615,"description":6616,"draft":329,"extension":330,"faq":6617,"featured":329,"meta":6630,"navigation":345,"path":5670,"readingTime":591,"seo":6631,"seoKeywords":6632,"stem":6637,"summary":6423,"tags":6638,"type":362,"updated":363,"video":363,"__hash__":6639},"articles\u002Farticles\u002Fstudy-broadly.md",{"type":8,"value":6418,"toc":6609},[6419,6424,6427,6431,6440,6446,6453,6471,6477,6480,6486,6490,6499,6505,6508,6511,6515,6523,6529,6534,6539,6542,6546,6552,6555,6561,6564,6567,6573,6576,6579,6582,6585,6588,6594,6597],[11,6420,6421],{},[14,6422,6423],{},"从网红博主到达芬奇，广泛学习并不会让人'广而不深'。跨领域的经历反而促进新领域的学习，关键在于不断提炼不同事物的共通属性。",[14,6425,6426],{},"这篇文章也是我一时兴起，在晚上 11 点开始写的。原因也莫名其妙，刚刚我看了个B站视频，\n这是一个深圳高中生自导自演唱歌的视频。从视频剪辑的一些镜头看，我搜了搜关键词，发现她的学校离我家也不到 10 公里。\n头一次发现，我居然离百万粉丝的 up 红人这么近！",[18,6428,6430],{"id":6429},"vicky萱萱","Vicky萱萱",[14,6432,6433,6434,6439],{},"那么这是什么视频？为什么能激起我写下这篇文章呢？我们先来看看 ",[279,6435,6438],{"href":6436,"rel":6437},"https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1ti4y1K7uw",[283],"这个已超千万播放的视频"," 吧。\n你也可以边听着这个视频里面的歌，边继续看我的文章。",[14,6441,6442],{},[55,6443],{"alt":6444,"src":6445},"vicky","\u002Fa\u002Fstudy-broadly\u002Fvicky.png",[14,6447,6448,6449,6452],{},"Up 叫 Vicky萱萱，是我无意中发现的，我写这篇文章时，她应该才 15 岁。我关注到她，究其根本原因，是我对会唱歌的女生没多少抵抗力。\n不过，更让我佩服的，并不是她的百万粉丝量，而是她的技能数量。作词，作曲，编曲，演唱，都是她。稍稍看过几个视频后，\n也发现她并没有用专业的设备去完成这些任务。里面还穿插了很多生活化的小剪辑，包括学校镜头，生活镜头等。\n甚至，她对用光也非常有研究。\n我以前非常喜欢拍照，在大学校内校外都获得过摄影大赛的奖，所以对光也比较敏感，\n上面那张截图里的 ",[49,6450,6451],{},"光"," 正是我关注到她的一个重要原因。",[14,6454,6455,6456,6458,6459,6464,6465,6470],{},"我再举个例子，我还关注过一个独立唱歌的小姐姐，直接听歌，我并不会关注到她，但是她的 ",[49,6457,6451],{}," 让我喜欢上了她的人。这是一个 ",[279,6460,6463],{"href":6461,"rel":6462},"https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUClkRzsdvg7_RKVhwDwiDZOA",[283],"Youtuber","，\n你在 ",[279,6466,6469],{"href":6467,"rel":6468},"https:\u002F\u002Fsearch.bilibili.com\u002Fall?keyword=JFLA%E7%9A%84%E7%BA%A2%E9%A9%AC%E5%B0%BE",[283],"B站上可以通过搜索 JFLA"," 来看到一些搬运过的视频。",[14,6472,6473],{},[55,6474],{"alt":6475,"src":6476},"JFLA","\u002Fa\u002Fstudy-broadly\u002Fjfla.png",[14,6478,6479],{},"你看他们都多会用光，也明显能感受到他们的光是经过调整选择的，说明她不光在声音上下了功夫，研究得比较好，而且在视觉上同样也不差。\n问题来了，如果对比声音，同样是网络上的好嗓音，好歌喉，为什么不会有他们这样受人关注？我想，对于视觉信息的处理，是必不可少的关键点。\n所以，如果你真的要做出一番成绩，像他们这样不仅处理得好声音，还能处理得好视觉，才构成了传播的必要条件。",[14,6481,6482,6485],{},[49,6483,6484],{},"如果要做好你自己觉得好的一件事，很简单，但是要做到很多人都知道这是一件好事，跨领域的研究和思考，同样也是你必不可少的技能之一。","\n包括在写论文的时候，如果你发现\"用言简意赅的描述比晦涩描述更有传播价值\"这一条自媒体定律，你会写得更出色。",[18,6487,6489],{"id":6488},"神经科学之父卡哈尔为何也是画家和运动员","神经科学之父卡哈尔为何也是画家和运动员？",[14,6491,6492,6493,6498],{},"卡哈尔 原名是 ",[279,6494,6497],{"href":6495,"rel":6496},"https:\u002F\u002Fbaike.baidu.com\u002Fitem\u002F%E5%9C%A3%E5%9C%B0%E4%BA%9A%E5%93%A5%C2%B7%E6%8B%89%E8%92%99-%E5%8D%A1%E5%93%88%E5%B0%94\u002F9559457",[283],"Santiago Ramón y Cajal","，\n这个人是我在看一个介绍脑研究发展的 TED 中关注到的。\n所以，从这个研究的方向你就能看出，卡哈尔的专业是什么了吧？",[14,6500,6501],{},[55,6502],{"alt":6503,"src":6504},"cajal","\u002Fa\u002Fstudy-broadly\u002Fcajal.jpeg",[14,6506,6507],{},"没错，卡哈尔除了是一名病理学家、组织学家，神经学家，他对于大脑的微观结构研究是开创性的，被许多人认为是现代神经科学之父。\n但你绝对想不到，他还是一个狂热的画家、艺术家和体操运动员，他也曾作为鞋匠和理发师。",[14,6509,6510],{},"不是说好了，人一定要专研某个领域，在某个领域要耐下心，坚持学习，才能在一个行当中出人头地吗？\n为什么经历这么\"丰富\"的人也不会陷入广而不深的陷阱呢？",[18,6512,6514],{"id":6513},"像达芬奇这样的多面手说明了什么","像达芬奇这样的多面手说明了什么？",[14,6516,6517,6522],{},[279,6518,6521],{"href":6519,"rel":6520},"https:\u002F\u002Fbaike.baidu.com\u002Fitem\u002F%E8%BE%BE%C2%B7%E8%8A%AC%E5%A5%87\u002F75724",[283],"达芬奇","你们都听过吧，\n他是干什么的？画画的？解剖学家？工程师？科学家？那你又怎么概括这种多面手的伟人呢？",[14,6524,6525],{},[55,6526],{"alt":6527,"src":6528},"dfq","\u002Fa\u002Fstudy-broadly\u002Fdfq001.jpeg",[14,6530,6531],{},[55,6532],{"alt":6527,"src":6533},"\u002Fa\u002Fstudy-broadly\u002Fdfj_human.jpeg",[14,6535,6536],{},[55,6537],{"alt":6527,"src":6538},"\u002Fa\u002Fstudy-broadly\u002Fdfj_machine.jpeg",[14,6540,6541],{},"因为达芬奇大家都很熟了，我就不再多做介绍了。我来说说，我认为的达芬奇和卡哈尔的共通点吧。\n其实他们的这种\"分心\"学习并不会影响到他们的成就，就好比我一直认为在高中谈恋爱并不会影响学习一样，\n而且的确有老师和我说他们遇到过两个家长，没发现成绩退步了，所以不允许学校干涉自己孩子谈恋爱。\n说回来，这些不同方向上的研究，还反过来会促进新领域的学习。",[18,6543,6545],{"id":6544},"从自身经历看广泛学习意味着什么","从自身经历看，广泛学习意味着什么？",[14,6547,6548,6551],{},[49,6549,6550],{},"该不该只在一个专业方向上发展？"," 这个问题应该算是我 25 岁到 30 岁最有价值的一个问题之一了。\n我从不对改变自己的职业方向抱有太多负面情绪，从我的发展道路来看，也是遵循这样的一个基调。",[14,6553,6554],{},"高中的时候我有了属于自己的傻瓜相机，有时间就喜欢自己捣腾，那时候网络还不是很发达，或者我还不是很会用网络搜索技能，\n我为了拍闪电，还研究出了长曝光的方法，成功地拍到了人生中的第一张闪电照片。",[14,6556,6557],{},[55,6558],{"alt":6559,"src":6560},"lightning","\u002Fa\u002Fstudy-broadly\u002Flightning.jpg",[14,6562,6563],{},"而且那时候为了配合拍出好图，我还自学了 ps，所以现在对于一些色阶，高光，白平衡什么的概念还是比较清楚的。俗话说，会拍照的男生，女人缘一般不会很差，\n别问我是怎么知道的~ 除了拍照，我高中那会儿，同桌是一个会唱歌的帅哥，\n我们经常还在上课的时候哼歌，导致我对唱歌也起了浓厚的兴趣，这也是为什么我上面挑了两个唱歌的小姐姐做例子。\n俗话说，会唱歌的男孩子，女人缘不会很差。你这也别问我是怎么知道的。\n如今那小哥出国了，还参加过海外的中国好声音，差点就能上电视了，目前也在国外的甲骨文工作。",[14,6565,6566],{},"如今，我已经没有再练歌了，大学用来拿奖的单反也被我卖钱了（主要是现在手机也好用，我也用它来拍下面这样漂亮的图）。",[14,6568,6569],{},[55,6570],{"alt":6571,"src":6572},"my pic","\u002Fa\u002Fstudy-broadly\u002FWechatIMG500.jpeg",[14,6574,6575],{},"虽然不再玩命追求这些东西了，但是这些东西在我的生命中已经划下了痕迹。",[14,6577,6578],{},"以前的我对构图有要求，现在的我对代码组织性、简练性有要求。",[14,6580,6581],{},"以前的我对唱歌方式有要求，现在的我对录视频的节奏也有要求。",[14,6583,6584],{},"虽然我做不到专业，但是至少也是非专业中相对专业的，而且有些交叉学科，交叉技能，能比大多数人强。我所有的成就，我认为运气占了 50%，积累占了 50%，而且这些积累我并没有局限在某一专一领域。",[14,6586,6587],{},"从我的经历能看到，我本科是土木工程的，和 IT 没半毛钱关系，但是不局限的思维，让我打开了计算机的大门，\n爱唱歌，爱摄影，爱分享自己觉得好的东西，甚至是分享花很多功夫学来的知识，\n才让我博士转入了智能交通的领域，但我也没有局限在智能交通的行业中。",[14,6589,6590],{},[55,6591],{"alt":6592,"src":6593},"zhidao","\u002Fa\u002Fstudy-broadly\u002Fzhidao.png",[14,6595,6596],{},"反而是来到了互联网公司，做 AI 技术。更加让我意外的是，我又再转回到了教育行业，做 AI 教育。以后还会发生什么呢？我自己也不知道。\n我想应该会有太多的可能会发生。这都是我在广泛学习道路上的站点而已。",[14,6598,6599,6600,6604,6605,6608],{},"而现在，我在为广泛学习寻找理论基础，这也是为什么我提过对 ",[279,6601,6603],{"href":6602},"\u002Farticles\u002Fmemory-change-and-deep-learning#%E8%AF%A5%E9%80%89%E5%B9%BF%E6%B3%9B%E5%AD%A6%E4%B9%A0%E8%BF%98%E6%98%AF%E4%B8%93%E4%B8%9A%E5%AD%A6%E4%B9%A0","广泛 or 专业学习"," 的观点。\n如果你能找到不同方向上的底层原理，他们的共通性就会促进你的新研究。\n我在 ",[279,6606,6607],{"href":6173},"表象与本质的读后感","\n中也提到了我们对新事物的学习是基于对自己原有知识体系中老抽象事物的重组。\n所以基于上述几个人和我的经历，我想说，学习的广并不是坏事，只要你能不断提炼，抽象，归纳看似不同的事物的共通属性，我相信你也能活出自己精彩的一生。",{"title":316,"searchDepth":317,"depth":317,"links":6610},[6611,6612,6613,6614],{"id":6429,"depth":320,"text":6430},{"id":6488,"depth":320,"text":6489},{"id":6513,"depth":320,"text":6514},{"id":6544,"depth":320,"text":6545},"2021-01-01","从网红博主到达芬奇，广泛学习为何能让人更优秀",[6618,6621,6624,6627],{"q":6619,"a":6620},"广泛学习会不会导致什么都学不精？","不会。达芬奇是画家也是工程师和科学家，卡哈尔是神经科学之父也是画家和体操运动员。广泛学习不是浅尝辄止，而是通过不同方向的探索，发现事物之间的共通性。这些跨领域的经验会相互促进，反而加速新领域的学习。",{"q":6622,"a":6623},"如何在广泛学习中获得真正的成长？","关键是不断提炼和抽象。不只是'学过'就行，而是在不同领域中发现共通属性并建立连接。比如摄影中对构图的要求可以迁移为对代码组织性的要求，唱歌的节奏感可以迁移为录视频的节奏把控。每次跨领域的学习都在加固你的知识网络。",{"q":6625,"a":6626},"有什么科学研究支持广泛学习的优势？","罗森茨维格的白鼠实验发现，在丰富信息环境中成长的老鼠大脑皮层更厚更重，神经元更大。TED 演讲中也提到，接触过多种乐器的业余者学习第三种新乐器时，速度甚至超过了专业演奏者。广泛的经历构建了更复杂有效的神经网络，不同事物共用连接，加速新知识的学习。",{"q":6628,"a":6629},"做好一件事为什么需要跨领域能力？","自己觉得好的事很容易做好，但要让很多人都知道这是一件好事，跨领域能力不可少。比如网红歌手不仅需要好嗓音，还需要用光技巧、视频剪辑、视觉审美。写论文也一样，'言简意赅比晦涩描述更有传播价值'这条自媒体定律同样适用于学术写作。",{},{"title":5730,"description":6616},[5787,6633,6521,6634,6635,6636,1268],"跨领域发展","多面手","T型人才","跨学科能力","articles\u002Fstudy-broadly",[1268,3979],"YRtFoEF7VwWqbs_v36Os4cqPyyILKU14H9p7fDeJMiI",{"id":6641,"title":5735,"body":6642,"cover":6657,"date":6864,"description":6865,"draft":329,"extension":330,"faq":6866,"featured":329,"meta":6879,"navigation":345,"path":5734,"readingTime":2519,"seo":6880,"seoKeywords":6881,"stem":6886,"summary":6648,"tags":6887,"type":362,"updated":363,"video":363,"__hash__":6888},"articles\u002Farticles\u002Fgeneral-understanding-and-encoder-with-decoder.md",{"type":8,"value":6643,"toc":6856},[6644,6649,6652,6658,6662,6669,6672,6678,6682,6685,6690,6699,6705,6708,6711,6722,6728,6731,6737,6740,6743,6749,6752,6762,6765,6768,6774,6777,6791,6797,6803,6806,6809,6813,6816,6819,6828,6831,6835,6838,6841,6848,6851,6853],[11,6645,6646],{},[14,6647,6648],{},"不同人对同一件事有不同理解，本质原因是每个人的生活经历构建了独特的'编码器和解码器'。训练广泛的编码能力，才能理解更多事物。",[14,6650,6651],{},"老师讲课，我听不懂、男女朋友总吵架闹矛盾、爸妈总不理解我、上课理解的题目，考试却不会做。我们的生活充满了这样的时刻，为什么会有这样的问题存在呢？\n我想从一个细微的角度，甚至是偏人工智能的角度来思考，尝试分析出他们的本质因素。我想尝试理解他们的底层逻辑，因为理解了这些，上面那些烦恼，应该都会迎刃而解了。",[14,6653,6654],{},[55,6655],{"alt":6656,"src":6657},"communication","\u002Fa\u002Fgeneral-understanding-and-encoder-with-decoder\u002Fcommunication.jpeg",[18,6659,6661],{"id":6660},"为什么同一件事不同人会有不同理解","为什么同一件事，不同人会有不同理解？",[14,6663,6664,6665,6668],{},"我们都是成年人了，对于",[49,6666,6667],{},"同一件事，不同人，有不同理解","这种现象，应该都接触很多。不管是读书也好，看剧也好，还是在沟通一件事的时候，我们都可能存在不同的理解。",[14,6670,6671],{},"我在一家互联网公司，做技术产品，因为是技术主导产品的形态，所以会参与到产品设计的过程中去。我发现，我在沟通的过程中，耗费最多时间的，并不是设计这个步骤，\n而是去理解别人表达的观点到底是什么，即使描述上和我的观点千差万别，但是底层逻辑是不是和我的一样？如果底层一样，我们其实还是 share 共同的 view 的。\n也就不存在分歧。而这个分析他人认知的过程，耗费了我 70% 的时间。",[14,6673,6674,6675],{},"而这种分歧，也许只是存在于表面表达形式上的分歧，但很多时候，我们却为表达形式上的分歧争吵得喋喋不休。\n",[49,6676,6677],{},"所以\"不同理解\"这个现象并不是我关心的事情，我想要深挖一下，找一找产生这种现象的原因。\n接下来的内容，也是从这个角度，一步步深挖，看看我最终能想到哪个程度。",[18,6679,6681],{"id":6680},"为什么说生活经历在为你的理解负责","为什么说生活经历在为你的理解负责？",[14,6683,6684],{},"既然你也同意我们看到事物的观点极其容易产生分歧。我常常在思考，是什么决定了我们理解上的不同，这种不同是可以避免的吗？",[14,6686,6687],{},[49,6688,6689],{},"短答案是：是你的生活经历决定，即使是成长环境极其接近的同卵双胞胎，这种不同也是无法避免的。",[14,6691,6692,6693,5731,6696,6698],{},"下面是长答案。在认知心理学领域，这个问题其实也被研究了很久。",[279,6694,6119],{"href":6117,"rel":6695},[283],[279,6697,5902],{"href":6173}," 或者其他的认知心理学领域的研究，都多少提到过。\n我们对事物的认知程度，深度，广度，都取决于我们当前状态下的认知基础。",[14,6700,6701,6702],{},"如果你有机器学习的基础，我举一个例子你可能会明白得彻底一点。\n",[49,6703,6704],{},"用不同训练集（经历）训练出来模型（人），思考模式当然不一样；即使用同样训练集，仅仅在 epoch 的时候换了 shuffle 的随机种子，训练出来的模型也不会一模一样，总会有微小的差别。",[14,6706,6707],{},"而我们生活中，随机性随处可见，所以每个人的思维方式，观点不见得完全相同。你的生活经历给予了你全世界唯一的思考基础，你的思维，观点，必定会和别人有差别，即使差别微小，但不可能完全一样。",[18,6709,6710],{"id":6710},"公共编码",[14,6712,6713,6714,6717,6718,6721],{},"前面都还只是表象，和影响表象的浅层分析。我们来看看深层次的分析。不管是机器还是人，对于世间万物的认知，都是一种编码形式存在的。\n为什么 ",[79,6715,6716],{},"1"," 这个数字代表的是 \"一个\" 的意思？为什么 ",[79,6719,6720],{},"3"," 指的是三个物体？",[14,6723,6724],{},[55,6725],{"alt":6726,"src":6727},"numbers","\u002Fa\u002Fgeneral-understanding-and-encoder-with-decoder\u002Fnumbers.jpg",[14,6729,6730],{},"在历史上，我们还存在其它样式的键盘排列，而且还有可能更适合人类手指，为什么到了现在我们只剩下一种键盘排列？",[14,6732,6733],{},[55,6734],{"alt":6735,"src":6736},"keyboard","\u002Fa\u002Fgeneral-understanding-and-encoder-with-decoder\u002Fdvorack.jpg",[14,6738,6739],{},"答案很简单，因为我们相信，而且这是人类在某个时刻共识的表达。一旦形成了这种共识，再想挑战普世的规则，就很难了。\n你再想想，还有什么会是这样的逻辑呢？我随便再列几个：人类文明；正在争夺的 5G 网络；好莱坞电影的全球化输出等等。",[14,6741,6742],{},"我会把这种共识，称作为\"公共认知\"，而这种公共认知，也算是一种公共编码。从现在开始，我将用\"编码\"这个词，代替\"认知\"这个词，因为编码的适用范围更广。",[14,6744,6745,6746],{},"人类语言就是一种我们日常必不可少的编码形式，我们用文字，用语言表达着复杂的逻辑和内容。你想，如果没有语言，我们就只能拿着实物，摆在你面前，你才能理解我在表达什么。\n但是有了共同的一种编码，不管是语言，小黄脸 emoji，还是其他用来沟通的工具，这都是在干一件事——",[49,6747,6748],{},"将背后的内涵，内容，编码进一个容易传播（空间维度），容易跨时间保存（时间维度）的形式。",[18,6750,6751],{"id":6751},"编码与解码",[14,6753,6754,6755,6757,6758,6761],{},"上面都是广义上的，对于所有人，或者对于一部分群体适用的\"公共编码\"。而在关系到\"不同人有不同理解\"这个点上，我想展开的是个人大脑里面的编码形式。而很多时候，\n我们能正常沟通的基础前提是——我们拥有一部分的",[49,6756,6710],{},"（不然你不会理解我说的话），而且还有我个人的",[49,6759,6760],{},"私有编码","，我对于某件事的独特见解。",[14,6763,6764],{},"而且私有编码一旦得到普及，它和公共编码其实是可以转换的。我来举个例子。",[14,6766,6767],{},"最近我换了块智能手表，智能手表有一个好处，就是可以更换表盘的显示。我尝试了很多个表盘，发现下面这个是我最喜欢的。因为它完整地诠释了编码和解码这回事。",[14,6769,6770],{},[55,6771],{"alt":6772,"src":6773},"weather1","\u002Fa\u002Fgeneral-understanding-and-encoder-with-decoder\u002Fweather1.jpeg",[14,6775,6776],{},"这个表盘，完整地将天气信息，电量信息，新消息条数信息，时间信息完美地编码进了一个人的头像上。",[181,6778,6779,6782,6785,6788],{},[184,6780,6781],{},"天气 ： 发型",[184,6783,6784],{},"电量 ： 胡子",[184,6786,6787],{},"时间 ： 眼镜",[184,6789,6790],{},"新消息 ： 耳环",[14,6792,6793],{},[55,6794],{"alt":6795,"src":6796},"weather2","\u002Fa\u002Fgeneral-understanding-and-encoder-with-decoder\u002Fweather2.jpeg",[14,6798,6799],{},[55,6800],{"alt":6801,"src":6802},"weather3","\u002Fa\u002Fgeneral-understanding-and-encoder-with-decoder\u002Fweather3.jpeg",[14,6804,6805],{},"我相信在做这款表盘的时候，最开始只有作者能懂这些编码规则，但是随着传播，我们也能识别出这些编码，并能解码成对应的含义。\n再想象，二战时候的加密和解密，不也是编码和解码这回事吗。",[14,6807,6808],{},"在机器学习中，学得越深，你就越发了解，所有的模型，基本都可以归纳成一个 Encoder + Decoder 的模式。即使是一个简单的线性回归，也是如此。",[14,6810,6811],{},[55,6812],{"alt":5815,"src":5816},[14,6814,6815],{},"Encoder 负责编码，将输入的原始数据编码成另一种表达形式，你可以将编码后的东西理解为这是机器对原始数据的\"编码认知\"。Decoder 负责利用这种编码认知，\n将它再次表达成另一种形式，或者一种动作，这个表达的方式，完全是依赖于它的\"编码认知\"是什么。",[14,6817,6818],{},"再回到天气大叔这款表盘，对于我看到的表盘信息，如果没有一个个性化编码的过程，我是看不懂它想表达什么信息的。正因为我对它的头发，胡子，眼镜，耳环进行了与平时不一样的编码与解码，\n我现在才能\"看懂\"，\"理解\"这个大叔要表达的信息。",[14,6820,6821,6824,6825,130],{},[49,6822,6823],{},"进一步，为什么不同人对同一件事，可能会有完全不同的认知呢？问题就出在编码和解码上。"," 我们的大脑对某件事情的编码和解码，使用到的工具是大脑里上亿个神经链接。\n如果你的神经链接体系和别人稍有不同，你的认知理解就有不同。即使仅和自己对比，我在 10 点钟的神经链接和我在 11 点的神经链接有可能都不一样，因为在这期间，有源源不断的新信息，\n新回路在我大脑中产生，时时刻刻都在对我的大脑链接进行 finetune（微调）。同一个人，在 10 点和 11 点，对同一件事都可能会有不同的认知和解答。\n这也就是为什么你的女朋友前一秒还对你笑呵呵，下一秒就一张生气脸的原因了。\n这种变化，还导致了很多现象，比如我在",[279,6826,6827],{"href":6356},"另一篇中提到的遗忘和认知覆盖",[14,6829,6830],{},"总之，我们需要承认每个人在编码和解码上的不同，也要承认，同一个人，在不同时刻的不同。这些不同，都是必定存在且一定会发生的。\n你现在就明白，为什么沟通是一门学问，为什么要站在别人的角度上思考才能有效沟通了。\n其实这都是去理解别人的编码器、解码器是什么样子，是什么经历形成了别人这种独特的编码、解码器。",[18,6832,6834],{"id":6833},"怎样训练更广泛的编码能力","怎样训练更广泛的编码能力？",[14,6836,6837],{},"好了，我还想讨论的一个问题是，站在个人的立场上，我到底有多少编码器？是一个大的编码器统领全部事物，还是千万个小的编码器分别处理不同的事物？\n我为什么想思考这个问题呢，因为我在生活中，的确遇到了关于编码器的问题。比如我是学生，需要针对不同的学科，将这些学科独立开，分别学习。还是不断尝试融合不同学科的知识，\n将他们放在一个大熔炉中，构建学科之间紧密的联系。\n而我越来越觉得，后者这种模式才能解决我实际遇到的很多问题。",[14,6839,6840],{},"成年之后，很多要解决的问题，并不是靠我们以前的知识体系就能解决的，而是融合了非常多领域，有时候要横跨\"生物学\"，\"心理学\"，\"物理\"，\"数学\"，\"计算机\"等等学科，\n如果我的学科知识，在脑中是分块独立的，那么我将他们串联起来去解决一个问题就非常困难。而且还有很多新的知识需要被学习，这时候的学习就更不能建立在独立的认知领域上了。",[14,6842,6843,6844,6847],{},"这意味着，正确的学习之路，从一开始就是需要源源不断地融合性学习，不同学科之间的融合，相同学科，不同知识点的融合。我们需要的，并不是单点技能，而是整体技能。\n关于这点，我在",[279,6845,6846],{"href":5670},"广泛学习这篇文章","中，有详细讨论。",[14,6849,6850],{},"总之，为了达到这样的学习方式，我的目标，现在就变成了训练自己拥有一个广泛的编码能力。我的经历目前已经横跨了\n土木-交通-AI-教育 这几个看上去都不太相关的领域，不过我并不会觉得奇怪，或者被动。因为正是这样广泛的经历，才让我有能力思考像 解码器与学习、认知的关联。\n而正是因为有了一样广泛的经历，我才发现，跨学科的重要性，知识整体性的重要性。",[18,6852,5844],{"id":5844},[14,6854,6855],{},"编码器和解码器，一个看起来只和计算机相关的词汇，其实在不同的领域中，它的含义可能由不同的词代替。不同人，拥有不同的阅历，修炼了不同的编码器和解码器，\n而正是这些不同的编码、解码器，引领了我们的认知体系。正是我们独特的认知体系，创造了独一无二的你。理解自己的不同，\n也就理解了为什么\"老师讲课，我听不懂、男女朋友总吵架闹矛盾、爸妈总不理解我、上课理解的题目，考试却不会做\"这些问题了。",{"title":316,"searchDepth":317,"depth":317,"links":6857},[6858,6859,6860,6861,6862,6863],{"id":6660,"depth":320,"text":6661},{"id":6680,"depth":320,"text":6681},{"id":6710,"depth":320,"text":6710},{"id":6751,"depth":320,"text":6751},{"id":6833,"depth":320,"text":6834},{"id":5844,"depth":320,"text":5844},"2020-12-01","从编码器与解码器的角度，探讨人类认知差异的本质原因",[6867,6870,6873,6876],{"q":6868,"a":6869},"为什么不同人对同一件事会有完全不同的理解？","因为每个人的生活经历不同，构建了独特的大脑神经连接（编码器和解码器）。就像用不同数据训练出来的 AI 模型思考模式不一样，即使经历相似的双胞胎，随机性也会导致认知差异。理解这一点，就能理解为什么沟通需要站在别人角度思考。",{"q":6871,"a":6872},"如何提升自己对事物的理解能力？","训练广泛的编码能力。不要把不同学科的知识分块独立存放，而是不断融合性学习，建立跨领域的知识连接。经历越广泛、越多样，你的'通用编码器'就越强大，理解新事物的速度也越快。",{"q":6874,"a":6875},"什么是公共编码和私有编码？","公共编码是人类的共识表达，比如语言、数字、键盘布局——大家都认同 '1' 代表一个。私有编码是个人独特的理解方式，比如某个表盘设计者用发型表示天气、用胡子表示电量。私有编码一旦被普及传播，就能转化为公共编码。沟通的本质就是对齐编码。",{"q":6877,"a":6878},"编码解码的概念如何帮助改善人际沟通？","理解了编码解码，就明白每个人的生活经历构建了独特的认知系统。沟通不顺畅时，问题往往出在表达形式的分歧而非底层逻辑的分歧。有效沟通的关键是：先去理解对方的编码器是什么样的，是什么经历塑造了对方的理解方式，再用对方能解码的方式表达。",{},{"title":5735,"description":6865},[6113,6882,6883,6884,5787,6885,3979],"认知差异","沟通理解","生活经历与认知","跨学科思维","articles\u002Fgeneral-understanding-and-encoder-with-decoder",[3979,1268],"y8iPTwE9bisDyivcMYRSslsNYKQ3D_6ULgE92E2CcIA",{"id":6890,"title":6891,"body":6892,"cover":6953,"date":7085,"description":7086,"draft":329,"extension":330,"faq":7087,"featured":329,"meta":7100,"navigation":345,"path":7101,"readingTime":2519,"seo":7102,"seoKeywords":7103,"stem":7106,"summary":6898,"tags":7107,"type":362,"updated":363,"video":363,"__hash__":7108},"articles\u002Farticles\u002Ffind-principles.md","寻找本质",{"type":8,"value":6893,"toc":7079},[6894,6899,6902,6906,6909,6916,6924,6927,6930,6938,6941,6945,6948,6954,6957,6963,6966,6969,6975,6985,6988,6991,6997,7000,7003,7006,7014,7017,7023,7026,7034,7037,7043,7046,7053,7057,7060,7069,7076],[11,6895,6896],{},[14,6897,6898],{},"通过发现不同事物的本质共通性，用类比将零散知识串成网络。在不熟悉的领域，靠本质和类比做决策，是不被时代淘汰的核心竞争力。",[14,6900,6901],{},"工作以来，我一直很头疼一件事，就是每天要处理的信息量太大了，每天忙于细节事物，一年后回过头来，却不能说出我这年做了什么，\n成长了什么。在做事的时候，是一种浮在空中，没有落地的感觉。我也渐渐发现，这种感觉不仅只有我一个人感受到了，\n我身边很多同事也发觉一年到头瞎忙，也没忙出个什么来，没有沉淀出什么。",[18,6903,6905],{"id":6904},"我所说的成长具体指什么","我所说的「成长」具体指什么？",[14,6907,6908],{},"成长是一个终生话题，如果你剖析出来，成长究竟是指的什么呢？",[14,6910,6911,6912,6915],{},"你有没有发现，很多时候，我们的成长是从别人口中说出来的，特别是长辈那里。只有他们说\"哎呀，几年不见你，发现你处事越来越熟练，成长不少呀\"。\n的确，做事越发熟练，也算是一种成长。但我比较关注的成长是在",[49,6913,6914],{},"人生智慧","上。可能说人生智慧这个词有点大，有点空，\n那我来拆解一下，我认为的成长做一些定义吧。",[1193,6917,6918,6921],{},[184,6919,6920],{},"累积的人生经验越来越多",[184,6922,6923],{},"越来越会利用积累的人生经验做决策",[14,6925,6926],{},"这是我定义的成长，毕竟在经济上不依赖他人的生活，就意味着，会用自己的独立思考解决生活中的问题，这不就是人生智慧吗。",[14,6928,6929],{},"那么另外两个问题来了：",[1193,6931,6932,6935],{},[184,6933,6934],{},"如何累积人生的经历？",[184,6936,6937],{},"如何利用这些经历做智慧的决策？",[14,6939,6940],{},"这篇文章就是我对于这两个问题的分析和经验。我希望我能一直使用这些总结出来的方法，并通过长时间的验证，把方法变成习惯，一直保持成长。\n始终贯穿这篇文章里的一个核心关键词就是\"本质\"。用本质串联起人生经历，在决策的时候，用本质来作为参考。",[18,6942,6944],{"id":6943},"抓住本质对学习有什么用","抓住「本质」对学习有什么用？",[14,6946,6947],{},"当初我在学习 Seq2Seq 的时候，它是一种人工智能算法模型，常用在翻译或者对话上。\n网上并没有多少可以用来参考的教学，我是花了九牛二虎之力，才理解了它是怎么将一句话翻译成另一句话的，中间的过程繁琐复杂。\n可是当我接触了更多机器学习算法，我发现他们有一种共通之处，都是有一种信息压缩再解压的过程。",[14,6949,6950],{},[55,6951],{"alt":6952,"src":6953},"seq2seq","\u002Fa\u002Ffind-principles\u002Fseq2seq.png",[14,6955,6956],{},"这种过程不光光出现在 Seq2Seq 的模型上，它的核心概念出现在非常多的机器学习算法上，我觉得我找到了他们的本质。\n比如下面的图片生成技术，利用对原图片的压缩信息提取，再解压出来一张对原图进行分割的图片。",[14,6958,6959],{},[55,6960],{"alt":6961,"src":6962},"encoding decoding model","\u002Fa\u002Ffind-principles\u002Fgan-encoding-decoding.png",[14,6964,6965],{},"又比如 Transformer 模型。\n虽然样子长得不太一样，但它同样是一种\"压缩解压\"型模型。而且压缩解压的概念一直贯穿在这整个系列当中，成为了里面的关键思想。\n可以说如果你弄清楚了信息\"压缩解压\"的本质，你也学会了 NLP。",[14,6967,6968],{},"甚至，在生活中，也随处可见\"压缩解压\"的影子。比如电话的语音信号传递，电视画面信号等等。他们都对信息进行了压缩，然后再通过解压的过程释放出来。\n只是在释放的这个过程中，可以是释放出和原始信号一样的信号，也可以是一种原始信号的不同表达形式（比如在机器学习中的各种模型）。",[14,6970,6971],{},[55,6972],{"alt":6973,"src":6974},"encoding decoding signal","\u002Fa\u002Ffind-principles\u002Fencode-decode-model-of-communication-image.jpeg",[14,6976,6977,6978,6980,6981,6984],{},"既然\"压缩解压\"的特性应用场景这么广泛，我开始思考在学习上是不是也遵循着这样一种规律呢？\n我在",[279,6979,5735],{"href":5734},"这篇文章中有详细的讨论。\n其中的结论是，当然可以，",[49,6982,6983],{},"通过对事物的编码获取到\"本质\"，利用\"本质\"，你就能大大降低决策的难度，因为本质相同的事物，处理方法也是类似的。","\n此话怎讲？我们举个例子。",[14,6986,6987],{},"小时候我花了很长时间，摔了无数的跤，学会了骑两轮自行车。我在高中在农村过年的时候第一次骑摩托车，试了试手，感觉比自行车要重一些，\n龙头要难拧一点，也就花了5分钟，开上了乡间小道，扬长而去。到了大学，驾校教练在我练车的时候睡着了，眯了一会眼起来之后，\n对着后排的学员说\"他比你们开车更大胆，换挡也不犹豫，速度还不慢，很稳\"。我回\"我经常玩极品飞车\"。",[14,6989,6990],{},"在工作这些年中，我需要掌握和学习的信息越来越多，我不可能为每一个知识都独立安排一块记忆空间，单个记下来。\n因为信息组织得松散，健忘成了我常有的状况。\n我也极度需要一种方法来更有效率地理解新的知识和信息，固化成一个体系，而类比于本质就是我提炼的捷径方法。",[14,6992,6993,6994],{},"所以我也感受到，",[49,6995,6996],{},"只要我能够类比以前的经验，就会发觉他们的本质其实是一样的，迁移本质后，学习、成长起来就特别快。",[18,6998,6999],{"id":6999},"如何发现本质",[14,7001,7002],{},"意识到本质的重要性，我开始寻找生活中各种事物的联系和他们的本质，这也是人的天性。回忆我们婴幼儿时，除了本能反应，也不会做其它的动作。\n所有的行为习惯都是和以前的经历对比，找出差异来学习的。当孩子3-4个月会抬头后，他们打开了新的观察方式，并在4-6个月开始学习抬头爬行，\n8-12个月的时候开始尝试用爬行的手脚站立，一岁后用站立的双脚走路，用可以被挥动的手臂保持平衡。这完全可以看做是一个通过类比之前学会的运动模式，\n来学习新一阶段的运动行为。",[14,7004,7005],{},"会说话后，你有没有发现，在你的生活中经常听到有人向你解释了一大段概念后，你没理解，然后他说\"唉，这就好比xxx和yyy的关系一样呀！\"，听过这句类比的话之后，\n你反而恍然大悟，秒懂了其中的对应关系。这就是发现本质的过程。而且人类天生就是一个善于类比学习的生物。",[14,7007,7008,7009,7013],{},"发现\"学习本质\"是人类乃至生物的一大特性之后，我也非常激动，\n我立马就搜索了网上包含\"本质\"这一词的书籍，想从中学习到怎么找到本质，怎么使用本质。《商业的本质》，《贫穷的本质》等等都纳入到了我的读书列表中。其中\n",[279,7010,7012],{"href":5900,"rel":7011},[283],"《表象与本质》"," 是一本很厚，但十分经典的书，它剖析了人类是如何使用类比来学习的。\n里面你能看到很多机器学习概念的影子。\n这本书里也指出，类比这个过程发生在你每分每秒思考中，当你在思考任何事情的时候，你都会尝试类比到更广泛的领域。如果有人和你说某件他个人的事情，我们也会常常联想到自己经历的类似的事情，\n感同身受也是一种类比。所以类比应该是一种人类更为基础的能力。",[14,7015,7016],{},"阅读书籍是一种加工信息的方式，也就是我们前面提到的\"压缩\"的过程。我是在读博的时候渐渐纠正了对\"读书\"的理解偏差，从讨厌\"读书\"（上课考试\u002F读故事小说），\n到痛恨没有读更多的书，是真正意义上的\"书到用时方恨少\"。\n哈哈，你可以认为我在博士毕业后，才开始真正意义上地开始了寻找\"本质\"的道路，才开始对书籍进行\"压缩\"处理。\n所以我现在读书的方法可能和大家不太一样，我体系化压缩书中的知识。\n用迭代更新知识图谱的方式来更新我的知识网络。",[14,7018,7019,7020,7022],{},"发现本质并不仅靠读书，我们在生活经历中处处也是提炼本质的机会。\n",[279,7021,5787],{"href":6602}," 为我们提炼共通的本质提供了机会，\n学习不同的乐器看上去并不会促进你变成某个乐器的大师，但是会使你对乐器融会贯通，学习新乐器的时间大大降低。根本原因就是你掌握了各种乐器之间的本质。\n生活中的各种试错，尝试请都不要因为风险而鲁莽放弃。因为这也是你发掘本质的物质基础。",[14,7024,7025],{},"让你在下面成长方案中选择，你会选什么？",[1193,7027,7028,7031],{},[184,7029,7030],{},"来一知识，更新一知识的认知",[184,7032,7033],{},"来一知识，为它在知识网中找一个适当位置，更新这个知识，以及它所关联的其它知识",[14,7035,7036],{},"粗略看起来，第一种方法貌似能更快学习到新的知识，但是知识并不成体系，很容易忘（至少我容易忘记\"漏网\"的知识）。\n第二种方式也就是磨刀不误砍柴工了（你看，我在这里又做了一个类比）。这第二种方法是我的选择。",[14,7038,7039],{},[55,7040],{"alt":7041,"src":7042},"find principle","\u002Fa\u002Ffind-principles\u002Fprinciple_demo.png",[14,7044,7045],{},"上图就代表着这样一种模式，每个事物\u002F知识都是不同的，我们需要找到它们本质上的共通处，将它们串起来，绑在一起，也只有这样，它们才是体系中的一环，\n减少了记忆的负担。",[14,7047,7048,7049,7052],{},"当我有意识地强化自己寻找 ",[49,7050,7051],{},"事物共通性"," 的时候，我的知识网络上每一个节点都将得到加强。这是作为人，通过理解其本质，\n系统性的增强，抗风险（比如遗忘）能力也将随之增强。我们身处的是一个快速变化的时代，你没办法靠一种老技能一直存活。\n赶紧学会挖掘本质，用类比学习吧。即使老技能\"被优化\"，至少你还有你的核心竞争力（用本质加固后的知识网），也能快速找到新知识，新技能的本质，\n也只有靠这种能力，我们才有一直向上发展的基础。",[18,7054,7056],{"id":7055},"在不熟悉的领域如何用本质做决策","在不熟悉的领域如何用本质做决策？",[14,7058,7059],{},"我从2020年开始，已经逐步在用上面的方式更新我的知识体系了，当然挑战不会等待你构建好了之后再找到你。我基本上是边构建边用它来作为我对事物的决策依据。\n在我工作的公司，创新型项目是被鼓励的，但是当我开始做创新型项目的时候，甚至做一个非创新新项目，但要求使用我不熟悉技术时，有件事我非常的苦恼。\n我怎么样对我不熟悉的事物做出选择和判断呢？比如我一个学算法的要去思考前端的需求时（这在人少的创业团队十分常见），\n我对前端的细节也完全不懂呀，我该怎么做出方案的决策？",[14,7061,7062,7063,7068],{},"桥水基金创始人瑞·达利欧在 ",[279,7064,7067],{"href":7065,"rel":7066},"https:\u002F\u002Fbook.douban.com\u002Fsubject\u002F27608239\u002F",[283],"《原则》"," 这本书里提到了他的做法，\n他会请懂行、可信赖的人来处理这件事。\n不过我们这种小喽啰，哪恰好就认识那种大牛，找行家有时候也非常不现实。那我该怎么做呢？答案我想你也猜到了。",[14,7070,7071,7072,7075],{},"找到你的知识图谱，知识网络，在里面寻找可以类比的知识节点。并利用这个节点连接到的其他节点进行一个全面的系统化分析，找到同本质场景中，已有应用的方案。\n在",[49,7073,7074],{},"不熟悉的问题上，用类比和本质来决策","。这就是我的法则。",[14,7077,7078],{},"从现在开始，欢迎你也加入关注本质的队伍中来，成为不被时代\"优化\"掉的人。",{"title":316,"searchDepth":317,"depth":317,"links":7080},[7081,7082,7083,7084],{"id":6904,"depth":320,"text":6905},{"id":6943,"depth":320,"text":6944},{"id":6999,"depth":320,"text":6999},{"id":7055,"depth":320,"text":7056},"2020-11-01","通过发现事物的本质和共通性，构建知识网络，用类比来加速学习与决策",[7088,7091,7094,7097],{"q":7089,"a":7090},"什么是'寻找本质'的学习方法？","就是在学习新知识时，不是单独记忆，而是主动寻找它与已有知识的共通之处，将新知识'挂'到已有的知识网络上。比如骑自行车的经验可以迁移到骑摩托车，因为它们本质上都是平衡+方向控制。这样知识成体系，不容易遗忘。",{"q":7092,"a":7093},"如何在不熟悉的领域做出正确决策？","找到你的知识图谱中可以类比的节点，利用这个节点连接的其他知识进行系统化分析，在本质相同的场景中找到已有的方案。简单说就是：遇到新问题时，先问自己'这和我已经知道的什么东西本质上是一样的'。",{"q":7095,"a":7096},"为什么学了很多东西还是觉得没成长？","很可能是知识太零散，没有形成体系。如果每个新知识都独立存储，记忆负担大且容易遗忘。正确的做法是：来一个新知识，先在知识网中为它找到位置，更新它以及关联的其他知识。虽然比单独记更'慢'，但这种磨刀不误砍柴工的方式才能真正沉淀。",{"q":7098,"a":7099},"读书和生活经历哪个对寻找本质更重要？","两者缺一不可。读书是加工信息、'压缩'知识的方式，帮你体系化地构建知识网络。生活经历则提供了提炼本质的物质基础——广泛学习不同领域，不断试错尝试，才有足够多的样本让你发现事物之间的共通性。两者结合，才能持续迭代更新自己的知识图谱。",{},"\u002Farticles\u002Ffind-principles",{"title":6891,"description":7086},[5501,4979,7104,4975,7105,4981,6891],"知识网络","跨领域思维","articles\u002Ffind-principles",[1268,3979,6182],"cQ1etG0gcVYId4RdvWdU2feNmsqaCABH4RU_RH5iR0U",{"id":7110,"title":6357,"body":7111,"cover":7162,"date":7338,"description":7339,"draft":329,"extension":330,"faq":7340,"featured":329,"meta":7353,"navigation":345,"path":6356,"readingTime":591,"seo":7354,"seoKeywords":7355,"stem":7362,"summary":7117,"tags":7363,"type":362,"updated":363,"video":363,"__hash__":7364},"articles\u002Farticles\u002Fmemory-change-and-deep-learning.md",{"type":8,"value":7112,"toc":7329},[7113,7118,7121,7124,7127,7130,7136,7142,7145,7157,7163,7166,7169,7176,7181,7184,7191,7197,7205,7208,7214,7218,7230,7236,7239,7242,7245,7248,7258,7262,7265,7270,7275,7278,7283,7286,7290,7293,7296,7303,7309,7312,7315,7326],[11,7114,7115],{},[14,7116,7117],{},"人脑记忆和深度学习模型有惊人相似：都通过迭代更新神经连接。广泛学习构建通用编码器，让新知识更容易被学会，而遗忘是大脑高效复用资源的必然结果。",[14,7119,7120],{},"不知道你有没有像我一样，前几分钟听到看到的东西，很可能就在后几分钟之内，忘了差不多50%。特别是我在互联网行业工作了几年，\n切身体验到信息轰炸的威力。每天起床，看到微信里就是各种公众号向我推荐的几十篇文章，频繁地刷抖音，10分钟就能浏览过30段不同的短视频。\n成千上万的信息朝我汹涌而来，我想全部接住，但也无能为力。",[14,7122,7123],{},"于是我开始思考什么才是我真正关心的，我想要记住的。然后我需要怎样做才能留下长久记忆。接下来的探索，让我发现，\n有很多概念与深度学习有着异曲同工之处。所以我才想把这些想法写下来，留作未来的参考。",[18,7125,7126],{"id":7126},"信息轰炸",[14,7128,7129],{},"2020年，是一个APP就想给我推送消息，以前的朋友有些做了生意\u002F代购，朋友圈里的小红点一直就没有消停过。\n我是一个特别厌恶被杂乱信息打扰的人，所以我屏蔽了95%的推送，取消了红点提示。下面这张图就是我的微信发现页，\n我就只保留了一天大概只看一次的朋友圈，保留视频号的原因也只是我想了解张小龙想怎么推进视频号，\n可能也就一周看一次，但是我还是很讨厌它上面那个红点提示。",[14,7131,7132],{},[55,7133],{"alt":7134,"src":7135},"my wechat","\u002Fa\u002Fmemory-change-and-deep-learning\u002Fwechat.jpeg",[14,7137,7138,7139,130],{},"其他的通知源也被我逐一的\"优化\"，能最终在我的手机上弹出通知的，可能也就是验证码，微信，闹钟了。这只是有效记忆的第一步——",[49,7140,7141],{},"过滤繁杂信息",[18,7143,7144],{"id":7144},"记忆增强",[14,7146,7147,7150,7151,7156],{},[49,7148,7149],{},"想多记得点东西，那就睡觉吧。"," 你还别说，睡觉真的是增强记忆的重要手段。《Why We Sleep: Unlocking the Power of Sleep and Dreams》\n这本书中有详细阐述这样的观点。如果想偷懒，这个 TED 科普中 ",[279,7152,7155],{"href":7153,"rel":7154},"https:\u002F\u002Fwww.ted.com\u002Ftalks\u002Fmatt_walker_hacking_your_memory_with_sleep",[283],"Hacking your memory with sleep"," 用比较好的动画展示了睡眠与记忆的关系。",[14,7158,7159],{},[55,7160],{"alt":7161,"src":7162},"brain","\u002Fa\u002Fmemory-change-and-deep-learning\u002Fbrain.jpg",[14,7164,7165],{},"这些记忆可能都只是暂存在我的海马体中。就是图中脑部中下方的那个东西。\n之前有一个非常特别的病例，1957年一个叫 H.M. 的病者因为癫痫，他的海马体被切除了，接着他就失去了形成新的长期记忆的能力。\n这个研究也推动了脑科学中对于记忆的研究。",[14,7167,7168],{},"研究表明海马体主要是收集新的记忆，就好像你把工作电脑中的文件拷到了U盘当中或者说是编码进你的脑神经系统。\n等到了晚上睡觉进入到快速眼动期，\n我的大脑开始带着我这个U盘进入了我大脑的数据中心——长期记忆存储地——大脑皮层。这时短期记忆被转移至长期记忆。",[14,7170,7171,7172,7175],{},"甚至，当你做梦的时候，也是一种学习，研究发现大脑会不断 ",[49,7173,7174],{},"\"重放 - Replay\""," 这一段被编码的记忆。\n科学家记录了小白鼠白天走迷宫的脑神经活动，\n睡觉时，科学家发现这些脑神经被不断地激活，\n而且重放的速度大约是清醒时的10倍（这是不是意味着我们做梦的速度比现实发展速度更快，记得盗梦空间里有这一段）。而这种重放机制，\n其实就是在你大脑中刻画新的神经链接，形成新的记忆，不断的重放，也意味着它在不断地强化。",[14,7177,3890,7178,7180],{},[279,7179,6186],{"href":6403}," 中会有更加具体的分析和拆解。",[18,7182,7183],{"id":7183},"模型迭代与记忆重放",[14,7185,7186,7187,7190],{},"这让我思考是否可以类比 ",[49,7188,7189],{},"深度学习当中的迭代过程","，虽然在基础理论上不太相同，一个是用 Gradient 来不断更新神经网络模型的链接中的参数（我就把这个参数链接叫做认知吧）。\n上一段讨论到，人类在睡眠中，也存在不断重放的过程。",[14,7192,7193],{},[55,7194],{"alt":7195,"src":7196},"bp","\u002Fa\u002Fmemory-change-and-deep-learning\u002Fbp.png",[181,7198,7199,7202],{},[184,7200,7201],{},"深度学习模型：不断迭代更新网络参数",[184,7203,7204],{},"人脑：不断重放强化新的脑神经链接",[14,7206,7207],{},"至少在我看来这真的很像，只是他们的迭代和重放的 trigger 不太一样，一个是预测值和真实值的误差，一个是短时记忆与长期记忆的迁移过程。",[14,7209,7210,7211],{},"人和模型还有一点很大的不同，",[49,7212,7213],{},"人脑形成新的神经连接后，是嵌入到以前的记忆链接中的，这也更新了以前的某些相关联的记忆。所以说如果你生活中遇到什么问题，\n说不定睡一觉，醒来就会有答案了。",[18,7215,7217],{"id":7216},"该选广泛学习还是专业学习","该选广泛学习还是专业学习？",[14,7219,7220,7221,7226,7227,7229],{},"有一个 TED 科普\n",[279,7222,7225],{"href":7223,"rel":7224},"https:\u002F\u002Fed.ted.com\u002Flessons\u002Fhow-to-practice-effectively-for-just-about-anything-annie-bosler-and-don-greene#digdeeper",[283],"Why specializing early doesn't always mean career success | David Epstein","\n中描述了 ",[49,7228,5787],{}," 能让我们更快速地学习到新技能，新知识。",[14,7231,7232],{},[55,7233],{"alt":7234,"src":7235},"wick wick","\u002Fa\u002Fmemory-change-and-deep-learning\u002Fwick_people.png",[14,7237,7238],{},"其中举了这样一个例子。有两批人，一批是在某一个乐器上的专业演奏者，一批是多种乐器都接触过，玩得很杂的业余者，让他们再接着学习新的几种乐器。\n结果发现，业余者会花很多时间学习第一个新乐器，但是他们能花更少时间学习其它乐器，甚至，当学到第三种乐器时，业余者可以花比专业者更少的时间学习。",[14,7240,7241],{},"这种情况不仅仅发生在学习乐器上，在学校教育里也存在，如果孩子入大学前什么都尝试过，比那些只在某个专项上努力的学生，学习新事物的时间要少很多。",[14,7243,7244],{},"罗森茨威格也做出了一个白鼠实验，\n分批让白鼠生活在信息单一匮乏和信息丰富的环境中，结果发现丰富环境成长的老鼠大脑皮层更厚更重，乙酰胆碱的酶更具活性，\n神经元两者数量无差别，但是丰富环境老鼠神经元更大。广泛学习也可以认为是这样的丰富信息的环境。",[14,7246,7247],{},"如果回到脑结构上，我们往远了思考，\n广泛学习，必定会构建一个更加复杂庞大且有效的神经链接网络，而这个网络中存在更多事物之间的共通性，毕竟他们要节约链接数，\n也意味着不同事物可能会共用一些链接，这使得广泛学习者对于新的类似的事物能更快速地构建链接，加入到这个已经存在的网络里。\n而专业学习者，他们的技能可能更加独立，链接系统也可能独立起来，更加难找到事物的共通性。",[14,7249,7250,7251,7254,7255,7257],{},"所以，",[49,7252,7253],{},"我认为广泛学习，找到事物的本质和共通性才是我们真正应该追求的","。\n我在 ",[279,7256,6891],{"href":7101}," 中更加具体地阐述了我是如何利用这个想法，发现生活中的本质的。",[18,7259,7261],{"id":7260},"广泛学习与通用编码器是什么关系","广泛学习与「通用编码器」是什么关系？",[14,7263,7264],{},"有了对广泛学习和专业学习的讨论，我想再回到我擅长的深度学习上。我会发现，\n对于事物的理解非常像 AutoEncoder 系统中的 Encoder Decoder 概念。\n广泛学习者一直是在训练一个庞大的 Encoder，这个 Encoder 可以理解，编码不同种类的信息，能够进行深度类比和找到事物本质的信息。\n训练出一个万能通用 Encoder，可以大大减轻 Decoder 的学习压力，这也是为什么上面提到的广泛学习者，能快速学习多种不同任务的原因了。",[14,7266,7267],{},[55,7268],{"alt":5815,"src":7269},"\u002Fa\u002Fmemory-change-and-deep-learning\u002Fencoder-decoder.png",[14,7271,7272],{},[49,7273,7274],{},"换句话讲，广泛学习者利用更多的 Decoding 任务，花了更多时间在学习一个通用 Encoder。如果 Decoding 任务足够多，\nEncoder 就更通用，新的 Decoding 任务学起来就更简单。",[14,7276,7277],{},"而专业学习者，更像是学着多个不同的 Encoder，所以他们单个 Encoder 特别的强，而不具备通用性。",[14,7279,3890,7280,7282],{},[279,7281,5735],{"href":5734}," 中会更详细地分析这种观点。",[14,7284,7285],{},"你看，我说了我喜欢挖掘一些深度学习比较本质的东西，这不就是一个吗。以后我对于 Encoder-Decoder 就会有另一种解释了~\n什么迁移学习，多任务学习，多模态学习还不都是这个原理。",[18,7287,7289],{"id":7288},"记忆为什么会发生覆盖与重构","记忆为什么会发生覆盖与重构？",[14,7291,7292],{},"我再从全局观察一下，想要记忆的第一步，就是过滤多余信息，让脑袋的负载没那么大。当新信息不断地进入长期记忆中，\n我们的神经网络系统将会不断创造新的连接，如果新信息与长期记忆中的旧信息之间是有关系的，那我们原本的网络系统很可能就会被覆盖或者重构。\n这样的好处就是将新信息安好家，找到了一个同兴趣的社区，但是坏消息也有，被重构的网络可能改变原有的记忆，\n这时记忆应该就出现了混淆或者遗忘。",[14,7294,7295],{},"所以遗忘是有它的合理性的。\n大自然最擅长的是充分利用资源，效率最大化地运转事物。每一种动物的大脑都有着不一样的容积，蚂蚁为什么没有像人一样大的大脑？\n答案是没必要，用不了那么多。同样，我们人的大脑为什么不再长大一点？答案是更大的大脑消耗更多的资源，目前我们的大脑最适合人作为人类所消耗的资源量。",[14,7297,7298,7299,7302],{},"在有限的大脑容积内，怎么样可以有效地利用这些脑神经链接，更有利于我们活下去？\n我认为是我们的大脑学会了 ",[49,7300,7301],{},"\"复用\""," 这些神经链接（上文提到的通用 Encoder）。\n如果某些东西可以在多种场景下，实现复用，那这东西的价值肯定高，效率也不差。",[14,7304,7305,7306],{},"所以本质上来说，我们并没有忘记，而只是之前的神经连接方式变了，\n记忆也就出现了变化，",[49,7307,7308],{},"有的记忆因原本的链接方式变化而改变，也有的记忆甚至因这场改变而消失了。\n但这场变化也有好的一方面，多个记忆的共同部分因为重复被激活，他们的链接也可以被加强。我把它称为\"事物的共通性被重构加强了\"。",[18,7310,7311],{"id":7311},"对我的影响",[14,7313,7314],{},"对我的影响肯定是巨大的，在今后的生活学习中，我就会依据上面的这些思考，跟随下面这些原则：",[1193,7316,7317,7320,7323],{},[184,7318,7319],{},"坚持广泛学习，不排斥新领域的新知识；",[184,7321,7322],{},"不熬夜，多睡觉（这点我依旧是打脸的...）；",[184,7324,7325],{},"多将新的知识归纳总结到原有的知识体系中",[14,7327,7328],{},"希望看到这篇文章的朋友共同进步吧。",{"title":316,"searchDepth":317,"depth":317,"links":7330},[7331,7332,7333,7334,7335,7336,7337],{"id":7126,"depth":320,"text":7126},{"id":7144,"depth":320,"text":7144},{"id":7183,"depth":320,"text":7183},{"id":7216,"depth":320,"text":7217},{"id":7260,"depth":320,"text":7261},{"id":7288,"depth":320,"text":7289},{"id":7311,"depth":320,"text":7311},"2020-10-01","从信息轰炸到广泛学习，用深度学习的理论来解释人类记忆的变化与成长",[7341,7344,7347,7350],{"q":7342,"a":7343},"为什么广泛学习比专业学习更有优势？","广泛学习者训练的是一个'通用编码器'，能理解和编码不同种类的信息。研究表明，接触过多种乐器的业余者学新乐器的速度最终会超过专业演奏者，因为他们掌握了乐器之间的共通本质，大大降低了新任务的学习成本。",{"q":7345,"a":7346},"为什么我们会遗忘学过的东西？","遗忘不是大脑的缺陷，而是高效利用有限资源的机制。当新信息进入长期记忆，会重构原有的神经连接网络。多个记忆的共同部分因反复激活而加强，而不常用的连接会被覆盖或消失。这是大脑在'复用'神经连接，留下真正重要的知识。",{"q":7348,"a":7349},"人脑记忆和深度学习模型的迭代有什么相似之处？","深度学习模型通过不断迭代更新网络参数，人脑则在睡眠中不断重放白天的经历来强化新的神经连接。两者都是通过反复'训练'来巩固认知。不同之处在于：人脑的新连接会嵌入已有的记忆网络中，同时更新相关的旧记忆，所以'睡一觉，问题可能就有答案了'。",{"q":7351,"a":7352},"如何减少信息轰炸对记忆的干扰？","有效记忆的第一步是过滤繁杂信息，降低大脑的负载。可以从屏蔽 95% 的推送通知开始，只保留真正重要的信息源。然后通过广泛学习把有价值的新知识归纳到已有的知识体系中，让不同记忆共用神经连接，提高记忆效率和抗遗忘能力。",{},{"title":6357,"description":7339},[7356,7357,5787,7358,7359,7360,7361],"记忆与学习","深度学习与人脑","神经网络记忆","遗忘与重构","通用编码器","信息过滤","articles\u002Fmemory-change-and-deep-learning",[1268,3979],"EmsxsyVIAO5Uhm4WqYVAC5GAislsTwS273T2nD4rmZQ",[7366,7541,7890,8092,8707,8848,9083,9381,9652,9837,10065,10253,10491,10832,11001,11104,11241,11378,11567,11655,11780,12040,12129,12227,12357,12541,12705,12846,13016,13165,13299,13474],{"id":7367,"title":7368,"body":7369,"date":7514,"description":7515,"draft":329,"extension":330,"faq":7516,"meta":7526,"navigation":345,"path":7527,"project":7528,"readingTime":535,"seo":7529,"seoKeywords":7530,"stem":7537,"summary":7538,"tags":7539,"updated":363,"__hash__":7540},"builds\u002Fbuilds\u002Fmetool\u002F2026-06-30-online-drum-kit.md","孩子刚开始学架子鼓，我做了个在线版让他在家也能玩",{"type":8,"value":7370,"toc":7507},[7371,7375,7378,7385,7392,7395,7401,7404,7413,7416,7419,7425,7431,7437,7443,7446,7449,7455,7461,7467,7474,7477,7480,7483,7486,7495,7498,7501],[18,7372,7374],{"id":7373},"起因孩子开始学架子鼓了","起因：孩子开始学架子鼓了",[14,7376,7377],{},"我孩子最近在课外班开始学架子鼓。刚入门，正是兴趣最浓的时候——上完课回家还会比划，嘴里念叨着\"动次打次\"。",[14,7379,7380,7381,7384],{},"但架子鼓这东西有个现实问题：",[49,7382,7383],{},"贵、占地方、还吵。"," 一套像样的真鼓几千上万，电子鼓便宜点也要几千块，搬回家放哪都是问题，楼上楼下还得忍受咚咚声。对一个刚开始学、还不确定能坚持多久的孩子来说，一上来就砸钱买设备，风险太大。",[14,7386,7387,7388,7391],{},"可兴趣这东西，",[49,7389,7390],{},"一周只在课外班碰一次，很容易凉。"," 我希望他回家后也能随时摸两下，哪怕只是玩，把那点热乎劲儿保持住。",[14,7393,7394],{},"于是我想：能不能做个在线版，让他打开网页就能敲？不用花大价钱买设备，也能在家体验架子鼓。",[14,7396,7397],{},[55,7398],{"alt":7399,"src":7400},"在线架子鼓：一张俯视图，每个鼓件都是可点击的大热区","\u002Fb\u002Fmetool\u002Fdrumkit-cover.webp",[18,7402,7403],{"id":7403},"做了什么",[14,7405,7406,7407,7412],{},"我用浏览器的 Web Audio API 做了一个",[279,7408,7411],{"href":7409,"rel":7410,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fgames\u002FdrumKit\u002F",[283],"在线架子鼓","，打开网页、戴上耳机，触屏或键盘一敲就有声音。",[14,7414,7415],{},"为了让手感尽量接近真鼓，我没有用电子合成的\"滴答\"声，而是用了真实录制的开源鼓声采样——底鼓、军鼓、踩镲、嗵鼓、吊镲、叮叮镲都是录音棚里录下来的真实音色，通过 Web Audio API 低延迟播放，敲下去几乎没有延迟。整套鼓做成一张俯视图，每个鼓件是一个大大的可点击热区，点到哪、哪一块就下压回弹，配上可选的震动反馈，敲起来挺\"跟手\"。",[14,7417,7418],{},"几个我自己比较满意的细节：",[14,7420,7421,7424],{},[49,7422,7423],{},"触屏 + 键盘双操作。"," 手机、平板上用手指点，支持多指同时敲；电脑上每个鼓件映射了键盘按键（A 吊镲、S\u002FD 闭\u002F开镲、F 军鼓、空格底鼓……），延迟更低，适合练拍子。",[14,7426,7427,7430],{},[49,7428,7429],{},"踩镲开闭联动。"," 和真鼓一样，敲闭镲会\"掐断\"正在延音的开镲（choke），还原踩镲脚踏的止音手感。",[14,7432,7433,7436],{},[49,7434,7435],{},"录制与循环回放。"," 一键录下你敲的每一下和时间点，再回放、循环，慢慢打磨一段节奏型。录制只存在当前页面内存里，刷新即清，数据不离开浏览器。",[14,7438,7439],{},[55,7440],{"alt":7441,"src":7442},"在线架子鼓界面：每个鼓件标注了对应键盘按键，顶部带录制、播放、循环按钮","\u002Fb\u002Fmetool\u002Fdrumkit-demo.jpeg",[18,7444,7445],{"id":7445},"用它能让孩子练到什么",[14,7447,7448],{},"我特意想清楚了这个工具的能力边界——它不是真鼓的替代品，而是入门和保持兴趣的补充。它真正能帮上忙的，恰好是打鼓里最难、又最不挑设备的那部分：",[14,7450,7451,7454],{},[49,7452,7453],{},"节奏感与稳定性。"," 保持一条稳定的踩镲线是所有鼓手的基本功。打鼓最难的从来不是力气，而是\"稳\"——让每一下都落在准确的时间点上，长时间保持匀速。这是纯神经训练，在屏幕上敲点对了就有效。",[14,7456,7457,7460],{},[49,7458,7459],{},"四肢协调。"," 真鼓要双手双脚各干各的，这里用多指 + 键盘也能模拟\"分手分脚\"的协调挑战。",[14,7462,7463,7466],{},[49,7464,7465],{},"即时反馈与解压。"," 敲下去瞬间就有声音、动画和震动反馈，这种强即时反馈非常解压，孩子玩得停不下来。",[14,7468,7469,7470,7473],{},"它练不了的，是真实的击打力度控制、回弹手感和踩镲脚法——这些得在有物理回弹的设备上练，屏幕给不了。所以我对它的定位很清楚：",[49,7471,7472],{},"课外班学的是手上的真功夫，回家用它保持节奏感和兴趣的余温。"," 两者配合，而不是互相替代。",[18,7475,7476],{"id":7476},"怎么敲出一段节奏",[14,7478,7479],{},"最经典的入门节奏是\"动次打次\"：脚（空格\u002F底鼓）打 1、3 拍，军鼓打 2、4 拍，闭镲打稳定的八分音符垫底。先慢速把三者分开练熟，再合到一起，几乎所有流行歌的基础鼓点就有了。",[14,7481,7482],{},"想进阶就在每四小节结尾用高、中、落地嗵鼓做一个由高到低的过门（fill），最后用吊镲收尾——这就是一段完整的乐句。点\"录制\"录下来再循环播放，能很直观地听出哪里抢拍、哪里拖拍。这个\"敲完马上回放对照\"的闭环，是练时间感最有效的方式之一。",[18,7484,7485],{"id":7485},"为什么又是给孩子做的",[14,7487,7488,7489,7494],{},"熟悉 metool 的朋友知道，",[279,7490,7493],{"href":7491,"rel":7492,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fgames\u002F",[283],"游戏分类我早就改名叫\"给儿子做的游戏合集\"","了。这个在线架子鼓，又是给他做的一个。",[14,7496,7497],{},"metool 上大部分工具是为我自己的工作需求做的，但游戏和这类\"玩\"的东西，基本都是为孩子做的。看着他从迷宫一玩半小时，到现在抱着 iPad 敲架子鼓，我觉得这些东西的价值，不在 GA4 的数字里，而在他想玩的时候我能立刻递给他。",[14,7499,7500],{},"不用花大价钱买设备，打开浏览器就能在家体验架子鼓——这就够了。",[14,7502,7503],{},[279,7504,7506],{"href":7409,"rel":7505},[283],"试试在线架子鼓 →",{"title":316,"searchDepth":317,"depth":317,"links":7508},[7509,7510,7511,7512,7513],{"id":7373,"depth":320,"text":7374},{"id":7403,"depth":320,"text":7403},{"id":7445,"depth":320,"text":7445},{"id":7476,"depth":320,"text":7476},{"id":7485,"depth":320,"text":7485},"2026-06-30","孩子在课外班学架子鼓，刚入门、正有兴趣，可真鼓又贵又吵不可能搬回家。我做了个浏览器在线架子鼓，回家打开网页就能敲，用「玩」的方式帮他保持兴趣的余温。",[7517,7520,7523],{"q":7518,"a":7519},"在线架子鼓能代替真鼓让孩子练习吗？","不能完全代替，但能补上最关键的入门部分。打鼓最难、最值钱的是「节奏稳定」和「四肢协调」，这两样几乎不挑设备，在屏幕或键盘上敲点对就有效。它练不了的是真实的击打力度和踩镲脚法——这些得在有物理回弹的设备上练。所以它适合入门、保持兴趣和日常复习节奏型，是课外班学习的补充。",{"q":7521,"a":7522},"为什么做成网页而不是 App？","因为「随手就能玩」。孩子从课外班回家想敲两下时，我打开浏览器递给他就行，不用下载安装、不用等更新。在线版改完部署，下次打开就是最新的。对这种随时可能想用一下的场景，网页比 App 更顺手。",{"q":7524,"a":7525},"电脑上怎么用键盘敲？","每个鼓件都映射了键盘按键（A 吊镲、F 军鼓、空格底鼓等），屏幕上直接标注。键盘延迟比触屏更低，更适合练拍子。手机、平板上则用手指点，支持多指同时敲击。",{},"\u002Fbuilds\u002Fmetool\u002F2026-06-30-online-drum-kit","metool",{"title":7368,"description":7515},[7411,7531,7532,7533,7534,7535,7536],"没有架子鼓怎么练习","在家练打鼓","儿童架子鼓启蒙","浏览器架子鼓模拟器","零基础学架子鼓","练习节奏感","builds\u002Fmetool\u002F2026-06-30-online-drum-kit","孩子在课外班刚开始学架子鼓，正是有兴趣的时候，但真鼓又贵又吵搬不回家。我用 Web Audio API + 真实鼓声采样做了个在线架子鼓，触屏或键盘一敲就响，自带录制循环回放。回家打开网页就能玩，不用花大价钱买设备，也能让他保持对架子鼓的兴趣。",[1078,1746],"o_1b_uu9pdfbdwHARqlWUv6Rp5QZMUtlghqlBZ-cPQM",{"id":7542,"title":7543,"body":7544,"date":7859,"description":7860,"draft":329,"extension":330,"faq":7861,"meta":7874,"navigation":345,"path":7875,"project":7528,"readingTime":541,"seo":7876,"seoKeywords":7877,"stem":7886,"summary":7887,"tags":7888,"updated":363,"__hash__":7889},"builds\u002Fbuilds\u002Fmetool\u002F2026-06-25-html-editor.md","上线可视化 HTML 编辑器：AI 出码后的最后 10%，别再用对话改一个字了",{"type":8,"value":7545,"toc":7852},[7546,7550,7553,7556,7562,7565,7579,7582,7589,7594,7598,7605,7608,7614,7621,7623,7631,7637,7640,7646,7652,7658,7664,7667,7693,7696,7700,7703,7772,7779,7804,7807,7810,7830,7833,7838,7840,7843,7846],[18,7547,7549],{"id":7548},"问题ai-生成的-html改一个字为什么这么麻烦","问题：AI 生成的 HTML，改一个字为什么这么麻烦？",[14,7551,7552],{},"最近 AI 越来越擅长直接输出 HTML 了。",[14,7554,7555],{},"落地页、数据报告、产品原型、甚至整套 HTML 幻灯片——ChatGPT、Claude、Gemini 都能一次生成，样式完整、结构清晰，打开就能看。",[14,7557,7558,7559],{},"但生成完之后，一个新痛点立刻出现：",[49,7560,7561],{},"你往往只想改一个字、换一张图、调一句文案，却不得不再开一轮 AI 对话。",[14,7563,7564],{},"我遇到过太多次这种场景：",[1193,7566,7567,7570,7573,7576],{},[184,7568,7569],{},"Claude 生成了一个活动落地页，标题里有个错别字",[184,7571,7572],{},"把 HTML 丢回去说「把第三段改成 XXX」",[184,7574,7575],{},"AI 重新生成，第三段改对了，但侧边栏的配色和间距全变了",[184,7577,7578],{},"再改一轮，又动了别的地方……",[14,7580,7581],{},"改一个数字、换一张配图、把模块顺序调一下——这些事手动点一下就能完成，却每次都要烧 token、等生成、还要检查 AI 有没有改坏其他地方。",[14,7583,7584,7585,7588],{},"海外产品 HtmlDrag、HeyHTML 都在强调同一个概念：",[49,7586,7587],{},"AI 出码后的「最后 10% 打磨」","。结构 AI 已经帮你搭好了，剩下的内容微调，应该用手而不是用对话。",[14,7590,7591],{},[55,7592],{"alt":379,"src":7593},"\u002Fb\u002Fmetool\u002Fhtml-editor-cover.png",[18,7595,7597],{"id":7596},"为什么不直接打开源码改","为什么不直接打开源码改？",[14,7599,7600,7601,7604],{},"理论上可以。把 ",[79,7602,7603],{},".html"," 文件拖进 VS Code，找到对应标签，改文字、换图片路径、调 CSS。",[14,7606,7607],{},"但对大多数非技术人员来说，这条路走不通。HTML 标签嵌套层级深，改一处可能影响全局样式；图片路径是相对路径还是外链，改完下载后能不能正常显示，都是坑。",[14,7609,7610,7611],{},"再找 AI 改？前面说了——",[49,7612,7613],{},"小改动不值得大动干戈。",[14,7615,7616,7617,7620],{},"我想要的是：",[49,7618,7619],{},"上传 HTML，页面直接渲染出来，像编辑 Word 文档一样点选修改，改完一键下载。"," 不需要看一行代码，不需要装任何软件，HTML 也不离开浏览器。",[18,7622,7403],{"id":7403},[14,7624,7625,7630],{},[279,7626,7629],{"href":7627,"rel":7628},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fhtml\u002Feditor\u002F",[283],"MeTool 可视化 HTML 编辑器"," 就是这个思路。",[14,7632,7633,7634,7636],{},"上传 AI 生成或已有的 ",[79,7635,7603],{}," 文件，页面立即在编辑区渲染。点中任意元素，浮动工具栏即时出现——改文字、调字体字号颜色、替换配图、删除多余模块、拖拽调整顺序。全程在渲染后的页面上操作，源码面板都不需要打开。",[14,7638,7639],{},"四个核心能力，对应四个最常见的修改需求：",[14,7641,7642,7645],{},[49,7643,7644],{},"点选即改"," — 双击元素进入文字编辑，像改文档一样直接改写措辞。选中后还能调字体、字号、颜色、对齐和加粗。",[14,7647,7648,7651],{},[49,7649,7650],{},"图片内嵌"," — 选中图片上传新图，自动转成 base64 嵌入 HTML。下载后的文件在任何电脑、任何地方打开都能正常显示，不必额外携带图片文件夹。这是 AI 生成 HTML 里最常见的痛点：外链图片失效、相对路径丢失，内嵌后彻底解耦。",[14,7653,7654,7657],{},[49,7655,7656],{},"智能拖拽"," — 不是把元素随便扔到页面上。编辑器会识别元素的排版上下文：flex \u002F grid 文档流里的模块用「排序式」拖拽，释放后自动吸附回原本的排列规则，手机 \u002F 平板 \u002F 桌面切换视口也不乱；只有原本就是绝对定位的装饰元素才允许自由拖到任意坐标。",[14,7659,7660,7663],{},[49,7661,7662],{},"本地隐私"," — 所有编辑在浏览器本地完成，HTML 和图片不上传任何服务器。编辑进度自动缓存到本地，刷新不丢失。",[14,7665,7666],{},"另外几个细节是实际用下来觉得必要的：",[181,7668,7669,7675,7681,7687],{},[184,7670,7671,7674],{},[49,7672,7673],{},"暂停编辑模式","：HTML 幻灯片（reveal.js、自定义 deck 等）载入后，可以先暂停编辑、自由翻页浏览，找到要改的那一页再恢复编辑。交互后才出现的内容（按钮点开弹层、翻页后才显示的模块）也能正常触达。",[184,7676,7677,7680],{},[49,7678,7679],{},"撤销 \u002F 重做","：最多 50 步，改错了可以回退。",[184,7682,7683,7686],{},[49,7684,7685],{},"全局查找替换","：品牌名写错了一处，一次替换全部相同措辞。",[184,7688,7689,7692],{},[49,7690,7691],{},"多视口预览","：手机 \u002F 平板 \u002F 桌面三档切换，改完立刻看响应式效果。",[14,7694,7695],{},"导出时支持下载干净 HTML（剥离编辑层），HTML 幻灯片还可以导出多页 PDF 或逐页 PNG 压缩包。",[18,7697,7699],{"id":7698},"改内容用手点改结构再找-ai","改内容用手点，改结构再找 AI",[14,7701,7702],{},"做这个工具时，我把能力边界想得很清楚——可视化编辑和对话式 AI 修改并不冲突，各有适用场景：",[949,7704,7705,7718],{},[952,7706,7707],{},[955,7708,7709,7712,7715],{},[958,7710,7711],{},"需求",[958,7713,7714],{},"推荐方式",[958,7716,7717],{},"理由",[965,7719,7720,7731,7741,7751,7762],{},[955,7721,7722,7725,7728],{},[970,7723,7724],{},"改一句文案 \u002F 一个数字",[970,7726,7727],{},"可视化编辑",[970,7729,7730],{},"点一下即可，秒级完成，不费 token",[955,7732,7733,7736,7738],{},[970,7734,7735],{},"换一张配图",[970,7737,7727],{},[970,7739,7740],{},"上传内嵌，所见即所得",[955,7742,7743,7746,7748],{},[970,7744,7745],{},"调整模块顺序",[970,7747,7727],{},[970,7749,7750],{},"拖拽即可，自动保持响应式排版",[955,7752,7753,7756,7759],{},[970,7754,7755],{},"新增一整个章节 \u002F 重构布局",[970,7757,7758],{},"对话式 AI",[970,7760,7761],{},"结构性变更更适合让 AI 重写",[955,7763,7764,7767,7769],{},[970,7765,7766],{},"改设计风格 \u002F 配色体系",[970,7768,7758],{},[970,7770,7771],{},"系统性样式改动一句话更高效",[14,7773,7774,7775,7778],{},"一句话总结：",[49,7776,7777],{},"「改内容」用可视化编辑器，「改结构」再找 AI。"," 把昂贵的 API 调用留给真正需要它的地方。",[14,7780,7781,7782,7786,7787,7792,7793,7798,7799,7803],{},"这和 metool HTML 分类里其他工具形成一条完整工作流：在",[279,7783,7785],{"href":7627,"rel":7784},[283],"编辑器","里改内容 → 用",[279,7788,7791],{"href":7789,"rel":7790},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fhtml\u002Fpreview\u002F",[283],"实时预览","检查多视口效果 → 用",[279,7794,7797],{"href":7795,"rel":7796},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fhtml\u002Fshare\u002F",[283],"分享链接","发给对方看。之前写过 ",[279,7800,7802],{"href":7801},"\u002Fbuilds\u002Fmetool\u002F2026-05-14-html-markdown-share","HTML 和 Markdown 分享工具"," 解决「发给别人看」的问题；这次补的是「自己改」这一环。",[18,7805,7806],{"id":7806},"我的使用方式",[14,7808,7809],{},"现在我的典型流程是这样的：",[1193,7811,7812,7818,7821,7824,7827],{},[184,7813,7814,7815,7817],{},"让 Claude 生成一份 HTML 报告或落地页，下载 ",[79,7816,7603],{}," 文件",[184,7819,7820],{},"拖进 MeTool 可视化编辑器，先过一遍整体效果",[184,7822,7823],{},"点选改错别字、换主图、调模块顺序——全程不超过 5 分钟",[184,7825,7826],{},"切换到手机视口看一眼响应式有没有问题",[184,7828,7829],{},"满意后下载 HTML；如果要发给别人，再丢进分享工具生成链接",[14,7831,7832],{},"如果是 HTML 幻灯片，会先开「暂停编辑」翻几页找到要改的内容，改完标题和配图，导出 PDF 直接发。",[14,7834,7835],{},[49,7836,7837],{},"能手动点一下就改好的事，就别再麻烦 AI 了。",[1023,7839],{},[14,7841,7842],{},"这个工具解决的是 AI 时代一个很具体的问题：生成 HTML 已经很容易，但改 HTML 不应该比生成还麻烦。",[14,7844,7845],{},"如果你也经常在 AI 生成的 HTML 里改一个字、换一张图，大概会理解这个痛点。",[14,7847,7848],{},[279,7849,7851],{"href":7627,"rel":7850},[283],"试试可视化 HTML 编辑器 →",{"title":316,"searchDepth":317,"depth":317,"links":7853},[7854,7855,7856,7857,7858],{"id":7548,"depth":320,"text":7549},{"id":7596,"depth":320,"text":7597},{"id":7403,"depth":320,"text":7403},{"id":7698,"depth":320,"text":7699},{"id":7806,"depth":320,"text":7806},"2026-06-25","ChatGPT、Claude 生成的 HTML 落地页、报告、幻灯片，改一句文案或换一张图却要再开一轮 AI 对话——慢、费 token，还可能改坏其他地方。MeTool 上线可视化 HTML 编辑器：上传 HTML，点选即改，全程不看代码，100% 浏览器本地处理。",[7862,7865,7868,7871],{"q":7863,"a":7864},"编辑后的图片会丢失吗？","不会。你替换的图片会以 base64 编码直接内嵌进 HTML，下载后的文件在任何电脑、任何地方打开都能正常显示图片，无需额外附带图片文件。",{"q":7866,"a":7867},"拖拽会不会把页面排版搞乱？","不会。编辑器会智能识别元素的排版方式：处于正常文档流（flex \u002F grid）中的元素采用「排序式」拖拽，释放后自动吸附回原本的排列规则，换屏不乱；只有原本就是绝对定位的装饰元素才允许自由拖到任意坐标。",{"q":7869,"a":7870},"需要懂 HTML 或 CSS 吗？","不需要。整个编辑过程都在渲染后的页面上进行：点选、改字、换色、换图、删除、拖拽，全程不展示也不需要看源码。改完一键下载即可。",{"q":7872,"a":7873},"我的 HTML 会上传到服务器吗？","不会。所有编辑都在你的浏览器本地完成，HTML 与图片都不会离开你的设备，关闭页面前会自动缓存到本地，刷新不丢失。",{},"\u002Fbuilds\u002Fmetool\u002F2026-06-25-html-editor",{"title":7543,"description":7860},[7878,7879,7880,7881,7882,7883,7884,7885],"HTML在线编辑器","AI生成HTML编辑","可视化HTML编辑","改AI生成的HTML","HTML拖拽编辑","不用代码改HTML","HtmlDrag替代品","AI出码后编辑","builds\u002Fmetool\u002F2026-06-25-html-editor","MeTool 上线可视化 HTML 编辑器，解决 AI 生成 HTML 后的「最后一公里」修改问题：上传 HTML 直接渲染，点选元素改文字、换字体颜色、替换配图（base64 内嵌）、智能拖拽排序，全程不看代码。改内容用手点，改结构再找 AI——把 token 留给真正需要的地方。",[1078,361],"k6UJGtEFlJOaT5cXno99BozpRdR4n4k0X2oVj9zd9KQ",{"id":7891,"title":7892,"body":7893,"date":8065,"description":8066,"draft":329,"extension":330,"faq":8067,"meta":8077,"navigation":345,"path":8078,"project":7528,"readingTime":535,"seo":8079,"seoKeywords":8080,"stem":8088,"summary":8089,"tags":8090,"updated":363,"__hash__":8091},"builds\u002Fbuilds\u002Fmetool\u002F2026-06-18-screen-wake-lock.md","上线屏幕常亮工具：等 AI 写代码时，电脑别再自动息屏了",{"type":8,"value":7894,"toc":8058},[7895,7899,7902,7905,7908,7922,7925,7930,7934,7937,7940,7943,7948,7950,7953,7956,7959,7966,7973,7976,7980,7983,7988,7999,8004,8015,8018,8020,8023,8040,8043,8045,8048,8051],[18,7896,7898],{"id":7897},"问题等-ai-写代码时屏幕黑了","问题：等 AI 写代码时，屏幕黑了",[14,7900,7901],{},"最近大量时间花在用 AI 编程工具上——Cursor、Claude Code、Codex。工作流程很简单：给 AI 一段指令，然后等它生成。",[14,7903,7904],{},"问题出在「等」这个环节。",[14,7906,7907],{},"AI 生成一个复杂功能可能需要 2-5 分钟，有时更久。而我的 MacBook 默认 2 分钟无操作就息屏。于是经常出现这样的情况：",[1193,7909,7910,7913,7916,7919],{},[184,7911,7912],{},"给 Claude Code 下了指令，去倒杯水",[184,7914,7915],{},"回来发现屏幕黑了",[184,7917,7918],{},"解锁后发现 AI 还在跑——运气好的话",[184,7920,7921],{},"运气不好的话，网络已经断了，Claude Code 的 SSH 会话超时，得重新来",[14,7923,7924],{},"这事烦了我好几次之后，我决定做个工具解决它。",[14,7926,7927],{},[55,7928],{"alt":379,"src":7929},"\u002Fb\u002Fmetool\u002Fscreen-wake-lock-cover.jpg",[18,7931,7933],{"id":7932},"为什么不改系统设置","为什么不改系统设置？",[14,7935,7936],{},"最简单的方案当然是：系统偏好设置 → 显示器 → 关闭显示器：永不。",[14,7938,7939],{},"但我不想这样做。改完之后我一定会忘记改回来，然后连续几天屏幕永远亮着，电费和屏幕寿命都在烧。",[14,7941,7942],{},"我也看了 Caffeine、Amphetamine 这些 Mac 上的防息屏工具，都不错，但——在客户的电脑上我没法装东西，在公司电脑上可能没有管理员权限。",[14,7944,7616,7945],{},[49,7946,7947],{},"打开一个网页，点一下，屏幕常亮；用完关掉网页，一切恢复原样。",[18,7949,7403],{"id":7403},[14,7951,7952],{},"用浏览器的 Screen Wake Lock API 做了一个屏幕常亮工具。核心逻辑很简单：页面请求一个「唤醒锁」，只要页面保持在前台，设备就不会自动息屏。",[14,7954,7955],{},"但光有个开关太无聊了。等 AI 的那几分钟，盯着一个黑屏或白屏也没意思。",[14,7957,7958],{},"于是我录了一段 Claude Code 在终端里工作的视频——代码在屏幕上刷刷地滚动，光标在跳，看起来很忙碌。把这段视频做成了全屏背景选项：",[14,7960,7961],{},[7962,7963],"video",{"src":7964,"autoPlay":345,"loop":345,"muted":345,"playsInline":345,"style":7965},"\u002Fb\u002Fmetool\u002Fclaude-code-work.mp4","width:100%;border-radius:12px;margin:16px 0;",[14,7967,7968,7969,7972],{},"开启常亮后，整个屏幕变成这段视频的全屏播放。效果就像是——",[49,7970,7971],{},"AI 正在你的屏幕上写代码","，你只需要等着收货就好。",[14,7974,7975],{},"比盯着一个倒计时数字有意思多了。",[18,7977,7979],{"id":7978},"它能做什么不能做什么","它能做什么，不能做什么",[14,7981,7982],{},"做这个工具时我刻意把能力边界想清楚了，在工具页也写得很明白：",[14,7984,7985],{},[49,7986,7987],{},"能做的：",[181,7989,7990,7993,7996],{},[184,7991,7992],{},"本页全屏时，阻止设备自动息屏（等 AI 工作、浏览器内演示投屏）",[184,7994,7995],{},"双屏场景，把本页放在第二块屏保持可见，主屏继续用 Cursor \u002F Claude Code",[184,7997,7998],{},"设置定时关闭，到点自动恢复",[14,8000,8001],{},[49,8002,8003],{},"做不到的：",[181,8005,8006,8009,8012],{},[184,8007,8008],{},"切到其他应用后继续防息屏（切走 = 失效）",[184,8010,8011],{},"在后台保持系统唤醒（这不是浏览器能做的事）",[184,8013,8014],{},"替代 PowerPoint 演示时的防息屏（PPT 在前台时浏览器已经不可见了）",[14,8016,8017],{},"这个限制是浏览器 API 的机制决定的，不是 bug。把这件事讲清楚比假装全能更重要。",[18,8019,7806],{"id":7806},[14,8021,8022],{},"现在我的工作流是这样的：",[1193,8024,8025,8028,8031,8034,8037],{},[184,8026,8027],{},"外接显示器上打开 MeTool 屏幕常亮工具，选「AI 工作」背景，设置 30 分钟定时",[184,8029,8030],{},"点开关，外屏全屏播放 Claude Code 工作视频",[184,8032,8033],{},"主屏上用 Cursor \u002F Claude Code 工作",[184,8035,8036],{},"等 AI 生成时，瞥一眼外屏——视频在滚动，心理上知道「AI 还在忙」",[184,8038,8039],{},"30 分钟后外屏自动恢复息屏，不用管它",[14,8041,8042],{},"即使没有双屏，单屏时也可以直接在本页全屏等待，AI 在后台跑。只要本页可见，设备就不会睡。",[1023,8044],{},[14,8046,8047],{},"这个工具做得很快，前后半天时间。但它解决了一个我每天都会遇到的实际问题——等 AI 写代码时，电脑别再自己黑屏了。",[14,8049,8050],{},"如果你也在用 AI 编程工具，大概也会遇到同样的事。",[14,8052,8053],{},[279,8054,8057],{"href":8055,"rel":8056},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdev\u002FwakeLock\u002F",[283],"试试屏幕常亮工具 →",{"title":316,"searchDepth":317,"depth":317,"links":8059},[8060,8061,8062,8063,8064],{"id":7897,"depth":320,"text":7898},{"id":7932,"depth":320,"text":7933},{"id":7403,"depth":320,"text":7403},{"id":7978,"depth":320,"text":7979},{"id":7806,"depth":320,"text":7806},"2026-06-18","用 Cursor、Claude Code 写代码时，AI 跑了几分钟，屏幕一黑——网断了，进度丢了。为解决这个问题做了一个浏览器屏幕常亮工具，顺便录了段 Claude Code 工作的视频当全屏背景。",[8068,8071,8074],{"q":8069,"a":8070},"这个工具关掉浏览器后还有效吗？","没有。关闭页面或切到其他应用后，常亮自动停止，设备恢复正常息屏行为。它解决的是「临时需要」，不是永久修改系统设置。",{"q":8072,"a":8073},"能让电脑在跑 PPT 演示时不息屏吗？","不能。切到 PPT 后浏览器不在前台，工具失效。它适合的是「内容就在浏览器里」的场景，或者你用双屏时把这个页面放在第二块屏保持可见。",{"q":8075,"a":8076},"Firefox 能用吗？","能。Chrome、Edge、Safari 用原生 Wake Lock API，Firefox 自动走兼容模式（隐藏媒体播放），效果一样。",{},"\u002Fbuilds\u002Fmetool\u002F2026-06-18-screen-wake-lock",{"title":7892,"description":8066},[8081,8082,8083,8084,8085,8086,8087],"屏幕常亮","防止息屏","AI写代码等待","Cursor防息屏","Claude Code屏幕","自动息屏怎么关闭","wake lock","builds\u002Fmetool\u002F2026-06-18-screen-wake-lock","用 AI 编程工具（Cursor、Claude Code、Codex）时，等 AI 生成代码的几分钟内设备自动息屏，导致网络断开或进程中断。MeTool 上线屏幕常亮工具，一键防息屏，支持定时关闭，还有一段 Claude Code 工作的视频作为全屏等待背景。",[1078,361],"aXFa95YiNoQ-tMKQ3es4xrdz3AQofwWXYLovEJfnVXM",{"id":8093,"title":8094,"body":8095,"date":8678,"description":8679,"draft":329,"extension":330,"faq":8680,"meta":8693,"navigation":345,"path":8694,"project":7528,"readingTime":347,"seo":8695,"seoKeywords":8696,"stem":8703,"summary":8704,"tags":8705,"updated":363,"__hash__":8706},"builds\u002Fbuilds\u002Fmetool\u002F2026-06-13-blind-watermark.md","上线隐形水印工具：调研了六种方案后，选了一个诚实的折中方案",{"type":8,"value":8096,"toc":8665},[8097,8101,8104,8111,8114,8117,8123,8127,8130,8167,8170,8173,8293,8296,8308,8311,8318,8322,8325,8329,8332,8335,8338,8342,8345,8352,8356,8359,8365,8391,8394,8414,8417,8421,8432,8441,8463,8477,8483,8486,8490,8493,8496,8499,8503,8506,8509,8513,8516,8644,8650,8652,8655,8662],[18,8098,8100],{"id":8099},"隐形水印是什么为什么要做它","隐形水印是什么，为什么要做它",[14,8102,8103],{},"图片加水印这件事，最常见的方式是在角落盖个半透明 Logo。但这有个问题——影响美观，而且只要稍加裁剪或修图，水印就没了。",[14,8105,8106,8107,8110],{},"隐形水印解决的是另一件事：",[49,8108,8109],{},"把信息藏进图片里，肉眼看不到，但事后能提取验证","。用途不是「防止被盗用」，而是「被盗用后能证明来源」。",[14,8112,8113],{},"几个典型场景：机构颁发的电子证书，接收方想验证是否为原图；摄影师给自己的作品留下不可见的版权标记；企业内部文件分发，不同渠道嵌入不同标记，泄漏后追溯来源。",[14,8115,8116],{},"我们上线了这个工具，提供两种模式，用起来很简单：上传图片、输入要藏的文字和密码、下载带水印的 PNG，验证时同样上传图片输入密码，一秒出结果。",[14,8118,8119],{},[55,8120],{"alt":8121,"src":8122},"ui","\u002Fb\u002Fmetool\u002FblindWatermark\u002Fui.png",[18,8124,8126],{"id":8125},"两种模式用图说话","两种模式，用图说话",[14,8128,8129],{},"先看最直接的问题：加了水印之后，图片会变样吗？",[949,8131,8132,8145],{},[952,8133,8134],{},[955,8135,8136,8139,8142],{},[958,8137,8138],{},"原图",[958,8140,8141],{},"文字嵌入模式",[958,8143,8144],{},"抗旋转\u002F缩放模式",[965,8146,8147],{},[955,8148,8149,8155,8161],{},[970,8150,8151],{},[55,8152],{"alt":8138,"src":8153,"width":8154},"\u002Fb\u002Fmetool\u002FblindWatermark\u002Foriginal.png",120,[970,8156,8157],{},[55,8158],{"alt":8159,"src":8160,"width":8154},"文字嵌入水印","\u002Fb\u002Fmetool\u002FblindWatermark\u002Fdwt-embed.png",[970,8162,8163],{},[55,8164],{"alt":8165,"src":8166,"width":8154},"抗旋转水印","\u002Fb\u002Fmetool\u002FblindWatermark\u002Ffft-embed.png",[14,8168,8169],{},"三张图肉眼看不出区别——这是隐形水印的基本前提，两种模式都做到了。",[14,8171,8172],{},"然后是关键问题：图片被各种方式「处理」之后，水印还能验证吗？",[949,8174,8175,8191],{},[952,8176,8177],{},[955,8178,8179,8182,8185,8188],{},[958,8180,8181],{},"编辑方式",[958,8183,8184],{},"编辑后效果",[958,8186,8187],{},"文字嵌入",[958,8189,8190],{},"抗旋转\u002F缩放",[965,8192,8193,8211,8227,8243,8260,8277],{},[955,8194,8195,8198,8205,8208],{},[970,8196,8197],{},"亮度 +30",[970,8199,8200],{},[55,8201],{"alt":8202,"src":8203,"width":8204},"亮度攻击","\u002Fb\u002Fmetool\u002FblindWatermark\u002Fattack-brightness.png",80,[970,8206,8207],{},"❌",[970,8209,8210],{},"✅ 60%",[955,8212,8213,8216,8222,8224],{},[970,8214,8215],{},"遮挡 80×80",[970,8217,8218],{},[55,8219],{"alt":8220,"src":8221,"width":8204},"遮挡攻击","\u002Fb\u002Fmetool\u002FblindWatermark\u002Fattack-mask.png",[970,8223,8207],{},[970,8225,8226],{},"✅ 73%",[955,8228,8229,8232,8238,8240],{},[970,8230,8231],{},"旋转 90°",[970,8233,8234],{},[55,8235],{"alt":8236,"src":8237,"width":8204},"旋转攻击","\u002Fb\u002Fmetool\u002FblindWatermark\u002Fattack-rotate90.png",[970,8239,8207],{},[970,8241,8242],{},"✅ 80%",[955,8244,8245,8248,8254,8257],{},[970,8246,8247],{},"缩放往返 75%",[970,8249,8250],{},[55,8251],{"alt":8252,"src":8253,"width":8204},"缩放攻击","\u002Fb\u002Fmetool\u002FblindWatermark\u002Fattack-scale75.png",[970,8255,8256],{},"✅",[970,8258,8259],{},"✅ 64%",[955,8261,8262,8265,8272,8274],{},[970,8263,8264],{},"裁剪 90%",[970,8266,8267],{},[55,8268],{"alt":8269,"src":8270,"width":8271},"裁剪90%","\u002Fb\u002Fmetool\u002FblindWatermark\u002Fattack-crop90.png",72,[970,8273,8207],{},[970,8275,8276],{},"✅ 51%",[955,8278,8279,8282,8289,8291],{},[970,8280,8281],{},"裁剪 50%",[970,8283,8284],{},[55,8285],{"alt":8286,"src":8287,"width":8288},"裁剪50%","\u002Fb\u002Fmetool\u002FblindWatermark\u002Fattack-crop50.png",60,[970,8290,8207],{},[970,8292,8207],{},[14,8294,8295],{},"两种模式的定位由此清晰：",[181,8297,8298,8303],{},[184,8299,8300,8302],{},[49,8301,8141],{},"：能读出你藏进去的文字（版权声明、你的名字），但对改动比较敏感。适合「原图 PNG 直接分发」的场景，比如机构颁发的电子证书。",[184,8304,8305,8307],{},[49,8306,8144],{},"：不能读文字，只验证「有没有水印」，但抗改动能力强得多。适合图片可能被转发、旋转、截取的场景。",[14,8309,8310],{},"两种模式可以叠加使用——先嵌文字，再嵌指纹，互不干扰，可分别独立验证。",[14,8312,8313,8314,8317],{},"有一点要提前说清楚：",[49,8315,8316],{},"截图之后通常无法可靠验证","。截图不是复制原始像素，而是经过屏幕渲染和重新编码的，这个过程会破坏水印信号。这个工具最适合「发送原图 PNG 文件」的链路，不是截图溯源的工具。这不是为了降低预期而说的，是我们实测得到的真实结论。",[18,8319,8321],{"id":8320},"做工具之前调研了六种方案","做工具之前，调研了六种方案",[14,8323,8324],{},"上面说的「我们选定了 DWT-DCT-SVD 算法」，但为什么是它？我们调研了六种方案，把这个过程整理出来，也许对你理解这类工具的能力边界有帮助。",[496,8326,8328],{"id":8327},"方案一经典频域算法-dwt-dct-svd","方案一：经典频域算法 DWT-DCT-SVD",[14,8330,8331],{},"这是学术和工程界应用最广的开源方案。原理是把图片分解成频率层次，把水印信息嵌入到低频系数里——人眼对低频变动不敏感，所以水印不可见；提取时也只需要带水印的图，不需要原图对比。",[14,8333,8334],{},"优点：完全开源、可在浏览器实现、真正的「盲」提取。缺点：对旋转和高强度 JPEG 压缩比较脆弱。",[14,8336,8337],{},"腾讯云和阿里云的文字盲水印服务底层大概率用的就是这个算法族——官方文档的限制（最小尺寸、长宽比要求）和这个算法的块结构要求完全对应。",[496,8339,8341],{"id":8340},"方案二简单-fft-差值法伪盲水印","方案二：简单 FFT 差值法（伪盲水印）",[14,8343,8344],{},"GitHub 上有一些「盲水印」项目用的是这个思路：把水印图的频域叠加到原图频域上，提取时做差还原。",[14,8346,8347,8348,8351],{},"看起来很聪明，但",[49,8349,8350],{},"不是真正的盲水印","——提取时必须持有原图才能做差。腾讯云的图片水印（type1\u002Ftype2）用的就是这个，本质是「有原图才能验证」的留底方案，不适合我们要做的场景。",[496,8353,8355],{"id":8354},"方案三让水印能抗旋转实验结果让我们放弃了这个方向","方案三：让水印能抗旋转——实验结果让我们放弃了这个方向",[14,8357,8358],{},"DWT-DCT-SVD 有个软肋：图片一旦被旋转，内部的块结构对不上，水印提取就失败。一个自然的想法是「同时埋一层定位模板，提取时先估出旋转角度、把图摆正、再提取」。",[14,8360,8361,8362],{},"我们认真做了实验，用三张真实照片跑了完整测试，结论是：",[49,8363,8364],{},"调门要么开不够，要么开太大。",[8366,8367,8369,8370,8369,8382],"div",{"style":8368},"display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;margin:16px 0;","\n  ",[8366,8371,8373,8374,8373,8379,8369],{"style":8372},"flex:1;min-width:180px;text-align:center;","\n    ",[55,8375],{"src":8376,"alt":8377,"style":8378},"\u002Fb\u002Fmetool\u002Fpeppers_original.png","peppers 原图","width:100%;border-radius:8px;",[14,8380,8138],{"style":8381},"font-size:13px;color:#888;margin-top:6px;",[8366,8383,8373,8384,8373,8388,8369],{"style":8372},[55,8385],{"src":8386,"alt":8387,"style":8378},"\u002Fb\u002Fmetool\u002Fpeppers_watermarked.png","peppers 嵌入水印后",[14,8389,8390],{"style":8381},"叠加定位模板后——肉眼已可见条纹",[14,8392,8393],{},"定位模板信号弱时，旋转后找不到模板，摆正失败；强到能用时，图片已经出现肉眼可见的条纹。即使开到最大强度，旋转 8° 只有 1 张图能恢复，旋转 15° 全部失败，旋转加 JPEG 组合则全军覆没：",[8366,8395,8369,8396,8369,8405],{"style":8368},[8366,8397,8373,8398,8373,8402,8369],{"style":8372},[55,8399],{"src":8400,"alt":8401,"style":8378},"\u002Fb\u002Fmetool\u002Fpeppers_rotate8_attacked.png","旋转 8° 攻击后",[14,8403,8404],{"style":8381},"旋转 8° 后（提取失败）",[8366,8406,8373,8407,8373,8411,8369],{"style":8372},[55,8408],{"src":8409,"alt":8410,"style":8378},"\u002Fb\u002Fmetool\u002Fpeppers_rotate8_realigned.png","摆正后",[14,8412,8413],{"style":8381},"几何摆正后——仍然提取失败",[14,8415,8416],{},"算法确实能估出「转了 7.8°」，把图摆正了——但真实照片经过重采样和 JPEG 编码，信号损耗已经超出了能恢复的范围。这个方向不上线。",[496,8418,8420],{"id":8419},"方案四开源项目-blindwatermark-的示例看起来效果很好但有隐藏前提","方案四：开源项目 BlindWatermark 的示例看起来效果很好，但有隐藏前提",[14,8422,8423,8424,8427,8428,8431],{},"调研过程中我们也看了 GitHub 上颇受欢迎的 ",[79,8425,8426],{},"BlindWatermark","（fire-keeper）和 ",[79,8429,8430],{},"blind_watermark","（guofei9987），README 展示的效果图很惊艳——旋转、截图、JPEG 之后都能还原水印图案。我们拆解了一下，发现有几个关键前提没有被明显标出：",[14,8433,8434,8437,8438,8440],{},[49,8435,8436],{},"旋转等几何攻击的「成功」，需要精确的逆操作。"," 打开 ",[79,8439,8430],{}," 的示例代码，每个「攻击成功」的测试都有对应的还原步骤：旋转了 60° 就反向旋转 -60°，缩放到 400×300 就用原图尺寸缩放回去：",[436,8442,8446],{"className":8443,"code":8444,"language":8445,"meta":316,"style":316},"language-python shiki shiki-themes github-light-default github-dark-default","att.rot_att(input_filename='output\u002Fembedded.png', ..., angle=60)\natt.rot_att(input_filename='output\u002F旋转攻击.png', ..., angle=-60)  # ← 精确反转\nwm_extract = bwm1.extract('output\u002F旋转攻击_还原.png', ...)\n","python",[79,8447,8448,8453,8458],{"__ignoreMap":316},[507,8449,8450],{"class":509,"line":510},[507,8451,8452],{},"att.rot_att(input_filename='output\u002Fembedded.png', ..., angle=60)\n",[507,8454,8455],{"class":509,"line":320},[507,8456,8457],{},"att.rot_att(input_filename='output\u002F旋转攻击.png', ..., angle=-60)  # ← 精确反转\n",[507,8459,8460],{"class":509,"line":317},[507,8461,8462],{},"wm_extract = bwm1.extract('output\u002F旋转攻击_还原.png', ...)\n",[14,8464,8465,8468,8469,8472,8473,8476],{},[49,8466,8467],{},"截图攻击需要同时持有原图。"," ",[79,8470,8471],{},"estimate_crop_parameters"," 函数的参数里明确写着 ",[79,8474,8475],{},"original_file='output\u002Fembedded.png'","——用 SIFT 特征点把截图对齐回原图，本质是「非盲」操作。",[14,8478,8479,8482],{},[49,8480,8481],{},"成功标准不同。"," 这些项目嵌入的是一张黑白水印图，提取出来即使有失真，人眼仍能辨认图案。我们嵌入的是精确文字 bit 串，一个 bit 错误就会导致 UTF-8 解码失败——「要么完全正确，要么完全失败」，门槛高得多。",[14,8484,8485],{},"说这些不是否定这些项目，算法本身是扎实的，README 也坦承了自己的「现在的问题」章节。只是评估一个工具的真实能力时，需要区分「已知攻击参数下能还原」和「真实未知场景下盲提取」——这是两件不同的事。",[496,8487,8489],{"id":8488},"方案五google-synthid","方案五：Google SynthID",[14,8491,8492],{},"Google DeepMind 2025 年发表的方案，已处理超 20 亿张图片，鲁棒性远超所有频域方案。",[14,8494,8495],{},"技术路线完全不同：端到端训练的神经网络，训练时主动对水印图施加随机 JPEG、旋转、裁剪攻击，编码器被迫学习把信号藏在这些变换都动不了的地方。",[14,8497,8498],{},"对我们来说，现阶段引入不现实——模型闭源，且我们的定位是完全离线的免费工具。",[496,8500,8502],{"id":8501},"方案六trustmarkadobeiccv-2025","方案六：TrustMark（Adobe，ICCV 2025）",[14,8504,8505],{},"开源的深度学习水印方案，有 ONNX 版本，理论上可以在浏览器通过 WebGPU 运行，模型约 3 MB。",[14,8507,8508],{},"这个方向值得后续评估，「浏览器只做验证，嵌入仍离线处理」的模式在技术上是可行的。已列入我们的技术路线图。",[496,8510,8512],{"id":8511},"为什么选-dwt-dct-svd而不是云-api","为什么选 DWT-DCT-SVD，而不是云 API",[14,8514,8515],{},"调研完这六种方案，再来看云厂商的服务就清楚多了：",[949,8517,8518,8537],{},[952,8519,8520],{},[955,8521,8522,8525,8528,8531,8534],{},[958,8523,8524],{},"比较维度",[958,8526,8527],{},"MeTool",[958,8529,8530],{},"腾讯云 type3",[958,8532,8533],{},"阿里云新版",[958,8535,8536],{},"Google SynthID",[965,8538,8539,8556,8569,8584,8598,8614,8628],{},[955,8540,8541,8544,8547,8550,8553],{},[970,8542,8543],{},"算法",[970,8545,8546],{},"DWT-DCT-SVD",[970,8548,8549],{},"同源",[970,8551,8552],{},"可能升级版",[970,8554,8555],{},"深度学习",[955,8557,8558,8561,8563,8565,8567],{},[970,8559,8560],{},"抗亮度\u002F噪声",[970,8562,8256],{},[970,8564,8256],{},[970,8566,8256],{},[970,8568,8256],{},[955,8570,8571,8574,8576,8579,8582],{},[970,8572,8573],{},"抗旋转+JPEG（真实图）",[970,8575,8207],{},[970,8577,8578],{},"❌（推测）",[970,8580,8581],{},"未知",[970,8583,8256],{},[955,8585,8586,8589,8591,8593,8596],{},[970,8587,8588],{},"抗截屏",[970,8590,8207],{},[970,8592,8207],{},[970,8594,8595],{},"✅（声称）",[970,8597,8256],{},[955,8599,8600,8603,8605,8608,8611],{},[970,8601,8602],{},"任意中文文本",[970,8604,8256],{},[970,8606,8607],{},"有限",[970,8609,8610],{},"256 字符上限",[970,8612,8613],{},"不支持",[955,8615,8616,8619,8621,8623,8625],{},[970,8617,8618],{},"纯浏览器\u002F无需上传",[970,8620,8256],{},[970,8622,8207],{},[970,8624,8207],{},[970,8626,8627],{},"需模型文件",[955,8629,8630,8633,8636,8639,8641],{},[970,8631,8632],{},"成本",[970,8634,8635],{},"零",[970,8637,8638],{},"按调用收费",[970,8640,8638],{},[970,8642,8643],{},"零（开源）",[14,8645,8646,8649],{},[49,8647,8648],{},"MeTool 最大的差异化是：完全离线、免费、支持任意中文文本。"," 云 API 架构上做不到这三点——用户必须上传图片，有隐私顾虑、有费用、有网络延迟。在能力相近的情况下，这三点就是我们的理由。",[1023,8651],{},[14,8653,8654],{},"这次开发最大的收获不是上线了一个工具，而是搞清楚了「这个工具在哪里会失效」。把这件事写清楚、放在工具页的显眼位置，是比功能本身更值得做的事。",[14,8656,8657],{},[279,8658,8661],{"href":8659,"rel":8660},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fimages\u002FblindWatermark\u002F",[283],"现在就试试隐形水印工具",[1034,8663,8664],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":316,"searchDepth":317,"depth":317,"links":8666},[8667,8668,8669],{"id":8099,"depth":320,"text":8100},{"id":8125,"depth":320,"text":8126},{"id":8320,"depth":320,"text":8321,"children":8670},[8671,8672,8673,8674,8675,8676,8677],{"id":8327,"depth":317,"text":8328},{"id":8340,"depth":317,"text":8341},{"id":8354,"depth":317,"text":8355},{"id":8419,"depth":317,"text":8420},{"id":8488,"depth":317,"text":8489},{"id":8501,"depth":317,"text":8502},{"id":8511,"depth":317,"text":8512},"2026-06-13","做隐形水印工具之前，我们认真调研了从经典频域算法到 Google SynthID 的六种方案，并用真实照片跑了抗攻击对比实验。最终选择了一个「能力边界清晰」的前端可行方案，而不是夸大效果的黑盒。",[8681,8684,8687,8690],{"q":8682,"a":8683},"隐形水印嵌入后图片看起来有变化吗？","几乎看不出来。DWT-DCT-SVD 算法在小波\u002FDCT 频域系数上做微小调整，对人眼视觉影响极小。单独的信息水印嵌入后 PSNR 约 37 dB，完全在业界「肉眼不可见」的标准范围内（通常要求 ≥ 38 dB）。",{"q":8685,"a":8686},"截图后还能验证水印吗？","通常不能可靠验证。截图经过显示器渲染、色彩转换、可能的分辨率变化和重新编码，这些操作会破坏频域中的水印信号。隐形水印最适合保护「原图 PNG 文件」的传播链路，不能作为截图防盗的手段。",{"q":8688,"a":8689},"两种模式的区别是什么？","「嵌入自定义文字」模式可在图片中隐藏任意文字，验证时可完整读出，适合版权声明和溯源；「抗旋转\u002F缩放」模式写入密码指纹，抵抗旋转和缩放后仍可验证有无水印，但不能读出内容。两种模式可叠加使用。",{"q":8691,"a":8692},"为什么不用 Google SynthID 那样的深度学习方案？","深度学习方案（如 SynthID、TrustMark）鲁棒性更强，但模型本身需要几 MB 至几十 MB，且需要 WebGPU 或 WASM 运行时，部署成本高、首次加载慢。DWT-DCT-SVD 是纯数学算法，零依赖、纯浏览器本地运行，适合当前阶段做免费公开工具。深度学习路线已在我们的技术路线图上，作为后续升级方向。",{},"\u002Fbuilds\u002Fmetool\u002F2026-06-13-blind-watermark",{"title":8094,"description":8679},[8697,8698,8546,8699,8700,8701,8702],"隐形水印","盲水印","图片版权保护","隐形水印原理","前端水印","图片防盗","builds\u002Fmetool\u002F2026-06-13-blind-watermark","MeTool 上线隐形水印工具，支持文字嵌入和抗旋转\u002F缩放两种模式，100% 浏览器本地处理无需上传。开发前系统调研了腾讯云、阿里云、Google SynthID 等主流方案，并用真实照片做了抗攻击实验，最终选定 DWT-DCT-SVD 方案，诚实标注能力边界，不做虚假宣传。",[1078,361],"jzJf-x2OZdosBHHeiqJnjK3VssooCBA_zNnHZgnj9B0",{"id":8708,"title":8709,"body":8710,"date":327,"description":8820,"draft":329,"extension":330,"faq":8821,"meta":8834,"navigation":345,"path":7801,"project":7528,"readingTime":535,"seo":8835,"seoKeywords":8836,"stem":8844,"summary":8845,"tags":8846,"updated":363,"__hash__":8847},"builds\u002Fbuilds\u002Fmetool\u002F2026-05-14-html-markdown-share.md","上线了两个分享工具：AI 生成的 HTML 和 Markdown，现在都能一键发给别人看了",{"type":8,"value":8711,"toc":8815},[8712,8715,8718,8721,8729,8738,8744,8752,8756,8759,8765,8771,8774,8777,8784,8787,8794,8797,8800,8806,8809,8812],[18,8713,8714],{"id":8714},"从一个真实痛点出发",[14,8716,8717],{},"做这两个工具，起因是一个很具体的问题。",[14,8719,8720],{},"AI 现在能生成质量很高的 HTML 页面——带标签页的方案对比、可折叠的代码审查报告、带图表的数据摘要。但生成完之后，怎么发给别人看？",[14,8722,8723,8724,4208,8726,8728],{},"发源码？对方看到的是一堆 ",[79,8725,152],{},[79,8727,156],{},"。发附件？对方还得找个能打开 HTML 的工具，手机上基本没戏。上传到服务器？需要账号、需要配置，不是人人都搞得定。",[14,8730,8731,8732,4208,8735,130],{},"Markdown 也有同样的问题。AI 生成了一份结构清晰的会议纪要或技术规格，直接发过去对方看到的是满屏 ",[79,8733,8734],{},"#",[79,8736,8737],{},"**",[14,8739,8740,8743],{},[49,8741,8742],{},"这是 AI 生成内容的「最后一公里」问题。"," 生成很容易，分享很麻烦。",[11,8745,8746],{},[14,8747,8748,8749],{},"关于 HTML 和 Markdown 各自适合什么场景，我在另一篇文章里有更详细的分析：",[279,8750,8751],{"href":346},"「Markdown 已死」？先别慌，自媒体又在夸大了",[14,8753,8754],{},[55,8755],{"alt":289,"src":290},[18,8757,8758],{"id":8758},"上线了两个工具",[14,8760,8761],{},[279,8762,8764],{"href":281,"rel":8763},[283],"AI HTML 预览分享",[14,8766,8767,8768,8770],{},"把 AI 生成的 HTML 粘进去，或者拖入 ",[79,8769,7603],{}," 文件，点一下「生成分享链接」，得到一个 7 天有效的链接。",[14,8772,8773],{},"对方收到链接，浏览器打开，看到的是完整渲染的 HTML 页面——样式、图表、交互效果全部保留。手机打开也正常。",[14,8775,8776],{},"短内容直接编码进 URL，不经过任何服务器。较长内容用第三方临时存储，生成前会提示确认。",[14,8778,8779],{},[279,8780,8783],{"href":8781,"rel":8782},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fmarkdown\u002Fshare\u002F",[283],"Markdown 分享预览",[14,8785,8786],{},"逻辑相同，针对 Markdown 格式。",[14,8788,8789,8790,8793],{},"粘入 Markdown 文本或拖入 ",[79,8791,8792],{},".md"," 文件，生成链接，对方打开看到 GitHub 风格的完整排版效果——标题、代码块、表格、引用，全部渲染。",[14,8795,8796],{},"Markdown 有个天然优势：体积比 HTML 小得多。同样内容，Markdown 可能 5 KB，HTML 可能 50 KB。所以 Markdown 的短链接往往能直接塞进 URL，比 HTML 链接更短、更干净，也更适合在微信这类消息长度有限制的场景里传播。",[18,8798,8799],{"id":8799},"做这两个工具学到的事",[14,8801,8802,8803],{},"HTML 和 Markdown 的分享需求，本质上是一件事：",[49,8804,8805],{},"内容生产者和内容消费者之间存在工具断层。",[14,8807,8808],{},"你用 AI 生成了格式化内容，你有工具查看（IDE、浏览器、Markdown 编辑器）。但接收方没有这些工具，也不应该为了看你发的一份报告去安装软件。",[14,8810,8811],{},"链接是最低门槛的传递载体。浏览器是最普及的查看工具。这两个工具做的事情就是把这条路打通。",[14,8813,8814],{},"另外，这次也顺手解决了一个安全性问题：接收方打开链接前会看到一个来源确认弹窗，提示内容来自分享者，注意不要在页面内输入敏感信息。这个设计是为了防止有人把恶意 HTML 页面伪装成正常分享传播。",{"title":316,"searchDepth":317,"depth":317,"links":8816},[8817,8818,8819],{"id":8714,"depth":320,"text":8714},{"id":8758,"depth":320,"text":8758},{"id":8799,"depth":320,"text":8799},"AI 生成 HTML 和 Markdown 后最大的问题是没法直接分享——发源码对方看不了，发附件又麻烦。上线了两个工具解决这个问题：粘贴内容，生成链接，手机直接查看。",[8822,8825,8828,8831],{"q":8823,"a":8824},"AI HTML 分享工具和 Markdown 分享工具有什么区别？","两个工具解决不同格式的分享问题。HTML 分享工具针对 AI 生成的交互式 HTML 页面，对方打开后看到的是完整渲染效果，包括样式、图表和交互组件。Markdown 分享工具针对 AI 生成的 Markdown 文档，对方看到的是 GitHub 风格的排版效果。短内容 Markdown 链接更短，因为 Markdown 体积比 HTML 小很多。",{"q":8826,"a":8827},"分享链接安全吗？内容会上传到服务器吗？","短内容直接编码进 URL，完全不经过任何服务器。较长内容需要第三方临时存储时，工具会提前告知并请用户确认。链接有效期 7 天，到期自动失效，接收者打开前会看到安全确认弹窗。",{"q":8829,"a":8830},"对方收到链接需要安装什么吗？","不需要。对方直接用浏览器打开链接即可，无需注册账号、无需安装任何应用，手机和电脑均可查看。",{"q":8832,"a":8833},"这两个工具适合什么使用场景？","适合把 AI 生成的内容发给同事、朋友或客户查看。比如：AI 生成的方案对比 HTML 页面、代码审查说明、数据报告、会议纪要 Markdown、行动项清单、技术规格文档等。凡是「自己看得到渲染效果，但发给别人就变成乱码」的内容，都适合用这两个工具分享。",{},{"title":8709,"description":8820},[8837,8838,8839,8840,8841,8842,8843],"AI HTML分享","Markdown分享链接","HTML预览分享","AI输出分享","在线HTML查看","Markdown渲染分享","无需登录分享文档","builds\u002Fmetool\u002F2026-05-14-html-markdown-share","MeTool 上线 AI HTML 预览分享和 Markdown 分享预览两个工具，解决 AI 生成内容的「最后一公里」问题：粘贴内容，一键生成 7 天有效的分享链接，对方无需任何工具直接用浏览器查看，手机也能看。",[1078,361],"rELoyp0IDsjo5dZCpMybDiovIIybTqn1_PSWt-HIBG4",{"id":8849,"title":8850,"body":8851,"date":9053,"description":9054,"draft":329,"extension":330,"faq":9055,"meta":9068,"navigation":345,"path":9069,"project":7528,"readingTime":541,"seo":9070,"seoKeywords":9071,"stem":9079,"summary":9080,"tags":9081,"updated":363,"__hash__":9082},"builds\u002Fbuilds\u002Fmetool\u002F2026-05-10-data-growth-go-global.md","活跃用户翻了 10 倍，下一步是走出中国",{"type":8,"value":8852,"toc":9046},[8853,8856,8859,8865,8868,8871,8880,8883,8889,8893,8896,8902,8905,8919,8922,8925,8928,8931,8937,8943,8946,8952,8955,8958,8962,8965,8968,8975,8981,8985,8988,8991,9011,9014,9040,9043],[18,8854,8855],{"id":8855},"数据验证了一件事",[14,8857,8858],{},"打开 Google Analytics 的 90 天报告，数字让我盯了好一会儿。",[14,8860,8861],{},[55,8862],{"alt":8863,"src":8864},"metool 过去 90 天活跃用户增长趋势","\u002Fb\u002Fmetool\u002F202605ga_trend.png",[14,8866,8867],{},"活跃用户 2 万，增长 1033%。事件数 25 万，增长 1720%。浏览次数 4.7 万，增长 695%。",[14,8869,8870],{},"那条曲线讲了一个很清晰的故事：2 月到 3 月中旬基本是一条平线，3 月底开始拉升，4 月初出现第一个跳跃，然后持续爬坡到 5 月初的 6000。",[14,8872,8873,8874,8879],{},"如果对照之前几篇文章的时间线，3 月底正好是我开始用 ",[279,8875,8878],{"href":8876,"rel":8877,"target":2108},"https:\u002F\u002Fgithub.com\u002FMorvanZhou\u002Fgoogle-analytics-and-search-improve",[283],"GA 分析 Skill"," 做数据驱动迭代的时间点。接入 Google Search Console 看搜索词、用数据决定做什么工具、发现 3D 品类的自然需求、一口气铺开整个 3D 工具矩阵、用 GA4 数据找到 UX 流失点、提炼出能力先于数据和因果并列两条设计准则。",[14,8881,8882],{},"每一次迭代都有数据支撑，每一次改动都能在后续数据里看到反馈。这个「数据 → 决策 → 验证」的循环跑了将近两个月，累积效应终于在曲线上体现出来了。",[14,8884,7774,8885,8888],{},[49,8886,8887],{},"自己做的分析工具，分析自己的产品，驱动自己的增长。"," 这大概是独立开发者最理想的状态。",[18,8890,8892],{"id":8891},"全球覆盖但中国一家独大","全球覆盖，但中国一家独大",[14,8894,8895],{},"再看用户的地理分布：",[14,8897,8898],{},[55,8899],{"alt":8900,"src":8901},"metool 按国家\u002F地区划分的活跃用户","\u002Fb\u002Fmetool\u002F202605ga_map.jpeg",[14,8903,8904],{},"覆盖面看起来不错，蓝色铺满了好几个大洲。但数字告诉我的是另一个故事：",[181,8906,8907,8913,8916],{},[184,8908,8909,8912],{},[49,8910,8911],{},"中国大陆：1.2 万","，增长 213%，占总用户的 80% 左右",[184,8914,8915],{},"美国：755，新加坡：631，香港：467，日本：398",[184,8917,8918],{},"台湾：207，德国：54",[14,8920,8921],{},"中国区的用户量是第二名美国的 16 倍。地图上看起来「全球化」，实际上是中国区在一个人扛着整条增长曲线。",[14,8923,8924],{},"这不是坏事，但也不是能安心的事。",[18,8926,8927],{"id":8927},"流量来源揭示了真正的问题",[14,8929,8930],{},"把流量来源拆开看，问题就更清楚了：",[14,8932,8933],{},[55,8934],{"alt":8935,"src":8936},"metool 按来源\u002F媒介划分的活跃用户","\u002Fb\u002Fmetool\u002F20260ga_source.jpeg",[14,8938,8939,8940,130],{},"排名第一：",[49,8941,8942],{},"cn.bing.com \u002F referral，7911 次",[14,8944,8945],{},"中国区 Bing 一个渠道贡献了接近 56% 的流量。加上 bing organic 的 1469 次，Bing 系总共贡献了超过 9000 次访问。",[14,8947,8948,8949,130],{},"相比之下，",[49,8950,8951],{},"Google organic 只有 200 次",[14,8953,8954],{},"200 次。在一个英文优先、面向全球的工具站上，Google 的自然搜索流量只有 200。这个数字让我停下来想了很久。",[14,8956,8957],{},"还有两个有意思的来源：doubao.com referral 426 次、chatgpt.com referral 159 次。AI 产品开始给工具站导流了，虽然量还小，但趋势值得关注。",[18,8959,8961],{"id":8960},"bing-红利和-bing-风险","Bing 红利和 Bing 风险",[14,8963,8964],{},"中国区 Bing 的流量本质上是一波红利。",[14,8966,8967],{},"微软在中国区大力推广 Bing 搜索（Edge 浏览器默认搜索引擎），而 Bing 对中英文混合内容的收录效率不错。metool 之前做了一系列 SEO 优化：默认语言切英文、全站结构化数据、IndexNow 加速收录，这些正好踩中了 Bing 的收录逻辑。",[14,8969,8970,8971,8974],{},"但红利的另一面是风险：",[49,8972,8973],{},"如果流量高度依赖单一渠道，渠道一变，增长就断了。"," Bing 的算法调整、收录策略变化，或者竞争对手在同样的关键词上发力，都可能让这条曲线掉头。",[14,8976,8977,8978],{},"过去两个月证明了「数据驱动」能带来增长。但数据也在告诉我：",[49,8979,8980],{},"这个增长的基础还不够稳。",[18,8982,8984],{"id":8983},"下一步走出去","下一步：走出去",[14,8986,8987],{},"结论很清楚：metool 需要打开国际市场。",[14,8989,8990],{},"不是因为中国市场不好，而是因为：",[1193,8992,8993,8999,9005],{},[184,8994,8995,8998],{},[49,8996,8997],{},"单一渠道依赖风险太高","。Google organic 200 次，说明 Google SEO 基本还没打开。全球最大的搜索引擎的自然流量几乎为零，这本身就是一个巨大的增长空间。",[184,9000,9001,9004],{},[49,9002,9003],{},"国际用户的工具需求同样旺盛","。3D 查看器、图片处理、音频编辑，这些需求不分国界。而且国际用户的付费意愿通常更强，这为后续的商业化留了空间。",[184,9006,9007,9010],{},[49,9008,9009],{},"基础设施已经就绪","。metool 的默认语言已经是英文，工具的核心体验没有语言门槛。缺的不是产品本身，而是在国际搜索引擎上的存在感。",[14,9012,9013],{},"具体要做的事：",[181,9015,9016,9022,9028,9034],{},[184,9017,9018,9021],{},[49,9019,9020],{},"攻 Google SEO","：分析国际用户的搜索词，针对性地优化页面标题、描述、结构化数据。重点是 3D 工具品类，这是已经验证过有需求的方向。",[184,9023,9024,9027],{},[49,9025,9026],{},"内容本地化","：虽然界面已经是英文，但落地页的文案、FAQ、使用指南需要更加贴合英文用户的表达习惯，不能只是中文的直译。",[184,9029,9030,9033],{},[49,9031,9032],{},"拓展 AI 搜索渠道","：chatgpt.com 和 doubao.com 已经开始导流了。优化 GEO（生成式引擎优化），让 AI 搜索引擎更容易引用 metool 的工具页面。",[184,9035,9036,9039],{},[49,9037,9038],{},"继续用数据说话","：每次改动都要在数据里看到反馈。用同样的 GA 分析 Skill 追踪国际市场的变化，不猜，只看数据。",[14,9041,9042],{},"从 0 到 2 万用户，用了大半年。下一个目标不是简单地把数字再翻一倍，而是让增长的来源更分散、更健康、更国际化。",[14,9044,9045],{},"中国区的 Bing 红利给了 metool 第一波起飞的燃料。但要飞得更远，需要更多的引擎。",{"title":316,"searchDepth":317,"depth":317,"links":9047},[9048,9049,9050,9051,9052],{"id":8855,"depth":320,"text":8855},{"id":8891,"depth":320,"text":8892},{"id":8927,"depth":320,"text":8927},{"id":8960,"depth":320,"text":8961},{"id":8983,"depth":320,"text":8984},"2026-05-10","用自己做的 GA 分析 Skill 持续迭代了几个版本之后，metool 过去 90 天的活跃用户从不到 2000 涨到了 2 万，事件数增长了 17 倍。但数据也清楚地告诉我一件事：流量高度依赖中国区的 Bing，国际市场几乎没打开。是时候认真想想怎么走出去了。",[9056,9059,9062,9065],{"q":9057,"a":9058},"metool 过去 90 天的增长数据是多少？","活跃用户 2 万（增长 1033.4%），事件数 25 万（增长 1720.6%），浏览次数 4.7 万（增长 695.3%），每位活跃用户平均互动时长 2 分 06 秒（增长 116.8%）。从 2 月到 5 月初，日活从接近零攀升到 6000 左右。",{"q":9060,"a":9061},"metool 的流量主要来自哪里？","排名第一的是 cn.bing.com referral（7911 次），其次是直接访问（3783 次）、bing organic（1469 次）、doubao.com referral（426 次）、google organic（200 次）、chatgpt.com referral（159 次）。中国区 Bing 是绝对的流量主力，Google 的自然搜索流量远低于预期。",{"q":9063,"a":9064},"metool 的用户分布在哪些国家和地区？","中国大陆 1.2 万（占比约 80%），美国 755，新加坡 631，香港 467，日本 398，台湾 207，德国 54。虽然覆盖了全球多个地区，但中国区一家独大，国际市场的渗透率还很低。",{"q":9066,"a":9067},"为什么要从中国区向国际市场扩展？","单一市场依赖风险高，中国区的流量主要靠 Bing 一个渠道，如果 Bing 算法变化或收录策略调整，流量可能断崖式下跌。国际市场的工具需求更大、付费意愿更强、Google SEO 的长尾效应更持久。而且 metool 已经默认英文界面，国际化的基础设施是现成的。",{},"\u002Fbuilds\u002Fmetool\u002F2026-05-10-data-growth-go-global",{"title":8850,"description":9054},[9072,9073,9074,9075,9076,9077,9078],"独立开发出海","工具站国际化","Google Analytics 数据分析","在线工具流量增长","Bing SEO 中国区","AI Skill 数据驱动","工具站全球化策略","builds\u002Fmetool\u002F2026-05-10-data-growth-go-global","metool 过去 90 天活跃用户增长 1033%，事件数增长 1720%，用自建 GA 分析 Skill 持续迭代是核心驱动力。但流量来源分析显示 56% 来自 cn.bing.com，中国区占绝对主导。国际市场的 Google organic 仅 200 次，说明 Google SEO 还没真正打开。下一阶段的重心是突破中国区依赖，向国际市场进发。",[1078,1746],"icPCk9P0agGM-7QowKbFYXI4VimjQWm5mqzfxRf8nmI",{"id":9084,"title":9085,"body":9086,"date":9351,"description":9352,"draft":329,"extension":330,"faq":9353,"meta":9366,"navigation":345,"path":9367,"project":7528,"readingTime":557,"seo":9368,"seoKeywords":9369,"stem":9377,"summary":9378,"tags":9379,"updated":363,"__hash__":9380},"builds\u002Fbuilds\u002Fmetool\u002F2026-04-12-capability-first-ux.md","用数据发现了用户在哪里流失，然后我重写了自己的 UX 准则",{"type":8,"value":9087,"toc":9337},[9088,9091,9099,9105,9108,9114,9117,9120,9124,9127,9131,9137,9140,9160,9164,9170,9172,9192,9196,9205,9209,9212,9218,9223,9237,9240,9244,9247,9253,9258,9290,9294,9297,9304,9310,9313,9319,9322,9325,9328,9331,9334],[18,9089,9090],{"id":9090},"用自己做的工具分析自己的工具",[14,9092,9093,9094,9098],{},"最近用自己的 ",[279,9095,9097],{"href":8876,"rel":9096,"target":2108},[283],"GA4 + GSC 分析技能"," 做了一次 metool 的完整数据审查。这个技能会自动拉取 Google Analytics 和 Search Console 的数据，分析用户行为路径，找出实际用户行为和预期目标之间的落差。",[14,9100,9101,9102],{},"数据里有一个细节让我停下来认真想了很久：",[49,9103,9104],{},"工具页面的跳出率比我预期的高很多，而且用户停留时间集中在前 10 秒。",[14,9106,9107],{},"10 秒。用户打开了工具页面，扫了一眼，然后就离开了。",[14,9109,9110,9111],{},"我重新打开了几个自己做的工具页面，第一次以\"用户\"而不是\"作者\"的视角去看。结论让我有点不舒服：",[49,9112,9113],{},"很多工具页面，在我没有上传任何文件之前，页面几乎是空的。",[14,9115,9116],{},"一个上传框，一段描述文字，仅此而已。用户不知道上传之后会发生什么，不知道有哪些配置选项，不知道最终结果长什么样子。唯一的选择是上传并等待——这需要一定的信任成本。",[14,9118,9119],{},"而用户不愿意在信任成本上赌注的时候，他们就直接离开了。",[18,9121,9123],{"id":9122},"提炼两条-ux-准则","提炼两条 UX 准则",[14,9125,9126],{},"这次体验让我重新想了工具类产品的交互逻辑，最后沉淀成两条准则。",[496,9128,9130],{"id":9129},"能力先于数据capability-first-ux","能力先于数据（Capability-First UX）",[14,9132,9133,9136],{},[49,9134,9135],{},"界面的结构与能力应独立于用户数据而完整存在。"," 数据的有无只改变状态，不改变界面的骨架与可见范围。",[14,9138,9139],{},"具体来说：",[181,9141,9142,9148,9154],{},[184,9143,9144,9147],{},[49,9145,9146],{},"零数据可读性","：即使没有任何用户输入，界面本身就是工具能力的完整说明书",[184,9149,9150,9153],{},[49,9151,9152],{},"结构恒定，状态渐进","：页面不因数据到达而从一种布局跳变为另一种布局",[184,9155,9156,9159],{},[49,9157,9158],{},"入口即全貌","：用户首次进入时所见 ≈ 工作中所见，消除「上传后才知道能做什么」的认知黑箱",[496,9161,9163],{"id":9162},"因果并列cause-effect-juxtaposition","因果并列（Cause-Effect Juxtaposition）",[14,9165,9166,9169],{},[49,9167,9168],{},"输入区与输出区在桌面端应并列放置，让用户一眼感知因果关系。"," 上下堆叠的布局迫使用户滚动才能看到操作的结果，打断了「操作 → 反馈」的认知流。",[14,9171,9139],{},[181,9173,9174,9180,9186],{},[184,9175,9176,9179],{},[49,9177,9178],{},"空间换认知","：桌面端屏幕宽度充裕时，优先用横向空间并列展示「输入 → 输出」",[184,9181,9182,9185],{},[49,9183,9184],{},"结果常驻可见","：输出区域使用 sticky 定位，在用户调整配置或滚动时始终停留在视口内",[184,9187,9188,9191],{},[49,9189,9190],{},"Demo 与正式态视觉分离","：示例内容必须在视觉上与正式操作态有明确区分，避免用户误判",[18,9193,9195],{"id":9194},"拿-iphone-拼长图工具做验证","拿 iPhone 拼长图工具做验证",[14,9197,9198,9199,9204],{},"想清楚这两条准则之后，我选了 metool 上的 ",[279,9200,9203],{"href":9201,"rel":9202,"target":2108},"https:\u002F\u002Fmetool.online\u002Fimages\u002FiphoneLongImageStitch\u002F",[283],"iPhone 拼长图"," 工具来做重构验证，因为这个工具的原始版本是一个典型的反例。",[496,9206,9208],{"id":9207},"老版本上传之后才能看见","老版本：上传之后才能看见",[14,9210,9211],{},"下面是老版本在用户没有上传任何图片时的页面：",[14,9213,9214],{},[55,9215],{"alt":9216,"src":9217},"老版本空状态：只有上传框，看不到任何功能结构","\u002Fb\u002Fmetool\u002Fux-compare-old-empty.png",[14,9219,9220],{},[49,9221,9222],{},"老版本的问题：",[1193,9224,9225,9228,9231,9234],{},[184,9226,9227],{},"上传区域之下的设置项（格式、品质、是否保持比例）和结果预览，只有上传图片之后才会出现",[184,9229,9230],{},"用户在上传前完全无法判断这个工具「有多少配置项」「结果长什么样」",[184,9232,9233],{},"整个页面是典型的垂直堆叠：上传 → 设置 → 结果，用户需要滚动才能看到操作结果",[184,9235,9236],{},"点击「开始拼接」之后，需要向下滚动才能看到结果",[14,9238,9239],{},"这是一个用户必须「先投入，才能了解」的工具。信任门槛很高。",[496,9241,9243],{"id":9242},"新版本首屏即全貌","新版本：首屏即全貌",[14,9245,9246],{},"下面是新版本在用户没有上传任何图片时的页面：",[14,9248,9249],{},[55,9250],{"alt":9251,"src":9252},"新版本空状态：界面骨架完整，设置和结果区始终可见","\u002Fb\u002Fmetool\u002Fux-compare-new-empty.png",[14,9254,9255],{},[49,9256,9257],{},"新版本的变化：",[1193,9259,9260,9266,9272,9278,9284],{},[184,9261,9262,9265],{},[49,9263,9264],{},"桌面端并列布局","：左侧是上传区 + 设置栏，右侧是结果预览区，不需要滚动就能同时看到",[184,9267,9268,9271],{},[49,9269,9270],{},"设置栏始终可见","：格式选择、品质滑块、自动去重叠开关，在上传前就能看见（视觉上淡化但结构完整）",[184,9273,9274,9277],{},[49,9275,9276],{},"结果区始终可见","：右侧结果区在无数据时以占位图展示，sticky 定位固定在视口内",[184,9279,9280,9283],{},[49,9281,9282],{},"Demo 模式","：首次进入时自动加载示例图片并展示拼接结果，用户一进门就能看到完整的「输入 → 结果」链路",[184,9285,9286,9289],{},[49,9287,9288],{},"Demo 视觉分离","：示例内容用虚线边框、降低饱和度、灰色 sparkle 标签标注，明确与正式操作态区分；上传入口始终保持可见",[496,9291,9293],{"id":9292},"关键细节demo-上方保留上传入口","关键细节：Demo 上方保留上传入口",[14,9295,9296],{},"这里有一个微妙的设计决策：Demo 内容和上传入口不能相互遮挡。",[14,9298,9299,9300,9303],{},"如果 Demo 内容填满了上传区，用户反而找不到「我要上传自己的图片」入口。所以新版本的处理是：Demo 状态下，",[49,9301,9302],{},"上传 FileDropZone 在上，Demo 缩略图展示在下","，用户随时都能直接拖拽上传，不需要先\"退出\"Demo 模式。",[436,9305,9308],{"className":9306,"code":9307,"language":441},[439],"┌─────────────────┐  ┌──────────────────┐\n│  📁 拖拽上传    │  │  ✦ Demo 结果预览 │\n│                 │  │                  │\n│  [FileDropZone] │  │  [stitched img]  │\n│                 │  │                  │\n├─────────────────┤  │  ↑ sticky 固定   │\n│  ✦ DEMO         │  └──────────────────┘\n│  [示例缩略图]   │\n│  → Demo 结果   │\n├─────────────────┤\n│  格式  品质  □  │  ← 设置栏始终可见\n└─────────────────┘\n",[79,9309,9307],{"__ignoreMap":316},[18,9311,9312],{"id":9312},"这两条准则的本质",[14,9314,9315,9316],{},"回头看，这两条准则本质上在解决同一个问题：",[49,9317,9318],{},"降低用户的认知税。",[14,9320,9321],{},"用户的认知资源是有限的。如果用户需要先上传、先等待，才能推断出「这个工具大概能做什么」，这个推断过程本身就是认知税。而工具类产品的用户通常是来解决具体问题的，他们不愿意把认知资源花在搞清楚界面上。",[14,9323,9324],{},"「能力先于数据」把这份认知税降为零——界面自己就是说明书。\n「因果并列」把操作反馈的延迟降为零——结果就在输入旁边。",[14,9326,9327],{},"两者加在一起，用户的\"我能做什么？\"\"做完之后是什么样？\"这两个问题，在进入页面的第一秒就有了答案。",[18,9329,9330],{"id":9330},"接下来的节奏",[14,9332,9333],{},"这次重构完成了拼长图工具，接下来会陆续把这两条准则应用到 metool 上其他的工具页面。优先处理那些「零数据状态下几乎是空白页」的工具。",[14,9335,9336],{},"同时继续用 GA4 数据来验证假设——这次改动是否真的降低了跳出率，用户停留时间是否有变化。数据说了算。",{"title":316,"searchDepth":317,"depth":317,"links":9338},[9339,9340,9344,9349,9350],{"id":9090,"depth":320,"text":9090},{"id":9122,"depth":320,"text":9123,"children":9341},[9342,9343],{"id":9129,"depth":317,"text":9130},{"id":9162,"depth":317,"text":9163},{"id":9194,"depth":320,"text":9195,"children":9345},[9346,9347,9348],{"id":9207,"depth":317,"text":9208},{"id":9242,"depth":317,"text":9243},{"id":9292,"depth":317,"text":9293},{"id":9312,"depth":320,"text":9312},{"id":9330,"depth":320,"text":9330},"2026-04-12","用自己做的 GA4 + GSC 分析工具审查 metool 的用户行为数据，发现用户在工具页面的一个关键流失点——不知道能做什么就离开了。这让我重新审视了整个交互逻辑，提炼出两条核心 UX 准则，并用 iPhone 拼长图工具做了一次完整的重构。",[9354,9357,9360,9363],{"q":9355,"a":9356},"什么是「能力先于数据」UX 原则？","界面的结构与功能区域应该独立于用户数据而完整存在。数据的有无只改变控件状态（启用\u002F禁用、填充\u002F占位），不改变界面的骨架与可见范围。用户第一眼看到的界面，就已经是工具能做什么的完整说明书。",{"q":9358,"a":9359},"什么是「因果并列」UX 原则？","在桌面端宽度充裕时，把输入区（操作\u002F配置）和输出区（结果\u002F预览）并列放置，让用户一眼就能感知因果关系。输出区使用 sticky 定位，在用户操作时始终停留在视口内，提供即时反馈。",{"q":9361,"a":9362},"为什么 Demo 内容要和正式操作态视觉上区分开？","如果 Demo 数据和用户实际操作结果在视觉上没有区别，用户容易误以为「数据已经预填了」或者「页面有 Bug」。使用降低饱和度、虚线边框、灰色调、标签标注等手段明确区分，同时 Demo 展示区始终保持上传入口可见，避免用户找不到操作入口。",{"q":9364,"a":9365},"这次 UX 重构具体改了什么？","把原来「先上传才能看到设置和结果区」的垂直堆叠布局，改为「设置和结果预览始终可见，数据到来前以占位\u002F禁用态展示」的并列布局。同时加入 Demo 模式，用户首次进入就能看到完整的输入 + 结果展示，消除了「上传后才知道能做什么」的认知黑箱。",{},"\u002Fbuilds\u002Fmetool\u002F2026-04-12-capability-first-ux",{"title":9085,"description":9352},[9370,9371,9372,9373,9374,9375,9376],"独立开发 UX 设计","工具类产品交互设计","能力先于数据 UX","因果并列布局","用户留存优化","Google Analytics 用户行为分析","在线工具交互优化","builds\u002Fmetool\u002F2026-04-12-capability-first-ux","通过 GA4 数据分析发现工具页面的高跳出率根源在于「数据到来前界面是空的」，提炼出「能力先于数据」和「因果并列」两条 UX 准则，并在 iPhone 拼长图工具上完成了完整重构，新版本在首屏即展示完整的界面骨架和 Demo 结果。",[1078,1746],"4xRt7OTQ-Eb2TfiUQvHXYGeDYvUFh9V6f-mS56bDP-U",{"id":9382,"title":9383,"body":9384,"date":9623,"description":9624,"draft":329,"extension":330,"faq":9625,"meta":9638,"navigation":345,"path":9639,"project":7528,"readingTime":541,"seo":9640,"seoKeywords":9641,"stem":9648,"summary":9649,"tags":9650,"updated":363,"__hash__":9651},"builds\u002Fbuilds\u002Fmetool\u002F2026-04-06-screen-editor.md","录了个产品演示，观众说看不清我点了哪里",{"type":8,"value":9385,"toc":9613},[9386,9392,9395,9398,9401,9407,9410,9414,9421,9424,9430,9433,9440,9443,9455,9459,9462,9468,9471,9474,9477,9491,9494,9497,9503,9506,9509,9522,9532,9539,9543,9546,9553,9556,9559,9562,9576,9588,9591,9595,9601,9604,9607,9610],[14,9387,9388],{},[55,9389],{"alt":9390,"src":9391},"metool editor","\u002Fb\u002Fmetool\u002Fvideo-editor-cover.png",[18,9393,9394],{"id":9394},"录屏视频的老问题",[14,9396,9397],{},"做独立开发这一年多，产品演示视频是绕不开的事。",[14,9399,9400],{},"不管是在 Product Hunt 上发布新工具、在 metool 官网展示功能，还是录一段教程发到 B站，都需要录屏。录屏本身不难，macOS 自带的录屏就够用。但录完之后看回放，总觉得哪里不对。",[14,9402,9403,9404],{},"问题很明确：",[49,9405,9406],{},"观众看不清我到底点了哪里。",[14,9408,9409],{},"光标在 1080p 的全屏画面里移动，菜单上某个选项被选中了，终端里跑出了一行关键输出。这些对我来说很清楚，因为我知道自己在干什么。但对观众来说，他们不是在\"看\"演示，而是在满屏幕\"找\"我点了哪里。",[18,9411,9413],{"id":9412},"openscreen-解决了问题但带来了新问题","OpenScreen 解决了问题，但带来了新问题",[14,9415,9416,9417,9420],{},"之前我一直在用 OpenScreen 做录屏视频的后期处理。它最核心的功能就是",[49,9418,9419],{},"动态聚焦","：在录屏视频的任意时间点，画面自动放大到你指定的操作区域，停留一会儿后平滑缩回全景。",[14,9422,9423],{},"效果很好，观众的视线被自然引导到关键操作，不需要加红框、画箭头、配旁白说\"请注意看右上角\"。",[14,9425,9426,9427],{},"但用了一段时间后，有一个持续困扰我的问题：",[49,9428,9429],{},"OpenScreen 的操作逻辑和我习惯的剪辑软件差太远了。",[14,9431,9432],{},"我日常用剪映和 iMovie，已经形成了肌肉记忆。播放头定位、快捷键分割、拖拽修剪、时间线操作，这些在剪映里是一套非常直觉的流程。但 OpenScreen 是 Electron 桌面应用，它的快捷键体系、界面交互、操作逻辑都是自成一套的。",[14,9434,9435,9436,9439],{},"每次打开 OpenScreen，我都需要一个\"切换脑子\"的过程。不是说它不好用，而是我用得",[49,9437,9438],{},"不顺手","。对一个偶尔才用一次的工具来说，这个切换成本太高了。",[18,9441,9442],{"id":9442},"自己做一个",[14,9444,9445,9446,9449,9450,130],{},"既然痛点这么明确，思路也很清楚：",[49,9447,9448],{},"做一个操作习惯对标剪映的录屏视频编辑器，把动态聚焦作为核心功能，跑在浏览器里。"," 于是就有了 metool 的 ",[279,9451,9454],{"href":9452,"rel":9453,"target":2108},"https:\u002F\u002Fmetool.online\u002Fvideos\u002FscreenEditor\u002F",[283],"录屏视频编辑器",[3491,9456],{"alt":9457,"src":9458},"演示视频","\u002Fb\u002Fmetool\u002Feditor-demo_edited_compressed.mp4",[14,9460,9461],{},"不需要安装，不限平台，打开网页就能用。操作逻辑不需要重新学，⌘B 分割、拖拽修剪、时间线多片段管理，和剪映一模一样。",[14,9463,9464,9465],{},"核心差异点只有一个：",[49,9466,9467],{},"动态聚焦是一等公民。",[14,9469,9470],{},"在剪映或 iMovie 里，如果你想做类似的效果，需要手动打关键帧、调缩放参数、算坐标位置。能做，但流程很长。在这个编辑器里，按 Z 键，在预览画面上框选一个区域，就完成了。视频会以 ease-in-out 动画自动放大到那个区域，停留设定时间后平滑缩回。",[18,9472,9473],{"id":9473},"动态聚焦怎么用",[14,9475,9476],{},"具体的操作流程是这样的：",[1193,9478,9479,9482,9485,9488],{},[184,9480,9481],{},"上传一段录屏视频（MP4\u002FMOV\u002FM4V，200MB 以内）",[184,9483,9484],{},"在时间线上定位到需要聚焦的时间点",[184,9486,9487],{},"按 Z 键，在预览画面上框选关键操作区域",[184,9489,9490],{},"视频就会在那个时间点自动放大到框选区域",[14,9492,9493],{},"每个 Zoom 的进入和退出都有过渡动画，默认 1 秒，可以调。如果片段时长不够，系统会自动适配过渡参数，不会出现动画卡顿的情况。",[14,9495,9496],{},"在时间线上，Zoom 关键帧是可以直接拖拽的，调整位置和时长都很直观。",[14,9498,9499,9502],{},[49,9500,9501],{},"这个功能让录屏视频从\"裸录屏\"变成\"有引导的专业演示\"。"," 观众不需要自己找重点，画面会自动带着他们看。",[18,9504,9505],{"id":9505},"不只是动态聚焦",[14,9507,9508],{},"既然做了编辑器，剪辑的基本功能也不能少。",[14,9510,9511,9514,9515,9518,9519,130],{},[49,9512,9513],{},"时间线剪辑","完全对标剪映的操作方式：播放头定位 → ⌘B 分割 → 拖拽修剪头尾 → 拖拽重排序。每个片段可以独立设置 ",[49,9516,9517],{},"0.25x 到 4x 的变速","（慢放关键步骤、快进重复操作），以及 ",[49,9520,9521],{},"0 到 200% 的音量调节",[14,9523,9524,9527,9528,9531],{},[49,9525,9526],{},"视觉效果","是另一个加分项。准备了 ",[49,9529,9530],{},"16 款 macOS 风格壁纸","作为背景（深空紫、日落、海洋蓝、极光绿等），加上渐变和纯色选项。圆角、阴影强度、内边距、背景模糊都可以调。录屏画面套上这些效果，瞬间从\"截屏录像\"变成\"产品宣传片\"的质感。",[14,9533,9534,9535,9538],{},"还做了",[49,9536,9537],{},"编辑进度持久化","。所有编辑状态自动保存到 IndexedDB，下次上传同一个视频，片段分割、Zoom 关键帧、变速、音量、样式配置全部恢复。不用担心浏览器关了就白干了。",[18,9540,9542],{"id":9541},"导出浏览器也能做","导出：浏览器也能做",[14,9544,9545],{},"导出是我最担心的环节。视频编码在浏览器里跑，性能够吗？",[14,9547,9548,9549,9552],{},"答案是够的。用了浏览器原生的 ",[49,9550,9551],{},"WebCodecs API","，H.264 视频编码 + AAC 音频编码，GPU 加速。支持原始分辨率、1080p、720p、480p 多档输出。最关键的是，动态聚焦效果、变速、音量调节、视觉样式，在导出的视频里全部完整保留。",[14,9554,9555],{},"不需要上传到服务器，所有处理都在本地完成。",[18,9557,9558],{"id":9558},"和其他工具的定位区别",[14,9560,9561],{},"市面上做录屏和编辑的工具不少，但定位各有不同。",[14,9563,9564,9567,9568,9571,9572,9575],{},[49,9565,9566],{},"Screen Studio"," 是 macOS 上的标杆，月费 $29，录屏+编辑一体化，动画效果丰富。但它是付费的、macOS 专属的。",[49,9569,9570],{},"OpenScreen"," 是开源替代品，免费但需要下载 Electron 应用，操作方式自成一套。",[49,9573,9574],{},"Cap"," 是开源 Loom 替代品，核心是录屏+分享，编辑功能比较基础。",[14,9577,9578,9579,9583,9584,9587],{},"metool 的 ",[279,9580,9582],{"href":9452,"rel":9581,"target":2108},[283],"录屏编辑器"," 不做录屏，",[49,9585,9586],{},"只做录屏的后期编辑","。定位很窄，但在这个窄赛道上做得更深：动态聚焦是一等公民、操作习惯对标主流编辑器、16 款壁纸背景一键配置、变速和音量精细控制、纯浏览器零安装。",[14,9589,9590],{},"对于 3 到 15 分钟的录屏视频后期，这个工具比全功能编辑器快得多。",[18,9592,9594],{"id":9593},"自己用的工具做起来最有底气","自己用的工具，做起来最有底气",[14,9596,9597,9598],{},"回头看 metool 上做过的所有工具，",[49,9599,9600],{},"自己是重度用户的工具，做起来方向感最强。",[14,9602,9603],{},"公众号 Markdown 转换是这样，音频编辑器是这样，这个录屏编辑器也是这样。需求不是调研来的，是自己用的时候觉得\"这里不对\"然后去解决的。",[14,9605,9606],{},"OpenScreen 的操作逻辑让我每次都要\"切换脑子\"，这不是一个产品评测意义上的缺点，是我个人工作流里的真实摩擦。这种摩擦只有自己用的时候才能感受到，别人的需求文档里不会写。",[14,9608,9609],{},"接下来要做的是把这个工具和之前的 GEO 策略结合起来：在工具页底部注入详细的使用场景文章，让 AI 搜索引擎也能理解\"这是一个带动态聚焦功能的在线录屏编辑器\"。",[14,9611,9612],{},"工具和内容的结合，是 metool 现在的主要打法。",{"title":316,"searchDepth":317,"depth":317,"links":9614},[9615,9616,9617,9618,9619,9620,9621,9622],{"id":9394,"depth":320,"text":9394},{"id":9412,"depth":320,"text":9413},{"id":9442,"depth":320,"text":9442},{"id":9473,"depth":320,"text":9473},{"id":9505,"depth":320,"text":9505},{"id":9541,"depth":320,"text":9542},{"id":9558,"depth":320,"text":9558},{"id":9593,"depth":320,"text":9594},"2026-04-06","一直在用 OpenScreen 做产品演示视频的动态聚焦，但它的操作逻辑和剪映、iMovie 差太远，每次用都得重新适应。既然痛点这么明确，不如自己做一个。于是在 metool 上做了一个纯浏览器的录屏视频编辑器，核心功能就是动态聚焦。",[9626,9629,9632,9635],{"q":9627,"a":9628},"什么是动态聚焦（Smooth Zoom）？","动态聚焦是一种录屏视频的后期编辑技术。在视频的任意时间点，画面以丝滑动画自动放大到你框选的关键操作区域，停留设定时间后平滑缩回全景。这样观众的视线会被自然引导到操作重点，不需要红框标注或语音提示'请看右上角'。",{"q":9630,"a":9631},"这个编辑器和 Screen Studio、OpenScreen 有什么区别？","Screen Studio 是 macOS 专属付费应用（月费 $29），OpenScreen 是需要下载的 Electron 桌面应用且操作方式与主流编辑器差异大。MeTool 的编辑器是纯浏览器在线工具，零安装、跨平台、完全免费，操作习惯对标剪映和 iMovie（⌘B 分割、Z 添加 Zoom、拖拽修剪）。",{"q":9633,"a":9634},"这个编辑器除了动态聚焦还有什么功能？","包括剪映式时间线剪辑（分割、修剪、重排序）、0.25x-4x 变速控制、0-200% 音量调节、16 款 macOS 风格壁纸背景、可调圆角和阴影、背景模糊、编辑进度自动保存到 IndexedDB、WebCodecs GPU 加速导出。",{"q":9636,"a":9637},"浏览器里能做视频编辑和导出吗？","可以。使用浏览器原生的 WebCodecs API 进行 H.264 视频编码和 AAC 音频编码，GPU 加速渲染。支持原始分辨率、1080p、720p、480p 导出，动态聚焦效果和视觉样式在导出中完整保留。所有处理都在本地完成，不需要上传到服务器。",{},"\u002Fbuilds\u002Fmetool\u002F2026-04-06-screen-editor",{"title":9383,"description":9624},[9454,9642,9643,9644,9645,9646,9647],"动态聚焦视频","Screen Studio 替代品","OpenScreen 替代品","在线视频编辑器","产品演示视频制作","Smooth Zoom 录屏","builds\u002Fmetool\u002F2026-04-06-screen-editor","因为 OpenScreen 的操作逻辑和主流剪辑软件差异太大，自己在 metool 上做了一个纯浏览器的录屏视频编辑器。核心功能是动态聚焦（Smooth Zoom），让录屏视频自动放大到关键操作区域，操作习惯完全对标剪映和 iMovie，零安装、跨平台、完全免费。",[1078,1746],"2EFMus60db2ekLagwzCI-PSBBHGV_YfvYna5X6_hodQ",{"id":9653,"title":9654,"body":9655,"date":9623,"description":9807,"draft":329,"extension":330,"faq":9808,"meta":9821,"navigation":345,"path":9822,"project":9823,"readingTime":562,"seo":9824,"seoKeywords":9825,"stem":9833,"summary":9834,"tags":9835,"updated":363,"__hash__":9836},"builds\u002Fbuilds\u002Fmofanx\u002F2026-04-06-homepage-evolution-card-information-hierarchy.md","最新建造上首页，让回头客也看得见站点在变",{"type":8,"value":9656,"toc":9801},[9657,9660,9689,9699,9703,9718,9725,9729,9739,9758,9761,9767,9777,9780,9794],[18,9658,9659],{"id":9659},"先说说最初的别扭",[14,9661,9662,9663,9666,9667,9673,9674,9677,9678,9681,9682,9685,9686],{},"建造日志写了不少，内容都",[49,9664,9665],{},"有时效","：这周改了什么、为什么改、截了什么图。但这些信息默认待在 ",[49,9668,9669,9672],{},[79,9670,9671],{},"\u002Fbuilds\u002F..."," 各项目内页","里，按时间排序。对",[49,9675,9676],{},"第一次来","的人，可以从创造总览摸进去；对",[49,9679,9680],{},"常来首页","的回头客，如果习惯只扫首页和文章区，",[49,9683,9684],{},"不主动点进 builds","，就很难感知到：",[49,9687,9688],{},"这些网站其实一直在迭代，并不是上线就冻住的展示页。",[14,9690,9691,9692,9695,9696,130],{},"我想补上的，正是这种**「活着」的感觉**：不是多一个模块堆砌，而是让",[49,9693,9694],{},"最近的建造动态","在首页就有一席之地，和教学、思考并列，让人一眼知道",[49,9697,9698],{},"最近又在动什么",[18,9700,9702],{"id":9701},"首页多了一排最近演化","首页多了一排「最近演化」",[14,9704,9705,9706,9709,9710,9713,9714,9717],{},"做法很直接：在首页「莫烦创造」里，",[49,9707,9708],{},"标题下面先铺一排跨项目、按时间排序的最新日志卡片","，再保留下面原有的「创造项目」入口。前者回答「",[49,9711,9712],{},"最近哪几篇建造","」，后者回答「",[49,9715,9716],{},"想跟进哪个项目","」。",[14,9719,9720,9721,9724],{},"这样，",[49,9722,9723],{},"有时效的内容不再只藏在深一点的列表里","，回头客路过首页也能撞上最新一篇，站点是不是在动，有了可见的抓手。",[18,9726,9728],{"id":9727},"版式上顺带解决的-confusion","版式上顺带解决的 confusion",[14,9730,9731,9732,5623,9735,9738],{},"把两档信息摆在一起以后，新问题也来了：",[49,9733,9734],{},"单篇卡片",[49,9736,9737],{},"项目卡片","如果长得太像，读者会愣一下：点进去到底是读一篇文章，还是进整个项目？",[14,9740,9741,9742,9745,9746,9749,9750,9753,9754,9757],{},"所以后面一串都是为这个服务的：两类卡片的版式拉开；演化卡里",[49,9743,9744],{},"先标题、摘要、日期","，",[49,9747,9748],{},"项目 logo 和名称缩在底部","当辅助入口；头图",[49,9751,9752],{},"固定比例裁切","，同一行对齐；区块 ",[49,9755,9756],{},"h2 与 h3"," 用字号和衬线、无衬线区分。教学系列、最新思考的主标题也统一成同一套，首页读起来节奏一致。",[14,9759,9760],{},"下面是改版后「莫烦创造」一角的截图：能看见主标题装饰线、子标题层级，以及演化卡片的头图与信息顺序。",[14,9762,9763],{},[55,9764],{"alt":9765,"src":9766},"首页「莫烦创造」中的最新演化卡片与区块标题","\u002Fb\u002Fmofanx\u002Fbuild-recent-cards.png",[14,9768,9769,9770,9773,9774],{},"技术细节（多链接拆层、避免嵌套 ",[79,9771,9772],{},"\u003Ca>"," 等）之前也写过，这里不重复展开，核心还是：",[49,9775,9776],{},"动机先说清楚，交互才好跟。",[18,9778,9779],{"id":9779},"小结",[14,9781,9782,9783,9786,9787,9790,9791,130],{},"这次改动的起点，不是「卡片好不好看」，而是：",[49,9784,9785],{},"建造动态若只躺在内页，回头客很难感到站点在实时演化。"," 把它请到首页，再借版式把「读一篇」和「进项目」分开，读者先感到",[49,9788,9789],{},"最近在动","，再决定",[49,9792,9793],{},"跟进哪条线",[14,9795,9796,9797,9800],{},"若你也在做个人站或小产品站，不妨问自己：",[49,9798,9799],{},"有时效的那部分更新，新访客和回头客分别能在哪一层看见？"," 能看见，才谈得上「活的」。",{"title":316,"searchDepth":317,"depth":317,"links":9802},[9803,9804,9805,9806],{"id":9659,"depth":320,"text":9659},{"id":9701,"depth":320,"text":9702},{"id":9727,"depth":320,"text":9728},{"id":9779,"depth":320,"text":9779},"有时效性的建造记录都躺在创造日志内页里，常来的读者若不去点，几乎感觉不到这些网站还在迭代。我把跨项目的最新演化拎到首页，再顺手整理了卡片层级和版式，让「活着的站点」一眼能读到。",[9809,9812,9815,9818],{"q":9810,"a":9811},"为什么要把最新演化放到首页？","有时效性的更新如果只躺在各项目的创造日志列表里，回头客逛首页时看不到时间线，很容易觉得站点是静态的。把按时间汇总的最新几篇提到首页，扫一眼就能感到这些站还在长、还在改，和 Build in Public 想传递的「活的建造」一致。",{"q":9813,"a":9814},"首页上怎么区分「一篇演化」和「整个项目」？","上面一排是跨项目的单篇日志卡片，点进去读某次建造故事；下面一排是项目入口，点进去看该项目的全部演化与时间线。样式和标题层级拉开后，先读动机再进项目，不会和「进项目主页」混成一件事。",{"q":9816,"a":9817},"演化卡片里为什么把项目名称放在最下面？","读者先关心这次迭代讲了什么，项目名是归属信息。标题、摘要、日期在上，底部分隔线后再放小号的项目 logo 与名称链接，主路径是读文章，想进项目时间线再点辅助行。",{"q":9819,"a":9820},"头图和标题样式做了哪些配套？","头图用固定比例裁切，避免竖图把同一行卡片撑得高低不一。区块主标题用大字衬线加短装饰线，下面的「最新演化」「创造项目」用无衬线子标题，和教学系列、最新思考的主标题风格对齐，首页各板块读起来是同一套节奏。",{},"\u002Fbuilds\u002Fmofanx\u002F2026-04-06-homepage-evolution-card-information-hierarchy","mofanx",{"title":9654,"description":9807},[9826,9827,9828,9829,9830,9831,9832],"首页展示建造动态","创造日志首页曝光","Build in Public 回头客","独立站点产品迭代感知","内容站信息架构","演化卡片设计","Nuxt 个人站","builds\u002Fmofanx\u002F2026-04-06-homepage-evolution-card-information-hierarchy","建造记录若只放在 builds 内页，常来的读者不主动点进去，很难感知站点仍在实时演化。把跨项目最新演化提到首页「莫烦创造」区块，并区分文章卡与项目卡、固定头图与标题层级，让首页先回答「最近改了什么」，再谈进哪个项目。",[1078,1746],"eU7D5rP7gaH5iTUBfaiwqYb9oePWdHwMLdt-xtVhLkA",{"id":9838,"title":9839,"body":9840,"date":10035,"description":10036,"draft":329,"extension":330,"faq":10037,"meta":10050,"navigation":345,"path":10051,"project":7528,"readingTime":535,"seo":10052,"seoKeywords":10053,"stem":10061,"summary":10062,"tags":10063,"updated":363,"__hash__":10064},"builds\u002Fbuilds\u002Fmetool\u002F2026-04-04-content-meets-tool.md","尝到 SEO 甜头后，我开始琢磨怎么让 AI 也能找到我",{"type":8,"value":9841,"toc":10027},[9842,9846,9849,9855,9858,9861,9867,9870,9873,9876,9879,9884,9887,9893,9896,9899,9902,9908,9911,9917,9922,9925,9928,9934,9940,9978,9984,9991,9994,9997,10000,10006,10009,10013,10016,10019,10024],[18,9843,9845],{"id":9844},"seo-见效了然后呢","SEO 见效了，然后呢",[14,9847,9848],{},"上一篇写到，metool 的日活从不到 100 一下子涨到了 300。SEO 持续优化了几个月，终于看到了正反馈。",[14,9850,9851,9852],{},"这种\"做了就有效果\"的感觉让人上头。自然而然地，我开始想下一个问题：",[49,9853,9854],{},"还有什么增长渠道是我没覆盖到的？",[14,9856,9857],{},"答案几乎是立刻浮现的：AI 搜索引擎。",[14,9859,9860],{},"越来越多的人不再打开 Google 输入关键词了。他们直接问 ChatGPT、Perplexity、Google AI Overview。AI 直接给答案，用户甚至不需要点进任何网站。",[14,9862,9863,9864],{},"我自己就是这样。日常遇到问题，第一反应已经不是 Google，而是问 AI。那反过来想，",[49,9865,9866],{},"如果我的工具不能出现在 AI 的回答里，就等于在一个越来越大的流量入口前隐身了。",[18,9868,9869],{"id":9869},"纯工具页的致命问题",[14,9871,9872],{},"想象一下 AI 搜索引擎在抓取 metool 的一个工具页。",[14,9874,9875],{},"页面上有什么？一个标题、几个按钮、一个上传区域、一些交互控件。对人类来说，一眼就知道这是个图片压缩工具。但对 LLM 来说，页面上几乎没有可供\"理解\"的文本内容。",[14,9877,9878],{},"当用户问 AI：\"有什么好用的在线图片压缩工具？\"AI 需要的是一段可引用的文字描述，而不是一堆 HTML 按钮。",[14,9880,9881],{},[49,9882,9883],{},"纯工具页，对 AI 搜索引擎来说几乎是隐形的。",[18,9885,9886],{"id":9886},"把内容和工具捆在一起",[14,9888,9889,9890],{},"解决思路很直接：",[49,9891,9892],{},"给每个工具页都写一篇文章。",[14,9894,9895],{},"不是单独写一个博客页面，而是直接把文章注入到工具页的底部。用户打开页面，首屏还是工具本身，交互区在最上面，不影响使用。但如果用户想了解更多，比如\"这个工具支持哪些格式\"\"压缩算法是怎么回事\"\"和其他工具比有什么区别\"，往下滑就能找到。",[14,9897,9898],{},"同时，当 AI 搜索引擎抓取这个页面时，它不仅能看到工具的标题和按钮，还能看到一篇完整的、结构化的文章。这就给了 AI 足够的上下文去理解：\"这个页面是一个在线图片压缩工具，支持 PNG\u002FJPG\u002FWebP，无需上传到服务器，本地浏览器处理...\"",[14,9900,9901],{},"以 Word 转 PDF 这个工具页为例，改之前页面底部到\"相关工具推荐\"就结束了：",[14,9903,9904],{},[55,9905],{"alt":9906,"src":9907},"改版前：工具页底部只有 FAQ 和相关推荐，没有正文内容","\u002Fb\u002Fmetool\u002F2026-04-04_before_insert_article.jpeg",[14,9909,9910],{},"改之后，FAQ 和相关推荐下面多了一整篇文章，介绍这个工具的使用场景、核心优势、技术原理：",[14,9912,9913],{},[55,9914],{"alt":9915,"src":9916},"改版后：工具页底部注入了一篇完整的 GEO 文章","\u002Fb\u002Fmetool\u002F2026-04-04_after_insert_article.jpeg",[14,9918,9919],{},[49,9920,9921],{},"一个页面，同时服务两类读者：人类用户和 AI 模型。",[18,9923,9924],{"id":9924},"重新设计页面结构",[14,9926,9927],{},"为了让工具和内容自然共存，我和 AI 一起重新规划了页面结构：",[14,9929,9930],{},[55,9931],{"alt":9932,"src":9933},"工具页的新页面结构","\u002Fb\u002Fmetool\u002F2026-04-04_geo_artical_section.png",[14,9935,9936,9939],{},[49,9937,9938],{},"单工具页","从上到下分六层：",[1193,9941,9942,9948,9954,9960,9966,9972],{},[184,9943,9944,9947],{},[49,9945,9946],{},"Header"," — 面包屑导航、工具标题、一句话描述",[184,9949,9950,9953],{},[49,9951,9952],{},"工具交互区"," — 首屏核心，用户打开就能直接用",[184,9955,9956,9959],{},[49,9957,9958],{},"Feature Highlights"," — 功能亮点，快速建立信任感",[184,9961,9962,9965],{},[49,9963,9964],{},"Related Tools"," — 相关工具推荐，引导用户探索更多",[184,9967,9968,9971],{},[49,9969,9970],{},"FAQ Section"," — 常见问题，覆盖用户最可能搜索的问题",[184,9973,9974,9977],{},[49,9975,9976],{},"SEO\u002FGEO 长文章"," — 给搜索引擎和 AI 模型的深度内容",[14,9979,9980,9983],{},[49,9981,9982],{},"分类集合页","也类似，在工具卡片网格下面加了分类级的 FAQ 和介绍文章。",[14,9985,9986,9987,9990],{},"关键设计原则是：",[49,9988,9989],{},"工具功能在上，内容在下，互不干扰。"," 对着急用工具的人，首屏就是交互区；对想深入了解的人，向下滑就有完整信息；对 AI 爬虫，整个页面都是可理解的结构化内容。",[18,9992,9993],{"id":9993},"为什么我觉得这个方向很重要",[14,9995,9996],{},"这不只是一个 SEO 技巧，而是一个对未来的判断。",[14,9998,9999],{},"传统搜索引擎的逻辑是：用户搜关键词 → 看到结果列表 → 点进网站。在这个模式里，你只需要排名靠前就行。",[14,10001,10002,10003],{},"AI 问答的逻辑完全不同：用户提问 → AI 综合多个来源生成答案 → 可能附上引用链接。在这个模式里，",[49,10004,10005],{},"你的内容需要足够好、足够结构化，才能被 AI \"选中\"作为答案来源。",[14,10007,10008],{},"一个只有按钮和交互控件的工具页，在 AI 问答的世界里是不存在的。但一个工具页加上一篇高质量文章，就有可能在用户问\"best online audio editor\"的时候被 AI 引用。",[18,10010,10012],{"id":10011},"geo-的实验继续","GEO 的实验继续",[14,10014,10015],{},"从之前加 llms.txt、FAQ Schema、HowTo 结构化数据，到现在给每个工具页注入长文章，metool 一直在做 GEO（Generative Engine Optimization）的实验。",[14,10017,10018],{},"这些尝试能不能带来效果，还需要时间验证。但逻辑链条是清晰的：",[14,10020,10021],{},[49,10022,10023],{},"更多可被 AI 理解的内容 → AI 搜索引擎更容易引用 → 在 AI 问答时代获得更多曝光",[14,10025,10026],{},"传统 SEO 让你在 Google 结果页出现，GEO 让你在 AI 的回答里出现。两条路都得走。",{"title":316,"searchDepth":317,"depth":317,"links":10028},[10029,10030,10031,10032,10033,10034],{"id":9844,"depth":320,"text":9845},{"id":9869,"depth":320,"text":9869},{"id":9886,"depth":320,"text":9886},{"id":9924,"depth":320,"text":9924},{"id":9993,"depth":320,"text":9993},{"id":10011,"depth":320,"text":10012},"2026-04-04","用户量涨了三倍，SEO 是见效了。但我意识到光靠 Google 排名不够，还得让 ChatGPT、Perplexity 这些 AI 搜索引擎也能推荐你。问题是纯工具页对 AI 几乎是隐形的。于是我在每个工具页底部注入了一篇文章，让工具和内容捆绑。",[10038,10041,10044,10047],{"q":10039,"a":10040},"为什么要在工具页里写文章？","纯工具页几乎没有文本内容，LLM 抓取后无法理解这个页面是做什么的。当用户问 AI'有什么在线工具可以压缩图片'时，AI 没有足够的文本信息来引用你的工具页。在工具页注入一篇文章，等于给 AI 搜索引擎提供了可引用的内容。",{"q":10042,"a":10043},"这对用户体验有影响吗？","文章放在页面底部，工具交互区仍然在首屏。用户打开页面就能直接使用工具，不受影响。但如果用户想了解更多（比如使用技巧、格式对比、常见问题），向下滑就能找到。这种'工具在上、内容在下'的布局同时服务了两类需求。",{"q":10045,"a":10046},"什么是 GEO（Generative Engine Optimization）？","GEO 是针对 AI 搜索引擎（ChatGPT、Perplexity、Google AI Overview 等）的优化策略。传统 SEO 优化的是 Google 排名，GEO 优化的是'AI 回答问题时是否引用你的内容'。核心手段包括：提供结构化的高质量文本、FAQ、使用步骤说明、llms.txt 等，让 LLM 更容易理解和引用你的页面。",{"q":10048,"a":10049},"工具页的新页面结构是怎样的？","单工具页从上到下分六层：Header（面包屑\u002F标题\u002F描述）、工具交互区（首屏核心）、Feature Highlights（功能亮点信任信号）、Related Tools（相关工具推荐）、FAQ Section（常见问题）、SEO\u002FGEO 长文章（给搜索引擎和 AI 模型）。分类集合页则是：Header、工具卡片网格、FAQ、分类级介绍文章。",{},"\u002Fbuilds\u002Fmetool\u002F2026-04-04-content-meets-tool",{"title":9839,"description":10036},[10054,10055,10056,10057,10058,10059,10060],"GEO 优化策略","AI 搜索引擎优化","工具页内容注入","LLM 检索增强","Generative Engine Optimization","工具站内容策略","AI 问答时代 SEO","builds\u002Fmetool\u002F2026-04-04-content-meets-tool","SEO 见效、用户涨了三倍后，开始琢磨下一个增长渠道：AI 搜索引擎。发现纯工具页对 LLM 几乎是隐形的，没有文本内容就没有检索有效性。于是在每个工具页底部注入了长文章，让工具和内容深度捆绑，同时服务人类用户和 AI 模型。",[1078,361],"4m_V9B7pBnSr7zFPgd5BFaVEP2UB1HjkdSvteBao61Q",{"id":10066,"title":10067,"body":10068,"date":10035,"description":10224,"draft":329,"extension":330,"faq":10225,"meta":10238,"navigation":345,"path":10239,"project":9823,"readingTime":535,"seo":10240,"seoKeywords":10241,"stem":10249,"summary":10250,"tags":10251,"updated":363,"__hash__":10252},"builds\u002Fbuilds\u002Fmofanx\u002F2026-04-04-project-link-and-evolution-number.md","当陌生人开始读你的创造日志",{"type":8,"value":10069,"toc":10216},[10070,10073,10076,10082,10085,10088,10091,10094,10100,10106,10109,10112,10115,10118,10121,10124,10130,10133,10139,10142,10145,10151,10154,10157,10163,10169,10172,10175,10195,10198,10201,10207,10210,10213],[18,10071,10072],{"id":10072},"搜索引擎带来了陌生人",[14,10074,10075],{},"创造日志写了快二十篇了。最近翻 Google Search Console，发现有一些搜索流量直接落到了创造日志的文章页上。",[14,10077,10078,10079],{},"这是好事。但紧接着我意识到一个问题：",[49,10080,10081],{},"这些读者不认识我，也不知道文章里讲的项目在哪。",[14,10083,10084],{},"对我来说，文章里提到 metool.online，我当然知道它是什么。但换个视角想，一个搜索\"工具站 SEO 优化\"然后点进来的陌生人，读完文章的反应可能是：\"这个工具站听起来不错，我去看看\"，然后环顾四周，发现页面上没有任何跳转入口。",[14,10086,10087],{},"这不是内容的问题，是页面动线的盲区。",[18,10089,10090],{"id":10090},"给陌生人一个入口",[14,10092,10093],{},"解决方案很直接：在文章页的两个关键位置加上项目入口。",[14,10095,10096,10099],{},[49,10097,10098],{},"头部","，在日期、阅读时间这行元信息的末尾加了项目名称链接。读者还没开始读正文，就能看到这篇文章讲的是哪个项目，好奇的人可以直接点过去。",[14,10101,10102,10105],{},[49,10103,10104],{},"尾部","，在前后日志导航的上方放了一个带项目 logo 的 CTA 条。不是信息量很大的卡片，而是一句简单的引导：\"觉得有意思？前往体验\"。读到这里的人已经了解了背景，只需要一个行动入口。",[14,10107,10108],{},"两个位置服务两种阅读行为：扫一眼就走的人用头部，认真读完的人用尾部。",[18,10110,10111],{"id":10111},"一个被忽略的数字",[14,10113,10114],{},"做入口的时候，我重新审视了\"演化次数\"这个数据。",[14,10116,10117],{},"演化次数记录的是一个项目被打磨了多少次。对于 Build in Public 来说，这可能是最重要的一个数字：它直接传递了\"这个项目是活的，还是做完就扔了\"。",[14,10119,10120],{},"但之前，这个数字藏得很深。",[14,10122,10123],{},"首页的项目卡片上，它被包在一句\"查看 5 次演化思考\"的文案里，是辅助信息，不是主角。",[14,10125,10126],{},[55,10127],{"alt":10128,"src":10129},"改版前的首页卡片","\u002Fb\u002Fmofanx\u002Fbuild-card-before.png",[14,10131,10132],{},"改版后，我把数字从文案里提了出来，用大号渐变色独占卡片右侧。不需要读文字，扫一眼就知道这个项目迭代了多少次。",[14,10134,10135],{},[55,10136],{"alt":10137,"src":10138},"改版后的首页卡片","\u002Fb\u002Fmofanx\u002Fbuild-card-after.png",[18,10140,10141],{"id":10141},"从卡片到项目页",[14,10143,10144],{},"首页卡片改完，效果很好。但点进项目页之后，同样的数据缩回了一个小标签，和状态、链接挤在一行里，视觉权重几乎为零。",[14,10146,10147],{},[55,10148],{"alt":10149,"src":10150},"改版前的项目页头部","\u002Fb\u002Fmofanx\u002Fproject-header-before.png",[14,10152,10153],{},"这种断层感很明显：卡片上\"13\"是主角，进了项目页\"13\"就消失了。",[14,10155,10156],{},"所以项目页也做了同样的处理。演化次数被提到头部右侧，用大号渐变数字 + \"次演化\"标签展示，和左侧的项目信息用一条竖线自然分隔。",[14,10158,10159],{},[55,10160],{"alt":10161,"src":10162},"改版后的项目页头部","\u002Fb\u002Fmofanx\u002Fproject-header-after.png",[14,10164,10165,10166],{},"从卡片到项目页，同一个数字、同一套视觉语言，不再断层。这就是视觉锤的作用：",[49,10167,10168],{},"让最重要的信息获得最高的视觉权重，并且在所有页面上保持一致。",[18,10170,10171],{"id":10171},"几个小细节",[14,10173,10174],{},"顺手优化了时间线卡片的几个细节：",[181,10176,10177,10183,10189],{},[184,10178,10179,10182],{},[49,10180,10181],{},"封面图贴边","：去掉了图片的最大高度限制，让封面图上下都贴紧卡片边缘，由卡片圆角统一裁切",[184,10184,10185,10188],{},[49,10186,10187],{},"移动端省空间","：隐藏了\"阅读详情\"文字，卡片更紧凑",[184,10190,10191,10194],{},[49,10192,10193],{},"卡片限高","：加了整体最大高度，防止长图把卡片撑得过高",[14,10196,10197],{},"小改动，合在一起让页面更舒服了。",[18,10199,10200],{"id":10200},"视角变了",[14,10202,10203,10204],{},"这次迭代让我想明白一件事：",[49,10205,10206],{},"Build in Public 的页面，不能只考虑\"写给自己看\"。",[14,10208,10209],{},"搜索引擎带来了新读者，他们不了解你的项目背景，不知道产品在哪，甚至不确定你是谁。页面上的每一个设计决策，都应该同时服务老读者和第一次来的陌生人。",[14,10211,10212],{},"项目入口解决的是\"陌生人找不到路\"，演化数字解决的是\"陌生人感受不到生命力\"。",[14,10214,10215],{},"小改动，但看问题的视角变了。",{"title":316,"searchDepth":317,"depth":317,"links":10217},[10218,10219,10220,10221,10222,10223],{"id":10072,"depth":320,"text":10072},{"id":10090,"depth":320,"text":10090},{"id":10111,"depth":320,"text":10111},{"id":10141,"depth":320,"text":10141},{"id":10171,"depth":320,"text":10171},{"id":10200,"depth":320,"text":10200},"搜索引擎带来了不认识你的读者。他们找不到项目入口，感受不到项目的生命力。我重新设计了文章页的入口动线，然后把演化次数从一个不起眼的小标签，变成了页面上最醒目的数字。",[10226,10229,10232,10235],{"q":10227,"a":10228},"为什么要在创造日志的文章页加项目链接？","从搜索引擎来的读者不了解项目背景，读完文章后想看看项目本身却找不到入口。在文章头部元信息行加了项目名称链接，尾部加了带 logo 的 CTA 引导条，让读者在任何阅读阶段都能一键跳转。",{"q":10230,"a":10231},"为什么要把演化次数做成大号数字？","演化次数代表一个项目被打磨了多少次，是传递项目生命力的核心指标。之前它只是一个小标签，视觉权重几乎为零。升级为大号渐变数字后，读者第一眼就能感受到'这个项目迭代了十几次'，数字本身变成了视觉锤。",{"q":10233,"a":10234},"首页卡片和项目页的演化数字是怎么统一设计的？","首页项目卡片先改版，把数字从'查看 N 次演化思考'的文案中提出来，用大号渐变数字独占卡片右侧。然后项目 Timeline 页跟进，用同样的渐变数字 + 竖线分隔的布局，保持视觉一致性。",{"q":10236,"a":10237},"这次还做了哪些细节优化？","时间线卡片去掉了图片的最大高度限制，让封面图上下贴边自然填满；移动端隐藏了'阅读详情'文字以节省空间；卡片整体加了限高防止长图撑开布局。小改动，但让页面更紧凑舒服。",{},"\u002Fbuilds\u002Fmofanx\u002F2026-04-04-project-link-and-evolution-number",{"title":10067,"description":10224},[10242,10243,10244,10245,10246,10247,10248],"Build in Public 页面设计","创造日志用户动线","文章项目外链设计","演化次数视觉设计","独立开发者站点优化","搜索引擎用户体验","时间线页面迭代","builds\u002Fmofanx\u002F2026-04-04-project-link-and-evolution-number","搜索引擎带来了不认识你的读者，他们读完创造日志后找不到项目入口，也感受不到项目被反复打磨的生命力。通过在文章头部和尾部增加项目入口，并将演化次数从 inline 小标签升级为大号渐变数字视觉锤，让页面同时服务老读者和第一次来的陌生人。",[1078,1746],"v_3bJHpiWXSyofyIM44kKoJZBGMoAk1NSsoAOm8VTG0",{"id":10254,"title":10255,"body":10256,"date":10462,"description":10463,"draft":329,"extension":330,"faq":10464,"meta":10477,"navigation":345,"path":10478,"project":7528,"readingTime":535,"seo":10479,"seoKeywords":10480,"stem":10487,"summary":10488,"tags":10489,"updated":363,"__hash__":10490},"builds\u002Fbuilds\u002Fmetool\u002F2026-04-03-user-growth-and-quality.md","用户突然变多了，我慌了",{"type":8,"value":10257,"toc":10454},[10258,10261,10264,10270,10273,10276,10282,10286,10289,10292,10298,10301,10307,10310,10313,10316,10322,10325,10357,10363,10367,10370,10373,10377,10382,10385,10388,10391,10397,10400,10406,10412,10418,10421,10425,10428,10435,10441,10444,10451],[18,10259,10260],{"id":10260},"数据开始动了",[14,10262,10263],{},"打开 Google Analytics，我差点没反应过来。",[14,10265,10266],{},[55,10267],{"alt":10268,"src":10269},"metool 活跃用户增长趋势","\u002Fb\u002Fmetool\u002Fuser-boot.png",[14,10271,10272],{},"过去 28 天，活跃用户 880，涨了 67.9%。新用户 818，涨了 66.3%。但最让我兴奋的是那条曲线的尾巴：最近两天，日活跃用户从不到 100 一下子拉到了 300 左右。",[14,10274,10275],{},"前几篇文章一直在讲 SEO 优化、数据驱动、扩展 3D 品类。说实话，做这些事的时候心里是没底的，因为 SEO 是一个滞后反馈的游戏，你做了优化，可能要等几周甚至几个月才能看到效果。",[14,10277,10278,10279],{},"现在数据给了一个正反馈：",[49,10280,10281],{},"方向是对的。",[18,10283,10285],{"id":10284},"兴奋了三秒然后开始焦虑","兴奋了三秒，然后开始焦虑",[14,10287,10288],{},"高兴了一会儿之后，一个新的担忧浮上来。",[14,10290,10291],{},"这大半年来，我的策略一直是\"快速上线\"。借助 AI Coding 的速度，很多工具从想法到上线只用了一两个小时。几十个工具就是这么铺出来的。",[14,10293,10294,10295],{},"但\"快速上线\"的代价是：",[49,10296,10297],{},"很多工具没有经过认真测试。",[14,10299,10300],{},"用户少的时候，问题不明显。反正也没几个人用，有 bug 也没人发现。但现在日活 300 了，如果用户点进来发现工具不好用、功能太单薄、甚至有 bug，第一印象就毁了。",[14,10302,10303,10304,130],{},"做工具站最怕的不是没人来，而是",[49,10305,10306],{},"人来了，用了一次，再也不来了",[18,10308,10309],{"id":10309},"从最热门的页面开始",[14,10311,10312],{},"焦虑归焦虑，解决问题还是得靠数据。",[14,10314,10315],{},"打开 Google Analytics 的页面报告，看昨天哪些工具页面访问量最高：",[14,10317,10318],{},[55,10319],{"alt":10320,"src":10321},"昨日访问量 Top 5 的工具页面","\u002Fb\u002Fmetool\u002F20260403-top-tools.png",[14,10323,10324],{},"排名很清晰：",[1193,10326,10327,10333,10339,10345,10351],{},[184,10328,10329,10332],{},[49,10330,10331],{},"3D 模型格式转换"," — 92 次浏览，79 个活跃用户",[184,10334,10335,10338],{},[49,10336,10337],{},"音频编辑器"," — 36 次浏览，29 个活跃用户",[184,10340,10341,10344],{},[49,10342,10343],{},"图片压缩"," — 33 次浏览，20 个活跃用户",[184,10346,10347,10350],{},[49,10348,10349],{},"JSON 格式化"," — 26 次浏览，21 个活跃用户",[184,10352,10353,10356],{},[49,10354,10355],{},"Markdown 转换器"," — 23 次浏览，20 个活跃用户",[14,10358,10359,10360],{},"逻辑很简单：",[49,10361,10362],{},"用户最多的地方，最值得先修。",[18,10364,10366],{"id":10365},"_3d-格式转换意料之中的第一名","3D 格式转换：意料之中的第一名",[14,10368,10369],{},"3D 模型格式转换排第一，不意外。上一篇文章里分析过，3D 工具是 metool 唯一有自然搜索流量的品类。这次用户增长，3D 工具应该贡献了不少。",[14,10371,10372],{},"我把这个工具从头到尾跑了一遍，测试了各种格式之间的互转。修复了几个边界情况的问题，确保核心流程是通的。",[18,10374,10376],{"id":10375},"音频编辑器老工具的新问题","音频编辑器：老工具的新问题",[14,10378,10379,10380,130],{},"让我真正停下来思考的是排第二的",[49,10381,10337],{},[14,10383,10384],{},"这个工具是很久之前做的，当时只做了最基本的功能：上传音频、简单裁剪、导出。能用，但仅此而已。",[14,10386,10387],{},"29 个活跃用户，对一个功能单薄的工具来说，其实不少了。这说明\"在线音频编辑\"这个需求是真实存在的。但如果用户进来发现只能做简单裁剪，大概率会失望离开。",[14,10389,10390],{},"我和 AI 做了一轮对话，梳理了音频编辑器真正需要的功能：",[14,10392,10393],{},[55,10394],{"alt":10395,"src":10396},"和 AI 一起规划音频编辑器的功能增强","\u002Fb\u002Fmetool\u002F20260403-audio-editor-plan.png",[14,10398,10399],{},"梳理下来，功能可以分成三个梯队：",[14,10401,10402,10405],{},[49,10403,10404],{},"第一梯队，高频刚需","：淡入淡出（避免裁剪后的爆音）、MP3\u002FOGG 导出（不要只能导出巨大的 WAV）、音量调节、键盘快捷键、精确时间输入。这些不是\"加分项\"，而是\"没有就不好用\"。",[14,10407,10408,10411],{},[49,10409,10410],{},"第二梯队，差异化竞争力","：静音检测自动裁切（播客和录课用户的刚需）、片段边界拖拽调整、片段分割、变速播放。这些功能在大多数在线音频编辑器上都没有，做出来就是竞争力。",[14,10413,10414,10417],{},[49,10415,10416],{},"第三梯队，锦上添花","：波形\u002F频谱图切换、简易降噪、片段重叠检测、项目保存恢复。",[14,10419,10420],{},"思路很清楚：先把第一梯队做完，让工具从\"能用\"变成\"好用\"。",[18,10422,10424],{"id":10423},"从快速上线到让人用得住","从\"快速上线\"到\"让人用得住\"",[14,10426,10427],{},"回头看，这其实是一个自然的阶段切换。",[14,10429,10430,10431,10434],{},"前面大半年，核心命题是",[49,10432,10433],{},"覆盖面","：做更多工具、覆盖更多品类、占据更多搜索入口。速度是第一优先级。",[14,10436,10437,10438,130],{},"但当用户真的开始来了，核心命题就变了：",[49,10439,10440],{},"质量",[14,10442,10443],{},"一个工具好不好，不是我自己觉得好就行，而是用户用了之后愿不愿意再来。覆盖面解决的是\"让人发现你\"，质量解决的是\"让人留下来\"。",[14,10445,10446,10447,10450],{},"现在的策略是：",[49,10448,10449],{},"用数据找到用户最常用的工具，集中精力把它们做到真正好用。"," 不再追求工具数量的增长，而是把已有工具的深度做上去。",[14,10452,10453],{},"先从 3D 格式转换和音频编辑器开始。",{"title":316,"searchDepth":317,"depth":317,"links":10455},[10456,10457,10458,10459,10460,10461],{"id":10260,"depth":320,"text":10260},{"id":10284,"depth":320,"text":10285},{"id":10309,"depth":320,"text":10309},{"id":10365,"depth":320,"text":10366},{"id":10375,"depth":320,"text":10376},{"id":10423,"depth":320,"text":10424},"2026-04-03","SEO 持续优化后，metool 的活跃用户从日均不到 100 涨到了 300。兴奋之后是焦虑：很多工具没经过认真测试，用户真的能用吗？我决定从访问量最高的页面开始，逐个把质量关补上。",[10465,10468,10471,10474],{"q":10466,"a":10467},"metool 的用户增长是怎么实现的？","主要靠持续的 SEO 优化：默认语言切英文覆盖国际用户、全站加 FAQ 和 HowTo 结构化数据、基于搜索数据扩展 3D 工具品类、提交 IndexNow 加速收录。没有投广告，纯粹靠搜索引擎的自然流量增长。",{"q":10469,"a":10470},"用户变多后为什么会焦虑？","因为之前的策略是'快速上线'，借助 AI Coding 的速度，很多工具从开发到上线只用了一两个小时，没有做充分的功能测试。用户少的时候问题不明显，用户多了之后，功能不完善或存在 bug 会直接影响口碑和留存。",{"q":10472,"a":10473},"怎么决定优先测试和优化哪些工具？","看 Google Analytics 的页面浏览数据。昨天访问量最高的五个工具页面是：3D 模型格式转换（92 次浏览）、音频编辑器（36 次）、图片压缩（33 次）、JSON 格式化（26 次）、Markdown 转换器（23 次）。优先从访问量最高的开始测试和优化。",{"q":10475,"a":10476},"音频编辑器打算增强哪些功能？","分三个优先级：第一梯队是高频刚需（淡入淡出、MP3\u002FOGG 导出、音量调节、键盘快捷键）；第二梯队是差异化竞争力（静音检测自动裁切、片段边界拖拽调整、变速播放）；第三梯队是锦上添花（波形\u002F频谱图切换、简易降噪、项目保存恢复）。",{},"\u002Fbuilds\u002Fmetool\u002F2026-04-03-user-growth-and-quality",{"title":10255,"description":10463},[10481,10482,10483,10484,10485,9375,10486],"工具站用户增长","产品质量与用户体验","数据驱动功能优化","在线音频编辑器功能规划","独立开发产品测试","工具站功能迭代优先级","builds\u002Fmetool\u002F2026-04-03-user-growth-and-quality","metool 的 SEO 优化开始见效，活跃用户从日均不到 100 涨到 300。但用户变多带来了新的焦虑：很多工具是快速上线的，没有经过认真测试。通过 Google Analytics 找到访问量最高的工具页面，优先测试和增强 3D 模型格式转换和音频编辑器，从'快速上线'转向'让人用得住'。",[1078,1746],"BAltcFwRZ4So0Xjk-p8jOA2QfMGxN9df1AzCgd_7XrI",{"id":10492,"title":10493,"body":10494,"date":10801,"description":10802,"draft":329,"extension":330,"faq":10803,"meta":10816,"navigation":345,"path":10817,"project":7528,"readingTime":541,"seo":10818,"seoKeywords":10819,"stem":10828,"summary":10829,"tags":10830,"updated":363,"__hash__":10831},"builds\u002Fbuilds\u002Fmetool\u002F2026-04-01-data-driven-building.md","接入 Google Search Console，用搜索数据决定下一步做什么",{"type":8,"value":10495,"toc":10791},[10496,10499,10502,10505,10511,10514,10517,10520,10523,10537,10540,10544,10547,10567,10573,10576,10579,10582,10585,10589,10592,10595,10627,10633,10636,10640,10643,10646,10689,10692,10698,10704,10707,10710,10713,10716,10747,10750,10753,10756,10782,10788],[18,10497,10498],{"id":10498},"从搜索数据开始",[14,10500,10501],{},"上一篇聊了 URL 迁移导致检索量断崖式下跌。跌完之后呢？等恢复的同时，我开始认真看数据。",[14,10503,10504],{},"把 Google Search Console 的搜索词数据拉出来，终于看到了用户是怎么找到 metool 的：",[14,10506,10507],{},[55,10508],{"alt":10509,"src":10510},"Google Search Console 搜索词数据","\u002Fb\u002Fmetool\u002Fgoogle-search-queries.png",[14,10512,10513],{},"这张图里藏了很多信息。",[18,10515,10516],{"id":10516},"品牌词占主导",[14,10518,10519],{},"前四条搜索词全是品牌词的变体：me tool、metool、me tools、metools。加起来 49 次点击、1273 次展现。",[14,10521,10522],{},"这说明两件事：",[1193,10524,10525,10531],{},[184,10526,10527,10530],{},[49,10528,10529],{},"目前大部分用户是\"知道 metool 才来的\"","，而不是搜某个具体需求然后发现了 metool。换句话说，自然搜索带来的新用户还很少。",[184,10532,10533,10536],{},[49,10534,10535],{},"品牌词的点击率不高","。metool 这个词 743 次展现只有 19 次点击，说明搜索结果页上的标题和描述还不够吸引人，或者排名位置不够靠前。",[14,10538,10539],{},"品牌搜索是基本盘，但不能只靠基本盘。要增长，必须让非品牌搜索也能带来流量。",[18,10541,10543],{"id":10542},"_3d-查看器是唯一的自然流量信号","3D 查看器是唯一的自然流量信号",[14,10545,10546],{},"往下看，终于看到了非品牌词：",[181,10548,10549,10555,10561],{},[184,10550,10551,10554],{},[49,10552,10553],{},"glb viewer"," — 1 次点击，97 次展现",[184,10556,10557,10560],{},[49,10558,10559],{},"glb viewer online"," — 1 次点击，20 次展现",[184,10562,10563,10566],{},[49,10564,10565],{},"gltf viewer online"," — 1 次点击，14 次展现",[14,10568,10569,10570],{},"点击量虽然只有个位数，但展现量说明了问题：",[49,10571,10572],{},"有人在搜这些词，而且 Google 认为 metool 的页面和这些搜索词相关。",[14,10574,10575],{},"97 次展现意味着 Google 已经把 metool 的 3D 查看器页面展示给了将近 100 个搜索用户。只是排名可能还不够高，用户没有点进来。",[14,10577,10578],{},"这是一个信号：3D 在线查看器是一个有真实需求的品类，而且 metool 已经有了初步的搜索基础。",[18,10580,10581],{"id":10581},"游戏也有微弱信号",[14,10583,10584],{},"最后两条：五子棋ai（11 次展现）、围棋在线（8 次展现）。量很小，但说明游戏品类也有一些自然搜索曝光。不过游戏市场的竞争格局和工具市场完全不同，暂时不作为重点。",[18,10586,10588],{"id":10587},"和-ai-一起做用户调研","和 AI 一起做用户调研",[14,10590,10591],{},"光看搜索词还不够。搜索「glb viewer」的人到底是谁，他们真正需要什么？",[14,10593,10594],{},"我和 AI 一起做了一轮用户需求分析，拆解出了几类典型用户：",[181,10596,10597,10603,10609,10615,10621],{},[184,10598,10599,10602],{},[49,10600,10601],{},"3D 设计师","：快速预览模型效果，不想打开 Blender 或 Maya。metool 的 GLB Viewer 基本满足。",[184,10604,10605,10608],{},[49,10606,10607],{},"游戏开发者","：检查导出的模型是否正确，查看动画和材质。当前只能看，缺少模型信息面板。",[184,10610,10611,10614],{},[49,10612,10613],{},"3D 打印爱好者","：检查模型尺寸和可打印性。这部分完全没覆盖。",[184,10616,10617,10620],{},[49,10618,10619],{},"前端\u002FWeb 开发者","：预览要嵌入网页的 3D 资源，关心性能指标。也没覆盖。",[184,10622,10623,10626],{},[49,10624,10625],{},"采购和 PM","：收到 3D 资产后快速查看，不想装软件。基本满足。",[14,10628,10629,10630,130],{},"这个分析很有价值。它告诉我两件事：第一，3D 查看器的用户群比我想象的宽得多；第二，",[49,10631,10632],{},"不同用户需要的不只是\"查看\"，还有格式转换、模型优化、信息检查这些周边能力",[14,10634,10635],{},"围绕这些需求，新的工具方向就清晰了：不同格式的查看器覆盖更多搜索入口，模型优化器和格式转换器满足深层需求。每个新页面都是一个独立的长尾关键词入口。",[18,10637,10639],{"id":10638},"用数据做决策一口气强化整个-3d-品类","用数据做决策：一口气强化整个 3D 品类",[14,10641,10642],{},"不是只加一个工具，而是把整个 3D 品类做厚。",[14,10644,10645],{},"metool 之前只有 GLB\u002FglTF Viewer、STL Viewer 和 Text to 3D 三个 3D 相关工具。这次基于数据信号和用户调研，一口气补上了四个：",[181,10647,10648,10658,10668,10678],{},[184,10649,10650,10657],{},[49,10651,10652],{},[279,10653,10656],{"href":10654,"rel":10655,"target":2108},"https:\u002F\u002Fmetool.online\u002F3d\u002FfbxViewer\u002F",[283],"FBX Viewer"," — 游戏开发和动画领域的主流格式，覆盖 fbx viewer online、fbx file viewer 等搜索词",[184,10659,10660,10667],{},[49,10661,10662],{},[279,10663,10666],{"href":10664,"rel":10665,"target":2108},"https:\u002F\u002Fmetool.online\u002F3d\u002FusdzViewer\u002F",[283],"USDZ\u002FUSD Viewer"," — Apple AR 生态的标准格式，iOS 开发者和设计师的刚需",[184,10669,10670,10677],{},[49,10671,10672],{},[279,10673,10676],{"href":10674,"rel":10675,"target":2108},"https:\u002F\u002Fmetool.online\u002F3d\u002FmodelOptimizer\u002F",[283],"3D Model Optimizer"," — 在线减面、压缩贴图，覆盖 reduce 3d model size、optimize glb file 等搜索词",[184,10679,10680,10688],{},[49,10681,10682,10683],{},"增强了 ",[279,10684,10687],{"href":10685,"rel":10686,"target":2108},"https:\u002F\u002Fmetool.online\u002F3d\u002FmodelConvert\u002F",[283],"3D Model Format Converter"," — 支持 STL、OBJ、GLB、glTF、PLY、FBX、DAE 等格式互转",[14,10690,10691],{},"加上原有的三个，metool 的 3D 工具品类从 3 个扩展到了 7 个。",[14,10693,10694],{},[55,10695],{"alt":10696,"src":10697},"metool 的 3D 工具矩阵","\u002Fb\u002Fmetool\u002F3d-tools-matrix.png",[14,10699,10700,10701],{},"这就是数据驱动和凭感觉做的区别：",[49,10702,10703],{},"不是\"我觉得某个工具有用所以做\"，而是\"数据显示 3D 查看器有需求 → 调研发现用户群比想象的宽 → 围绕整个品类做厚\"。",[18,10705,10706],{"id":10706},"一个实验田",[14,10708,10709],{},"我想把 metool 做成数据驱动型构建的实验田。",[14,10711,10712],{},"之前做了大半年工具，模式是\"有什么想法就做什么\"。工具做了几十个，但哪些有人用、哪些没人用，心里没数。",[14,10714,10715],{},"现在的模式是一个循环：",[1193,10717,10718,10724,10730,10736,10742],{},[184,10719,10720,10723],{},[49,10721,10722],{},"收集数据"," — Google Search Console 看搜索词，Google Analytics 看用户行为",[184,10725,10726,10729],{},[49,10727,10728],{},"分析信号"," — 哪些品类有自然需求，哪些搜索词有潜力",[184,10731,10732,10735],{},[49,10733,10734],{},"做出决策"," — 优先做数据验证过的方向",[184,10737,10738,10741],{},[49,10739,10740],{},"上线验证"," — 看新工具的搜索表现",[184,10743,10744],{},[49,10745,10746],{},"回到第一步",[14,10748,10749],{},"这个循环听起来简单，但和之前的工作方式完全不同。之前是\"做完就忘\"，现在是\"做完还要看数据反馈\"。",[18,10751,10752],{"id":10752},"下一步",[14,10754,10755],{},"3D 品类已经铺开了，接下来要做的是深耕和验证：",[181,10757,10758,10764,10770,10776],{},[184,10759,10760,10763],{},[49,10761,10762],{},"增强现有查看器的深度功能","：模型信息面板（顶点数、面数、材质列表）、截图导出、环境贴图切换、URL 直接加载。这些功能能提升用户停留时间和回访率。",[184,10765,10766,10769],{},[49,10767,10768],{},"优化品牌词的点击率","：743 次展现只有 19 次点击，搜索结果的标题和描述需要更有吸引力。",[184,10771,10772,10775],{},[49,10773,10774],{},"追踪新工具的搜索表现","：这批 3D 工具上线后，观察 Google 何时开始收录、展现量和点击量的变化趋势。这是验证\"数据驱动\"循环是否有效的关键一步。",[184,10777,10778,10781],{},[49,10779,10780],{},"观察 URL 迁移后的恢复速度","：上次切默认语言导致索引断崖，需要持续追踪。",[14,10783,10784,10785],{},"长期来看，我想验证一个假设：",[49,10786,10787],{},"一个工具站，能不能完全靠数据驱动来决定做什么、优化什么、放弃什么。",[14,10789,10790],{},"不靠直觉，不靠\"我觉得\"，只靠数据说话。metool 就是这个实验。",{"title":316,"searchDepth":317,"depth":317,"links":10792},[10793,10794,10795,10796,10797,10798,10799,10800],{"id":10498,"depth":320,"text":10498},{"id":10516,"depth":320,"text":10516},{"id":10542,"depth":320,"text":10543},{"id":10581,"depth":320,"text":10581},{"id":10587,"depth":320,"text":10588},{"id":10638,"depth":320,"text":10639},{"id":10706,"depth":320,"text":10706},{"id":10752,"depth":320,"text":10752},"2026-04-01","不再凭感觉做工具了。把 Google Search Console 接入工作流，看到真实的搜索词后发现 3D 查看器有自然流量潜力。和 AI 一起做了用户调研，一口气补上了 FBX Viewer、USDZ Viewer、3D 模型优化器。这是 metool 转向数据驱动型构建的第一步。",[10804,10807,10810,10813],{"q":10805,"a":10806},"为什么要用 Google Search Console 来指导工具开发？","Google Search Console 能看到用户是通过什么搜索词找到你的网站的，包括展现量和点击量。这比 Google Analytics 更直接地反映用户需求——用户在搜什么，说明他们需要什么。用这些数据来决定下一步做什么工具，比凭感觉靠谱得多。",{"q":10808,"a":10809},"搜索数据里发现了什么有价值的信号？","品牌词（metool、me tool 等）占了大部分点击，说明自然搜索带来的新用户还很少。但非品牌词中，glb viewer 有 97 次展现、gltf viewer online 有 14 次展现，说明 3D 在线查看器有真实的搜索需求，而且 Google 已经认为 metool 的页面与这些搜索词相关。",{"q":10811,"a":10812},"基于数据分析，这次做了哪些 3D 工具？","一口气做了四个新工具：FBX Viewer（游戏开发常用格式）、USDZ\u002FUSD Viewer（Apple AR 生态格式）、3D Model Optimizer（减面和贴图压缩）、增强了 3D Model Format Converter（支持更多格式互转）。加上原有的 GLB\u002FglTF Viewer、STL Viewer 和 Text to 3D，3D 品类从 2 个工具扩展到了 7 个。",{"q":10814,"a":10815},"什么是数据驱动型构建？","不再凭直觉决定做什么功能，而是通过搜索数据和用户行为数据发现真实需求，用 AI 辅助做深度调研，然后决定优先做什么。核心循环是：收集数据 → 分析信号 → AI 辅助调研 → 做出决策 → 上线验证 → 再看数据。metool 正在成为这种模式的实验田。",{},"\u002Fbuilds\u002Fmetool\u002F2026-04-01-data-driven-building",{"title":10493,"description":10802},[10820,10821,10822,10823,10824,10825,10826,10827],"Google Search Console 数据分析","数据驱动产品迭代","工具站搜索词分析","GLB Viewer 在线","FBX Viewer 在线工具","USDZ Viewer 在线","3D 模型优化器在线","独立开发数据驱动","builds\u002Fmetool\u002F2026-04-01-data-driven-building","通过 Google Search Console 分析 metool.online 的真实搜索数据，发现 3D 查看器是唯一有自然搜索流量的工具品类。和 AI 一起做了用户需求调研后，一口气补上了 FBX Viewer、USDZ\u002FUSD Viewer、3D Model Optimizer、增强了格式转换器，把 3D 工具从 2 个扩展到 7 个。这是从'凭感觉做工具'到'用数据决定做什么'的转变。",[1078,1746],"Pc5ArqDao5dfNG0TZmiUUo3Vq_NoOgAAuJWYzvhlGug",{"id":10833,"title":10834,"body":10835,"date":10971,"description":10972,"draft":329,"extension":330,"faq":10973,"meta":10986,"navigation":345,"path":10987,"project":7528,"readingTime":535,"seo":10988,"seoKeywords":10989,"stem":10997,"summary":10998,"tags":10999,"updated":363,"__hash__":11000},"builds\u002Fbuilds\u002Fmetool\u002F2026-03-31-url-restructure-cost.md","切换默认语言后，检索量断崖式下跌",{"type":8,"value":10836,"toc":10964},[10837,10840,10843,10849,10852,10855,10858,10864,10867,10870,10877,10897,10902,10905,10908,10911,10914,10917,10920,10923,10943,10946,10949,10952,10955,10958,10961],[18,10838,10839],{"id":10839},"数据说话",[14,10841,10842],{},"先看 Google Search Console 的数据：",[14,10844,10845],{},[55,10846],{"alt":10847,"src":10848},"切换 URL 路径后检索量断崖式下跌","\u002Fb\u002Fmetool\u002Findex-optimize.png",[14,10850,10851],{},"从 1 月到 3 月中旬，metool.online 的 Impressions（展现量）和 Clicks（点击量）一直在稳步增长。Impressions 从每天几十涨到了 300+，Clicks 从 0 涨到了日均 20+。",[14,10853,10854],{},"三个月的积累，一个决定，几乎归零。",[18,10856,10857],{"id":10857},"发生了什么",[14,10859,10860,10861],{},"3 月 19 日，我做了一个决定：",[49,10862,10863],{},"把 metool.online 的默认语言从中文切成英文。",[14,10865,10866],{},"原因很简单：工具站的使用场景是全球通用的。图片压缩、视频转 GIF、JSON 格式化，这些需求不分国界。英文覆盖的潜在用户群远大于中文。",[14,10868,10869],{},"但我低估了这个改动对 SEO 的冲击。",[14,10871,10872,10873,10876],{},"metool 用的是 Nuxt i18n 的 ",[79,10874,10875],{},"prefix_except_default"," 策略——默认语言不带路径前缀，其他语言带前缀。切换默认语言意味着：",[181,10878,10879,10889],{},[184,10880,10881,10882,10885,10886],{},"之前的中文页面 ",[79,10883,10884],{},"\u002Fimages\u002Fcompress\u002F"," → 变成了 ",[79,10887,10888],{},"\u002Fzh\u002Fimages\u002Fcompress\u002F",[184,10890,10891,10892,10885,10895],{},"之前的英文页面 ",[79,10893,10894],{},"\u002Fen\u002Fimages\u002Fcompress\u002F",[79,10896,10884],{},[14,10898,10899],{},[49,10900,10901],{},"全站几十个工具的 URL 全部变了。",[14,10903,10904],{},"紧接着 3 月 26 日，我又做了一轮 trailing slash 统一和 sitemap 重建。双重打击。",[18,10906,10907],{"id":10907},"代价",[14,10909,10910],{},"Google 已经索引的所有旧 URL 全部失效。搜索引擎不知道这些页面\"搬家\"了，它只看到旧 URL 返回了不同的内容（英文版），或者根本找不到了。",[14,10912,10913],{},"结果就是图表上看到的：Impressions 从日均 300+ 跌到不足 80，Clicks 从日均 20+ 跌到接近 0。",[14,10915,10916],{},"三个月的 SEO 积累，几天之内几乎清零。",[18,10918,10919],{"id":10919},"本可以做得更好",[14,10921,10922],{},"回头看，这次迁移本可以更平滑：",[181,10924,10925,10931,10937],{},[184,10926,10927,10930],{},[49,10928,10929],{},"301 重定向","：把旧 URL 301 到新 URL，告诉搜索引擎\"页面搬家了\"而不是\"页面消失了\"。SSG 静态站做 301 需要在部署层配置，当时没有做。",[184,10932,10933,10936],{},[49,10934,10935],{},"过渡期 sitemap","：新旧 URL 同时提交，用 canonical 标签指向新 URL，给搜索引擎过渡时间。",[184,10938,10939,10942],{},[49,10940,10941],{},"分步迁移","：先切语言，等索引稳定了再统一 trailing slash，避免双重打击。",[14,10944,10945],{},"这些都是标准的 URL 迁移方案，但我当时只想着\"赶紧改完\"，没有给搜索引擎留缓冲。",[18,10947,10948],{"id":10948},"为什么我认为长期是对的",[14,10950,10951],{},"短期阵痛是确定的，但我依然认为这个决定是对的。",[14,10953,10954],{},"中文互联网的工具站竞争激烈，而且中文用户获取成本高。英文作为默认语言，每一个工具页面都在面向全球用户。\"online image compressor\"的搜索量是\"在线图片压缩\"的几十倍。",[14,10956,10957],{},"按照 Google 的重新索引周期，新 URL 被完全爬取和收录通常需要 2-4 周，恢复到之前的排名水平可能需要 1-2 个月。前提是新 sitemap 已正确提交、内容质量没有下降。",[14,10959,10960],{},"现在能做的就是：确保新 sitemap 正确、补上 301 重定向、然后等待。",[14,10962,10963],{},"SEO 是一个长期游戏。有时候你必须接受短期的损失，去换一个更大的可能性。",{"title":316,"searchDepth":317,"depth":317,"links":10965},[10966,10967,10968,10969,10970],{"id":10839,"depth":320,"text":10839},{"id":10857,"depth":320,"text":10857},{"id":10907,"depth":320,"text":10907},{"id":10919,"depth":320,"text":10919},{"id":10948,"depth":320,"text":10948},"2026-03-31","为了面向国际用户把默认语言从中文切成英文，所有 URL 路径全变了。Google 索引一夜清零，三个月积累的检索量几乎归零。短期阵痛，但我认为长期是对的。",[10974,10977,10980,10983],{"q":10975,"a":10976},"为什么切换默认语言会导致检索量下跌？","Nuxt i18n 的 prefix_except_default 策略下，默认语言的页面不带语言前缀。把默认语言从中文切成英文后，原来的 \u002Fimages\u002Fcompress\u002F（中文页）变成了 \u002Fzh\u002Fimages\u002Fcompress\u002F，而 \u002Fimages\u002Fcompress\u002F 现在指向英文页。Google 已经索引的所有旧 URL 全部失效，需要重新爬取和建立索引。",{"q":10978,"a":10979},"有没有办法避免这种检索量损失？","可以通过 301 重定向将旧 URL 映射到新 URL，告诉搜索引擎页面搬家了而不是消失了。但 SSG 静态站实现 301 重定向比较复杂，需要在部署层（Nginx\u002FCloudflare）配置规则。另一个方案是在 sitemap 中同时提交新旧 URL 并标注 canonical，给搜索引擎过渡时间。",{"q":10981,"a":10982},"检索量预计多久能恢复？","根据 Google 的重新索引周期，通常需要 2-4 周让新 URL 被完全爬取和收录，1-2 个月恢复到之前的排名水平。前提是新 sitemap 已正确提交、robots.txt 没有阻拦、页面内容质量没有下降。如果做了 301 重定向，恢复速度会更快。",{"q":10984,"a":10985},"切换默认语言的长期收益是什么？","英文作为默认语言意味着全球用户访问时默认看到英文界面，搜索引擎也优先索引英文内容。工具站的使用场景（图片压缩、格式转换等）是全球通用的，英文覆盖的潜在用户群远大于中文。长期来看，国际流量的天花板比中文流量高得多。",{},"\u002Fbuilds\u002Fmetool\u002F2026-03-31-url-restructure-cost",{"title":10834,"description":10972},[10990,10991,10992,10993,10994,10995,10996],"网站 URL 迁移","Google 索引下降","默认语言切换 SEO 影响","sitemap 重建","搜索引擎重新收录","i18n URL 结构变更","独立开发 SEO 教训","builds\u002Fmetool\u002F2026-03-31-url-restructure-cost","metool.online 为面向国际用户将默认语言从中文切成英文，导致全站 URL 路径结构变更，Google 三个月积累的索引几乎归零。Impressions 从日均 300+ 跌到不足 80，Clicks 从日均 20+ 跌到接近 0。这是一次有意识的短期牺牲，押注长期的国际化收益。",[1078,1746],"JiLBHivnJLiSY1PmK_E_QtuRab70pGpC0z_ZoZPpYBo",{"id":11002,"title":11003,"body":11004,"date":10971,"description":11075,"draft":329,"extension":330,"faq":11076,"meta":11089,"navigation":345,"path":11090,"project":9823,"readingTime":317,"seo":11091,"seoKeywords":11092,"stem":11100,"summary":11101,"tags":11102,"updated":363,"__hash__":11103},"builds\u002Fbuilds\u002Fmofanx\u002F2026-03-31-timeline-card-thumbnail.md","给创造日志的时间线加上封面图",{"type":8,"value":11005,"toc":11069},[11006,11009,11012,11015,11021,11025,11028,11034,11037,11041,11044,11047,11053,11056,11060,11063,11066],[18,11007,11008],{"id":11008},"时间线像在看目录",[14,11010,11011],{},"创造日志的时间线页面上线后，我每次回去翻都觉得少了点什么。",[14,11013,11014],{},"所有卡片长得几乎一样：一个日期、一行标题、两行描述。从上往下扫，每张卡片的视觉权重完全相同，很难快速区分\"这篇写的是什么\"。像在看一份目录，而不是在浏览一段开发历程。",[14,11016,11017,11018,130],{},"问题很明显：",[49,11019,11020],{},"缺视觉锚点",[18,11022,11024],{"id":11023},"让文章自己长出封面","让文章自己\"长出\"封面",[14,11026,11027],{},"我不想手动给每篇文章设置一张封面图。因为大多数创造日志里本来就有截图，讲 metool 的有工具截图，讲 mofanx 的有页面截图。",[14,11029,11030,11031],{},"所以做了一个很简单的事：",[49,11032,11033],{},"让程序自动从文章正文里提取第一张图片，作为卡片的封面。",[14,11035,11036],{},"写完文章，封面就自动有了。零额外工作量。",[18,11038,11040],{"id":11039},"贴边不贴邮票","贴边，不贴邮票",[14,11042,11043],{},"第一版把图片放在卡片右侧，加了圆角和边框，尺寸也不大。看起来像一张邮票贴在卡片上，和内容有距离感。",[14,11045,11046],{},"调整后，让图片直接贴紧卡片的右侧边缘，上下也顶满，利用卡片自身的圆角自然裁切。左边是文字，右边是图片，形成一个自然的分区。",[14,11048,11049],{},[55,11050],{"alt":11051,"src":11052},"Timeline 卡片加上封面图后的效果","\u002Fb\u002Fmofanx\u002Ftimeline-thumbnail.png",[14,11054,11055],{},"没有图片的文章卡片会自然降级为纯文字布局，不会出现空白。",[18,11057,11059],{"id":11058},"小改动大不同","小改动，大不同",[14,11061,11062],{},"代码量很小，但浏览体验的变化是立竿见影的。",[14,11064,11065],{},"之前的时间线从头到尾全是文字，想找某篇日志只能逐行读标题。现在扫一眼图片就知道哪篇是哪篇：有工具截图的是 metool 迭代，有页面截图的是 mofanx 改版，有数据图的是 SEO 优化。",[14,11067,11068],{},"有时候决定体验好不好的，就是这种小细节。",{"title":316,"searchDepth":317,"depth":317,"links":11070},[11071,11072,11073,11074],{"id":11008,"depth":320,"text":11008},{"id":11023,"depth":320,"text":11024},{"id":11039,"depth":320,"text":11040},{"id":11058,"depth":320,"text":11059},"Timeline 卡片只有文字，浏览起来像看目录。从文章正文中自动提取第一张图片作为缩略图，让时间线有了视觉锚点。",[11077,11080,11083,11086],{"q":11078,"a":11079},"为什么要给时间线卡片加封面图？","纯文字的卡片浏览起来像在看目录，所有条目视觉权重相同，缺少区分度。加上封面图后，读者扫一眼就能通过图片快速判断这篇日志写的是什么，缩短了从'看到标题'到'决定是否点进去'的认知路径。",{"q":11081,"a":11082},"封面图是从哪来的？需要手动设置吗？","不需要手动设置。程序会自动从每篇文章正文中提取第一张图片作为封面图。因为大多数创造日志里本来就有截图，所以不用额外做任何事，写完文章封面图就自动有了。没有图片的文章会自然降级为纯文字布局，不会出现空白。",{"q":11084,"a":11085},"这个改动效果怎么样？","效果很明显。改之前，时间线从头到尾全是文字，像一份流水账清单。改之后，每张卡片都有了独特的视觉标识，读者扫一眼就知道哪篇讲的是什么。视觉锚点让浏览从'逐行阅读'变成了'快速扫描'。",{"q":11087,"a":11088},"封面图的布局是怎么设计的？","图片贴紧卡片的右侧和上下边缘，利用卡片自身的圆角自然裁切，和左侧的文字区域形成清晰分区。这样图片像是卡片的一部分而不是'贴上去的装饰'，视觉上更整体。",{},"\u002Fbuilds\u002Fmofanx\u002F2026-03-31-timeline-card-thumbnail",{"title":11003,"description":11075},[11093,11094,11095,11096,11097,11098,11099],"创造日志时间线设计","Build in Public 页面优化","卡片封面图自动提取","时间线视觉体验","Timeline UI 设计","文章缩略图自动生成","内容浏览体验优化","builds\u002Fmofanx\u002F2026-03-31-timeline-card-thumbnail","创造日志的时间线卡片原本只有文字，浏览起来像看目录。让程序自动从每篇文章中提取第一张图片作为封面，时间线瞬间有了生命力。一个很小的改动，但对浏览体验的影响立竿见影。",[1078,1746],"trkpOPzMUiuMEU1wmJ2VVoXqHUuW68n7K76jB9Hj3NQ",{"id":11105,"title":11106,"body":11107,"date":11211,"description":11212,"draft":329,"extension":330,"faq":11213,"meta":11226,"navigation":345,"path":11227,"project":9823,"readingTime":535,"seo":11228,"seoKeywords":11229,"stem":11237,"summary":11238,"tags":11239,"updated":363,"__hash__":11240},"builds\u002Fbuilds\u002Fmofanx\u002F2026-03-27-three-content-types.md","引入三种内容形态：教学、创造、思考",{"type":8,"value":11108,"toc":11205},[11109,11112,11120,11123,11126,11129,11135,11138,11141,11144,11164,11167,11187,11190,11193,11199,11202],[18,11110,11111],{"id":11111},"起因",[14,11113,11114,11115,11119],{},"在上一篇日志",[279,11116,11118],{"href":11117},"\u002Fbuilds\u002Fmofanx\u002F2026-03-24-content-first-strategy","《从围绕产品做内容，到围绕内容做产品》","里，我确定了\"围绕内容做产品\"的思路。既然内容是核心，那 mofanx 站点本身就得是一个优秀的内容产品。",[14,11121,11122],{},"但当时站点只有一种内容形态——按分类组织的独立文章。对于一个想做 Build in Public 的独立开发者来说，这远远不够。",[18,11124,11125],{"id":11125},"旧版长什么样",[14,11127,11128],{},"这是改版前 mofanx 的首页：",[14,11130,11131],{},[55,11132],{"alt":11133,"src":11134},"mofanx 旧版首页 — 只有分类文章一种内容形态","\u002Fb\u002Fmofanx\u002Fversion2026-03-20.png",[14,11136,11137],{},"所有内容都是独立文章，按分类平铺。它能承载\"思考\"，但无法表达\"我在教什么\"和\"我在做什么\"。",[18,11139,11140],{"id":11140},"三种内容形态",[14,11142,11143],{},"我把 mofanx 重构为三种内容形态：",[1193,11145,11146,11152,11158],{},[184,11147,11148,11151],{},[49,11149,11150],{},"教学"," — 结构化的学习系列，按章节组织，适合系统性输出方法论",[184,11153,11154,11157],{},[49,11155,11156],{},"创造"," — Build in Public 的实践记录，按时间线展示，让读者看到真实的开发过程",[184,11159,11160,11163],{},[49,11161,11162],{},"思考"," — 原有的独立文章，按分类组织，承载碎片化的洞察和反思",[14,11165,11166],{},"一个独立开发者的 IP 站点，需要覆盖三个维度：",[181,11168,11169,11175,11181],{},[184,11170,11171,11174],{},[49,11172,11173],{},"我在教什么"," → 教学系列",[184,11176,11177,11180],{},[49,11178,11179],{},"我在做什么"," → 创造日志",[184,11182,11183,11186],{},[49,11184,11185],{},"我在想什么"," → 思考文章",[18,11188,11189],{"id":11189},"新版的样子",[14,11191,11192],{},"改版后的首页，三种形态各有入口：",[14,11194,11195],{},[55,11196],{"alt":11197,"src":11198},"mofanx 新版首页 — 教学、创造、思考三种形态并存","\u002Fb\u002Fmofanx\u002Fversion2026-03-27.png",[14,11200,11201],{},"导航从单一的\"分类\"扩展为\"教学、创造、思考、关于\"四个入口，首页也按优先级依次展示教学系列、创造日志和最新思考。",[14,11203,11204],{},"这篇日志本身，就是用新的创造日志形态写的第一批内容。",{"title":316,"searchDepth":317,"depth":317,"links":11206},[11207,11208,11209,11210],{"id":11111,"depth":320,"text":11111},{"id":11125,"depth":320,"text":11125},{"id":11140,"depth":320,"text":11140},{"id":11189,"depth":320,"text":11189},"2026-03-27","为 mofanx 站点引入 Build in Public 创造日志和教学系列两种新内容形态，让站点从单一文章进化为完整的内容平台。",[11214,11217,11220,11223],{"q":11215,"a":11216},"为什么个人站点需要多种内容形态？","单一文章形态只能表达'我在想什么'，但一个独立开发者的 IP 站点需要覆盖三个维度：教学（我在教什么）、创造（我在做什么）、思考（我在想什么）。三种形态各有不同的组织逻辑——教学按章节、创造按时间线、思考按分类——对读者来说更容易找到想要的内容。",{"q":11218,"a":11219},"Build in Public 创造日志具体记录什么内容？","创造日志记录每个项目的真实开发过程，包括：策略决策（为什么做这个选择）、技术实现（怎么解决具体问题）、阶段性成果（做到了什么程度）、反思复盘（哪里可以改进）。按时间线倒序排列，读者可以看到一个项目从 0 到 1 的完整演变。",{"q":11221,"a":11222},"mofanx 站点从旧版到新版改了哪些结构？","旧版只有分类文章一种内容形态，首页按分类平铺所有文章。新版引入三种内容形态后，首页重新组织为四个区域：Hero 个人介绍、教学系列卡片（带封面图）、创造日志时间线、最新思考文章。导航也从单一的'分类'扩展为'教学、创造、思考、关于'四个入口。",{"q":11224,"a":11225},"用什么技术实现多种内容形态的管理？","基于 Nuxt 4 + @nuxt\u002Fcontent v3 的多 collection 功能。在 content.config.ts 中定义三个独立的 schema（articles、tutorials、builds），每种内容有自己的目录、Front Matter 字段和页面路由。所有元数据配置集中在 app\u002Fdata\u002F 目录下，新增内容只需写 Markdown + 在配置文件中注册。",{},"\u002Fbuilds\u002Fmofanx\u002F2026-03-27-three-content-types",{"title":11106,"description":11212},[11230,11231,11232,11233,11234,11235,11236],"个人IP站点架构","Build in Public 实践","内容形态设计","独立开发者内容平台","Nuxt Content 多集合","教学系列网站","创造日志时间线","builds\u002Fmofanx\u002F2026-03-27-three-content-types","将 mofanx 从单一文章站点重构为教学、创造、思考三种内容形态并存的平台，用 Build in Public 创造日志记录过程，用结构化教学系列沉淀方法论，用分类文章承载独立思考。",[1078,1746],"_hIAaVfLSaosHG5xV5Hv7Z49r2J9ON6_WwJLGIbYEYo",{"id":11242,"title":11243,"body":11244,"date":11350,"description":11351,"draft":329,"extension":330,"faq":11352,"meta":11365,"navigation":345,"path":11366,"project":2188,"readingTime":535,"seo":11367,"seoKeywords":11368,"stem":11374,"summary":11375,"tags":11376,"updated":363,"__hash__":11377},"builds\u002Fbuilds\u002Fwhoami\u002F2026-03-26-competitor-wakeup-call.md","同类产品火了，我的却没人知道",{"type":8,"value":11245,"toc":11342},[11246,11249,11252,11255,11261,11264,11267,11270,11281,11285,11288,11302,11305,11308,11311,11320,11327,11330,11333,11339],[18,11247,11248],{"id":11248},"被竞品打醒",[14,11250,11251],{},"3 月下旬，一个叫 mem9 的产品发布了。它解决的问题和 whoami 几乎一模一样：跨 AI 的用户记忆同步。",[14,11253,11254],{},"mem9 发布后迅速获得了大量关注。而 whoami 已经上线了三周，功能更完善、体验也打磨过了，却几乎无人问津。",[14,11256,11257,11258],{},"这让我不得不面对一个事实：",[49,11259,11260],{},"不是产品不好，是没人知道我做了这个产品。",[14,11262,11263],{},"我开始认真思考：产品做出来之后，怎么让人发现它？",[18,11265,11266],{"id":11266},"两个方向的改变",[14,11268,11269],{},"我期望做到：",[181,11271,11272,11275,11278],{},[184,11273,11274],{},"让搜索引擎（包括 AI 搜索引擎）能找到 whoami",[184,11276,11277],{},"通过 Build in Public 持续输出内容，积累关注",[184,11279,11280],{},"不再闷头做产品，而是一边做一边讲",[496,11282,11284],{"id":11283},"让-ai-搜索引擎也能找到你","让 AI 搜索引擎也能找到你",[14,11286,11287],{},"传统 SEO 解决的是 Google 排名，但现在越来越多人通过 ChatGPT、Perplexity 这些 AI 搜索引擎找信息。如果你的产品不能被 AI 引用，就等于失去了一半的流量入口。",[14,11289,3890,11290,11293,11294,11297,11298,11301],{},[279,11291,2109],{"href":2997,"rel":11292,"target":2108},[283]," 上添加了 ",[79,11295,11296],{},"llms.txt","——类似 ",[79,11299,11300],{},"robots.txt"," 之于传统爬虫，它告诉 AI 搜索引擎：\"关于这个产品，这些是最值得引用的核心信息。\"",[14,11303,11304],{},"同时全面打磨了站点的交互体验——键盘导航、移动端适配、状态反馈、过渡动画。这些细节不起眼，但用户潜意识里感受得到。",[496,11306,11307],{"id":11307},"去有人的地方讲故事",[14,11309,11310],{},"这是更重要的一步。",[14,11312,11313,11314,11319],{},"我决定在 ",[279,11315,11318],{"href":11316,"rel":11317},"https:\u002F\u002Fmofanx.com",[283],"mofanx.com"," 上公开记录 whoami 的整个开发过程——也就是你现在正在读的这些创造日志。",[14,11321,11322,11323,11326],{},"这不只是\"分享开发日志\"，更是一种获客策略。通过持续输出真实的开发故事，吸引同频的读者和潜在用户。读者看了日志觉得有共鸣，自然会去试试这个产品。我之前也在",[279,11324,11325],{"href":2183},"《养虾专业户两周了，我发现一个没人提的问题》","这篇文章里聊过 whoami 的产品理念，但一篇文章远远不够，需要的是持续的、真实的故事。",[14,11328,11329],{},"比起在沙漠里等客人上门，不如去有人的地方讲你的故事。",[18,11331,11332],{"id":11332},"故事还在继续",[14,11334,11335,11336],{},"策略刚刚开始执行，还没有数据能验证效果。但我已经想清楚了一件事：",[49,11337,11338],{},"先做内容、先做影响力，产品会跟着来。",[14,11340,11341],{},"whoami 的故事还在继续。",{"title":316,"searchDepth":317,"depth":317,"links":11343},[11344,11345,11349],{"id":11248,"depth":320,"text":11248},{"id":11266,"depth":320,"text":11266,"children":11346},[11347,11348],{"id":11283,"depth":317,"text":11284},{"id":11307,"depth":317,"text":11307},{"id":11332,"depth":320,"text":11332},"2026-03-26","mem9 发布后迅速获得大量关注，而上线三周的 whoami 几乎无人问津。不是产品不好，是没人知道我做了这个产品。这次我决定改变策略。",[11353,11356,11359,11362],{"q":11354,"a":11355},"为什么功能更完善的 whoami 没有 mem9 火？","不是产品不好，是没人知道这个产品存在。独立开发者容易犯一个经典错误：闷头做产品，做完了再想怎么让人知道。mem9 在内容分发和社区曝光上做得更好，而 whoami 几乎没有主动的获客动作。产品做出来不等于有人用，分发和内容才是关键。",{"q":11357,"a":11358},"什么是 GEO 优化？和传统 SEO 有什么区别？","GEO（Generative Engine Optimization）是针对 AI 搜索引擎的优化。传统 SEO 优化的是 Google 排名，GEO 优化的是被 ChatGPT、Perplexity 等 AI 搜索引擎引用的概率。具体做法包括添加 llms.txt 文件、结构化数据、清晰的产品描述等，让 AI 在回答用户问题时能引用你的内容。",{"q":11360,"a":11361},"llms.txt 是什么？为什么要添加它？","llms.txt 类似 robots.txt 之于传统爬虫，是一种告诉 AI 搜索引擎'关于这个网站的核心信息'的标准文件。添加后，当用户通过 ChatGPT、Perplexity 等搜索'跨 AI 身份同步'相关问题时，AI 更容易引用 whoamiagent.com 的内容。",{"q":11363,"a":11364},"Build in Public 对独立开发者获客有什么帮助？","通过公开记录产品的开发过程、决策思考和真实反馈，持续输出有价值的内容，吸引同频的读者和潜在用户。读者看了开发故事觉得有共鸣，自然会去试试产品。比起在没有流量的地方等用户上门，不如主动去有人的地方讲你的故事。",{},"\u002Fbuilds\u002Fwhoami\u002F2026-03-26-competitor-wakeup-call",{"title":11243,"description":11351},[11369,11370,11371,11372,11296,10055,11373],"独立开发者获客","竞品分析反思","Build in Public 策略","GEO 优化","产品分发困境","builds\u002Fwhoami\u002F2026-03-26-competitor-wakeup-call","同类产品 mem9 发布后迅速获得大量关注，而上线三周的 whoami 几乎无人问津。问题不在产品本身，而在于没人知道它存在。决定通过 GEO 优化让 AI 搜索引擎找到产品，并用 Build in Public 的方式在 mofanx.com 上持续输出开发故事来积累关注。",[1746,1078],"gy3h-bbfJ2WHi_2LIHvrc5ojOKBKLaP65BV-HvEfSx8",{"id":11379,"title":11380,"body":11381,"date":1719,"description":11539,"draft":329,"extension":330,"faq":11540,"meta":11553,"navigation":345,"path":11117,"project":9823,"readingTime":541,"seo":11554,"seoKeywords":11555,"stem":11563,"summary":11564,"tags":11565,"updated":363,"__hash__":11566},"builds\u002Fbuilds\u002Fmofanx\u002F2026-03-24-content-first-strategy.md","从围绕产品做内容，到围绕内容做产品",{"type":8,"value":11382,"toc":11531},[11383,11386,11389,11400,11403,11406,11409,11415,11421,11424,11428,11431,11442,11447,11450,11454,11457,11471,11477,11480,11506,11509,11512,11515,11518,11525,11528],[18,11384,11385],{"id":11385},"一个让我反思的现象",[14,11387,11388],{},"最近发生了一件事，让我不得不重新审视自己的策略。",[14,11390,11391,11392,11395,11396,11399],{},"我花了大量精力做了一个产品 —— ",[279,11393,2109],{"href":2997,"rel":11394},[283],"。它的核心想法是：",[49,11397,11398],{},"一份身份档案，同步到所有 AI Agent","。我觉得这个需求很真实，自己每天都在用，产品也确实好用。",[14,11401,11402],{},"但上线之后，市场反馈平平。",[14,11404,11405],{},"而另一个同性质的产品 mem9，在我之后发布，却迅速获得了大量关注。",[18,11407,11408],{"id":11408},"问题出在哪里",[14,11410,11411,11412,130],{},"不是产品不好，而是",[49,11413,11414],{},"没人知道你做了这个产品",[14,11416,11417,11418,130],{},"作为独立开发者，我犯了一个经典错误：",[49,11419,11420],{},"先闷头做产品，做完了再想怎么让人知道",[14,11422,11423],{},"这就像在沙漠里开了一家米其林餐厅 —— 菜做得再好，没有路过的人。",[18,11425,11427],{"id":11426},"新策略围绕内容做产品","新策略：围绕内容做产品",[14,11429,11430],{},"反过来想，如果我先有影响力，先有读者和关注者，那么：",[1193,11432,11433,11436,11439],{},[184,11434,11435],{},"做产品之前，可以先验证想法",[184,11437,11438],{},"做产品的过程，本身就是内容",[184,11440,11441],{},"产品上线时，自带第一批用户",[14,11443,11444],{},[49,11445,11446],{},"内容 → 影响力 → 产品 → 反馈 → 更好的内容",[14,11448,11449],{},"这是一个正向飞轮。",[18,11451,11453],{"id":11452},"build-in-public-是桥梁","Build in Public 是桥梁",[14,11455,11456],{},"Build in Public 恰好是连接「内容」和「产品」的桥梁：",[181,11458,11459,11462,11465,11468],{},[184,11460,11461],{},"分享我在做什么 → 积累关注",[184,11463,11464],{},"展示思考过程 → 吸引同频的人",[184,11466,11467],{},"公开遇到的问题 → 获得社区帮助",[184,11469,11470],{},"记录每一步进展 → 倒逼自己思考",[14,11472,11473,11474,130],{},"重点不是产品本身，而是",[49,11475,11476],{},"做产品的过程和思考",[18,11478,11479],{"id":11479},"具体怎么做",[1193,11481,11482,11488,11494,11500],{},[184,11483,11484,11487],{},[49,11485,11486],{},"mofanx.com 作为内容中心"," — 所有思考、教学、创造日志都沉淀在这里",[184,11489,11490,11493],{},[49,11491,11492],{},"公众号做分发"," — 每篇新内容同步到公众号",[184,11495,11496,11499],{},[49,11497,11498],{},"创造日志做连接"," — 用 Build in Public 的方式，把产品开发过程公开",[184,11501,11502,11505],{},[49,11503,11504],{},"教学做深度"," — 用系统化的教学内容建立专业形象",[14,11507,11508],{},"先有内容，先有影响力，产品自然会找到它的用户。",[18,11510,11511],{"id":11511},"心态转变",[14,11513,11514],{},"说实话，这个转变对我来说不容易。",[14,11516,11517],{},"作为工程师，我习惯了「做东西」的满足感。而「写内容」总感觉不如「写代码」来得实在。",[14,11519,11520,11521,11524],{},"但我逐渐意识到：",[49,11522,11523],{},"在 AI 时代，好的想法比好的执行更稀缺","。AI 可以帮你写代码、做设计、跑测试，但它不能替你思考、替你有洞察。",[14,11526,11527],{},"把想法和洞察分享出去，才是独立开发者最大的竞争力。",[14,11529,11530],{},"从今天开始，我要认真做内容了。",{"title":316,"searchDepth":317,"depth":317,"links":11532},[11533,11534,11535,11536,11537,11538],{"id":11385,"depth":320,"text":11385},{"id":11408,"depth":320,"text":11408},{"id":11426,"depth":320,"text":11427},{"id":11452,"depth":320,"text":11453},{"id":11479,"depth":320,"text":11479},{"id":11511,"depth":320,"text":11511},"一次策略转向的思考：先积累影响力再做产品，而不是先做产品再找用户。Build in Public 是连接两者的桥梁。",[11541,11544,11547,11550],{"q":11542,"a":11543},"独立开发者应该先做产品还是先做内容？","建议先做内容。没有影响力的产品就像沙漠里的餐厅——做得再好没人知道。先通过内容积累读者和关注者，做产品时可以提前验证想法、过程本身就是内容素材、上线时自带第一批用户，形成内容→影响力→产品→反馈的正向飞轮。",{"q":11545,"a":11546},"什么是 Build in Public？对独立开发者有什么用？","Build in Public 是公开分享产品开发过程的策略，包括思考、决策、遇到的问题和进展。它是连接'内容'和'产品'的桥梁：分享过程积累关注、展示思考吸引同频的人、公开问题获得社区帮助、记录进展倒逼自己深度思考。重点不是产品本身，而是做产品的过程和洞察。",{"q":11548,"a":11549},"独立开发者做了好产品但没人用怎么办？","这是典型的'先做产品再找用户'的困境。解决方案是策略转向：1）把产品开发过程公开，用 Build in Public 的方式积累关注；2）围绕产品背后的思考写深度内容，建立专业形象；3）用多渠道分发（个人网站+公众号等）扩大触达面；4）让内容先行，让产品跟着影响力自然增长。",{"q":11551,"a":11552},"AI 时代独立开发者最大的竞争力是什么？","是独特的想法和洞察，而不是执行能力。AI 可以帮你写代码、做设计、跑测试，但不能替你思考和产生洞见。把想法和洞察通过内容分享出去，才是 AI 时代独立开发者最大的护城河。好的想法比好的执行更稀缺。",{},{"title":11380,"description":11539},[11556,11557,11558,11559,11560,11561,11562],"独立开发者内容策略","Build in Public","内容驱动产品","个人IP影响力","独立开发冷启动","内容创业飞轮","先做内容还是先做产品","builds\u002Fmofanx\u002F2026-03-24-content-first-strategy","独立开发者先闷头做产品再找用户是经典陷阱，正确路径是先用内容积累影响力，再让产品自带首批用户——内容→影响力→产品→反馈→更好的内容，形成正向飞轮。",[1746,1078],"ay735yzPUTwu25MikGEbmLKjJXktmJz_9PVZQ5cfM0I",{"id":11568,"title":11569,"body":11570,"date":11627,"description":11628,"draft":329,"extension":330,"faq":11629,"meta":11642,"navigation":345,"path":11643,"project":9823,"readingTime":317,"seo":11644,"seoKeywords":11645,"stem":11651,"summary":11652,"tags":11653,"updated":363,"__hash__":11654},"builds\u002Fbuilds\u002Fmofanx\u002F2026-03-20-site-launch.md","从莫烦Python到莫烦无限：为什么我需要一个新站点",{"type":8,"value":11571,"toc":11622},[11572,11576,11585,11588,11595,11599,11602,11605,11609,11612,11615],[18,11573,11575],{"id":11574},"mofanpy-完成了它的使命","mofanpy 完成了它的使命",[14,11577,11578,11579,11584],{},"我有一个叫 ",[279,11580,11583],{"href":11581,"rel":11582},"https:\u002F\u002Fmofanpy.com",[283],"莫烦Python"," 的网站。是我读书时候开始做的。那时候 AI 和 Python 刚火起来，我把自己学到的东西整理成教程，分享给有需要的人。这个网站陪了我很多年，也帮到了不少朋友。",[14,11586,11587],{},"但工作快十年了，我的关注点早已不只是 Python 教学。这些年在工作中积累了大量关于 AI 行业发展、产品设计、学习方法论、教育思考的沉淀，这些内容放在一个叫\"莫烦Python\"的站点下，怎么看都不太对。",[14,11589,11590,11591,11594],{},"我需要一个新的域名，一个新的空间。",[79,11592,11593],{},"mofan + x","——x 是未知，是可能性，是交叉和跨界。这更符合我现在的状态。",[18,11596,11598],{"id":11597},"ai-coding-让重建变得可行","AI Coding 让重建变得可行",[14,11600,11601],{},"mofanpy 的技术架构已经很古老了，当年的前端方案放到今天看，改造成本比重建还高。",[14,11603,11604],{},"好在现在有了 AI Coding，建站这件事变得容易太多。我可以完全从零开始，用现代技术栈重新构建整个站点的逻辑和架构，而不是在旧框架上缝缝补补。这次选了 Nuxt 4 + @nuxt\u002Fcontent v3 + TailwindCSS v4 的组合，写作体验和内容管理都比以前好了一个量级。",[18,11606,11608],{"id":11607},"公众号之外多一个触达你的节点","公众号之外，多一个触达你的节点",[14,11610,11611],{},"其实在建站之前，我从 2025 年底开始是在公众号上尝试分享这些工作以来的感悟和沉淀。但写了一段时间后发现，公众号的分发机制对新账号实在太不友好了。内容写得再好，没有初始流量池，就很难被看到。",[14,11613,11614],{},"我想要一个更符合自己内容组织逻辑的平台。文章之间可以互相关联，系列教程可以按结构呈现，读者可以按主题自由探索，而不是被算法决定看到什么。",[14,11616,11617,11618,11621],{},"所以 ",[279,11619,11318],{"href":11316,"rel":11620},[283]," 上线了。它不是要替代公众号，而是在公众号之外，多一个与你们触达的节点。",{"title":316,"searchDepth":317,"depth":317,"links":11623},[11624,11625,11626],{"id":11574,"depth":320,"text":11575},{"id":11597,"depth":320,"text":11598},{"id":11607,"depth":320,"text":11608},"2026-03-20","mofanpy 承载了读书时代的分享，但工作近十年后，我需要一个新空间来安放 AI 时代的思考与沉淀。",[11630,11633,11636,11639],{"q":11631,"a":11632},"mofanx.com 和莫烦Python是什么关系？","莫烦Python（mofanpy.com）是作者读书时期创建的 AI 和 Python 教学网站。工作近十年后，关注点已远超 Python 教学，涵盖 AI 行业洞察、产品设计、学习方法论、教育思考等，因此创建了 mofanx.com 作为新的内容承载空间。",{"q":11634,"a":11635},"为什么不在莫烦Python的基础上改造而是重建？","mofanpy 的技术架构已经很古老，改造成本比重建还高。现在有了 AI Coding，从零建站变得容易很多，可以用 Nuxt 4 + @nuxt\u002Fcontent v3 + TailwindCSS v4 等现代技术栈重新构建，写作体验和内容管理比以前好了一个量级。",{"q":11637,"a":11638},"mofanx.com 会替代公众号吗？","不会替代，而是补充。公众号的分发机制对新账号不友好，内容难以被看到。mofanx.com 提供了一个自主掌控的平台：文章可以互相关联、系列教程按结构呈现、读者按主题自由探索，而不是被算法决定看到什么。",{"q":11640,"a":11641},"mofanx 中的 x 代表什么？","x 代表未知、可能性、交叉和跨界。作者的内容已经横跨 AI 洞察、产品创造、教育思考、学习方法论等多个领域，不再局限于某一个技术方向，x 更符合这种跨领域探索的状态。",{},"\u002Fbuilds\u002Fmofanx\u002F2026-03-20-site-launch",{"title":11569,"description":11628},[11583,9823,11646,11647,11648,11649,11650],"个人网站搭建","AI Coding 建站","独立博客","Nuxt 4 内容站","个人IP站点","builds\u002Fmofanx\u002F2026-03-20-site-launch","莫烦Python已无法承载工作十年后的思考沉淀，借助 AI Coding 从零重建新站 mofanx.com，在公众号之外多一个自主掌控内容组织的触达节点。",[1078,361],"PTov2bIT4YKSNJbAIivVVJAcOulPQuB5NBcArjxQlLw",{"id":11656,"title":11657,"body":11658,"date":1929,"description":11755,"draft":329,"extension":330,"faq":11756,"meta":11769,"navigation":345,"path":11770,"project":7528,"readingTime":535,"seo":11771,"seoKeywords":11772,"stem":11776,"summary":11777,"tags":11778,"updated":363,"__hash__":11779},"builds\u002Fbuilds\u002Fmetool\u002F2026-03-19-seo-geo-breakthrough.md","做了大半年流量还是很少，我决定认真做 SEO",{"type":8,"value":11659,"toc":11749},[11660,11663,11666,11669,11672,11675,11678,11684,11690,11696,11698,11701,11710,11713,11716,11730,11734,11740,11743,11746],[18,11661,11662],{"id":11662},"流量困局",[14,11664,11665],{},"metool 做了大半年，工具已经有几十个了，覆盖了图片、视频、文档、3D、开发者工具、游戏、AI Skills 等品类。",[14,11667,11668],{},"但流量一直上不去。",[14,11670,11671],{},"Google Analytics 的数据很诚实：每天的访问量很少，大部分还是自己测试产生的。工具做得再多，没人知道它存在，就等于没做。",[18,11673,11674],{"id":11674},"数据驱动的优化",[14,11676,11677],{},"这次不是凭感觉优化了。我从 Google Analytics 的数据出发，让 AI 协助分析和执行。",[14,11679,11680,11683],{},[49,11681,11682],{},"默认语言切英文","：GA 数据显示，英文搜索的流量潜力远大于中文。工具站的使用场景是全球通用的——图片压缩、格式转换这些需求不分国界。把默认语言切成英文，能覆盖更多国际用户。",[14,11685,11686,11689],{},[49,11687,11688],{},"全站 FAQ 结构化数据","：给每个工具页都加了 FAQ Schema。搜索引擎会在结果中直接展示问答内容，占据更大的面积，提升点击率。",[14,11691,11692,11695],{},[49,11693,11694],{},"HowTo 结构化数据","：把每个工具的使用步骤结构化，让搜索引擎理解\"这个工具怎么用\"。当用户搜索\"how to compress video online\"时，搜索结果里就能直接展示操作步骤。",[18,11697,11284],{"id":11283},[14,11699,11700],{},"传统 SEO 优化的是 Google 排名，但 2026 年了，越来越多人通过 ChatGPT、Perplexity 这些 AI 搜索引擎找信息。",[14,11702,11703,11704,4208,11706,11709],{},"我加了 ",[49,11705,11296],{},[49,11707,11708],{},"llms-full.txt","——类似 robots.txt 之于传统爬虫，它告诉 AI 搜索引擎：\"关于 metool.online，这些是最值得引用的信息。\"",[14,11711,11712],{},"文件里列出了所有工具的名称、功能描述和 URL。当用户问 AI\"有什么在线工具可以压缩图片\"的时候，AI 就有可能引用 metool。",[14,11714,11715],{},"还做了一些技术层面的统一：",[181,11717,11718,11724],{},[184,11719,11720,11723],{},[49,11721,11722],{},"Trailing slash 处理"," — 统一 URL 格式，避免搜索引擎把带斜杠和不带斜杠的 URL 当作两个页面",[184,11725,11726,11729],{},[49,11727,11728],{},"robots.txt 优化"," — 允许 AI 爬虫（GPTBot、Anthropic 等）访问",[18,11731,11733],{"id":11732},"从做工具到做增长","从\"做工具\"到\"做增长\"",[14,11735,11736,11737],{},"这一轮优化让我意识到一件事：",[49,11738,11739],{},"做产品和做增长是两件完全不同的事。",[14,11741,11742],{},"前面大半年，我一直在\"做工具\"——有需求就做，做完就上线。但\"做增长\"需要的是另一套思维：数据分析、搜索优化、内容策略。",[14,11744,11745],{},"metool 现在有了几十个工具，架构也足够成熟。下一步不是继续加工具，而是让已有的工具被更多人发现和使用。",[14,11747,11748],{},"这个故事还在继续。",{"title":316,"searchDepth":317,"depth":317,"links":11750},[11751,11752,11753,11754],{"id":11662,"depth":320,"text":11662},{"id":11674,"depth":320,"text":11674},{"id":11283,"depth":320,"text":11284},{"id":11732,"depth":320,"text":11733},"metool 做了大半年，工具几十个了，但流量一直上不去。借着 AI 能力提升，用 Google Analytics 数据反馈 + AI 协助，系统性地做了一轮 SEO 和 GEO 优化。",[11757,11760,11763,11766],{"q":11758,"a":11759},"为什么默认语言要从中文切成英文？","Google Analytics 数据显示，英文搜索带来的流量潜力远大于中文。工具站的使用场景是全球通用的（图片压缩、格式转换等），英文作为默认语言能覆盖更多国际用户，中文用户可以手动切换。",{"q":11761,"a":11762},"什么是 GEO 优化？","GEO（Generative Engine Optimization）是针对 AI 搜索引擎的优化。现在越来越多人通过 ChatGPT、Perplexity 等 AI 搜索信息，如果你的网站不能被 AI 引用，就等于失去了新的流量入口。GEO 包括添加 llms.txt、结构化数据、清晰的产品描述等。",{"q":11764,"a":11765},"llms.txt 是什么？","类似 robots.txt 之于传统爬虫，llms.txt 告诉 AI 搜索引擎'关于这个网站的核心信息'。metool 的 llms.txt 列出了所有工具的名称、功能描述和 URL，让 AI 在回答用户'有什么在线工具可以...'类型的问题时能引用 metool。",{"q":11767,"a":11768},"FAQ 和 HowTo 结构化数据有什么作用？","FAQ Schema 让搜索引擎在搜索结果中直接展示常见问题和回答，占据更大的结果面积。HowTo Schema 把工具的使用步骤结构化，让搜索引擎理解每个工具的操作流程。两者都能提升搜索结果的点击率和可见性。",{},"\u002Fbuilds\u002Fmetool\u002F2026-03-19-seo-geo-breakthrough",{"title":11657,"description":11755},[11773,11372,11296,11774,11694,11775,10055],"工具站 SEO 优化","FAQ Schema 结构化数据","Google Analytics 数据驱动","builds\u002Fmetool\u002F2026-03-19-seo-geo-breakthrough","metool 做了大半年流量依然很少，工具几十个但没人知道。决定借助 AI 能力，通过 Google Analytics 数据反馈系统性做 SEO\u002FGEO 优化：默认语言切英文面向国际用户、全站加 FAQ 和 HowTo 结构化数据、添加 llms.txt 让 AI 搜索引擎也能引用、统一 trailing slash 和 robots.txt。",[1078,361],"HVOKaXEceQ2DIID9meIXaR9TvaR2ws7zvMyDVcU90pg",{"id":11781,"title":11782,"body":11783,"date":2167,"description":12012,"draft":329,"extension":330,"faq":12013,"meta":12026,"navigation":345,"path":12027,"project":7528,"readingTime":541,"seo":12028,"seoKeywords":12029,"stem":12036,"summary":12037,"tags":12038,"updated":363,"__hash__":12039},"builds\u002Fbuilds\u002Fmetool\u002F2026-03-12-dev-tools-and-ai-skills.md","三天上线十几个开发者工具，还做了 AI Skills 板块",{"type":8,"value":11784,"toc":12006},[11785,11789,11792,11799,11806,11810,11813,11823,11826,11831,11877,11882,11920,11925,11936,11942,11946,11949,11990,11994,12000,12003],[18,11786,11788],{"id":11787},"agent-skill-的摸索","Agent Skill 的摸索",[14,11790,11791],{},"2026 年初，我花了大量时间研究 AI Agent Skill 模式——让 AI 助手通过安装技能来扩展能力。",[14,11793,11794,11795,11798],{},"在这个过程中积累了不少经验：怎么设计 Skill 的接口、怎么处理跨平台兼容性、怎么让非技术用户也能安装使用。这些经验后来也应用到了 ",[279,11796,2188],{"href":2997,"rel":11797,"target":2108},[283]," 等项目中。",[14,11800,11801,11802,11805],{},"既然有了经验，不如在 metool 上做一个 ",[49,11803,11804],{},"AI Skills 展示板块","，把我做的各种 Skill 都放上来。",[18,11807,11809],{"id":11808},"三天十几个新工具","三天，十几个新工具",[14,11811,11812],{},"3 月 12 日到 3 月 18 日，可能是 metool 开发密度最高的一段时间。",[14,11814,11815,11818,11819,11822],{},[49,11816,11817],{},"先做了统一设计系统","。之前每个工具页面各写各的，风格不统一，重复代码多。这次抽象出了 ",[79,11820,11821],{},"ToolPageLayout"," 组件——新工具只需要传入标题和核心内容，布局、动画、SEO 信息、相关工具推荐都自动处理。",[14,11824,11825],{},"有了统一架构，加工具的速度就上来了：",[14,11827,11828],{},[49,11829,11830],{},"开发者工具：",[181,11832,11833,11840,11847,11855,11862,11869],{},[184,11834,11835],{},[279,11836,11839],{"href":11837,"rel":11838,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdev\u002Fbase64\u002F",[283],"Base64 编解码",[184,11841,11842],{},[279,11843,11846],{"href":11844,"rel":11845,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdev\u002FregexTest\u002F",[283],"正则表达式测试器",[184,11848,11849,11854],{},[279,11850,11853],{"href":11851,"rel":11852,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdev\u002FhashGenerator\u002F",[283],"哈希生成器","（MD5、SHA-1、SHA-256 等）",[184,11856,11857],{},[279,11858,11861],{"href":11859,"rel":11860,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdev\u002FpasswordGenerator\u002F",[283],"随机密码生成器",[184,11863,11864],{},[279,11865,11868],{"href":11866,"rel":11867,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdev\u002FtextDiff\u002F",[283],"文本差异对比",[184,11870,11871,11876],{},[279,11872,11875],{"href":11873,"rel":11874,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdev\u002FdataFormatConvert\u002F",[283],"数据格式转换","（JSON\u002FYAML\u002FTOML 互转）",[14,11878,11879],{},[49,11880,11881],{},"文档和媒体工具：",[181,11883,11884,11892,11899,11905,11913],{},[184,11885,11886,11891],{},[279,11887,11890],{"href":11888,"rel":11889,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdocs\u002FpdfTools\u002F",[283],"PDF 工具","（预览、拆分）",[184,11893,11894],{},[279,11895,11898],{"href":11896,"rel":11897,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fimages\u002Fwatermark\u002F",[283],"图片水印",[184,11900,11901],{},[279,11902,10331],{"href":11903,"rel":11904,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002F3d\u002FmodelConvert\u002F",[283],[184,11906,11907,11912],{},[279,11908,11911],{"href":11909,"rel":11910,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002F3d\u002FtextTo3d\u002F",[283],"Text to 3D","（文字生成 3D 模型）",[184,11914,11915],{},[279,11916,11919],{"href":11917,"rel":11918,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdocs\u002FweixinToMarkdown\u002F",[283],"微信文章反向转 Markdown",[14,11921,11922],{},[49,11923,11924],{},"基础组件：",[181,11926,11927,11930,11933],{},[184,11928,11929],{},"FAQ 组件（每个工具页自动展示常见问题）",[184,11931,11932],{},"Toast 通知系统",[184,11934,11935],{},"vue-json-pretty 替换自制的 JSON 查看器",[14,11937,11938],{},[55,11939],{"alt":11940,"src":11941},"AI Skills 板块","\u002Fb\u002Fmetool\u002Fskills.png",[18,11943,11945],{"id":11944},"ai-skills-板块上线","AI Skills 板块上线",[14,11947,11948],{},"同时上线了 AI Skills 展示板块，每个 Skill 有独立的介绍页面：",[181,11950,11951,11960,11970,11980],{},[184,11952,11953,11959],{},[49,11954,11955],{},[279,11956,2188],{"href":11957,"rel":11958,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fskills\u002Fwhoami\u002F",[283]," — 跨 AI 身份同步",[184,11961,11962,11969],{},[49,11963,11964],{},[279,11965,11968],{"href":11966,"rel":11967,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fskills\u002Fzhongjie\u002F",[283],"中介哥"," — AI 买房参谋",[184,11971,11972,11979],{},[49,11973,11974],{},[279,11975,11978],{"href":11976,"rel":11977,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fskills\u002Fidea2mvp\u002F",[283],"idea2mvp"," — 从创意到产品",[184,11981,11982,11989],{},[49,11983,11984],{},[279,11985,11988],{"href":11986,"rel":11987,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fskills\u002FgaImprove\u002F",[283],"GA 优化"," — Google Analytics 数据驱动优化",[18,11991,11993],{"id":11992},"ai-coding-改变了什么","AI Coding 改变了什么",[14,11995,11996,11997,130],{},"这三天能做这么多，核心原因是 ",[49,11998,11999],{},"AI Coding",[14,12001,12002],{},"每个工具的开发周期从\"半天\"缩短到了\"一两个小时\"。我负责定需求和验收，AI 负责写代码。统一的架构加上 AI 的速度，工具的边际成本几乎为零。",[14,12004,12005],{},"这也是我在探索 Agent Skill 过程中最深的体会：AI 不只是能帮你写代码，它改变的是你做事的规模和速度。",{"title":316,"searchDepth":317,"depth":317,"links":12007},[12008,12009,12010,12011],{"id":11787,"depth":320,"text":11788},{"id":11808,"depth":320,"text":11809},{"id":11944,"depth":320,"text":11945},{"id":11992,"depth":320,"text":11993},"大量摸索 Agent Skill 模式积累了经验，借 AI Coding 的速度，三天内密集上线了十几个开发者工具和 AI Skills 展示板块。",[12014,12017,12020,12023],{"q":12015,"a":12016},"三天内是怎么做到上线这么多工具的？","两个关键因素：一是 metool 的架构已经很成熟，新增工具只需写核心逻辑；二是 AI Coding 的效率极高，每个工具的开发周期从'半天'缩短到了'一两个小时'。统一的 ToolPageLayout 组件让页面布局、SEO、FAQ 都是自动化的。",{"q":12018,"a":12019},"这次上线了哪些开发者工具？","Base64 编解码、正则表达式测试器、哈希生成器（MD5\u002FSHA 等）、随机密码生成器、文本差异对比、数据格式转换（JSON\u002FYAML\u002FTOML 互转）。此外还有 PDF 工具、图片水印、3D 模型格式转换和 Text to 3D。",{"q":12021,"a":12022},"AI Skills 板块是什么？","展示我开发的 AI Agent Skills 的专区，包括 whoami（跨 AI 身份同步）、中介哥（买房参谋）、idea2mvp（创意到产品）、GA 优化（Google Analytics 数据驱动）等。每个 Skill 有独立的介绍页面，包含功能说明、安装方式和使用演示。",{"q":12024,"a":12025},"统一设计系统（ToolPageLayout）解决了什么问题？","之前每个工具页面的布局、标题区域、描述文案、SEO 信息都是各写各的，风格不统一且重复代码多。ToolPageLayout 把这些全部抽象成一个统一组件，新工具只需传入标题和内容，布局、动画、SEO、相关工具推荐都自动处理。",{},"\u002Fbuilds\u002Fmetool\u002F2026-03-12-dev-tools-and-ai-skills",{"title":11782,"description":12012},[12030,12031,1434,12032,11839,12033,12034,12035],"AI Coding 开发效率","开发者在线工具","AI Skills 展示","正则表达式测试","在线密码生成器","统一设计系统","builds\u002Fmetool\u002F2026-03-12-dev-tools-and-ai-skills","大量摸索 Agent Skill 模式后积累了丰富经验，借助 AI Coding 的效率，三天内在 metool 上密集上线了十几个开发者工具（Base64、正则测试、哈希生成、密码生成、文本对比等），同时做了统一的工具页面设计系统、FAQ 组件、Toast 通知，还上线了 AI Skills 展示板块。",[1078,361],"hihzr5kpiZrcsafARUi4Ir4QvNVm8xwB2k6CfqqQfew",{"id":12041,"title":12042,"body":12043,"date":2167,"description":12100,"draft":329,"extension":330,"faq":12101,"meta":12114,"navigation":345,"path":12115,"project":2188,"readingTime":317,"seo":12116,"seoKeywords":12117,"stem":12125,"summary":12126,"tags":12127,"updated":363,"__hash__":12128},"builds\u002Fbuilds\u002Fwhoami\u002F2026-03-12-open-to-everyone.md","不只是开发者能用，要让所有人都能登录",{"type":8,"value":12044,"toc":12096},[12045,12048,12051,12054,12057,12060,12063,12074,12080,12086],[18,12046,12047],{"id":12047},"注册页跳出率偏高",[14,12049,12050],{},"上线一周多，我开始关注后台数据。有一个现象让我在意：注册页的跳出率偏高。",[14,12052,12053],{},"分析原因，最初只支持 GitHub 和 Google 登录。GitHub 对开发者来说是标配，但 whoami 想服务的是所有 AI 重度用户：很多人根本没有 GitHub 账号。在国内，Google 登录也不是人人都方便。",[14,12055,12056],{},"另一个问题更隐蔽：搜索引擎根本索引不到产品页面。之前在 meta 里误配了爬虫拦截。产品做出来了，但在搜索引擎里几乎不存在。",[18,12058,12059],{"id":12059},"把门开得更大一些",[14,12061,12062],{},"我期望这次升级能做到：",[181,12064,12065,12068,12071],{},[184,12066,12067],{},"更多登录方式，覆盖非开发者用户",[184,12069,12070],{},"后端安全加固，能放心开放给公众使用",[184,12072,12073],{},"让搜索引擎正常收录产品页面",[14,12075,12076,12079],{},[49,12077,12078],{},"登录扩展","：新增了 Microsoft 登录方式，加上账号关联功能——同一个人用不同方式登录，可以绑定到同一个账号。",[14,12081,12082,12085],{},[49,12083,12084],{},"安全加固","：加了 API 速率限制，认证改用 HttpOnly Cookie，定期清理过期令牌。这些是产品从\"能用\"到\"可以放心让公众使用\"的必要步骤。",[14,12087,12088,12091,12092,12095],{},[49,12089,12090],{},"搜索引擎修复","：补全了 meta tags、OpenGraph 标签、JSON-LD 结构化数据，修复了爬虫拦截的误配。搜索引擎终于能找到 ",[279,12093,2109],{"href":2997,"rel":12094,"target":2108},[283]," 了。",{"title":316,"searchDepth":317,"depth":317,"links":12097},[12098,12099],{"id":12047,"depth":320,"text":12047},{"id":12059,"depth":320,"text":12059},"注册页跳出率偏高，分析发现不是功能问题而是入口问题：只有 GitHub 和 Google 登录，把非开发者用户挡在了门外。",[12102,12105,12108,12111],{"q":12103,"a":12104},"为什么 whoami 最初只支持 GitHub 和 Google 登录？","因为开发阶段作者本人是开发者，默认以开发者视角选择了最熟悉的两种登录方式。但 whoami 想服务所有 AI 重度用户，很多人没有 GitHub 账号，国内用户用 Google 也不方便，导致注册页跳出率偏高。",{"q":12106,"a":12107},"扩展登录方式后效果如何？","新增 Microsoft、Apple、Twitter 三种 OAuth 登录后，注册页跳出率有所下降。同时加了账号关联功能，同一个人用不同方式登录可以绑定到同一个账号，避免重复注册的困扰。",{"q":12109,"a":12110},"whoami 做了哪些安全加固？","加了 API 速率限制防止滥用，认证从 Bearer Token 改用 HttpOnly Cookie 防止 XSS 攻击，定期清理过期令牌。这些是产品从'能用'到'可以放心让公众使用'的必要步骤。",{"q":12112,"a":12113},"搜索引擎为什么之前收录不到 whoamiagent.com？","前端 meta 里误配了爬虫拦截（noindex），导致搜索引擎无法索引。修复后补全了 meta tags、OpenGraph 标签和 JSON-LD 结构化数据，搜索引擎终于能正常找到产品页面。",{},"\u002Fbuilds\u002Fwhoami\u002F2026-03-12-open-to-everyone",{"title":12042,"description":12100},[12118,12119,12120,12121,12122,12123,12124],"多平台 OAuth 登录","用户注册跳出率","产品安全加固","搜索引擎收录","非技术用户","AI 产品用户体验","独立开发产品迭代","builds\u002Fwhoami\u002F2026-03-12-open-to-everyone","whoami 注册页跳出率偏高，根源是只支持 GitHub 和 Google 登录，把非开发者用户挡在门外。扩展 Microsoft、Apple、Twitter 登录后跳出率下降，同时完成安全加固和搜索引擎收录修复。",[1746,1078],"FGVKN8bjML0k9GV41luR5OHHVis9nWKBcpBDSVssEP4",{"id":12130,"title":12131,"body":12132,"date":3043,"description":12198,"draft":329,"extension":330,"faq":12199,"meta":12212,"navigation":345,"path":12213,"project":2188,"readingTime":317,"seo":12214,"seoKeywords":12215,"stem":12223,"summary":12224,"tags":12225,"updated":363,"__hash__":12226},"builds\u002Fbuilds\u002Fwhoami\u002F2026-03-05-simplify-onboarding.md","用户说\"太复杂\"，我把注册流程砍掉了一半",{"type":8,"value":12133,"toc":12193},[12134,12137,12140,12143,12146,12149,12152,12155,12166,12173,12180,12184,12187,12190],[18,12135,12136],{"id":12136},"朋友们的第一反馈",[14,12138,12139],{},"产品上线两天后，我让几个朋友试用。",[14,12141,12142],{},"最多的反馈不是功能问题，而是：\"注册完了然后呢？API Key 是什么？我要把它粘贴到哪里？\"",[14,12144,12145],{},"第一版的流程是：注册 → 打开 Dashboard → 复制 API Key → 粘贴给 AI → AI 手动写入配置文件。对开发者来说这很正常，但对普通用户来说，\"API Key\"三个字就已经够劝退了。",[14,12147,12148],{},"whoami 的目标用户是所有同时使用多个 AI 的人，不只是程序员。如果注册流程把人吓跑了，产品做得再好也没用。",[18,12150,12151],{"id":12151},"砍掉一半流程",[14,12153,12154],{},"我想达到的效果很简单：",[181,12156,12157,12160,12163],{},[184,12158,12159],{},"用户全程不需要接触\"API Key\"这个概念",[184,12161,12162],{},"配置过程让 AI 自动完成，用户只需点一下",[184,12164,12165],{},"首页要让人一眼看懂产品是干什么的",[14,12167,12168,12169,12172],{},"改成了",[49,12170,12171],{},"一次性安全链接","方案：Dashboard 生成一个临时链接，用户把链接发给 AI，AI 自己下载配置。链接用完即失效，安全性反而更高。用户全程不需要知道 API Key 是什么。",[14,12174,12175,12176,12179],{},"同时在首页加了一段",[49,12177,12178],{},"聊天演示动画","——用模拟对话展示 whoami 的使用流程。比写十段文字说明都管用。",[18,12181,12183],{"id":12182},"从需要解释到自己就会","从\"需要解释\"到\"自己就会\"",[14,12185,12186],{},"改完之后，再让同一批朋友试，注册到使用的流程从\"需要解释\"变成了\"自己就会\"。",[14,12188,12189],{},"但用户量依然很小——因为知道这个产品的人本来就少。",[14,12191,12192],{},"如果用户觉得难用，不是用户的问题，是产品的问题。但反过来，产品好用也不等于有人用。这两件事，我在后面的经历中体会得越来越深。",{"title":316,"searchDepth":317,"depth":317,"links":12194},[12195,12196,12197],{"id":12136,"depth":320,"text":12136},{"id":12151,"depth":320,"text":12151},{"id":12182,"depth":320,"text":12183},"朋友试用后最多的反馈不是功能问题，而是'API Key 是什么？'。我意识到注册流程在劝退用户，于是用一次性链接替代了手动配置。",[12200,12203,12206,12209],{"q":12201,"a":12202},"whoami 最初的注册流程有什么问题？","第一版流程是：注册 → Dashboard 复制 API Key → 粘贴给 AI → AI 手动写入配置文件。对开发者来说很正常，但普通用户连'API Key'是什么都不理解，更不知道该粘贴到哪里。注册流程本身就在劝退目标用户。",{"q":12204,"a":12205},"一次性安全链接是怎么工作的？","用户在 Dashboard 点击生成一个临时链接，把链接发给 AI 助手，AI 自动下载配置并保存。链接用完即失效，用户全程不需要理解 API Key、不需要复制粘贴密钥，安全性反而比手动配置更高。",{"q":12207,"a":12208},"首页的聊天演示动画有什么作用？","用一段模拟对话直观展示 whoami 的使用场景和效果，让访客一眼看懂产品是干什么的。比起文字说明，动画演示的转化效果好得多——show don't tell。",{"q":12210,"a":12211},"简化注册流程后效果如何？","同一批朋友再次试用，注册到使用的体验从'需要解释'变成了'自己就会'。但用户量依然很小，因为知道这个产品的人本来就少——产品体验是一回事，让人知道你存在是另一回事。",{},"\u002Fbuilds\u002Fwhoami\u002F2026-03-05-simplify-onboarding",{"title":12131,"description":12198},[12216,12217,12218,12219,12220,12221,12222],"用户体验优化","注册流程简化","API Key 劝退","产品上手门槛","独立开发用户反馈","一次性链接配置","AI 工具易用性","builds\u002Fwhoami\u002F2026-03-05-simplify-onboarding","whoami 上线后朋友试用的第一反馈是'API Key 是什么'，注册流程在劝退非技术用户。用一次性安全链接替代手动配置后，用户全程不需要接触技术概念，注册到使用从'需要解释'变成了'自己就会'。",[1746,1078],"9Z62aARrxttLnq_DODSVInV8iCxOtuai4M_Bf8i1gPI",{"id":12228,"title":12229,"body":12230,"date":12327,"description":12328,"draft":329,"extension":330,"faq":12329,"meta":12342,"navigation":345,"path":12343,"project":2188,"readingTime":535,"seo":12344,"seoKeywords":12345,"stem":12353,"summary":12354,"tags":12355,"updated":363,"__hash__":12356},"builds\u002Fbuilds\u002Fwhoami\u002F2026-03-03-why-i-built-whoami.md","每次换个 AI 就要重新自我介绍，我受够了",{"type":8,"value":12231,"toc":12322},[12232,12236,12239,12242,12245,12251,12254,12260,12264,12267,12270,12273,12279,12282,12293,12300,12304,12307,12317],[18,12233,12235],{"id":12234},"三个-ai三个平行世界","三个 AI，三个平行世界",[14,12237,12238],{},"我每天的工作状态是这样的：写代码用 Cursor，思考问题问 Claude，搜资料用 ChatGPT。",[14,12240,12241],{},"三个 AI，三个平行世界。",[14,12243,12244],{},"Cursor 知道我喜欢用 Python、偏好简洁代码风格，但 Claude 不知道。Claude 记住了我在做一个教育类产品，但 ChatGPT 不知道。每次打开一个新对话，我都要把自己重新介绍一遍：\"我叫莫烦，做独立开发，擅长 Python 和机器学习，现在在做……\"",[14,12246,12247],{},[55,12248],{"alt":12249,"src":12250},"每个 AI 都是一座孤岛，互相不知道你是谁","\u002Fa\u002Fwhoami-skill\u002Fisolated-ai.png",[14,12252,12253],{},"我搜了一圈，做 AI 记忆的产品不少，但它们解决的都是\"AI 不记得我们聊了什么\"——存对话历史、项目上下文。",[14,12255,12256,12257],{},"没有人在解决一个更基础的问题：",[49,12258,12259],{},"AI 根本不知道我是谁。",[18,12261,12263],{"id":12262},"不是对话记忆是身份认知","不是对话记忆，是身份认知",[14,12265,12266],{},"所以我决定自己做。",[14,12268,12269],{},"思路很简单：一份身份档案，Markdown 格式，云端存储。不管你用哪个 AI，开对话的那一刻它就已经了解你了。你在聊天中提到新信息，AI 自动同步回去。",[14,12271,12272],{},"不是对话记忆，是身份认知。",[14,12274,12275],{},[55,12276],{"alt":12277,"src":12278},"一份档案，所有 AI 共享","\u002Fa\u002Fwhoami-skill\u002Fsync-profile.png",[14,12280,12281],{},"我期望它能做到：",[181,12283,12284,12287,12290],{},[184,12285,12286],{},"一行命令安装，注册即用",[184,12288,12289],{},"所有 AI 工具共享同一份档案",[184,12291,12292],{},"用户在任意 AI 中提到新信息，自动同步到云端，其他 AI 也能看到",[14,12294,12295,12296,12299],{},"产品取名 ",[279,12297,2188],{"href":2997,"rel":12298,"target":2108},[283],"：Linux 用户都熟悉这个命令，\"我是谁\"。",[18,12301,12303],{"id":12302},"一天从零到上线","一天，从零到上线",[14,12305,12306],{},"3 月 3 日，一天之内从零到上线。AI Coding 的速度确实吓人：一天提交了 15 个 commit，后端、前端、Skill 脚本、双语文档、Logo 全部到位。",[14,12308,12309,12310,12313,12314],{},"官网 ",[279,12311,2109],{"href":2997,"rel":12312,"target":2108},[283]," 当天上线。代码完全开源：",[279,12315,2142],{"href":2140,"rel":12316,"target":2108},[283],[14,12318,12319],{},[55,12320],{"alt":12321,"src":3008},"whoami 产品首页和使用流程",{"title":316,"searchDepth":317,"depth":317,"links":12323},[12324,12325,12326],{"id":12234,"depth":320,"text":12235},{"id":12262,"depth":320,"text":12263},{"id":12302,"depth":320,"text":12303},"2026-03-03","三个 AI 三个平行世界，没人记得我是谁。市面上都在解决'AI 不记得聊了什么'，没人解决'AI 不知道我是谁'。所以我自己做了一个。",[12330,12333,12336,12339],{"q":12331,"a":12332},"whoami 和其他 AI 记忆产品有什么区别？","市面上的 AI 记忆产品主要解决的是'AI 不记得做了什么'——存对话历史和项目上下文。whoami 解决的是更基础的问题：'AI 不知道我是谁'。它存的是你的身份档案（名字、技能、偏好、工作方式），让每个 AI 开对话的那一刻就已经了解你，不需要重复自我介绍。",{"q":12334,"a":12335},"whoami 是怎么做到一天之内从零到上线的？","借助 AI Coding 的效率，一天内完成了 FastAPI 后端（OAuth 登录、API Key 管理、Profile 读写）、Nuxt 4 前端（Landing Page、Dashboard）、Python Skill 脚本、中英文双语文档、Logo 和 SEO 配置，共提交 15 个 commit。AI Coding 让 MVP 不再是瓶颈。",{"q":12337,"a":12338},"whoami 的身份档案存储在哪里，安全吗？","身份档案以 Markdown 格式存储在云端，通过 API Key 鉴权访问。用户拥有完全的控制权，可以随时在 Dashboard 查看、编辑或删除。代码完全开源在 GitHub 上。",{"q":12340,"a":12341},"whoami 支持哪些 AI 工具？","支持所有兼容 Agent Skill 机制的 AI 工具，包括 Cursor、Claude、Windsurf、ChatGPT 等主流平台。安装只需一行命令：npx skills add MorvanZhou\u002Fwhoami。",{},"\u002Fbuilds\u002Fwhoami\u002F2026-03-03-why-i-built-whoami",{"title":12229,"description":12328},[12346,12347,12348,12349,12350,12351,12352],"AI 身份同步","whoami agent","跨 AI 记忆","AI 不认识你","AI Agent 身份档案","独立开发 MVP","AI Coding 一天上线","builds\u002Fwhoami\u002F2026-03-03-why-i-built-whoami","每天在 Cursor、Claude、ChatGPT 之间切换，每次都要重新自我介绍。市面上的 AI Memory 产品都在存对话历史，没人解决'AI 不知道我是谁'的问题。whoami 用一份云端身份档案让所有 AI 共享你的身份认知，一天内从零到上线。",[1078,361],"UzTjjE7xl19jyX9wfpes6zBHQoMl0BtWCP2LzMtLJaU",{"id":12358,"title":12359,"body":12360,"date":3621,"description":12512,"draft":329,"extension":330,"faq":12513,"meta":12526,"navigation":345,"path":12527,"project":7528,"readingTime":535,"seo":12528,"seoKeywords":12529,"stem":12537,"summary":12538,"tags":12539,"updated":363,"__hash__":12540},"builds\u002Fbuilds\u002Fmetool\u002F2026-02-10-content-creation-tools.md","用 AI 写文章，一键转成公众号和小红书格式",{"type":8,"value":12361,"toc":12506},[12362,12366,12369,12375,12378,12381,12384,12387,12393,12402,12422,12428,12436,12450,12453,12456,12482,12486,12489,12503],[18,12363,12365],{"id":12364},"ai-写作的最后一公里","AI 写作的最后一公里",[14,12367,12368],{},"2026 年初，AI 的写作能力又提升了一大截。我开始认真写公众号，用 AI 辅助产出 Markdown 格式的文章。",[14,12370,12371,12372,130],{},"写作效率提上来了，但有一个环节特别痛苦：",[49,12373,12374],{},"从 Markdown 到公众号发布",[14,12376,12377],{},"微信公众号编辑器不支持 Markdown，也不能直接粘贴 HTML。网上有一些 Markdown 转公众号的工具，但样式太固定、兼容性问题多。每次发文章，我都要花大量时间调排版。",[14,12379,12380],{},"同样的问题在小红书上更严重——小红书是图文格式，长文要拆成多张图片卡片。",[18,12382,12383],{"id":12383},"高度定制化的转换工具",[14,12385,12386],{},"2025 年 3 月做过一个微信文章转换的雏形，但功能很粗糙。这次我重写了整个工具。",[14,12388,12389],{},[55,12390],{"alt":12391,"src":12392},"Markdown 转微信公众号文章","\u002Fb\u002Fmetool\u002Fwechat-converter.png",[14,12394,12395,3154],{},[49,12396,12397],{},[279,12398,12401],{"href":12399,"rel":12400,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdocs\u002FmdToWeixinArtical\u002F",[283],"Markdown 转公众号",[181,12403,12404,12407,12410,12413,12416,12419],{},[184,12405,12406],{},"自定义排版风格（标题、正文、引用、代码块各有独立样式）",[184,12408,12409],{},"代码高亮渲染",[184,12411,12412],{},"嵌套列表正确缩进（微信编辑器的经典坑）",[184,12414,12415],{},"HTML 注释自动清理",[184,12417,12418],{},"图片适配（圆角、阴影、居中）",[184,12420,12421],{},"一键复制到剪贴板，粘贴到微信编辑器直接可用",[14,12423,12424],{},[55,12425],{"alt":12426,"src":12427},"Markdown 转小红书卡片","\u002Fb\u002Fmetool\u002Fxiaohongshu-converter.png",[14,12429,12430,3154],{},[49,12431,12432],{},[279,12433,12426],{"href":12434,"rel":12435,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdocs\u002FmdToXiaohongshu\u002F",[283],[181,12437,12438,12441,12444,12447],{},[184,12439,12440],{},"把长文渲染成小红书风格的图文卡片",[184,12442,12443],{},"支持字体大小调节",[184,12445,12446],{},"精准分页，每页内容自动适配小红书图片比例",[184,12448,12449],{},"直接截图就能发",[18,12451,12452],{"id":12452},"全站设计系统也重塑了",[14,12454,12455],{},"做内容工具的同时，我也对 metool 的整体设计做了一次升级：",[181,12457,12458,12464,12471],{},[184,12459,12460,12461],{},"统一了全站的图标系统，从散落各处的 SVG\u002FPNG 图标切换到 ",[49,12462,12463],{},"Iconify",[184,12465,12466,12467,12470],{},"加了 ",[49,12468,12469],{},"全局搜索功能","，工具多了之后靠导航找太慢",[184,12472,12473,12474,12481],{},"做了 ",[49,12475,12476],{},[279,12477,12480],{"href":12478,"rel":12479,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fgames\u002FsolarInHand\u002F",[283],"太阳系手势交互游戏","，儿子可以在手机上用手势旋转缩放太阳系",[18,12483,12485],{"id":12484},"一篇文章多平台分发","一篇文章，多平台分发",[14,12487,12488],{},"现在我的内容创作工作流是这样的：",[1193,12490,12491,12494,12497,12500],{},[184,12492,12493],{},"用 AI 辅助撰写 Markdown 格式的文章",[184,12495,12496],{},"在 metool 上实时预览公众号效果",[184,12498,12499],{},"一键复制 HTML，粘贴到微信编辑器",[184,12501,12502],{},"用转小红书工具生成图文卡片截图",[14,12504,12505],{},"一篇文章，多平台分发，全程不需要手动排版。这就是\"自己做工具\"的好处：完全按自己的工作流定制。",{"title":316,"searchDepth":317,"depth":317,"links":12507},[12508,12509,12510,12511],{"id":12364,"depth":320,"text":12365},{"id":12383,"depth":320,"text":12383},{"id":12452,"depth":320,"text":12452},{"id":12484,"depth":320,"text":12485},"AI 写作能力大提升，我开始写公众号。但从 Markdown 到公众号发布的最后一公里很痛苦。网上的工具不够用，我做了高度定制化的转换工具。",[12514,12517,12520,12523],{"q":12515,"a":12516},"为什么 Markdown 转公众号需要专门的工具？","微信公众号编辑器不支持 Markdown，而且对 HTML\u002FCSS 有严格限制（不支持外部样式表、不支持 class）。需要把 Markdown 渲染成内联样式的 HTML，还要处理代码高亮、图片适配、列表嵌套等公众号特有的兼容问题。",{"q":12518,"a":12519},"和网上已有的 Markdown 转公众号工具比，有什么不同？","网上的工具大多是通用方案，样式固定。metool 的版本做了高度定制化：自定义排版风格、代码块样式、标题层级样式、图片圆角和阴影效果等，还针对微信编辑器的各种坑做了兼容处理（如 HTML 注释清理、嵌套列表缩进修复）。",{"q":12521,"a":12522},"Markdown 转小红书工具是怎么工作的？","把 Markdown 内容渲染成小红书风格的图文卡片，支持字体大小调节和精准分页。每页内容自动适配小红书的图片比例，可以直接截图发布。适合把长文拆分成小红书的多图内容格式。",{"q":12524,"a":12525},"整个内容创作工作流是什么样的？","用 AI 辅助撰写 Markdown 格式的文章，在 metool 上实时预览效果，一键复制公众号格式的 HTML 粘贴到微信编辑器，同时用转小红书工具生成图文卡片。一篇文章，多平台分发，全程不需要手动排版。",{},"\u002Fbuilds\u002Fmetool\u002F2026-02-10-content-creation-tools",{"title":12359,"description":12512},[12530,12531,12532,12533,12534,12535,12536],"Markdown 转微信公众号","Markdown 转小红书","AI 写作工具","公众号排版工具","内容分发工具","微信文章格式转换","小红书图文卡片","builds\u002Fmetool\u002F2026-02-10-content-creation-tools","AI 能力提升后开始写公众号，发现从 Markdown 到公众号发布的最后一公里很痛苦。网上的转换工具不够用，在 metool 上做了高度定制化的 Markdown 转公众号和转小红书工具，实现 AI 辅助产出内容后一键分发到多个平台。",[1078,361],"wss3sw3VhSQdFnFFEEZBvOfAiN67lGRhbtrz2a2gtuI",{"id":12542,"title":12543,"body":12544,"date":12676,"description":12677,"draft":329,"extension":330,"faq":12678,"meta":12691,"navigation":345,"path":12692,"project":7528,"readingTime":541,"seo":12693,"seoKeywords":12694,"stem":12701,"summary":12702,"tags":12703,"updated":363,"__hash__":12704},"builds\u002Fbuilds\u002Fmetool\u002F2025-11-12-lan-transfer.md","iPhone 和安卓之间传文件，怎么就这么难",{"type":8,"value":12545,"toc":12670},[12546,12549,12552,12566,12569,12579,12583,12586,12592,12595,12609,12612,12616,12619,12625,12631,12637,12643,12649,12655,12658,12664,12667],[18,12547,12548],{"id":12548},"传个文件怎么就这么难",[14,12550,12551],{},"做移动端开发的时候，我经常需要在电脑和手机之间传文件。在 Mac 和 iPhone 之间有 AirDrop，还算方便。但如果是 iPhone 和安卓之间呢？",[181,12553,12554,12557,12560,12563],{},[184,12555,12556],{},"蓝牙太慢",[184,12558,12559],{},"微信传文件有大小限制，还会压缩",[184,12561,12562],{},"邮件附件也有限制",[184,12564,12565],{},"USB 线在手边不一定有",[14,12567,12568],{},"每次遇到这个场景我都很烦。明明两台设备就在手边，传个文件却要折腾半天。",[14,12570,12571,12572,130],{},"我决定在 metool 上做一个 ",[49,12573,12574],{},[279,12575,12578],{"href":12576,"rel":12577,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdev\u002FlanTransfer\u002F",[283],"局域网文件传输工具",[18,12580,12582],{"id":12581},"浏览器端-p2p-传输","浏览器端 P2P 传输",[14,12584,12585],{},"技术方案用了 WebRTC：两台设备打开同一个网页，通过邀请码建立点对点连接，文件直接在设备之间传输，不经过服务器。",[14,12587,12588],{},[55,12589],{"alt":12590,"src":12591},"跨设备文件互传工具","\u002Fb\u002Fmetool\u002Flan-transfer.png",[14,12593,12594],{},"第一版做了基础功能：",[181,12596,12597,12600,12603,12606],{},[184,12598,12599],{},"4 位数字邀请码配对",[184,12601,12602],{},"二维码扫码连接（手机扫一下就行）",[184,12604,12605],{},"文件和文本都能传",[184,12607,12608],{},"传输过程加密",[14,12610,12611],{},"但发布后发现，真实场景比想象的复杂得多。",[18,12613,12615],{"id":12614},"两周18-个-commit","两周，18 个 commit",[14,12617,12618],{},"从 11 月 12 日到 11 月 21 日，这个功能我迭代了 18 个 commit。是 metool 里单个功能迭代密度最高的一次。",[14,12620,12621,12624],{},[49,12622,12623],{},"大文件分块传输"," — 大文件不能一次性发送，要分块。每块用 Map 追踪接收状态，某一块失败了自动重传，不用重发整个文件。",[14,12626,12627,12630],{},[49,12628,12629],{},"批量文件支持"," — 不只传一个文件，要能一次选多个文件发送。",[14,12632,12633,12636],{},[49,12634,12635],{},"iOS 兼容"," — iOS Safari 对多文件传输有限制，需要特殊处理。还要提示用户调整浏览器的自动下载设置。",[14,12638,12639,12642],{},[49,12640,12641],{},"校园网\u002F办公网"," — 这类网络可能限制 P2P 连接。加了网络限制检测和提示，建议用户开手机热点作为替代方案。",[14,12644,12645,12648],{},[49,12646,12647],{},"代理环境"," — 开了代理的设备连接行为不同，加了说明。",[14,12650,12651,12654],{},[49,12652,12653],{},"连接体验"," — 邀请码从 6 位简化到 4 位纯数字，合并了扫码和手动输入的 UI，优化了连接状态的实时反馈。",[18,12656,12657],{"id":12657},"一个功能的极致打磨",[14,12659,12660,12661],{},"这两周的经历让我体会到一个道理：",[49,12662,12663],{},"做一个功能\"能用\"很快，做到\"好用\"要花十倍的时间。",[14,12665,12666],{},"初版半天就做完了，但覆盖各种边界场景、各种设备兼容性、各种网络环境，花了两周。每次觉得\"应该差不多了\"，真实使用的时候又会冒出新问题。",[14,12668,12669],{},"但这也是个人项目的好处：没有人催进度，可以把一个功能打磨到自己满意为止。",{"title":316,"searchDepth":317,"depth":317,"links":12671},[12672,12673,12674,12675],{"id":12548,"depth":320,"text":12548},{"id":12581,"depth":320,"text":12582},{"id":12614,"depth":320,"text":12615},{"id":12657,"depth":320,"text":12657},"2025-11-12","做移动端开发时经常需要跨设备传文件，iPhone 和安卓之间传文件特别痛苦。用 WebRTC 做了一个局域网 P2P 传输工具，两周迭代了 18 个 commit。",[12679,12682,12685,12688],{"q":12680,"a":12681},"为什么不用现有的文件传输工具？","AirDrop 只在苹果设备之间用，蓝牙传输太慢，微信传文件有大小限制和压缩，邮件附件也有限制。最简单的局域网传输方案需要两台设备在同一个网络下，但浏览器端的方案不需要安装任何软件，打开网页就能用。",{"q":12683,"a":12684},"WebRTC P2P 传输是怎么工作的？","两台设备打开同一个网页，通过邀请码（4 位数字）或二维码建立 WebRTC 点对点连接。文件直接在两台设备之间传输，不经过服务器。传输过程加密，数据不会被中间人截获。",{"q":12686,"a":12687},"大文件传输怎么处理？","大文件会自动分块传输，每块的接收状态用 Map 追踪。如果某一块传输失败，会自动重传而不是重新发送整个文件。这个机制在网络不稳定的环境下特别重要。",{"q":12689,"a":12690},"遇到了哪些边界场景？","校园网\u002F办公网可能限制 P2P 连接，加了使用限制提示和手机热点的解决方案建议。iOS Safari 对多文件传输有限制，做了特殊处理和提示。还有代理环境下的连接问题、自动下载的浏览器兼容性问题等，两周内覆盖了十几种边界场景。",{},"\u002Fbuilds\u002Fmetool\u002F2025-11-12-lan-transfer",{"title":12543,"description":12677},[12695,12696,12697,12698,12699,12623,12700],"局域网文件传输","WebRTC P2P","iPhone 安卓传文件","跨设备文件传输","浏览器端文件传输","在线局域网传输工具","builds\u002Fmetool\u002F2025-11-12-lan-transfer","移动端开发中 iPhone 和安卓之间传文件是一件极其痛苦的事。用 WebRTC 做了浏览器端 P2P 加密传输，支持二维码扫码连接、大文件分块传输和重传机制。两周内从初版迭代到覆盖校园网\u002F代理\u002FiOS 多文件等各种边界场景。",[1078,1746],"3cGzuWpv-48beUzZ8_2W9usNWZv7Bs5wLJnbMUbBLO4",{"id":12706,"title":12707,"body":12708,"date":12816,"description":12817,"draft":329,"extension":330,"faq":12818,"meta":12831,"navigation":345,"path":12832,"project":7528,"readingTime":535,"seo":12833,"seoKeywords":12834,"stem":12842,"summary":12843,"tags":12844,"updated":363,"__hash__":12845},"builds\u002Fbuilds\u002Fmetool\u002F2025-11-02-games-for-my-son.md","孩子一玩迷宫就是半小时，我又给他做了四个游戏",{"type":8,"value":12709,"toc":12810},[12710,12713,12716,12719,12722,12725,12728,12731,12737,12740,12750,12760,12770,12780,12783,12789,12792,12795,12797,12800,12803],[18,12711,12712],{"id":12712},"孩子的编程启蒙",[14,12714,12715],{},"我孩子很小就开始对我的电脑感兴趣。每次我在写代码，他就凑过来看。",[14,12717,12718],{},"之前在 metool 上做过一个迷宫游戏，带音效、带移动端触控操作。有一次我在手机上测试，孩子看到了，拿过去就开始玩。",[14,12720,12721],{},"一玩就是半小时。",[14,12723,12724],{},"从那以后，每次出门吃饭排队，他就问我：\"爸爸，可以玩迷宫吗？\" 我打开手机浏览器，进 metool，递给他。",[14,12726,12727],{},"这让我想到：既然迷宫他这么喜欢，我再做几个游戏给他。做成在线版，随时能打开。",[18,12729,12730],{"id":12730},"一天做了四个",[14,12732,12733],{},[55,12734],{"alt":12735,"src":12736},"给儿子做的游戏合集","\u002Fb\u002Fmetool\u002Fgames.png",[14,12738,12739],{},"2025 年 11 月 2 日，一天之内上线了：",[14,12741,12742,12749],{},[49,12743,12744],{},[279,12745,12748],{"href":12746,"rel":12747,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fgames\u002Fgo\u002F",[283],"围棋"," — 带一个启发式 AI 对手。算法考虑了领地控制、棋子连接和眼位判断，不靠深度学习模型，但在小棋盘上能提供有一定挑战性的对局。支持 9x9 和 13x13 两种棋盘。",[14,12751,12752,12759],{},[49,12753,12754],{},[279,12755,12758],{"href":12756,"rel":12757,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fgames\u002Fgomoku\u002F",[283],"五子棋"," — 同样带 AI 对手，配了胜利烟花动画。AI 的算法会评估棋型（活三、冲四等），对小朋友来说难度刚好。",[14,12761,12762,12769],{},[49,12763,12764],{},[279,12765,12768],{"href":12766,"rel":12767,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fgames\u002Ftetris\u002F",[283],"俄罗斯方块"," — 专门为移动端做了长按控制，方块能快速左右移动和加速下落。还做了悬浮分数面板和下一个方块预览，移动端体验接近桌面端。",[14,12771,12772,12779],{},[49,12773,12774],{},[279,12775,12778],{"href":12776,"rel":12777,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fvideos\u002FaudioEditor\u002F",[283],"音频波形编辑器"," — 这个不是游戏，但顺手做了。支持波形可视化、片段选择和裁剪。",[18,12781,12782],{"id":12782},"为什么做在线版",[14,12784,12785,12786,130],{},"做 App 当然也行，但在线版有一个不可替代的优势：",[49,12787,12788],{},"不需要安装",[14,12790,12791],{},"孩子想玩的时候，我打开浏览器就行了。不用去 App Store 下载，不用等更新。我改了代码部署完，下一次打开就是最新版。",[14,12793,12794],{},"对于这种\"随时可能想用一下\"的场景，网页比 App 更合适。",[18,12796,12735],{"id":12735},[14,12798,12799],{},"后来我把游戏分类的标题改成了\"给儿子做的游戏合集\"。",[14,12801,12802],{},"这不是一个商业决策，是一个爸爸的决策。metool 上的工具大多是为我自己的工作需求做的，但游戏这个品类，是为我孩子做的。",[14,12804,12805,12806,12809],{},"后来又陆续加了",[279,12807,12480],{"href":12478,"rel":12808,"target":2108},[283],"，让他在手机上用手势旋转缩放太阳系。不过那是一个月之后的事了。",{"title":316,"searchDepth":317,"depth":317,"links":12811},[12812,12813,12814,12815],{"id":12712,"depth":320,"text":12712},{"id":12730,"depth":320,"text":12730},{"id":12782,"depth":320,"text":12782},{"id":12735,"depth":320,"text":12735},"2025-11-02","孩子看我编程很感兴趣，尤其迷宫游戏他一玩就是半小时。做成在线版，随时掏出手机就能给他玩。一天之内做了围棋、五子棋、俄罗斯方块和音频编辑器。",[12819,12822,12825,12828],{"q":12820,"a":12821},"围棋的 AI 对手是怎么实现的？","用启发式算法实现，不依赖深度学习模型。算法考虑了领地控制、棋子连接、眼位判断等围棋基本策略，在 9x9 和 13x13 棋盘上能提供有一定挑战性的对局体验。全部在浏览器端运行，不需要服务器计算。",{"q":12823,"a":12824},"为什么俄罗斯方块要做移动端长按控制？","在手机上玩俄罗斯方块，传统的虚拟按键体验很差。长按控制让方块能快速左右移动和加速下落，操作更流畅。还做了悬浮分数面板和下一个方块预览，让移动端的游戏体验接近桌面端。",{"q":12826,"a":12827},"这些游戏为什么做成在线版而不是 App？","在线版的优势是随时随地能用：掏出手机打开浏览器就能玩，不需要下载安装。对孩子来说，在等餐、坐车的时候想玩，打开网页比打开 App 更快。而且在线版更新不需要用户手动升级。",{"q":12829,"a":12830},"音频编辑器是做什么用的？","支持音频波形可视化、片段选择、裁剪和播放控制。可以在浏览器里直接编辑音频文件，截取需要的片段。虽然和游戏是同一天做的，但它属于工具而不是游戏。",{},"\u002Fbuilds\u002Fmetool\u002F2025-11-02-games-for-my-son",{"title":12707,"description":12817},[12835,12836,12837,12838,12839,12840,12841],"给孩子做的游戏","在线围棋 AI 对手","在线五子棋","在线俄罗斯方块","移动端网页游戏","前端游戏开发","启发式 AI 算法","builds\u002Fmetool\u002F2025-11-02-games-for-my-son","孩子看编程很感兴趣，之前做的迷宫游戏他一玩就是半小时。一天之内在 metool 上线了围棋（带启发式 AI 对手）、五子棋（带 AI）、俄罗斯方块（移动端长按控制），还顺手做了一个音频波形编辑器。",[1078,1746],"sdnRuCOzhZjRsJiLHYmOHoSrVUv1pu-bpmx4SCnd2P4",{"id":12847,"title":12848,"body":12849,"date":12987,"description":12988,"draft":329,"extension":330,"faq":12989,"meta":13002,"navigation":345,"path":13003,"project":7528,"readingTime":535,"seo":13004,"seoKeywords":13005,"stem":13012,"summary":13013,"tags":13014,"updated":363,"__hash__":13015},"builds\u002Fbuilds\u002Fmetool\u002F2025-10-12-back-after-silence.md","停了五个月，回来发现要改的全是底层",{"type":8,"value":12850,"toc":12979},[12851,12854,12857,12860,12863,12867,12870,12877,12880,12884,12887,12908,12911,12914,12917,12939,12942,12945,12948,12970,12973,12976],[18,12852,12853],{"id":12853},"五个月的空白",[14,12855,12856],{},"从 2025 年 3 月到 10 月。中间只在 8 月份改了一次去背景工具的代码。",[14,12858,12859],{},"不是放弃了，就是没想到要做什么。工具站不像 SaaS 产品有持续的业务驱动力，个人项目的节奏就是这样：有需求就做，没需求就停。",[14,12861,12862],{},"10 月份回来再看这个项目，发现要改的不是功能，而是底层。",[18,12864,12866],{"id":12865},"ai-去背景大升级","AI 去背景大升级",[14,12868,12869],{},"第一版的图片去背景是纯手动方案：用 Canvas 笔刷一点点涂抹。能用，但效率很低。",[14,12871,12872,12873,12876],{},"这次升级到了 ",[49,12874,12875],{},"ONNX Runtime"," 方案——在浏览器端直接运行 AI 模型，一键自动去背景。精度和速度都大幅提升，而且模型在本地推理，文件还是不会离开设备。",[14,12878,12879],{},"这个升级让我意识到，前端能做的事情比我想象的多。AI 模型跑在浏览器端已经不是实验性的技术了。",[18,12881,12883],{"id":12882},"seo-补课","SEO 补课",[14,12885,12886],{},"停更期间，metool 在搜索引擎上几乎没有存在感。回来后我认真补了一次 SEO：",[181,12888,12889,12899,12902,12905],{},[184,12890,12891,12892,4208,12895,12898],{},"重构了 ",[79,12893,12894],{},"usePageMeta",[79,12896,12897],{},"useSimpleSEO","，让每个工具页自动生成规范的 meta 信息",[184,12900,12901],{},"补全了 Open Graph 标签和 JSON-LD 结构化数据",[184,12903,12904],{},"加了 SEO 客户端插件处理动态结构化数据注入",[184,12906,12907],{},"重写了 robots.txt",[14,12909,12910],{},"SEO 是那种\"不做不会死，做了慢慢见效\"的事情。但对工具站来说，搜索引擎是最重要的流量来源，不做就等于放弃了用户主动找到你的可能性。",[18,12912,12913],{"id":12913},"开发者工具首发",[14,12915,12916],{},"这次回来还上线了第一批开发者工具：",[181,12918,12919,12929],{},[184,12920,12921,12928],{},[49,12922,12923],{},[279,12924,12927],{"href":12925,"rel":12926,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdev\u002FjsonBeautify\u002F",[283],"JSON 美化\u002F格式化"," — 带语法高亮和可折叠的树形视图",[184,12930,12931,12938],{},[49,12932,12933],{},[279,12934,12937],{"href":12935,"rel":12936,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdev\u002FurlEncodeDecode\u002F",[283],"URL 编码\u002F解码"," — 简单但高频的需求",[14,12940,12941],{},"自己在开发中天天用这类工具，做进 metool 顺理成章。后面这个品类会持续扩展。",[18,12943,12944],{"id":12944},"新的图片工具",[14,12946,12947],{},"还上线了两个新的图片工具：",[181,12949,12950,12960],{},[184,12951,12952,12959],{},[49,12953,12954],{},[279,12955,12958],{"href":12956,"rel":12957,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fimages\u002FiphoneLongImageStitch\u002F",[283],"iPhone 长图拼接"," — 把多张 iPhone 截图拼成一张长图",[184,12961,12962,12969],{},[49,12963,12964],{},[279,12965,12968],{"href":12966,"rel":12967,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fimages\u002FresizeIosAppDistribution\u002F",[283],"iOS 应用图标裁剪"," — 一键生成 App Store 需要的全套尺寸",[14,12971,12972],{},"都是做移动端开发时的真实需求。",[18,12974,12975],{"id":12975},"停了五个月不是坏事",[14,12977,12978],{},"停更的五个月让我有了新的视角。如果一直在加功能，可能不会注意到底层该升级了。有时候停下来，再回来看，反而能看清该做什么。",{"title":316,"searchDepth":317,"depth":317,"links":12980},[12981,12982,12983,12984,12985,12986],{"id":12853,"depth":320,"text":12853},{"id":12865,"depth":320,"text":12866},{"id":12882,"depth":320,"text":12883},{"id":12913,"depth":320,"text":12913},{"id":12944,"depth":320,"text":12944},{"id":12975,"depth":320,"text":12975},"2025-10-12","从 3 月到 10 月，metool 停更了五个月。不是放弃了，是没想到要做什么。回来后发现需要升级的不是功能，而是底层能力。",[12990,12993,12996,12999],{"q":12991,"a":12992},"为什么停了五个月？","没有特别的原因，就是积压的需求做完了，没想到还要做什么。工具站不像 SaaS 产品有持续的业务驱动力，个人项目的节奏就是这样——有灵感就做，没灵感就停。",{"q":12994,"a":12995},"AI 去背景升级到 ONNX 模型有什么变化？","第一版去背景是 Canvas 笔刷方案，需要手动涂抹。升级后用 ONNX Runtime 在浏览器端运行 AI 模型，一键自动去背景，精度和速度都大幅提升。模型在本地推理，文件依然不会上传到服务器。",{"q":12997,"a":12998},"这次升级了哪些 SEO 能力？","补全了 meta tags、Open Graph 标签和 JSON-LD 结构化数据。重构了 usePageMeta 和 useSimpleSEO 两个组合式函数，让每个工具页面自动生成规范的 SEO 信息。还加了 SEO 插件处理客户端渲染的结构化数据注入。",{"q":13000,"a":13001},"为什么开始做开发者工具？","自己在开发过程中经常需要格式化 JSON、编解码 URL 这类小操作。之前都在其他网站上做，现在 metool 的架构已经很成熟，加一个新工具很快，干脆自己做了。后面开发者工具会成为 metool 的一个重要品类。",{},"\u002Fbuilds\u002Fmetool\u002F2025-10-12-back-after-silence",{"title":12848,"description":12988},[13006,13007,13008,13009,13010,12958,13011],"独立开发项目停更","ONNX Runtime 去背景","Nuxt Image 优化","SEO 结构化数据","开发者工具 JSON 美化","在线工具性能优化","builds\u002Fmetool\u002F2025-10-12-back-after-silence","metool 停更五个月后回归，发现要改的不是功能而是底层：AI 去背景升级到 ONNX 模型、图片加载用 Nuxt Image 优化、SEO 从零补全结构化数据和 meta 信息、上线了第一批开发者工具（JSON 美化、URL 编解码），还做了 iPhone 长图拼接和 iOS 应用图标裁剪。",[1078,1746],"iiptoayqNzPYX0rh1rHYBLmxt007FNGkwdZhg9DuhvM",{"id":13017,"title":13018,"body":13019,"date":13136,"description":13137,"draft":329,"extension":330,"faq":13138,"meta":13151,"navigation":345,"path":13152,"project":7528,"readingTime":535,"seo":13153,"seoKeywords":13154,"stem":13161,"summary":13162,"tags":13163,"updated":363,"__hash__":13164},"builds\u002Fbuilds\u002Fmetool\u002F2025-03-01-video-tools-and-easter-eggs.md","视频处理也做了，顺手还做了几个节日彩蛋",{"type":8,"value":13020,"toc":13130},[13021,13024,13027,13030,13033,13039,13042,13074,13077,13080,13083,13094,13105,13108,13112,13121,13124,13127],[18,13022,13023],{"id":13023},"补齐视频处理",[14,13025,13026],{},"图片工具和文档工具做完之后，视频处理是一个自然的延伸。",[14,13028,13029],{},"我日常也有视频处理的需求：压缩一下视频发邮件、转个格式、截一段视频做成 GIF。和图片工具一样，网上的视频处理工具不是要上传到服务器就是要付费。",[14,13031,13032],{},"这次的方案是用 FFmpeg 的 WebAssembly 版本，直接在浏览器端跑视频处理。不需要服务器，不需要安装软件。",[14,13034,13035],{},[55,13036],{"alt":13037,"src":13038},"视频工具三件套","\u002Fb\u002Fmetool\u002Fvideo-tools.png",[14,13040,13041],{},"两周内上线了三个视频工具：",[181,13043,13044,13054,13064],{},[184,13045,13046,13053],{},[49,13047,13048],{},[279,13049,13052],{"href":13050,"rel":13051,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fvideos\u002Fcompress\u002F",[283],"视频压缩"," — 调整分辨率和码率，减小文件大小",[184,13055,13056,13063],{},[49,13057,13058],{},[279,13059,13062],{"href":13060,"rel":13061,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fvideos\u002FformatConvert\u002F",[283],"视频格式转换"," — MP4\u002FWebM\u002FAVI 互转",[184,13065,13066,13073],{},[49,13067,13068],{},[279,13069,13072],{"href":13070,"rel":13071,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fvideos\u002FvideoToGif\u002F",[283],"视频转 GIF"," — 支持自定义分辨率、帧率和时间段截取",[14,13075,13076],{},"同时还做了微信公众号 Markdown 文章转换的雏形，不过这个工具后面会有大升级，这里先不展开。",[18,13078,13079],{"id":13079},"节日彩蛋和趣味工具",[14,13081,13082],{},"工具站不一定全是\"正经\"工具。",[14,13084,13085,13086,13093],{},"3 月初正好临近清明节，我做了一个 ",[49,13087,13088],{},[279,13089,13092],{"href":13090,"rel":13091,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fmagics\u002Fqingming\u002F",[283],"清明节纪念页"," ——可以编辑纪念文字、选择背景，生成一张可以分享的纪念图片。技术上验证了文字编辑和图片合成的能力，情感上也算给工具站加了一点温度。",[14,13095,13096,13097,13104],{},"还做了一个 ",[49,13098,13099],{},[279,13100,13103],{"href":13101,"rel":13102,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fmagics\u002Flottery\u002F",[283],"抽奖工具","，动画效果比较花哨，纯粹是觉得好玩。",[14,13106,13107],{},"这些趣味工具的开发时间不长，但让我意识到一件事：工具站的边界不只是\"文件处理\"。只要是用户会在手机或电脑上临时需要的功能，都可以做。",[18,13109,13111],{"id":13110},"图片-resize-也补上了","图片 resize 也补上了",[14,13113,13114,13115,13120],{},"这个阶段还补了一个",[279,13116,13119],{"href":13117,"rel":13118,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fimages\u002Fresize\u002F",[283],"图片 resize"," 工具，支持自定义尺寸调整。功能简单但使用频率很高，是之前漏掉的基础需求。",[18,13122,13123],{"id":13123},"品类在扩展",[14,13125,13126],{},"回头看这两周，metool 的工具品类从\"图片+文档\"扩展到了\"图片+文档+视频+趣味\"。工具站的定位也从\"文件处理\"慢慢变成了\"在线工具集\"。",[14,13128,13129],{},"接下来应该继续加工具，还是停下来优化体验？我当时没想清楚。事实上，后面我停了很久。",{"title":316,"searchDepth":317,"depth":317,"links":13131},[13132,13133,13134,13135],{"id":13023,"depth":320,"text":13023},{"id":13079,"depth":320,"text":13079},{"id":13110,"depth":320,"text":13111},{"id":13123,"depth":320,"text":13123},"2025-03-01","视频压缩、格式转换、视频转 GIF，把视频处理需求补齐了。清明节纪念页和抽奖工具是兴趣驱动，验证可行性。",[13139,13142,13145,13148],{"q":13140,"a":13141},"浏览器端能做视频压缩和格式转换吗？","可以。用 FFmpeg 的 WebAssembly 版本在浏览器端运行，支持视频压缩、格式转换（MP4\u002FWebM\u002FAVI 互转）和视频转 GIF。处理速度取决于设备性能，但中等长度的视频完全够用，且不需要上传到服务器。",{"q":13143,"a":13144},"视频转 GIF 工具有什么特色？","支持自定义分辨率（多档可选）、帧率调整和时间段截取。GIF 的尺寸优化是难点，提供了多种分辨率选项让用户在清晰度和文件大小之间取舍。",{"q":13146,"a":13147},"为什么要做清明节纪念页和抽奖工具？","纯粹是兴趣驱动和技术验证。清明节纪念页验证了动态文字编辑和背景合成的能力，抽奖工具验证了动画交互效果。这类趣味工具虽然不是核心功能，但能让工具站更有温度。",{"q":13149,"a":13150},"微信公众号 Markdown 转换工具是怎么回事？","第一版的微信公众号文章转换在这个阶段就做了雏形，把 Markdown 渲染成公众号兼容的富文本格式。后来在 2026 年 3 月做了大幅升级和高度定制化。",{},"\u002Fbuilds\u002Fmetool\u002F2025-03-01-video-tools-and-easter-eggs",{"title":13018,"description":13137},[13155,13072,13156,13157,13158,13159,13160],"在线视频压缩","前端视频处理","FFmpeg WASM","微信公众号文章转换","浏览器端视频转换","在线工具开发","builds\u002Fmetool\u002F2025-03-01-video-tools-and-easter-eggs","图片和文档工具做完后，视频处理是下一个自然需求。两周内上线了视频压缩、格式转换和视频转 GIF 三个工具，同时做了微信公众号文章转换、清明节纪念页和抽奖工具。工具站的品类从文件处理扩展到了内容创作和趣味工具。",[1078,1746],"mqYPYxMP9M5vITnR0pz8FrsbGuDd-a7ZEo0hukqQzqk",{"id":13166,"title":13167,"body":13168,"date":13269,"description":13270,"draft":329,"extension":330,"faq":13271,"meta":13284,"navigation":345,"path":13285,"project":7528,"readingTime":535,"seo":13286,"seoKeywords":13287,"stem":13295,"summary":13296,"tags":13297,"updated":363,"__hash__":13298},"builds\u002Fbuilds\u002Fmetool\u002F2025-02-24-go-international.md","AI 把做国际站的门槛降到了最低",{"type":8,"value":13169,"toc":13263},[13170,13174,13177,13180,13183,13186,13189,13217,13223,13234,13238,13241,13247,13250,13253,13257,13260],[18,13171,13173],{"id":13172},"ai-把翻译成本打下来了","AI 把翻译成本打下来了",[14,13175,13176],{},"做了一个月的工具站，工具数量已经不少了。这时候一个想法自然冒了出来：要不要做成国际站？",[14,13178,13179],{},"以前做多语言网站是一件成本很高的事——翻译、校对、维护，每多一种语言就多一份工作量。但 AI 改变了这个等式。翻译成本降到了接近零，一段中文丢给 AI，几秒钟就能拿到质量不错的英文。",[14,13181,13182],{},"我决定用 metool 来验证做国际站的标准方案。",[18,13184,13185],{"id":13185},"中英双语架构",[14,13187,13188],{},"技术方案用了 Nuxt i18n 模块：",[181,13190,13191,13204,13207,13214],{},[184,13192,13193,13194,13197,13198,4208,13201],{},"翻译文件放在 ",[79,13195,13196],{},"locales\u002F"," 目录，",[79,13199,13200],{},"en.json",[79,13202,13203],{},"zh.json",[184,13205,13206],{},"所有工具的标题、描述、按钮文案抽取到翻译文件中",[184,13208,13209,13210,13213],{},"页面组件通过 ",[79,13211,13212],{},"$t()"," 函数引用，不再硬编码中文",[184,13215,13216],{},"路由支持语言前缀切换",[14,13218,13219],{},[55,13220],{"alt":13221,"src":13222},"3D GLB 模型在线预览","\u002Fb\u002Fmetool\u002F3d-preview.png",[14,13224,13225,13226,13233],{},"同一时期还上线了 ",[49,13227,13228],{},[279,13229,13232],{"href":13230,"rel":13231,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002F3d\u002FglbPreview\u002F",[283],"3D GLB 模型预览工具","，用 Three.js 做的。支持拖拽上传 GLB 文件，实时预览、缩放旋转、背景色切换、自动旋转。算是拓展了工具的品类边界，从纯文件处理扩展到了 3D 领域。",[18,13235,13237],{"id":13236},"试了日韩语然后砍掉了","试了日韩语，然后砍掉了",[14,13239,13240],{},"做国际化的时候，顺手加了日语和韩语的支持。",[14,13242,13243,13244],{},"但很快发现一个问题：",[49,13245,13246],{},"翻译容易，维护难。",[14,13248,13249],{},"每次新增一个工具或者改一个文案，要同步更新四种语言的翻译文件。在没有真实用户数据证明日韩用户有需求的情况下，这个维护成本完全不值得。",[14,13251,13252],{},"果断砍掉，只保留中英文。有了用户数据再决定要不要加。",[18,13254,13256],{"id":13255},"经验先做减法","经验：先做减法",[14,13258,13259],{},"国际化不是\"支持的语言越多越好\"，而是要验证：有没有人用、用了之后体验是否完整。",[14,13261,13262],{},"中英双语是投入产出比最高的选择。英语覆盖了全球大部分互联网用户，维护成本可控，也足以验证国际化方案是否跑得通。",{"title":316,"searchDepth":317,"depth":317,"links":13264},[13265,13266,13267,13268],{"id":13172,"depth":320,"text":13173},{"id":13185,"depth":320,"text":13185},{"id":13236,"depth":320,"text":13237},{"id":13255,"depth":320,"text":13256},"2025-02-24","有了 AI，翻译不再是瓶颈。正好趁这个机会验证做国际站的标准方案，顺便把 3D 模型预览工具也做了。",[13272,13275,13278,13281],{"q":13273,"a":13274},"为什么选择在这个时候做国际化？","AI 翻译能力的提升让多语言内容的生产成本大幅降低，以前需要专人翻译的工作现在 AI 几秒钟就能完成。正好用这个项目验证一下做国际站的标准方案，积累经验。",{"q":13276,"a":13277},"国际化的技术方案是什么？","使用 Nuxt i18n 模块，翻译文件用 JSON 格式存放在 locales 目录（en.json 和 zh.json）。所有工具的标题、描述、操作按钮文案都抽取到翻译文件中，页面组件通过 $t() 函数引用。路由支持语言前缀切换。",{"q":13279,"a":13280},"为什么砍掉了日语和韩语支持？","最初尝试加了日语和韩语，但很快发现：翻译容易，维护难。每次新增或修改一个工具，要同步更新四种语言的翻译文件。在没有明确用户需求的情况下，维护成本远高于收益，果断砍掉只保留中英文。",{"q":13282,"a":13283},"3D 模型预览工具是怎么做的？","用 Three.js 构建 3D 场景，支持 GLB 格式模型的拖拽上传和实时预览。功能包括缩放旋转、网格显示、背景色切换、自动旋转。所有渲染在浏览器端完成，不需要安装任何软件。",{},"\u002Fbuilds\u002Fmetool\u002F2025-02-24-go-international",{"title":13167,"description":13270},[13288,13289,13290,13291,13292,13293,13294],"Nuxt i18n 国际化","AI 辅助翻译","在线 3D 模型预览","Three.js GLB 预览","多语言网站开发","国际化工具站","前端 i18n 架构","builds\u002Fmetool\u002F2025-02-24-go-international","AI 让翻译成本降到接近零，做国际站不再是大公司才能干的事。用 Nuxt i18n 搭建了中英双语架构，同时上线了 3D GLB 模型预览工具。曾尝试日韩语支持，发现维护成本高于收益后果断砍掉。",[1078,361],"o4vphR82AQXe1eS-PrkTEb8KWq-BAuA2MYsxYEf1P8c",{"id":13300,"title":13301,"body":13302,"date":13447,"description":13448,"draft":329,"extension":330,"faq":13449,"meta":13462,"navigation":345,"path":13463,"project":7528,"readingTime":535,"seo":13464,"seoKeywords":13465,"stem":13470,"summary":13471,"tags":13472,"updated":363,"__hash__":13473},"builds\u002Fbuilds\u002Fmetool\u002F2025-02-08-tool-explosion.md","积压的需求一起爆发，两周上线了十几个工具",{"type":8,"value":13303,"toc":13441},[13304,13307,13310,13313,13317,13320,13325,13371,13376,13393,13398,13408,13414,13417,13420,13423,13426,13429,13435,13438],[18,13305,13306],{"id":13306},"积压的需求清单",[14,13308,13309],{},"基础架构搭好之后，我脑子里积压的需求开始一个接一个往外冒。",[14,13311,13312],{},"这些都是我日常工作中反复遇到的场景：图片要转格式、要压缩、要生成二维码、要去背景。文档要从 Word 转 PDF、Markdown 要转成其他格式。每次都在网上找工具，现在终于可以一口气做完了。",[18,13314,13316],{"id":13315},"两周十几个工具","两周，十几个工具",[14,13318,13319],{},"从 2 月 8 日到 2 月 20 日，密集上线了这些工具：",[14,13321,13322],{},[49,13323,13324],{},"图片工具全家桶：",[181,13326,13327,13335,13341,13349,13357,13364],{},[184,13328,13329,13334],{},[279,13330,13333],{"href":13331,"rel":13332,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fimages\u002FimageFormatConvert\u002F",[283],"图片格式转换","（JPG\u002FPNG\u002FWebP\u002FICO 互转）",[184,13336,13337],{},[279,13338,10343],{"href":13339,"rel":13340,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fimages\u002Fcompress\u002F",[283],[184,13342,13343,13348],{},[279,13344,13347],{"href":13345,"rel":13346,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fimages\u002FqrCodeGenerate\u002F",[283],"QR 码生成器","（支持自定义锚点和数据点样式）",[184,13350,13351,13356],{},[279,13352,13355],{"href":13353,"rel":13354,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fimages\u002FremoveBackground\u002F",[283],"图片去背景","（Canvas 笔刷方案）",[184,13358,13359],{},[279,13360,13363],{"href":13361,"rel":13362,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fimages\u002FlongImageSplit\u002F",[283],"长图分割",[184,13365,13366],{},[279,13367,13370],{"href":13368,"rel":13369,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fimages\u002FmovieSubtitleCrop\u002F",[283],"电影字幕裁剪",[14,13372,13373],{},[49,13374,13375],{},"文档工具：",[181,13377,13378,13385],{},[184,13379,13380],{},[279,13381,13384],{"href":13382,"rel":13383,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdocs\u002FwordToPDF\u002F",[283],"Word 转 PDF",[184,13386,13387,13392],{},[279,13388,13391],{"href":13389,"rel":13390,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fdocs\u002FmarkdownConvert\u002F",[283],"Markdown 格式转换","（支持导出 HTML）",[14,13394,13395],{},[49,13396,13397],{},"趣味工具：",[181,13399,13400],{},[184,13401,13402,13407],{},[279,13403,13406],{"href":13404,"rel":13405,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fmagics\u002FheartBeat\u002F",[283],"心跳表白页","（带微信分享适配）",[14,13409,13410],{},[55,13411],{"alt":13412,"src":13413},"图片工具全家桶","\u002Fb\u002Fmetool\u002Fimage-tools.png",[14,13415,13416],{},"速度能这么快，核心原因是第一天搭的架构：工具卡片组件、分类体系、页面模板全是复用的，新增一个工具只需要写核心逻辑。图片处理用 Canvas API，文档转换用 mammoth.js，每个工具的核心代码量其实不大。",[18,13418,13419],{"id":13419},"数据基础也搭好了",[14,13421,13422],{},"2 月 14 日接入了 Google Analytics，虽然这时候几乎没有外部流量，但尽早有数据追踪比后面补要好得多。",[14,13424,13425],{},"2 月 17 日配置了 sitemap 和 robots.txt，加了 404 错误页面。SEO 基础设施越早搭好越省事，搜索引擎需要时间爬取和收录。",[18,13427,13428],{"id":13428},"所有处理都在本地",[14,13430,13431,13432,130],{},"有一个原则从第一天就没变过：",[49,13433,13434],{},"所有文件处理都在浏览器端完成",[14,13436,13437],{},"图片压缩用 Canvas API，格式转换用 Blob 操作，文档解析用 JavaScript 库。用户的文件不会上传到任何服务器。这不只是隐私保障，也意味着没有服务器成本，工具可以无限免费用。",[14,13439,13440],{},"两周下来，metool 已经从\"三个工具\"变成了\"十几个工具\"。积压的需求基本清完了，但新的想法又开始冒出来。",{"title":316,"searchDepth":317,"depth":317,"links":13442},[13443,13444,13445,13446],{"id":13306,"depth":320,"text":13306},{"id":13315,"depth":320,"text":13316},{"id":13419,"depth":320,"text":13419},{"id":13428,"depth":320,"text":13428},"2025-02-08","图片格式转换、压缩、QR 码生成、去背景、Word 转 PDF、Markdown 转换。把日常文件处理的需求全都做成了在线工具。",[13450,13453,13456,13459],{"q":13451,"a":13452},"两周内是怎么做到上线十几个工具的？","关键在于第一天搭好的架构：分类体系、工具卡片组件、页面模板都是复用的，新增一个工具只需要写核心处理逻辑。图片格式转换用 Canvas API，压缩用 OffscreenCanvas，QR 码用开源库，文档转换用 mammoth.js，每个工具的核心代码量并不大。",{"q":13454,"a":13455},"这些工具的文件处理在哪里完成？","全部在浏览器端完成，不需要上传到服务器。图片处理用 Canvas API 和 Web Worker，文档转换用 JavaScript 库在本地解析。用户的文件不会离开设备，隐私安全有保障。",{"q":13457,"a":13458},"为什么要做图片去背景工具？","日常做素材时经常需要抠图，在线去背景工具要么要付费，要么效果差。用前端 Canvas 配合笔刷工具做了一个本地版，虽然不如 AI 模型精准，但够用且免费。后来在 8 月升级成了 ONNX 模型方案。",{"q":13460,"a":13461},"Google Analytics 和 SEO 在这个阶段就接入了吗？","是的。GA 在 2 月 14 日接入，sitemap 和 robots 在 2 月 17 日配置完成。虽然这时候流量很少，但尽早接入数据追踪能帮助后面分析用户行为。SEO 基础设施（sitemap、robots.txt、错误页面）也是越早搭好越省事。",{},"\u002Fbuilds\u002Fmetool\u002F2025-02-08-tool-explosion",{"title":13301,"description":13448},[13466,13467,13347,13355,13384,13468,13469],"在线图片处理工具","在线文档转换","前端文件处理","浏览器端图片压缩","builds\u002Fmetool\u002F2025-02-08-tool-explosion","基础架构搭好后，两周内密集上线了十几个工具：图片全家桶（格式转换、压缩、QR 码生成、去背景、长图分割）、文档工具（Word 转 PDF、Markdown 转换）、心跳魔法工具，同时接入了 Google Analytics 和基础 SEO。",[1078,1746],"fw6xObA62S7sQ5Tf0Xvu8pCMRptFYfiu3gj1gPqoWhY",{"id":13475,"title":13476,"body":13477,"date":13580,"description":13581,"draft":329,"extension":330,"faq":13582,"meta":13595,"navigation":345,"path":13596,"project":7528,"readingTime":535,"seo":13597,"seoKeywords":13598,"stem":13604,"summary":13605,"tags":13606,"updated":363,"__hash__":13607},"builds\u002Fbuilds\u002Fmetool\u002F2025-01-23-start-from-scratch.md","网上找不到称手的工具，我决定自己做一个",{"type":8,"value":13478,"toc":13574},[13479,13482,13485,13488,13491,13494,13497,13500,13503,13533,13536,13540,13546,13549,13558,13564,13568,13571],[18,13480,13481],{"id":13481},"找不到称手的工具",[14,13483,13484],{},"我的日常工作里，经常需要临时处理一些文件：裁剪图片、转换格式、给视频截字幕区域。",[14,13486,13487],{},"每次都要在网上翻一圈找在线工具。找到的要么功能不对，要么满屏广告，要么要注册才能用，要么要把文件上传到别人的服务器。",[14,13489,13490],{},"这种事情经历多了，我就想：这些操作前端完全能做，为什么不自己做一个？",[18,13492,13493],{"id":13493},"一天搭起来",[14,13495,13496],{},"2025 年 1 月 23 日，我花了一天时间把基础架构搭好了。",[14,13498,13499],{},"技术栈选了 Nuxt 3 + TypeScript + Tailwind CSS。Nuxt 的 SSG 模式可以生成纯静态页面，加载快，部署简单。文件处理全部在浏览器端完成，数据不会离开用户的设备。",[14,13501,13502],{},"第一天上线的工具：",[181,13504,13505,13515,13525],{},[184,13506,13507,13514],{},[49,13508,13509],{},[279,13510,13513],{"href":13511,"rel":13512,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fgames\u002Fsnake\u002F",[283],"贪吃蛇"," — 用来验证游戏交互能力",[184,13516,13517,13524],{},[49,13518,13519],{},[279,13520,13523],{"href":13521,"rel":13522,"target":2108},"https:\u002F\u002Fmetool.online\u002Fzh\u002Fgames\u002Fmaze\u002F",[283],"迷宫游戏"," — 带音效和移动端控制",[184,13526,13527,13532],{},[49,13528,13529],{},[279,13530,13370],{"href":13368,"rel":13531,"target":2108},[283]," — 真实需求，批量裁剪视频截图中的字幕区域",[14,13534,13535],{},"同时搭好了整个工具框架：导航栏、侧边菜单、工具卡片组件、分类体系。后面加新工具只需要写页面逻辑，框架层的事情不用再操心。",[18,13537,13539],{"id":13538},"随时随地手机也能用","随时随地，手机也能用",[14,13541,13542,13543,130],{},"做这个工具箱有一个重要的前提：",[49,13544,13545],{},"手机也能用",[14,13547,13548],{},"我不是总在电脑前，很多时候是在手机上临时需要处理个文件。所以从第一天起，移动端适配就是必须的，不是\"以后再说\"的事。",[14,13550,13551,13552,13557],{},"贪吃蛇和迷宫游戏都做了移动端触控操作，字幕裁剪支持拖拽选区。在手机浏览器里打开 ",[279,13553,13556],{"href":13554,"rel":13555,"target":2108},"https:\u002F\u002Fmetool.online",[283],"metool.online"," 就能直接用。",[14,13559,13560],{},[55,13561],{"alt":13562,"src":13563},"metool.online 首页","\u002Fb\u002Fmetool\u002Fhomepage.png",[18,13565,13567],{"id":13566},"起步很轻但框架要对","起步很轻，但框架要对",[14,13569,13570],{},"回头看，第一天最重要的不是上线了几个工具，而是把架构搭对了：分类体系、组件复用、路由规范。这些决定了后面能不能快速扩充工具，而不是每次都从头写。",[14,13572,13573],{},"工具箱刚刚开始，积压的需求还有一堆。",{"title":316,"searchDepth":317,"depth":317,"links":13575},[13576,13577,13578,13579],{"id":13481,"depth":320,"text":13481},{"id":13493,"depth":320,"text":13493},{"id":13538,"depth":320,"text":13539},{"id":13566,"depth":320,"text":13567},"2025-01-23","每次需要处理图片、裁剪字幕都要在网上翻半天，找到的工具不是功能不对就是体验太差。干脆自己做一个在线工具箱，随时随地能用。",[13583,13586,13589,13592],{"q":13584,"a":13585},"为什么要自己做在线工具箱？","日常工作中经常需要临时处理图片、裁剪视频字幕等，但网上的在线工具要么功能不匹配，要么广告太多体验差。自己做一个工具集，既能完全满足自己的需求，还能随时随地通过手机访问。",{"q":13587,"a":13588},"metool.online 用了什么技术栈？","Nuxt 3 + TypeScript + Tailwind CSS，SSG 静态生成部署。选择 Nuxt 是因为 Vue 生态成熟，SSG 模式加载快且 SEO 友好，前端能力足以处理图片、音视频等文件操作。",{"q":13590,"a":13591},"第一天做了哪些工具？","第一天上线了三个工具：贪吃蛇游戏、迷宫游戏和电影字幕裁剪。游戏是用来验证交互能力的，字幕裁剪是真实需求驱动。同时搭好了导航栏、侧边菜单、工具卡片等基础组件架构。",{"q":13593,"a":13594},"为什么不直接用现成的在线工具？","现成工具有几个痛点：功能不完全匹配自己的需求、广告干扰体验、部分工具需要上传到服务器有隐私风险。自建工具全部在浏览器端处理，数据不离开本地，而且可以按自己的习惯定制功能。",{},"\u002Fbuilds\u002Fmetool\u002F2025-01-23-start-from-scratch",{"title":13476,"description":13581},[13599,13600,13601,13468,13602,13556,13603],"在线工具箱","独立开发在线工具","Nuxt 3 工具站","自建工具集","移动端在线工具","builds\u002Fmetool\u002F2025-01-23-start-from-scratch","经常在网上找在线工具，但总找不到刚好合适的。用 Nuxt 3 + TypeScript + Tailwind CSS 从零搭建了一个在线工具箱 metool.online，第一天就上线了贪吃蛇、迷宫游戏和电影字幕裁剪三个工具。",[1078,1746],"Fnr1PEBjKKQH6aW3oegh7BDch75TqUVOxrwcGFSIfSI",[13609,13817,14109,14426,14835,15177,15489,15651,15820],{"id":13610,"title":13611,"body":13612,"cover":363,"date":11211,"description":13809,"draft":329,"extension":330,"faq":363,"meta":13810,"navigation":345,"path":13811,"publish":329,"readingTime":591,"seo":13812,"seoKeywords":363,"series":13813,"stem":13814,"summary":363,"tags":13815,"updated":363,"__hash__":13816},"tutorials\u002Ftutorials\u002Fai-agent-skill\u002Ffull-workflow.md","串联完整工作流",{"type":8,"value":13613,"toc":13794},[13614,13617,13620,13648,13651,13654,13658,13664,13668,13674,13678,13684,13688,13692,13695,13699,13702,13706,13709,13715,13718,13721,13741,13744,13747,13785,13791],[18,13615,13616],{"id":13616},"回顾我们做了什么",[14,13618,13619],{},"经过前面的学习，我们已经有了：",[181,13621,13622,13629,13635,13642],{},[184,13623,13624,13625,13628],{},"✅ ",[49,13626,13627],{},"收集 Skill"," — 把内容存入知识库",[184,13630,13624,13631,13634],{},[49,13632,13633],{},"检索 Skill"," — 语义搜索知识库",[184,13636,13637,13638,13641],{},"📝 ",[49,13639,13640],{},"整理 Skill"," — 自动打标签和归类",[184,13643,13637,13644,13647],{},[49,13645,13646],{},"输出 Skill"," — 生成报告和回答",[14,13649,13650],{},"今天把它们全部串联起来。",[18,13652,13653],{"id":13653},"完整工作流演示",[496,13655,13657],{"id":13656},"场景一日常知识收集","场景一：日常知识收集",[436,13659,13662],{"className":13660,"code":13661,"language":441},[439],"用户：把这篇文章存到知识库\n      https:\u002F\u002Fexample.com\u002Fdeep-learning-trends\n\nAgent：[收集 Skill] 抓取文章内容\n      [整理 Skill] 生成摘要 + 标签\n      \n✅ 已保存到知识库\n📝 摘要：深度学习领域的 5 个新趋势...\n🏷️ 标签：AI, 深度学习, 趋势\n📁 位置：data\u002Farticles\u002F2026-03-27-deep-learning-trends.md\n",[79,13663,13661],{"__ignoreMap":316},[496,13665,13667],{"id":13666},"场景二知识检索-问答","场景二：知识检索 + 问答",[436,13669,13672],{"className":13670,"code":13671,"language":441},[439],"用户：我之前存过哪些关于学习方法的内容？帮我总结一下。\n\nAgent：[检索 Skill] 找到 8 篇相关内容\n      [输出 Skill] 综合分析并生成总结\n\n📚 找到 8 篇相关内容，核心观点总结：\n\n1. **间隔重复** — 分散学习比集中学习效果好 3 倍\n2. **主动回忆** — 做题比看书记得更牢\n3. **睡眠整合** — 学完立即睡觉，记忆效果翻倍\n4. **跨学科迁移** — 用已知领域的模型理解新领域\n",[79,13673,13671],{"__ignoreMap":316},[496,13675,13677],{"id":13676},"场景三知识驱动的创作","场景三：知识驱动的创作",[436,13679,13682],{"className":13680,"code":13681,"language":441},[439],"用户：根据我知识库里关于 AI 教育的内容，\n      帮我写一篇公众号文章。\n\nAgent：[检索 Skill] 找到相关知识\n      [输出 Skill] 基于知识库内容创作\n\n📝 生成文章：《AI 时代，我们该教孩子什么》\n   - 引用了你知识库中 5 篇相关笔记\n   - 所有观点都有知识库来源支撑\n",[79,13683,13681],{"__ignoreMap":316},[18,13685,13687],{"id":13686},"skill-编排的核心概念","Skill 编排的核心概念",[496,13689,13691],{"id":13690},"_1-顺序编排","1. 顺序编排",[14,13693,13694],{},"A → B → C，每一步的输出是下一步的输入。",[496,13696,13698],{"id":13697},"_2-并行编排","2. 并行编排",[14,13700,13701],{},"A 和 B 同时执行，结果汇总后给 C。",[496,13703,13705],{"id":13704},"_3-条件编排","3. 条件编排",[14,13707,13708],{},"根据 A 的结果，决定执行 B 还是 C。",[436,13710,13713],{"className":13711,"code":13712,"language":441},[439],"收集新内容\n    ↓\n判断内容类型\n    ├── 如果是文章 → 生成长摘要\n    ├── 如果是书签 → 生成短标注\n    └── 如果是笔记 → 直接保存\n",[79,13714,13712],{"__ignoreMap":316},[18,13716,13717],{"id":13717},"部署和分享",[14,13719,13720],{},"当你的 Skill 组合稳定后，可以：",[1193,13722,13723,13729,13735],{},[184,13724,13725,13728],{},[49,13726,13727],{},"打包成项目"," — 上传到 GitHub，让别人也能用",[184,13730,13731,13734],{},[49,13732,13733],{},"写使用文档"," — 说明每个 Skill 的功能和用法",[184,13736,13737,13740],{},[49,13738,13739],{},"持续迭代"," — 根据使用反馈不断优化",[18,13742,13743],{"id":13743},"系列总结",[14,13745,13746],{},"恭喜你完成了整个系列！我们学到了：",[949,13748,13749,13759],{},[952,13750,13751],{},[955,13752,13753,13756],{},[958,13754,13755],{},"章节",[958,13757,13758],{},"核心内容",[965,13760,13761,13769,13777],{},[955,13762,13763,13766],{},[970,13764,13765],{},"第一章：入门",[970,13767,13768],{},"Skill 是什么、怎么安装、怎么组合使用",[955,13770,13771,13774],{},[970,13772,13773],{},"第二章：进阶",[970,13775,13776],{},"Skill 的结构、怎么制作、提示词工程",[955,13778,13779,13782],{},[970,13780,13781],{},"第三章：实战",[970,13783,13784],{},"完整项目实战、多 Skill 串联",[14,13786,13787,13790],{},[49,13788,13789],{},"记住：Skill 的本质是把人类的专业知识变成 AI 可以理解和执行的指令。"," 掌握了这个能力，你就掌握了 AI 时代最重要的技能之一。",[14,13792,13793],{},"Happy Skilling! 🚀",{"title":316,"searchDepth":317,"depth":317,"links":13795},[13796,13797,13802,13807,13808],{"id":13616,"depth":320,"text":13616},{"id":13653,"depth":320,"text":13653,"children":13798},[13799,13800,13801],{"id":13656,"depth":317,"text":13657},{"id":13666,"depth":317,"text":13667},{"id":13676,"depth":317,"text":13677},{"id":13686,"depth":320,"text":13687,"children":13803},[13804,13805,13806],{"id":13690,"depth":317,"text":13691},{"id":13697,"depth":317,"text":13698},{"id":13704,"depth":317,"text":13705},{"id":13717,"depth":320,"text":13717},{"id":13743,"depth":320,"text":13743},"把收集、整理、检索、输出四个 Skill 串联成一个完整的知识库助手，体验 Skill 组合的威力。",{},"\u002Ftutorials\u002Fai-agent-skill\u002Ffull-workflow",{"title":13611,"description":13809},"ai-agent-skill","tutorials\u002Fai-agent-skill\u002Ffull-workflow",[361,1078],"D4AB5t4iOcp5DeW3AzCB2htYlWSd7s9V1UD2EAa3npI",{"id":13818,"title":13819,"body":13820,"cover":363,"date":11211,"description":14102,"draft":329,"extension":330,"faq":363,"meta":14103,"navigation":345,"path":14104,"publish":329,"readingTime":347,"seo":14105,"seoKeywords":363,"series":13813,"stem":14106,"summary":363,"tags":14107,"updated":363,"__hash__":14108},"tutorials\u002Ftutorials\u002Fai-agent-skill\u002Freal-project-setup.md","实战项目：搭建个人知识库助手",{"type":8,"value":13821,"toc":14090},[13822,13825,13828,13854,13857,13860,13901,13904,13910,13913,13917,13946,13950,13985,13989,13992,14067,14070,14073,14079,14082,14084,14087],[18,13823,13824],{"id":13824},"项目目标",[14,13826,13827],{},"我们要做一个「个人知识库助手」，它能够：",[1193,13829,13830,13836,13842,13848],{},[184,13831,13832,13835],{},[49,13833,13834],{},"收集"," — 把网页、文章、笔记存入知识库",[184,13837,13838,13841],{},[49,13839,13840],{},"整理"," — 自动打标签、归类、生成摘要",[184,13843,13844,13847],{},[49,13845,13846],{},"检索"," — 用自然语言搜索知识库",[184,13849,13850,13853],{},[49,13851,13852],{},"输出"," — 根据知识库内容回答问题或生成报告",[18,13855,13856],{"id":13856},"为什么选这个项目",[14,13858,13859],{},"这个项目完美覆盖了 Skill 的三个核心场景：",[949,13861,13862,13871],{},[952,13863,13864],{},[955,13865,13866,13868],{},[958,13867,960],{},[958,13869,13870],{},"涉及的 Skill",[965,13872,13873,13880,13887,13894],{},[955,13874,13875,13877],{},[970,13876,13834],{},[970,13878,13879],{},"网页抓取 Skill、PDF 读取 Skill",[955,13881,13882,13884],{},[970,13883,13840],{},[970,13885,13886],{},"文本分析 Skill、标签生成 Skill",[955,13888,13889,13891],{},[970,13890,13846],{},[970,13892,13893],{},"向量搜索 Skill",[955,13895,13896,13898],{},[970,13897,13852],{},[970,13899,13900],{},"文档生成 Skill",[18,13902,13903],{"id":13903},"架构设计",[436,13905,13908],{"className":13906,"code":13907,"language":441},[439],"用户输入 → Agent（调度中心）\n              ├── 收集 Skill → 获取内容\n              ├── 整理 Skill → 打标签、摘要\n              ├── 检索 Skill → 语义搜索\n              └── 输出 Skill → 生成回答\n                    ↓\n              知识库（本地文件\u002F数据库）\n",[79,13909,13907],{"__ignoreMap":316},[18,13911,13912],{"id":13912},"准备工作",[496,13914,13916],{"id":13915},"_1-创建项目目录","1. 创建项目目录",[436,13918,13920],{"className":501,"code":13919,"language":503,"meta":316,"style":316},"mkdir my-knowledge-base\ncd my-knowledge-base\nmkdir skills data\n",[79,13921,13922,13930,13936],{"__ignoreMap":316},[507,13923,13924,13927],{"class":509,"line":510},[507,13925,13926],{"class":519},"mkdir",[507,13928,13929],{"class":523}," my-knowledge-base\n",[507,13931,13932,13934],{"class":509,"line":320},[507,13933,780],{"class":579},[507,13935,13929],{"class":523},[507,13937,13938,13940,13943],{"class":509,"line":317},[507,13939,13926],{"class":519},[507,13941,13942],{"class":523}," skills",[507,13944,13945],{"class":523}," data\n",[496,13947,13949],{"id":13948},"_2-准备知识库目录","2. 准备知识库目录",[436,13951,13953],{"className":501,"code":13952,"language":503,"meta":316,"style":316},"mkdir data\u002Farticles    # 文章\nmkdir data\u002Fnotes       # 笔记\nmkdir data\u002Fbookmarks   # 书签\n",[79,13954,13955,13965,13975],{"__ignoreMap":316},[507,13956,13957,13959,13962],{"class":509,"line":510},[507,13958,13926],{"class":519},[507,13960,13961],{"class":523}," data\u002Farticles",[507,13963,13964],{"class":513},"    # 文章\n",[507,13966,13967,13969,13972],{"class":509,"line":320},[507,13968,13926],{"class":519},[507,13970,13971],{"class":523}," data\u002Fnotes",[507,13973,13974],{"class":513},"       # 笔记\n",[507,13976,13977,13979,13982],{"class":509,"line":317},[507,13978,13926],{"class":519},[507,13980,13981],{"class":523}," data\u002Fbookmarks",[507,13983,13984],{"class":513},"   # 书签\n",[496,13986,13988],{"id":13987},"_3-创建收集-skill","3. 创建收集 Skill",[14,13990,13991],{},"第一个 Skill 负责把内容存入知识库：",[436,13993,13997],{"className":13994,"code":13995,"language":13996,"meta":316,"style":316},"language-markdown shiki shiki-themes github-light-default github-dark-default","# 知识收集 Skill\n\n## 功能\n将用户提供的内容保存到知识库中。\n\n## 支持的输入\n- URL（自动抓取网页内容）\n- 文本（直接保存）\n- 文件路径（读取文件内容）\n\n## 保存规则\n- 文件名：{日期}-{标题}.md\n- 自动生成摘要（不超过 100 字）\n- 自动推荐 2-3 个标签\n","markdown",[79,13998,13999,14004,14008,14013,14018,14022,14027,14032,14037,14042,14046,14051,14056,14062],{"__ignoreMap":316},[507,14000,14001],{"class":509,"line":510},[507,14002,14003],{},"# 知识收集 Skill\n",[507,14005,14006],{"class":509,"line":320},[507,14007,532],{"emptyLinePlaceholder":345},[507,14009,14010],{"class":509,"line":317},[507,14011,14012],{},"## 功能\n",[507,14014,14015],{"class":509,"line":535},[507,14016,14017],{},"将用户提供的内容保存到知识库中。\n",[507,14019,14020],{"class":509,"line":541},[507,14021,532],{"emptyLinePlaceholder":345},[507,14023,14024],{"class":509,"line":557},[507,14025,14026],{},"## 支持的输入\n",[507,14028,14029],{"class":509,"line":562},[507,14030,14031],{},"- URL（自动抓取网页内容）\n",[507,14033,14034],{"class":509,"line":347},[507,14035,14036],{},"- 文本（直接保存）\n",[507,14038,14039],{"class":509,"line":586},[507,14040,14041],{},"- 文件路径（读取文件内容）\n",[507,14043,14044],{"class":509,"line":591},[507,14045,532],{"emptyLinePlaceholder":345},[507,14047,14048],{"class":509,"line":597},[507,14049,14050],{},"## 保存规则\n",[507,14052,14053],{"class":509,"line":2519},[507,14054,14055],{},"- 文件名：{日期}-{标题}.md\n",[507,14057,14059],{"class":509,"line":14058},13,[507,14060,14061],{},"- 自动生成摘要（不超过 100 字）\n",[507,14063,14064],{"class":509,"line":6174},[507,14065,14066],{},"- 自动推荐 2-3 个标签\n",[18,14068,14069],{"id":14069},"测试收集功能",[14,14071,14072],{},"试试把一篇文章存入知识库：",[436,14074,14077],{"className":14075,"code":14076,"language":441},[439],"帮我把这篇文章存入知识库：\nhttps:\u002F\u002Fexample.com\u002Farticle-about-ai\n",[79,14078,14076],{"__ignoreMap":316},[14,14080,14081],{},"Agent 会调用收集 Skill，自动完成抓取、摘要、打标签、保存。",[18,14083,10752],{"id":10752},[14,14085,14086],{},"基础架构搭好了，下一篇我们来实现最核心的检索功能。",[1034,14088,14089],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTDnQ, html code.shiki .sTDnQ{--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .sU953, html code.shiki .sU953{--shiki-default:#6E7781;--shiki-dark:#8B949E}",{"title":316,"searchDepth":317,"depth":317,"links":14091},[14092,14093,14094,14095,14100,14101],{"id":13824,"depth":320,"text":13824},{"id":13856,"depth":320,"text":13856},{"id":13903,"depth":320,"text":13903},{"id":13912,"depth":320,"text":13912,"children":14096},[14097,14098,14099],{"id":13915,"depth":317,"text":13916},{"id":13948,"depth":317,"text":13949},{"id":13987,"depth":317,"text":13988},{"id":14069,"depth":320,"text":14069},{"id":10752,"depth":320,"text":10752},"用一个完整的实战项目串联前两章所学，搭建一个能管理和检索个人知识库的 AI 助手。",{},"\u002Ftutorials\u002Fai-agent-skill\u002Freal-project-setup",{"title":13819,"description":14102},"tutorials\u002Fai-agent-skill\u002Freal-project-setup",[361,1078],"-rV8-rBREWB7rbLykdChM3ohV7cahipWnIn9LC5_Cu4",{"id":14110,"title":14111,"body":14112,"cover":363,"date":11211,"description":14419,"draft":329,"extension":330,"faq":363,"meta":14420,"navigation":345,"path":14421,"publish":329,"readingTime":586,"seo":14422,"seoKeywords":363,"series":13813,"stem":14423,"summary":363,"tags":14424,"updated":363,"__hash__":14425},"tutorials\u002Ftutorials\u002Fai-agent-skill\u002Fsmart-search.md","实现智能检索",{"type":8,"value":14113,"toc":14405},[14114,14118,14121,14124,14152,14156,14159,14170,14174,14257,14260,14362,14365,14368,14374,14377,14380,14383,14389,14392,14398,14400,14403],[18,14115,14117],{"id":14116},"关键词搜索-vs-语义搜索","关键词搜索 vs 语义搜索",[14,14119,14120],{},"传统搜索靠「关键词匹配」，你搜「如何提高学习效率」，只能匹配包含这些字的内容。",[14,14122,14123],{},"语义搜索靠「理解含义」：",[949,14125,14126,14139],{},[952,14127,14128],{},[955,14129,14130,14133,14136],{},[958,14131,14132],{},"你的问题",[958,14134,14135],{},"关键词搜索能找到",[958,14137,14138],{},"语义搜索能找到",[965,14140,14141],{},[955,14142,14143,14146,14149],{},[970,14144,14145],{},"\"如何提高学习效率\"",[970,14147,14148],{},"包含\"学习效率\"的文章",[970,14150,14151],{},"包含\"学习效率\"的 + 讲\"番茄工作法\"的 + 讲\"间隔重复\"的",[18,14153,14155],{"id":14154},"制作检索-skill","制作检索 Skill",[496,14157,14158],{"id":14158},"核心思路",[1193,14160,14161,14164,14167],{},[184,14162,14163],{},"把知识库中每篇内容转成「向量」（一串数字）",[184,14165,14166],{},"用户提问时，把问题也转成向量",[184,14168,14169],{},"找出与问题向量最接近的内容",[496,14171,14173],{"id":14172},"skill-定义","Skill 定义",[436,14175,14177],{"className":13994,"code":14176,"language":13996,"meta":316,"style":316},"# 知识检索 Skill\n\n## 功能\n在个人知识库中进行语义搜索，找到与用户问题最相关的内容。\n\n## 工作流程\n1. 接收用户的自然语言问题\n2. 搜索知识库中语义最接近的 5 篇内容\n3. 返回相关内容的标题、摘要和相关度评分\n\n## 输出格式\n按相关度排序，每条结果包含：\n- 标题\n- 摘要（50 字以内）\n- 来源文件路径\n- 相关度（高\u002F中\u002F低）\n",[79,14178,14179,14184,14188,14192,14197,14201,14206,14211,14216,14221,14225,14230,14235,14240,14245,14251],{"__ignoreMap":316},[507,14180,14181],{"class":509,"line":510},[507,14182,14183],{},"# 知识检索 Skill\n",[507,14185,14186],{"class":509,"line":320},[507,14187,532],{"emptyLinePlaceholder":345},[507,14189,14190],{"class":509,"line":317},[507,14191,14012],{},[507,14193,14194],{"class":509,"line":535},[507,14195,14196],{},"在个人知识库中进行语义搜索，找到与用户问题最相关的内容。\n",[507,14198,14199],{"class":509,"line":541},[507,14200,532],{"emptyLinePlaceholder":345},[507,14202,14203],{"class":509,"line":557},[507,14204,14205],{},"## 工作流程\n",[507,14207,14208],{"class":509,"line":562},[507,14209,14210],{},"1. 接收用户的自然语言问题\n",[507,14212,14213],{"class":509,"line":347},[507,14214,14215],{},"2. 搜索知识库中语义最接近的 5 篇内容\n",[507,14217,14218],{"class":509,"line":586},[507,14219,14220],{},"3. 返回相关内容的标题、摘要和相关度评分\n",[507,14222,14223],{"class":509,"line":591},[507,14224,532],{"emptyLinePlaceholder":345},[507,14226,14227],{"class":509,"line":597},[507,14228,14229],{},"## 输出格式\n",[507,14231,14232],{"class":509,"line":2519},[507,14233,14234],{},"按相关度排序，每条结果包含：\n",[507,14236,14237],{"class":509,"line":14058},[507,14238,14239],{},"- 标题\n",[507,14241,14242],{"class":509,"line":6174},[507,14243,14244],{},"- 摘要（50 字以内）\n",[507,14246,14248],{"class":509,"line":14247},15,[507,14249,14250],{},"- 来源文件路径\n",[507,14252,14254],{"class":509,"line":14253},16,[507,14255,14256],{},"- 相关度（高\u002F中\u002F低）\n",[496,14258,14259],{"id":14259},"配合工具脚本",[436,14261,14263],{"className":8443,"code":14262,"language":8445,"meta":316,"style":316},"# search.py\nimport os\nimport json\n\ndef search_knowledge_base(query, data_dir=\"data\"):\n    \"\"\"搜索知识库\"\"\"\n    results = []\n    for root, dirs, files in os.walk(data_dir):\n        for file in files:\n            if file.endswith('.md'):\n                filepath = os.path.join(root, file)\n                with open(filepath, 'r') as f:\n                    content = f.read()\n                results.append({\n                    'title': file.replace('.md', ''),\n                    'path': filepath,\n                    'content': content[:200]\n                })\n    return results\n",[79,14264,14265,14270,14275,14280,14284,14289,14294,14299,14304,14309,14314,14319,14324,14329,14334,14339,14344,14350,14356],{"__ignoreMap":316},[507,14266,14267],{"class":509,"line":510},[507,14268,14269],{},"# search.py\n",[507,14271,14272],{"class":509,"line":320},[507,14273,14274],{},"import os\n",[507,14276,14277],{"class":509,"line":317},[507,14278,14279],{},"import json\n",[507,14281,14282],{"class":509,"line":535},[507,14283,532],{"emptyLinePlaceholder":345},[507,14285,14286],{"class":509,"line":541},[507,14287,14288],{},"def search_knowledge_base(query, data_dir=\"data\"):\n",[507,14290,14291],{"class":509,"line":557},[507,14292,14293],{},"    \"\"\"搜索知识库\"\"\"\n",[507,14295,14296],{"class":509,"line":562},[507,14297,14298],{},"    results = []\n",[507,14300,14301],{"class":509,"line":347},[507,14302,14303],{},"    for root, dirs, files in os.walk(data_dir):\n",[507,14305,14306],{"class":509,"line":586},[507,14307,14308],{},"        for file in files:\n",[507,14310,14311],{"class":509,"line":591},[507,14312,14313],{},"            if file.endswith('.md'):\n",[507,14315,14316],{"class":509,"line":597},[507,14317,14318],{},"                filepath = os.path.join(root, file)\n",[507,14320,14321],{"class":509,"line":2519},[507,14322,14323],{},"                with open(filepath, 'r') as f:\n",[507,14325,14326],{"class":509,"line":14058},[507,14327,14328],{},"                    content = f.read()\n",[507,14330,14331],{"class":509,"line":6174},[507,14332,14333],{},"                results.append({\n",[507,14335,14336],{"class":509,"line":14247},[507,14337,14338],{},"                    'title': file.replace('.md', ''),\n",[507,14340,14341],{"class":509,"line":14253},[507,14342,14343],{},"                    'path': filepath,\n",[507,14345,14347],{"class":509,"line":14346},17,[507,14348,14349],{},"                    'content': content[:200]\n",[507,14351,14353],{"class":509,"line":14352},18,[507,14354,14355],{},"                })\n",[507,14357,14359],{"class":509,"line":14358},19,[507,14360,14361],{},"    return results\n",[18,14363,14364],{"id":14364},"测试检索",[14,14366,14367],{},"存入几篇不同主题的内容后，试试搜索：",[436,14369,14372],{"className":14370,"code":14371,"language":441},[439],"在我的知识库里找找关于「提升记忆力」的内容\n",[79,14373,14371],{"__ignoreMap":316},[14,14375,14376],{},"Agent 不仅会找到直接提到「记忆力」的内容，还会找到讲「间隔重复」「睡眠与学习」等相关主题的笔记。",[18,14378,14379],{"id":14379},"优化搜索体验",[496,14381,14382],{"id":14382},"支持追问",[436,14384,14387],{"className":14385,"code":14386,"language":441},[439],"用户：找找关于 AI 的内容\nAgent：找到 15 篇相关内容，以下是最相关的 5 篇...\n用户：只看关于 AI 教育的\nAgent：缩小范围后找到 3 篇...\n",[79,14388,14386],{"__ignoreMap":316},[496,14390,14391],{"id":14391},"支持总结",[436,14393,14396],{"className":14394,"code":14395,"language":441},[439],"用户：总结一下我知识库里关于学习方法的所有内容\nAgent：[读取相关文章] → [生成综合总结]\n",[79,14397,14395],{"__ignoreMap":316},[18,14399,10752],{"id":10752},[14,14401,14402],{},"检索功能有了，最后一篇我们来把所有 Skill 串联起来，实现一个完整的工作流。",[1034,14404,8664],{},{"title":316,"searchDepth":317,"depth":317,"links":14406},[14407,14408,14413,14414,14418],{"id":14116,"depth":320,"text":14117},{"id":14154,"depth":320,"text":14155,"children":14409},[14410,14411,14412],{"id":14158,"depth":317,"text":14158},{"id":14172,"depth":317,"text":14173},{"id":14259,"depth":317,"text":14259},{"id":14364,"depth":320,"text":14364},{"id":14379,"depth":320,"text":14379,"children":14415},[14416,14417],{"id":14382,"depth":317,"text":14382},{"id":14391,"depth":317,"text":14391},{"id":10752,"depth":320,"text":10752},"为知识库添加语义搜索能力，让 AI 真正理解你的问题而不是简单匹配关键词。",{},"\u002Ftutorials\u002Fai-agent-skill\u002Fsmart-search",{"title":14111,"description":14419},"tutorials\u002Fai-agent-skill\u002Fsmart-search",[361],"L_3lW_kUG6oqDLJchivECABoSHJa7hmyXrJIl4bIK5A",{"id":14427,"title":14428,"body":14429,"cover":363,"date":11350,"description":14828,"draft":329,"extension":330,"faq":363,"meta":14829,"navigation":345,"path":14830,"publish":329,"readingTime":2519,"seo":14831,"seoKeywords":363,"series":13813,"stem":14832,"summary":363,"tags":14833,"updated":363,"__hash__":14834},"tutorials\u002Ftutorials\u002Fai-agent-skill\u002Fmake-first-skill.md","动手制作你的第一个 Skill",{"type":8,"value":14430,"toc":14815},[14431,14434,14437,14445,14448,14452,14455,14473,14479,14608,14612,14615,14734,14738,14741,14747,14750,14754,14757,14783,14786,14790,14793,14797,14800,14804,14807,14809,14812],[18,14432,14433],{"id":14433},"我们要做什么",[14,14435,14436],{},"今天我们来制作一个「周报生成器」Skill：",[181,14438,14439,14442],{},[184,14440,14441],{},"输入：本周做的事情（自然语言描述）",[184,14443,14444],{},"输出：格式化的周报（Markdown 格式）",[14,14446,14447],{},"这个 Skill 虽然简单，但涵盖了制作 Skill 的核心流程。",[18,14449,14451],{"id":14450},"第一步创建-skill-文件","第一步：创建 Skill 文件",[14,14453,14454],{},"在你的工作目录下创建一个文件夹：",[436,14456,14458],{"className":501,"code":14457,"language":503,"meta":316,"style":316},"mkdir weekly-report-skill\ncd weekly-report-skill\n",[79,14459,14460,14467],{"__ignoreMap":316},[507,14461,14462,14464],{"class":509,"line":510},[507,14463,13926],{"class":519},[507,14465,14466],{"class":523}," weekly-report-skill\n",[507,14468,14469,14471],{"class":509,"line":320},[507,14470,780],{"class":579},[507,14472,14466],{"class":523},[14,14474,14475,14476,3154],{},"创建主文件 ",[79,14477,14478],{},"skill.md",[436,14480,14482],{"className":13994,"code":14481,"language":13996,"meta":316,"style":316},"# 周报生成器\n\n## 功能描述\n根据用户描述的本周工作内容，生成结构化的周报。\n\n## 触发场景\n当用户提到「写周报」「生成周报」「本周总结」时使用此 Skill。\n\n## 周报模板\n\n### 本周工作\n- 按项目分组\n- 每个项目列出完成的具体任务\n- 标注任务状态（已完成\u002F进行中\u002F已延期）\n\n### 关键成果\n- 提炼 2-3 个最重要的成果\n- 用数据量化（如果可能）\n\n### 下周计划\n- 根据本周进展，推断下周重点\n- 列出 3-5 个计划项\n\n### 需要支持\n- 如果有阻塞项，列出需要的支持\n",[79,14483,14484,14489,14493,14498,14503,14507,14512,14517,14521,14526,14530,14535,14540,14545,14550,14554,14559,14564,14569,14573,14579,14585,14591,14596,14602],{"__ignoreMap":316},[507,14485,14486],{"class":509,"line":510},[507,14487,14488],{},"# 周报生成器\n",[507,14490,14491],{"class":509,"line":320},[507,14492,532],{"emptyLinePlaceholder":345},[507,14494,14495],{"class":509,"line":317},[507,14496,14497],{},"## 功能描述\n",[507,14499,14500],{"class":509,"line":535},[507,14501,14502],{},"根据用户描述的本周工作内容，生成结构化的周报。\n",[507,14504,14505],{"class":509,"line":541},[507,14506,532],{"emptyLinePlaceholder":345},[507,14508,14509],{"class":509,"line":557},[507,14510,14511],{},"## 触发场景\n",[507,14513,14514],{"class":509,"line":562},[507,14515,14516],{},"当用户提到「写周报」「生成周报」「本周总结」时使用此 Skill。\n",[507,14518,14519],{"class":509,"line":347},[507,14520,532],{"emptyLinePlaceholder":345},[507,14522,14523],{"class":509,"line":586},[507,14524,14525],{},"## 周报模板\n",[507,14527,14528],{"class":509,"line":591},[507,14529,532],{"emptyLinePlaceholder":345},[507,14531,14532],{"class":509,"line":597},[507,14533,14534],{},"### 本周工作\n",[507,14536,14537],{"class":509,"line":2519},[507,14538,14539],{},"- 按项目分组\n",[507,14541,14542],{"class":509,"line":14058},[507,14543,14544],{},"- 每个项目列出完成的具体任务\n",[507,14546,14547],{"class":509,"line":6174},[507,14548,14549],{},"- 标注任务状态（已完成\u002F进行中\u002F已延期）\n",[507,14551,14552],{"class":509,"line":14247},[507,14553,532],{"emptyLinePlaceholder":345},[507,14555,14556],{"class":509,"line":14253},[507,14557,14558],{},"### 关键成果\n",[507,14560,14561],{"class":509,"line":14346},[507,14562,14563],{},"- 提炼 2-3 个最重要的成果\n",[507,14565,14566],{"class":509,"line":14352},[507,14567,14568],{},"- 用数据量化（如果可能）\n",[507,14570,14571],{"class":509,"line":14358},[507,14572,532],{"emptyLinePlaceholder":345},[507,14574,14576],{"class":509,"line":14575},20,[507,14577,14578],{},"### 下周计划\n",[507,14580,14582],{"class":509,"line":14581},21,[507,14583,14584],{},"- 根据本周进展，推断下周重点\n",[507,14586,14588],{"class":509,"line":14587},22,[507,14589,14590],{},"- 列出 3-5 个计划项\n",[507,14592,14594],{"class":509,"line":14593},23,[507,14595,532],{"emptyLinePlaceholder":345},[507,14597,14599],{"class":509,"line":14598},24,[507,14600,14601],{},"### 需要支持\n",[507,14603,14605],{"class":509,"line":14604},25,[507,14606,14607],{},"- 如果有阻塞项，列出需要的支持\n",[18,14609,14611],{"id":14610},"第二步添加示例","第二步：添加示例",[14,14613,14614],{},"好的 Skill 需要示例来帮助 Agent 理解你想要的输出风格：",[436,14616,14618],{"className":13994,"code":14617,"language":13996,"meta":316,"style":316},"## 示例\n\n### 输入\n\"这周主要在做用户系统的重构，完成了登录模块的改造，\n注册模块还在做。另外修了 3 个线上 bug。\"\n\n### 输出\n**本周工作**\n\n**用户系统重构**\n- ✅ 登录模块改造 — 已完成\n- 🔄 注册模块改造 — 进行中\n\n**线上维护**\n- ✅ 修复 3 个线上 bug\n\n**关键成果**\n- 登录模块重构完成，代码量减少约 30%\n- 线上 bug 清零\n\n**下周计划**\n- 完成注册模块改造\n- 用户系统重构联调测试\n- 编写用户系统技术文档\n",[79,14619,14620,14625,14629,14634,14639,14644,14648,14653,14658,14662,14667,14672,14677,14681,14686,14691,14695,14700,14705,14710,14714,14719,14724,14729],{"__ignoreMap":316},[507,14621,14622],{"class":509,"line":510},[507,14623,14624],{},"## 示例\n",[507,14626,14627],{"class":509,"line":320},[507,14628,532],{"emptyLinePlaceholder":345},[507,14630,14631],{"class":509,"line":317},[507,14632,14633],{},"### 输入\n",[507,14635,14636],{"class":509,"line":535},[507,14637,14638],{},"\"这周主要在做用户系统的重构，完成了登录模块的改造，\n",[507,14640,14641],{"class":509,"line":541},[507,14642,14643],{},"注册模块还在做。另外修了 3 个线上 bug。\"\n",[507,14645,14646],{"class":509,"line":557},[507,14647,532],{"emptyLinePlaceholder":345},[507,14649,14650],{"class":509,"line":562},[507,14651,14652],{},"### 输出\n",[507,14654,14655],{"class":509,"line":347},[507,14656,14657],{},"**本周工作**\n",[507,14659,14660],{"class":509,"line":586},[507,14661,532],{"emptyLinePlaceholder":345},[507,14663,14664],{"class":509,"line":591},[507,14665,14666],{},"**用户系统重构**\n",[507,14668,14669],{"class":509,"line":597},[507,14670,14671],{},"- ✅ 登录模块改造 — 已完成\n",[507,14673,14674],{"class":509,"line":2519},[507,14675,14676],{},"- 🔄 注册模块改造 — 进行中\n",[507,14678,14679],{"class":509,"line":14058},[507,14680,532],{"emptyLinePlaceholder":345},[507,14682,14683],{"class":509,"line":6174},[507,14684,14685],{},"**线上维护**\n",[507,14687,14688],{"class":509,"line":14247},[507,14689,14690],{},"- ✅ 修复 3 个线上 bug\n",[507,14692,14693],{"class":509,"line":14253},[507,14694,532],{"emptyLinePlaceholder":345},[507,14696,14697],{"class":509,"line":14346},[507,14698,14699],{},"**关键成果**\n",[507,14701,14702],{"class":509,"line":14352},[507,14703,14704],{},"- 登录模块重构完成，代码量减少约 30%\n",[507,14706,14707],{"class":509,"line":14358},[507,14708,14709],{},"- 线上 bug 清零\n",[507,14711,14712],{"class":509,"line":14575},[507,14713,532],{"emptyLinePlaceholder":345},[507,14715,14716],{"class":509,"line":14581},[507,14717,14718],{},"**下周计划**\n",[507,14720,14721],{"class":509,"line":14587},[507,14722,14723],{},"- 完成注册模块改造\n",[507,14725,14726],{"class":509,"line":14593},[507,14727,14728],{},"- 用户系统重构联调测试\n",[507,14730,14731],{"class":509,"line":14598},[507,14732,14733],{},"- 编写用户系统技术文档\n",[18,14735,14737],{"id":14736},"第三步测试-skill","第三步：测试 Skill",[14,14739,14740],{},"把 Skill 加载到你的 Agent 中，然后试试：",[436,14742,14745],{"className":14743,"code":14744,"language":441},[439],"我这周做了：\n1. 完成了首页的 redesign\n2. 和设计师对了移动端适配方案\n3. 帮后端同事排查了一个数据库慢查询\n4. 参加了两次技术分享会\n",[79,14746,14744],{"__ignoreMap":316},[14,14748,14749],{},"观察输出是否符合预期。如果不满意，回去调整模板和示例。",[18,14751,14753],{"id":14752},"第四步迭代优化","第四步：迭代优化",[14,14755,14756],{},"制作 Skill 是一个迭代的过程：",[1193,14758,14759,14765,14771,14777],{},[184,14760,14761,14764],{},[49,14762,14763],{},"写初版"," → 测试 → 发现问题",[184,14766,14767,14770],{},[49,14768,14769],{},"加示例"," → 测试 → 输出更稳定",[184,14772,14773,14776],{},[49,14774,14775],{},"加约束"," → 测试 → 风格更统一",[184,14778,14779,14782],{},[49,14780,14781],{},"加边界处理"," → 测试 → 更健壮",[18,14784,14785],{"id":14785},"常见陷阱",[496,14787,14789],{"id":14788},"_1-描述太笼统","1. 描述太笼统",[14,14791,14792],{},"❌ \"帮用户写周报\"\n✅ \"根据用户描述的工作内容，按项目分组生成结构化周报\"",[496,14794,14796],{"id":14795},"_2-没有示例","2. 没有示例",[14,14798,14799],{},"没有示例的 Skill 就像没有说明书的产品，Agent 只能猜你想要什么。",[496,14801,14803],{"id":14802},"_3-约束太死","3. 约束太死",[14,14805,14806],{},"不要规定每一个细节，给 Agent 留一些灵活空间。",[18,14808,10752],{"id":10752},[14,14810,14811],{},"恭喜你制作了第一个 Skill！下一篇我们来学习提示词工程的技巧，让你的 Skill 更强大。",[1034,14813,14814],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTDnQ, html code.shiki .sTDnQ{--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .sHrmB, html code.shiki .sHrmB{--shiki-default:#0550AE;--shiki-dark:#79C0FF}",{"title":316,"searchDepth":317,"depth":317,"links":14816},[14817,14818,14819,14820,14821,14822,14827],{"id":14433,"depth":320,"text":14433},{"id":14450,"depth":320,"text":14451},{"id":14610,"depth":320,"text":14611},{"id":14736,"depth":320,"text":14737},{"id":14752,"depth":320,"text":14753},{"id":14785,"depth":320,"text":14785,"children":14823},[14824,14825,14826],{"id":14788,"depth":317,"text":14789},{"id":14795,"depth":317,"text":14796},{"id":14802,"depth":317,"text":14803},{"id":10752,"depth":320,"text":10752},"从零开始制作一个实用的 Skill，掌握 Skill 开发的完整流程。",{},"\u002Ftutorials\u002Fai-agent-skill\u002Fmake-first-skill",{"title":14428,"description":14828},"tutorials\u002Fai-agent-skill\u002Fmake-first-skill",[361],"1vd9OF_cmXbS-6MdnXdJAn8xG9GmB58Q09mpXGfj-M4",{"id":14836,"title":14837,"body":14838,"cover":363,"date":11350,"description":15170,"draft":329,"extension":330,"faq":363,"meta":15171,"navigation":345,"path":15172,"publish":329,"readingTime":591,"seo":15173,"seoKeywords":363,"series":13813,"stem":15174,"summary":363,"tags":15175,"updated":363,"__hash__":15176},"tutorials\u002Ftutorials\u002Fai-agent-skill\u002Fprompt-engineering.md","Skill 中的提示词工程",{"type":8,"value":14839,"toc":15155},[14840,14844,14847,14850,14854,14857,14872,14875,14879,14882,14921,14925,14928,14963,14966,14970,14973,14998,15002,15005,15011,15015,15018,15021,15030,15033,15130,15133,15136,15139,15150,15153],[18,14841,14843],{"id":14842},"提示词工程-skill-的灵魂","提示词工程 = Skill 的灵魂",[14,14845,14846],{},"一个 Skill 的好坏，80% 取决于提示词的质量。同样的功能，好的提示词和差的提示词，产出的差距可能是天壤之别。",[18,14848,14849],{"id":14849},"五个核心原则",[496,14851,14853],{"id":14852},"原则一角色设定","原则一：角色设定",[14,14855,14856],{},"告诉 Agent 它现在是谁：",[436,14858,14860],{"className":13994,"code":14859,"language":13996,"meta":316,"style":316},"你是一位资深的技术写作专家，擅长把复杂的技术概念\n用简单易懂的语言解释给非技术人员。\n",[79,14861,14862,14867],{"__ignoreMap":316},[507,14863,14864],{"class":509,"line":510},[507,14865,14866],{},"你是一位资深的技术写作专家，擅长把复杂的技术概念\n",[507,14868,14869],{"class":509,"line":320},[507,14870,14871],{},"用简单易懂的语言解释给非技术人员。\n",[14,14873,14874],{},"角色设定会影响 Agent 的语气、用词和思维方式。",[496,14876,14878],{"id":14877},"原则二明确输入输出","原则二：明确输入输出",[14,14880,14881],{},"清晰定义「给什么」和「要什么」：",[436,14883,14885],{"className":13994,"code":14884,"language":13996,"meta":316,"style":316},"## 输入\n- 用户提供的原始技术文档（可能是 Markdown 或纯文本）\n\n## 输出\n- 一篇面向产品经理的技术说明\n- 不超过 500 字\n- 包含「一句话总结」「核心变化」「影响范围」三个板块\n",[79,14886,14887,14892,14897,14901,14906,14911,14916],{"__ignoreMap":316},[507,14888,14889],{"class":509,"line":510},[507,14890,14891],{},"## 输入\n",[507,14893,14894],{"class":509,"line":320},[507,14895,14896],{},"- 用户提供的原始技术文档（可能是 Markdown 或纯文本）\n",[507,14898,14899],{"class":509,"line":317},[507,14900,532],{"emptyLinePlaceholder":345},[507,14902,14903],{"class":509,"line":535},[507,14904,14905],{},"## 输出\n",[507,14907,14908],{"class":509,"line":541},[507,14909,14910],{},"- 一篇面向产品经理的技术说明\n",[507,14912,14913],{"class":509,"line":557},[507,14914,14915],{},"- 不超过 500 字\n",[507,14917,14918],{"class":509,"line":562},[507,14919,14920],{},"- 包含「一句话总结」「核心变化」「影响范围」三个板块\n",[496,14922,14924],{"id":14923},"原则三提供示例","原则三：提供示例",[14,14926,14927],{},"Few-shot learning 是最有效的提示词技巧：",[436,14929,14931],{"className":13994,"code":14930,"language":13996,"meta":316,"style":316},"## 示例 1\n输入：我们将数据库从 MySQL 迁移到 PostgreSQL...\n输出：\n**一句话总结**：数据库升级，查询速度提升 3 倍。\n**核心变化**：...\n**影响范围**：...\n",[79,14932,14933,14938,14943,14948,14953,14958],{"__ignoreMap":316},[507,14934,14935],{"class":509,"line":510},[507,14936,14937],{},"## 示例 1\n",[507,14939,14940],{"class":509,"line":320},[507,14941,14942],{},"输入：我们将数据库从 MySQL 迁移到 PostgreSQL...\n",[507,14944,14945],{"class":509,"line":317},[507,14946,14947],{},"输出：\n",[507,14949,14950],{"class":509,"line":535},[507,14951,14952],{},"**一句话总结**：数据库升级，查询速度提升 3 倍。\n",[507,14954,14955],{"class":509,"line":541},[507,14956,14957],{},"**核心变化**：...\n",[507,14959,14960],{"class":509,"line":557},[507,14961,14962],{},"**影响范围**：...\n",[14,14964,14965],{},"2-3 个示例通常就够了。",[496,14967,14969],{"id":14968},"原则四设定边界","原则四：设定边界",[14,14971,14972],{},"告诉 Agent 什么不该做：",[436,14974,14976],{"className":13994,"code":14975,"language":13996,"meta":316,"style":316},"## 注意事项\n- 不要使用技术术语，除非无法避免\n- 不要编造不存在的数据\n- 如果信息不足，明确告知用户而不是猜测\n",[79,14977,14978,14983,14988,14993],{"__ignoreMap":316},[507,14979,14980],{"class":509,"line":510},[507,14981,14982],{},"## 注意事项\n",[507,14984,14985],{"class":509,"line":320},[507,14986,14987],{},"- 不要使用技术术语，除非无法避免\n",[507,14989,14990],{"class":509,"line":317},[507,14991,14992],{},"- 不要编造不存在的数据\n",[507,14994,14995],{"class":509,"line":535},[507,14996,14997],{},"- 如果信息不足，明确告知用户而不是猜测\n",[496,14999,15001],{"id":15000},"原则五迭代优化","原则五：迭代优化",[14,15003,15004],{},"没有一次就完美的提示词。记录每次测试的问题，逐步修改：",[436,15006,15009],{"className":15007,"code":15008,"language":441},[439],"版本 1: 输出太长 → 加字数限制\n版本 2: 格式不统一 → 加模板\n版本 3: 有时遗漏关键信息 → 加检查清单\n",[79,15010,15008],{"__ignoreMap":316},[18,15012,15014],{"id":15013},"实战优化周报-skill","实战：优化周报 Skill",[14,15016,15017],{},"让我们用这五个原则来优化上一篇做的周报 Skill：",[496,15019,15020],{"id":15020},"优化前",[436,15022,15024],{"className":13994,"code":15023,"language":13996,"meta":316,"style":316},"帮用户写周报\n",[79,15025,15026],{"__ignoreMap":316},[507,15027,15028],{"class":509,"line":510},[507,15029,15023],{},[496,15031,15032],{"id":15032},"优化后",[436,15034,15036],{"className":13994,"code":15035,"language":13996,"meta":316,"style":316},"## 角色\n你是一位高效的工作助理，擅长从零散的描述中提炼关键信息。\n\n## 任务\n根据用户描述的本周工作，生成结构化周报。\n\n## 输出格式\n使用以下模板，每个板块必须包含：\n\n### 本周完成\n- 按项目分组\n- 每条标注状态 emoji（✅ 已完成 \u002F 🔄 进行中 \u002F ⏸️ 暂停）\n\n### 下周计划\n- 3-5 条，按优先级排序\n\n## 约束\n- 总字数不超过 300 字\n- 只使用用户提到的信息，不编造\n- 如果用户信息不足，提问而不是猜测\n",[79,15037,15038,15043,15048,15052,15057,15062,15066,15070,15075,15079,15084,15088,15093,15097,15101,15106,15110,15115,15120,15125],{"__ignoreMap":316},[507,15039,15040],{"class":509,"line":510},[507,15041,15042],{},"## 角色\n",[507,15044,15045],{"class":509,"line":320},[507,15046,15047],{},"你是一位高效的工作助理，擅长从零散的描述中提炼关键信息。\n",[507,15049,15050],{"class":509,"line":317},[507,15051,532],{"emptyLinePlaceholder":345},[507,15053,15054],{"class":509,"line":535},[507,15055,15056],{},"## 任务\n",[507,15058,15059],{"class":509,"line":541},[507,15060,15061],{},"根据用户描述的本周工作，生成结构化周报。\n",[507,15063,15064],{"class":509,"line":557},[507,15065,532],{"emptyLinePlaceholder":345},[507,15067,15068],{"class":509,"line":562},[507,15069,14229],{},[507,15071,15072],{"class":509,"line":347},[507,15073,15074],{},"使用以下模板，每个板块必须包含：\n",[507,15076,15077],{"class":509,"line":586},[507,15078,532],{"emptyLinePlaceholder":345},[507,15080,15081],{"class":509,"line":591},[507,15082,15083],{},"### 本周完成\n",[507,15085,15086],{"class":509,"line":597},[507,15087,14539],{},[507,15089,15090],{"class":509,"line":2519},[507,15091,15092],{},"- 每条标注状态 emoji（✅ 已完成 \u002F 🔄 进行中 \u002F ⏸️ 暂停）\n",[507,15094,15095],{"class":509,"line":14058},[507,15096,532],{"emptyLinePlaceholder":345},[507,15098,15099],{"class":509,"line":6174},[507,15100,14578],{},[507,15102,15103],{"class":509,"line":14247},[507,15104,15105],{},"- 3-5 条，按优先级排序\n",[507,15107,15108],{"class":509,"line":14253},[507,15109,532],{"emptyLinePlaceholder":345},[507,15111,15112],{"class":509,"line":14346},[507,15113,15114],{},"## 约束\n",[507,15116,15117],{"class":509,"line":14352},[507,15118,15119],{},"- 总字数不超过 300 字\n",[507,15121,15122],{"class":509,"line":14358},[507,15123,15124],{},"- 只使用用户提到的信息，不编造\n",[507,15126,15127],{"class":509,"line":14575},[507,15128,15129],{},"- 如果用户信息不足，提问而不是猜测\n",[14,15131,15132],{},"效果的差别一目了然。",[18,15134,15135],{"id":15135},"本章小结",[14,15137,15138],{},"第二章我们学到了：",[181,15140,15141,15144,15147],{},[184,15142,15143],{},"Skill 由元信息、知识、工具三部分组成",[184,15145,15146],{},"从模板开始，通过迭代完善 Skill",[184,15148,15149],{},"提示词工程的五个核心原则",[14,15151,15152],{},"下一章我们进入实战，看看如何在真实项目中综合运用这些知识。",[1034,15154,8664],{},{"title":316,"searchDepth":317,"depth":317,"links":15156},[15157,15158,15165,15169],{"id":14842,"depth":320,"text":14843},{"id":14849,"depth":320,"text":14849,"children":15159},[15160,15161,15162,15163,15164],{"id":14852,"depth":317,"text":14853},{"id":14877,"depth":317,"text":14878},{"id":14923,"depth":317,"text":14924},{"id":14968,"depth":317,"text":14969},{"id":15000,"depth":317,"text":15001},{"id":15013,"depth":320,"text":15014,"children":15166},[15167,15168],{"id":15020,"depth":317,"text":15020},{"id":15032,"depth":317,"text":15032},{"id":15135,"depth":320,"text":15135},"掌握提示词工程的核心技巧，让你的 Skill 输出更稳定、更精准、更符合预期。",{},"\u002Ftutorials\u002Fai-agent-skill\u002Fprompt-engineering",{"title":14837,"description":15170},"tutorials\u002Fai-agent-skill\u002Fprompt-engineering",[361,1268],"yUVDZNwkOw_Rc3MfjaeE9YCPphVt6TArxszynhY9pYo",{"id":15178,"title":15179,"body":15180,"cover":363,"date":11350,"description":15482,"draft":329,"extension":330,"faq":363,"meta":15483,"navigation":345,"path":15484,"publish":329,"readingTime":591,"seo":15485,"seoKeywords":363,"series":13813,"stem":15486,"summary":363,"tags":15487,"updated":363,"__hash__":15488},"tutorials\u002Ftutorials\u002Fai-agent-skill\u002Fskill-anatomy.md","Skill 的结构解析",{"type":8,"value":15181,"toc":15474},[15182,15186,15189,15209,15298,15302,15305,15308,15360,15365,15369,15372,15375,15386,15389,15393,15396,15399,15419,15454,15457,15460,15466,15468,15471],[18,15183,15185],{"id":15184},"一个-skill-长什么样","一个 Skill 长什么样",[14,15187,15188],{},"当你打开一个 Skill 的源文件，你会看到它主要由三部分组成：",[1193,15190,15191,15197,15203],{},[184,15192,15193,15196],{},[49,15194,15195],{},"元信息"," — 名字、描述、适用场景",[184,15198,15199,15202],{},[49,15200,15201],{},"知识"," — 领域专业知识和规则",[184,15204,15205,15208],{},[49,15206,15207],{},"工具"," — 可执行的脚本或 API",[436,15210,15214],{"className":15211,"code":15212,"language":15213,"meta":316,"style":316},"language-yaml shiki shiki-themes github-light-default github-dark-default","name: data-analyzer\ndescription: 分析 CSV\u002FExcel 数据，生成可视化报告\n\nknowledge:\n  - 数据清洗的最佳实践\n  - 常见图表类型的选择策略\n  - 统计指标的计算方法\n\ntools:\n  - analyze.py\n  - visualize.py\n","yaml",[79,15215,15216,15229,15239,15243,15251,15259,15266,15273,15277,15284,15291],{"__ignoreMap":316},[507,15217,15218,15222,15226],{"class":509,"line":510},[507,15219,15221],{"class":15220},"sjgCt","name",[507,15223,15225],{"class":15224},"s4rv2",": ",[507,15227,15228],{"class":523},"data-analyzer\n",[507,15230,15231,15234,15236],{"class":509,"line":320},[507,15232,15233],{"class":15220},"description",[507,15235,15225],{"class":15224},[507,15237,15238],{"class":523},"分析 CSV\u002FExcel 数据，生成可视化报告\n",[507,15240,15241],{"class":509,"line":317},[507,15242,532],{"emptyLinePlaceholder":345},[507,15244,15245,15248],{"class":509,"line":535},[507,15246,15247],{"class":15220},"knowledge",[507,15249,15250],{"class":15224},":\n",[507,15252,15253,15256],{"class":509,"line":541},[507,15254,15255],{"class":15224},"  - ",[507,15257,15258],{"class":523},"数据清洗的最佳实践\n",[507,15260,15261,15263],{"class":509,"line":557},[507,15262,15255],{"class":15224},[507,15264,15265],{"class":523},"常见图表类型的选择策略\n",[507,15267,15268,15270],{"class":509,"line":562},[507,15269,15255],{"class":15224},[507,15271,15272],{"class":523},"统计指标的计算方法\n",[507,15274,15275],{"class":509,"line":347},[507,15276,532],{"emptyLinePlaceholder":345},[507,15278,15279,15282],{"class":509,"line":586},[507,15280,15281],{"class":15220},"tools",[507,15283,15250],{"class":15224},[507,15285,15286,15288],{"class":509,"line":591},[507,15287,15255],{"class":15224},[507,15289,15290],{"class":523},"analyze.py\n",[507,15292,15293,15295],{"class":509,"line":597},[507,15294,15255],{"class":15224},[507,15296,15297],{"class":523},"visualize.py\n",[18,15299,15301],{"id":15300},"元信息告诉-agent-何时用你","元信息：告诉 Agent 何时用你",[14,15303,15304],{},"元信息是 Skill 的「自我介绍」，Agent 根据它决定是否调用这个 Skill。",[14,15306,15307],{},"关键字段：",[949,15309,15310,15323],{},[952,15311,15312],{},[955,15313,15314,15317,15320],{},[958,15315,15316],{},"字段",[958,15318,15319],{},"作用",[958,15321,15322],{},"示例",[965,15324,15325,15337,15347],{},[955,15326,15327,15329,15332],{},[970,15328,15221],{},[970,15330,15331],{},"唯一标识",[970,15333,15334],{},[79,15335,15336],{},"data-analyzer",[955,15338,15339,15341,15344],{},[970,15340,15233],{},[970,15342,15343],{},"功能描述",[970,15345,15346],{},"\"分析数据，生成报告\"",[955,15348,15349,15352,15355],{},[970,15350,15351],{},"triggers",[970,15353,15354],{},"触发关键词",[970,15356,15357],{},[507,15358,15359],{},"\"分析数据\", \"生成图表\"",[11,15361,15362],{},[14,15363,15364],{},"好的 description 是关键！写得太模糊，Agent 不知道什么时候用；写得太窄，又会错过该用的场景。",[18,15366,15368],{"id":15367},"知识注入领域专业能力","知识：注入领域专业能力",[14,15370,15371],{},"知识部分让 Agent 在特定领域变成「专家」。",[14,15373,15374],{},"比如一个数据分析 Skill 的知识可能包含：",[181,15376,15377,15380,15383],{},[184,15378,15379],{},"看到时间序列数据，优先考虑折线图",[184,15381,15382],{},"对比类数据用柱状图，占比类用饼图",[184,15384,15385],{},"数据量超过 1000 行时，先做抽样再可视化",[14,15387,15388],{},"这些知识以自然语言的形式写在 Skill 里，Agent 会在执行任务时参考。",[18,15390,15392],{"id":15391},"工具给-agent-一双手","工具：给 Agent 一双「手」",[14,15394,15395],{},"如果说知识是「大脑」，工具就是「手」。",[14,15397,15398],{},"工具可以是：",[181,15400,15401,15407,15413],{},[184,15402,15403,15406],{},[49,15404,15405],{},"Python 脚本"," — 处理文件、调用 API",[184,15408,15409,15412],{},[49,15410,15411],{},"Shell 命令"," — 系统操作、文件管理",[184,15414,15415,15418],{},[49,15416,15417],{},"HTTP 请求"," — 调用外部服务",[436,15420,15422],{"className":8443,"code":15421,"language":8445,"meta":316,"style":316},"# analyze.py - 数据分析工具\ndef analyze(file_path):\n    import pandas as pd\n    df = pd.read_csv(file_path)\n    summary = df.describe()\n    return summary.to_dict()\n",[79,15423,15424,15429,15434,15439,15444,15449],{"__ignoreMap":316},[507,15425,15426],{"class":509,"line":510},[507,15427,15428],{},"# analyze.py - 数据分析工具\n",[507,15430,15431],{"class":509,"line":320},[507,15432,15433],{},"def analyze(file_path):\n",[507,15435,15436],{"class":509,"line":317},[507,15437,15438],{},"    import pandas as pd\n",[507,15440,15441],{"class":509,"line":535},[507,15442,15443],{},"    df = pd.read_csv(file_path)\n",[507,15445,15446],{"class":509,"line":541},[507,15447,15448],{},"    summary = df.describe()\n",[507,15450,15451],{"class":509,"line":557},[507,15452,15453],{},"    return summary.to_dict()\n",[14,15455,15456],{},"Agent 会根据任务需要，自动选择和调用合适的工具。",[18,15458,15459],{"id":15459},"三者如何协作",[436,15461,15464],{"className":15462,"code":15463,"language":441},[439],"用户: \"帮我分析 sales.csv\"\n      ↓\nAgent 查看所有 Skill 的元信息\n      ↓ 匹配到 data-analyzer\n加载 Skill 的知识 → Agent 变成数据分析专家\n      ↓\n调用 analyze.py → 读取数据、计算指标\n调用 visualize.py → 生成图表\n      ↓\n输出分析报告\n",[79,15465,15463],{"__ignoreMap":316},[18,15467,10752],{"id":10752},[14,15469,15470],{},"了解了 Skill 的结构，下一篇我们就来动手制作第一个自己的 Skill。",[1034,15472,15473],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sjgCt, html code.shiki .sjgCt{--shiki-default:#116329;--shiki-dark:#7EE787}html pre.shiki code .s4rv2, html code.shiki .s4rv2{--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sSVrQ, html code.shiki .sSVrQ{--shiki-default:#0A3069;--shiki-dark:#A5D6FF}",{"title":316,"searchDepth":317,"depth":317,"links":15475},[15476,15477,15478,15479,15480,15481],{"id":15184,"depth":320,"text":15185},{"id":15300,"depth":320,"text":15301},{"id":15367,"depth":320,"text":15368},{"id":15391,"depth":320,"text":15392},{"id":15459,"depth":320,"text":15459},{"id":10752,"depth":320,"text":10752},"拆解一个 Skill 的内部结构，理解每个组成部分的作用，为自己制作 Skill 打基础。",{},"\u002Ftutorials\u002Fai-agent-skill\u002Fskill-anatomy",{"title":15179,"description":15482},"tutorials\u002Fai-agent-skill\u002Fskill-anatomy",[361],"4sn1agCFiUeAAIN0pWZJQ2I7CnAOZM0gBGrJ1zqTrYc",{"id":15490,"title":15491,"body":15492,"cover":363,"date":15643,"description":15644,"draft":329,"extension":330,"faq":363,"meta":15645,"navigation":345,"path":15646,"publish":329,"readingTime":562,"seo":15647,"seoKeywords":363,"series":13813,"stem":15648,"summary":363,"tags":15649,"updated":363,"__hash__":15650},"tutorials\u002Ftutorials\u002Fai-agent-skill\u002Fcombine-skills.md","组合使用多个 Skill",{"type":8,"value":15493,"toc":15629},[15494,15498,15501,15506,15509,15513,15516,15519,15530,15533,15536,15542,15545,15548,15554,15557,15561,15565,15570,15576,15581,15587,15590,15594,15597,15603,15607,15610,15612,15615,15626],[18,15495,15497],{"id":15496},"为什么要组合-skill","为什么要组合 Skill",[14,15499,15500],{},"单个 Skill 解决单个问题，但真实工作往往需要多步操作：",[11,15502,15503],{},[14,15504,15505],{},"把客户发来的 PDF 报告里的数据提取出来，做成 Excel 表格，然后生成一份分析 PPT。",[14,15507,15508],{},"这个任务涉及三个 Skill：PDF → Excel → PPTX。",[18,15510,15512],{"id":15511},"实战从-pdf-到-ppt","实战：从 PDF 到 PPT",[496,15514,15515],{"id":15515},"场景描述",[14,15517,15518],{},"你收到了一份季度销售报告（PDF），需要：",[1193,15520,15521,15524,15527],{},[184,15522,15523],{},"提取其中的销售数据表格",[184,15525,15526],{},"用 Excel 做数据清洗和计算",[184,15528,15529],{},"生成一份可视化的 PPT 报告",[496,15531,15532],{"id":15532},"操作步骤",[14,15534,15535],{},"直接告诉 Agent 你的完整需求：",[436,15537,15540],{"className":15538,"code":15539,"language":441},[439],"请帮我完成以下任务：\n1. 读取 sales-q1.pdf 中的销售数据\n2. 整理成 Excel，按地区汇总\n3. 生成一份 PPT，包含柱状图和关键指标\n",[79,15541,15539],{"__ignoreMap":316},[14,15543,15544],{},"Agent 会自动拆解任务，依次调用不同的 Skill。",[496,15546,15547],{"id":15547},"背后发生了什么",[436,15549,15552],{"className":15550,"code":15551,"language":441},[439],"[PDF Skill] → 读取 PDF，提取表格\n     ↓\n[Excel Skill] → 创建工作表，按地区分组汇总\n     ↓\n[PPTX Skill] → 生成幻灯片，插入图表\n",[79,15553,15551],{"__ignoreMap":316},[14,15555,15556],{},"每个 Skill 的输出自动成为下一个 Skill 的输入，形成流水线。",[18,15558,15560],{"id":15559},"组合-skill-的技巧","组合 Skill 的技巧",[496,15562,15564],{"id":15563},"_1-描述最终目标而非中间步骤","1. 描述最终目标，而非中间步骤",[14,15566,15567],{},[49,15568,15569],{},"不好的方式：",[436,15571,15574],{"className":15572,"code":15573,"language":441},[439],"先用 PDF skill 读取文件，然后...\n",[79,15575,15573],{"__ignoreMap":316},[14,15577,15578],{},[49,15579,15580],{},"好的方式：",[436,15582,15585],{"className":15583,"code":15584,"language":441},[439],"把这份 PDF 报告的数据做成分析 PPT\n",[79,15586,15584],{"__ignoreMap":316},[14,15588,15589],{},"让 Agent 自己决定用哪些 Skill、怎么组合。",[496,15591,15593],{"id":15592},"_2-分步确认关键节点","2. 分步确认关键节点",[14,15595,15596],{},"对于复杂任务，可以在关键节点设置确认：",[436,15598,15601],{"className":15599,"code":15600,"language":441},[439],"帮我分析这份报告，每一步完成后先给我看结果，我确认后再继续。\n",[79,15602,15600],{"__ignoreMap":316},[496,15604,15606],{"id":15605},"_3-保存常用组合","3. 保存常用组合",[14,15608,15609],{},"如果你经常做类似的任务，可以把流程保存为自定义 Skill（我们在进阶篇会详细讲）。",[18,15611,15135],{"id":15135},[14,15613,15614],{},"第一章我们学到了：",[181,15616,15617,15620,15623],{},[184,15618,15619],{},"Skill 是 Agent 的技能包",[184,15621,15622],{},"安装 Skill 就像安装 App",[184,15624,15625],{},"多个 Skill 可以组合成流水线",[14,15627,15628],{},"接下来的第二章，我们将深入学习如何自己制作 Skill。",{"title":316,"searchDepth":317,"depth":317,"links":15630},[15631,15632,15637,15642],{"id":15496,"depth":320,"text":15497},{"id":15511,"depth":320,"text":15512,"children":15633},[15634,15635,15636],{"id":15515,"depth":317,"text":15515},{"id":15532,"depth":317,"text":15532},{"id":15547,"depth":317,"text":15547},{"id":15559,"depth":320,"text":15560,"children":15638},[15639,15640,15641],{"id":15563,"depth":317,"text":15564},{"id":15592,"depth":317,"text":15593},{"id":15605,"depth":317,"text":15606},{"id":15135,"depth":320,"text":15135},"2026-03-25","学会在一个任务中串联多个 Skill，让 AI Agent 像流水线一样高效处理复杂工作。",{},"\u002Ftutorials\u002Fai-agent-skill\u002Fcombine-skills",{"title":15491,"description":15644},"tutorials\u002Fai-agent-skill\u002Fcombine-skills",[361],"mVA8siZlF2GZX689IbHa7pAwpaNySmWD0z9NJ1dCwmE",{"id":15652,"title":15653,"body":15654,"cover":363,"date":15643,"description":15813,"draft":329,"extension":330,"faq":363,"meta":15814,"navigation":345,"path":15815,"publish":329,"readingTime":347,"seo":15816,"seoKeywords":363,"series":13813,"stem":15817,"summary":363,"tags":15818,"updated":363,"__hash__":15819},"tutorials\u002Ftutorials\u002Fai-agent-skill\u002Finstall-first-skill.md","安装你的第一个 Skill",{"type":8,"value":15655,"toc":15798},[15656,15658,15661,15669,15673,15676,15679,15724,15727,15731,15734,15740,15743,15747,15750,15756,15760,15763,15769,15772,15776,15779,15783,15786,15790,15793,15795],[18,15657,13912],{"id":13912},[14,15659,15660],{},"在开始之前，你需要：",[1193,15662,15663,15666],{},[184,15664,15665],{},"一个支持 Skill 的 AI Agent（本教程以 CodeBuddy 为例）",[184,15667,15668],{},"基本的命令行操作能力（不需要写代码）",[18,15670,15672],{"id":15671},"什么是-skill-市场","什么是 Skill 市场",[14,15674,15675],{},"Skill 市场就像手机上的 App Store —— 别人已经做好了各种 Skill，你只需要「安装」就能用。",[14,15677,15678],{},"常见的 Skill 分类：",[949,15680,15681,15690],{},[952,15682,15683],{},[955,15684,15685,15688],{},[958,15686,15687],{},"分类",[958,15689,15322],{},[965,15691,15692,15700,15708,15716],{},[955,15693,15694,15697],{},[970,15695,15696],{},"文档处理",[970,15698,15699],{},"PDF 阅读、Word 生成、Excel 分析",[955,15701,15702,15705],{},[970,15703,15704],{},"开发辅助",[970,15706,15707],{},"代码审查、API 测试、数据库操作",[955,15709,15710,15713],{},[970,15711,15712],{},"内容创作",[970,15714,15715],{},"写作助手、图片生成、PPT 制作",[955,15717,15718,15721],{},[970,15719,15720],{},"数据分析",[970,15722,15723],{},"数据清洗、可视化、报表生成",[18,15725,15726],{"id":15726},"动手安装",[496,15728,15730],{"id":15729},"第一步找到-skill","第一步：找到 Skill",[14,15732,15733],{},"打开你的 AI Agent，输入：",[436,15735,15738],{"className":15736,"code":15737,"language":441},[439],"帮我找一个可以处理 PDF 的 Skill\n",[79,15739,15737],{"__ignoreMap":316},[14,15741,15742],{},"Agent 会搜索可用的 Skill 列表，推荐匹配的选项。",[496,15744,15746],{"id":15745},"第二步安装-skill","第二步：安装 Skill",[14,15748,15749],{},"选择一个 Skill 后，Agent 会自动加载它。你会看到类似这样的提示：",[436,15751,15754],{"className":15752,"code":15753,"language":441},[439],"✅ PDF Skill 已加载\n现在你可以让我帮你：\n- 阅读 PDF 文件\n- 提取表格数据\n- 合并\u002F拆分 PDF\n",[79,15755,15753],{"__ignoreMap":316},[496,15757,15759],{"id":15758},"第三步使用-skill","第三步：使用 Skill",[14,15761,15762],{},"安装完成后，直接用自然语言描述需求即可：",[436,15764,15767],{"className":15765,"code":15766,"language":441},[439],"请帮我读取 report.pdf，把里面的表格提取出来\n",[79,15768,15766],{"__ignoreMap":316},[18,15770,15771],{"id":15771},"常见问题",[496,15773,15775],{"id":15774},"q-skill-安装在哪里","Q: Skill 安装在哪里？",[14,15777,15778],{},"Skill 不需要「安装」在你的电脑上，它更像是一段指令，告诉 Agent 在特定场景下应该怎么做。",[496,15780,15782],{"id":15781},"q-一次可以用多个-skill-吗","Q: 一次可以用多个 Skill 吗？",[14,15784,15785],{},"可以！Agent 会根据你的需求自动选择合适的 Skill 组合。",[496,15787,15789],{"id":15788},"q-skill-会过期吗","Q: Skill 会过期吗？",[14,15791,15792],{},"不会，但 Skill 可能会有版本更新，新版本通常会修复问题并增加功能。",[18,15794,10752],{"id":10752},[14,15796,15797],{},"学会了安装 Skill，下一篇我们来看看如何组合使用多个 Skill，完成更复杂的任务。",{"title":316,"searchDepth":317,"depth":317,"links":15799},[15800,15801,15802,15807,15812],{"id":13912,"depth":320,"text":13912},{"id":15671,"depth":320,"text":15672},{"id":15726,"depth":320,"text":15726,"children":15803},[15804,15805,15806],{"id":15729,"depth":317,"text":15730},{"id":15745,"depth":317,"text":15746},{"id":15758,"depth":317,"text":15759},{"id":15771,"depth":320,"text":15771,"children":15808},[15809,15810,15811],{"id":15774,"depth":317,"text":15775},{"id":15781,"depth":317,"text":15782},{"id":15788,"depth":317,"text":15789},{"id":10752,"depth":320,"text":10752},"手把手教你在 AI Agent 中安装 Skill，5 分钟让你的 AI 助手获得新技能。",{},"\u002Ftutorials\u002Fai-agent-skill\u002Finstall-first-skill",{"title":15653,"description":15813},"tutorials\u002Fai-agent-skill\u002Finstall-first-skill",[361],"yLyo-reHXTdwpp_RH7TUOVoQGIk487Uak3-JVeUigEI",{"id":15821,"title":15822,"body":15823,"cover":363,"date":15643,"description":15953,"draft":329,"extension":330,"faq":363,"meta":15954,"navigation":345,"path":15955,"publish":329,"readingTime":541,"seo":15956,"seoKeywords":363,"series":13813,"stem":15957,"summary":363,"tags":15958,"updated":363,"__hash__":15959},"tutorials\u002Ftutorials\u002Fai-agent-skill\u002Fintro.md","什么是 AI Agent Skill",{"type":8,"value":15824,"toc":15946},[15825,15829,15832,15838,15849,15852,15855,15885,15889,15892,15912,15915,15918,15938,15941,15943],[18,15826,15828],{"id":15827},"ai-agent-和-skill-的关系","AI Agent 和 Skill 的关系",[14,15830,15831],{},"AI Agent 是一个能够自主完成任务的智能体。你可以把它想象成一个非常聪明但缺乏具体技能的实习生 —— 它有很强的理解和推理能力，但在特定领域需要「技能包」来高效工作。",[14,15833,15834,15837],{},[49,15835,15836],{},"Skill"," 就是 Agent 的技能包。它定义了 Agent 在特定领域的：",[181,15839,15840,15843,15846],{},[184,15841,15842],{},"专业知识（比如如何处理 Excel 文件）",[184,15844,15845],{},"工作流程（比如分析数据的 SOP）",[184,15847,15848],{},"可调用的工具（比如 Python 脚本、API 接口）",[18,15850,15851],{"id":15851},"一个形象的比喻",[14,15853,15854],{},"想象你在训练一个新员工：",[949,15856,15857,15867],{},[952,15858,15859],{},[955,15860,15861,15864],{},[958,15862,15863],{},"没有 Skill 的 Agent",[958,15865,15866],{},"有 Skill 的 Agent",[965,15868,15869,15877],{},[955,15870,15871,15874],{},[970,15872,15873],{},"\"帮我分析这个数据\" → 写了一段有 bug 的代码",[970,15875,15876],{},"\"帮我分析这个数据\" → 调用数据分析 Skill，输出标准报告",[955,15878,15879,15882],{},[970,15880,15881],{},"\"帮我生成 PPT\" → 给了一堆文字建议",[970,15883,15884],{},"\"帮我生成 PPT\" → 调用 PPTX Skill，直接生成文件",[18,15886,15888],{"id":15887},"为什么要学-skill","为什么要学 Skill",[14,15890,15891],{},"在 AI 时代，会使用和制作 Skill 的人，就像工业时代会操作机器的人一样，拥有了核心竞争力。",[1193,15893,15894,15900,15906],{},[184,15895,15896,15899],{},[49,15897,15898],{},"使用 Skill","：让 AI 能帮你完成更复杂的任务",[184,15901,15902,15905],{},[49,15903,15904],{},"制作 Skill","：把你的专业知识封装成可复用的能力",[184,15907,15908,15911],{},[49,15909,15910],{},"分享 Skill","：帮助更多人提升效率，建立影响力",[18,15913,15914],{"id":15914},"这个系列会教什么",[14,15916,15917],{},"本系列分为三个章节：",[1193,15919,15920,15926,15932],{},[184,15921,15922,15925],{},[49,15923,15924],{},"入门篇"," — 理解 Skill，学会安装和使用现成的 Skill",[184,15927,15928,15931],{},[49,15929,15930],{},"进阶篇"," — 自己动手制作 Skill，掌握提示词工程",[184,15933,15934,15937],{},[49,15935,15936],{},"实战篇"," — 在真实项目中综合运用多个 Skill",[14,15939,15940],{},"每一章都有 3 篇文章，从概念到实操，循序渐进。",[18,15942,10752],{"id":10752},[14,15944,15945],{},"在下一篇中，我们会动手安装你的第一个 Skill，体验「让 AI 瞬间变专家」的感觉。",{"title":316,"searchDepth":317,"depth":317,"links":15947},[15948,15949,15950,15951,15952],{"id":15827,"depth":320,"text":15828},{"id":15851,"depth":320,"text":15851},{"id":15887,"depth":320,"text":15888},{"id":15914,"depth":320,"text":15914},{"id":10752,"depth":320,"text":10752},"了解 AI Agent 中 Skill 的概念，以及为什么学会使用和制作 Skill 是 AI 时代的核心能力。",{},"\u002Ftutorials\u002Fai-agent-skill\u002Fintro",{"title":15822,"description":15953},"tutorials\u002Fai-agent-skill\u002Fintro",[361],"bOUydlzt6ugoWVl3RtyETCr93AaZG02LGul1bw4O_XU",1782881824583]