云何降伏其心

这是我第三次用佛经的词语来作为年终总结的标题了。前两次分别是前年的《凡所有相,皆是虚妄》和去年的《心猿意马》。“云何降伏其心”与前年的标题同样来自于《金刚经》,我在去年的总结里也曾引用并写道: 在《金刚经》开头,须菩提问释迦牟尼:“云何应住?云何降伏其心?”《金刚经》全书就是佛祖对这个问题的回答。佛祖说:“应如是生清净心,不应住色生心,不应住声、香、味、触、法生心,应无所住而生其心。” 如果把我这三年的总结标题按照佛经的逻辑顺序串联起来,那应该是这样:因为“心猿意马”,弟子发问“云何降伏其心”,佛陀给出“凡所有相,皆是虚妄”的回答。但身处末法时代,我们内心的困惑没有佛陀给予解答,这些问题只能由自己去思考去探索。 题图: 2025年春节在天津海河上走冰 惠能与神秀 今年,除了重读《金刚经》,还读了《坛经》。如果说《心经》是《金刚经》的浓缩版的话,那么《坛经》就是《金刚经》的注解版。《坛经》是记录禅宗六祖慧能言行的一本经书,也是唯一一本非由释迦摩尼讲述而命名为“经”的佛教典籍。按照佛教的传统,只有佛陀释迦摩尼的言教著作才能称为“经”,其弟子和后代佛徒的著作只能被称作“论”,比如唐玄奘编撰的《成唯识论》。以《坛经》冠名慧能言教,可见慧能在中国佛教史上的地位。 慧能家贫,砍柴卖柴为生,一日在市集偶然听到旅客诵读《金刚经》,顿时得悟,于是北上拜师五祖弘忍,被安排做劈柴舂米的活。后来弘忍想要在弟子们中挑一位合适的人传授衣钵,于是让大家都写一个偈子来作为修行成果的考验。其首席弟子神秀在寺院墙壁写了一偈,获得众人喝彩:“身是菩提树,心如明镜台,时时勤拂拭,勿使惹尘埃。”慧能听到后不以为然,由于他不识字,于是请别人代笔,也在墙上写下一个偈子:“菩提本无树,明镜亦非台。本来无一物,何处惹尘埃。”本来神秀的偈子很好了,但被慧能这么一比,就比下去了。慧能的偈子契合禅宗的见性成佛思想,因而他得到了弘忍传下的衣钵,成为禅宗六祖。 在这个故事里主角是慧能,神秀被当做了反面案例,而神秀所倡导的“渐悟”之道也成了批判对象。这个故事我小时候就看过,后来二十岁左右读到《坛经》时也加深了这种成见。但等到四十多岁再读《坛经》时,却对神秀更能感同身受。神秀在听到弘忍布置的作业后,思虑万千,心里想:“如果不写偈子,师傅怎么知道我的修行程度;如果呈上偈子是为了六祖的位子,这跟凡夫俗子费尽心机谋取功位有什么区别呢?太难太难!”神秀做好偈子,几次想呈送给弘忍,一走到大堂就紧张得神情恍惚、全身流汗,前后四天十三次,却始终没有勇气交上去。最后神秀趁着夜晚三更悄悄写到寺庙的墙壁上,任由师傅看到。写完之后神秀回到房中,又担心自己写得不好,担心自己得不到弘忍的认可,担心自己得不到佛法,一直坐卧不安,直到五更时分。 《坛经》将写偈子这个公案中神秀的内心想法描写得很生动,虽然是在说神秀的纠结与执迷,但如果我们以现代的眼光来看,神秀多像是在大厂赛马机制下的打工人啊,而且是妥妥的FP型人格。后来慧能和神秀一南一北各立宗派,神秀还念念不忘弘忍对慧能的教法传授,派他的弟子志诚去曹溪听慧能说法,并让他记住后回来告诉自己。志诚去到曹溪,慧能当即认出,便问他神秀教了什么。志诚说:“神秀师傅教我们戒定慧之法,诸恶莫作名为戒,诸善奉行名为慧,自净其意(清净自己的意念)名为定。”慧能说:“神秀的戒定慧之法已经是不可思议了,不过我的方法与他的不同,我的方法不离开自我本性,一切的事物和现象,都是从自性中起作用。‘心地无非自性戒,心地无痴自性慧,心地无乱自性定。’神秀的方法适合劝诫小根器的人,而我的方法是劝诫大根器的人。” 简而言之,“戒定慧”是佛教里达到最高境界“觉悟”的途经,神秀的方法是通过持之以恒的对外做善事、对内行正念来达到,而慧能则认为这些是在自我本性之中的,本性执迷则不能通达,需要解脱知见,从而开悟。二十岁时,我认同慧能,仿佛自己有大慧根,写下诗句“任抛星汉归园圃,留取乾坤盛酒囊”,口气不小。二十年后,渐渐明白自己是慧能说的“小根器”之人,神秀的方法更为适合,“时时勤拂拭,勿使惹尘埃。”更早之前,刘备也说过类似的话,他在白帝城托孤回望一生的事业,临终遗言交代的便是:“勿以善小而不为,勿以恶小而为之。”换到当下的语境里,就是培养好习惯,而在2025年,这是我践行的重要一项。 基督山伯爵与法里亚长老 2025年我读了51本书。年底最后一天,微信读书报告显示全年读书888小时8分钟,这真是一个惊喜的巧合。读书的时长比2024年多了一百多小时,但书的总数却有下降,主要原因是大部头的书看得多了些。几本大部头的书有《基督山伯爵》《毛泽东传》《世界史的故事》,几本苏东坡传记,以及还没有看完的《罗马人的故事》。 《基督山伯爵》是近年来看的为数不多的虚构类小说之一。年轻的时候看过不少文学小说,不过大仲马的书是不在我的选择之列的,因为觉得它们是通俗小说,现在看来《基督山伯爵》算是遗珠了。《基督山伯爵》是一个快意恩仇的故事,有人说这是爽文鼻祖,主人公唐戴斯身陷囹圄遇到贵人,之后便一路开挂,完成复仇。不过对我启发最大的不是唐戴斯的复仇故事,而是他在狱中所遇到的这位贵人——法里亚长老。在唐戴斯遇到法里亚长老前,后者已经被关了十一年,在这十一年里,法里亚长老利用牢房内有限的资源制作笔、纸、墨水、撬棒、凿子等工具,写出了《意大利统一论》的著作,挖掘了一条试图通往外界的地道,还凭借着记忆复习以前学习的五种语言,并研究历史和科学。唐戴斯此前也被关了六年多,可是他除了祈祷和等待,什么也没做。要知道法里亚长老此时已经六十多岁了,而唐戴斯才二十几岁。唐戴斯被法里亚长老在狱中的成就震惊了,他感叹道:如果法里亚长老是自由的,那会做出多少事情啊! 但法里亚长老的回答引人深思:“说不定一事无成,我过剩的脑力也许会化为乌有……囚禁生活把我分散飘忽的官能都凝聚在了一个焦点上,让它们在一个狭窄的空间相互撞击。乌云相撞生成电,电生成火花,火花生成光。” 人人都想要自由,但真正的自由是我在去年总结里引用的大卫·福斯特·华莱士的话“专注、自觉、自律、不懈努力……”。即康德的自由观点:真正的自由不是随心所欲,而是理性能够自主立法并遵从它。 “只买书图书馆” 年中的时候,大卫跟随妈妈去了加拿大,我则将大部分家当运回了老家,这其中最多的就是书和CD. 在上海的十八年里,一共搬了六次家,每一次搬家都是个浩大的工程,仅仅是书就要打包几十箱,而且越买越多,这一次打包了整整五十箱书。因此经常有搬家师傅打趣说给我搬家后不能去打牌了。 之前我让父亲把长期不住的老家房子简单装修了下,堂屋的两面墙都装上了书架,为的就是能够将这些书存放起来。元旦期间回了趟老家,看到都书本已经被妹妹整理好,倒是有点图书馆的感觉。而我也有意将这个老房子打造成一个小型的乡村图书馆,虽然当前还太小,书还太少,充其量只能成为一个图书室。我给它命名为“只买书”,希望未来能成为一个地标。 “只买书”这个名字来源于十几年前我在公司建立的第一个民间社区“只买书不读书”,后来在一位女生的运作下一度成为公司Hi平台第二大社区(第一名是一个英语学习社区),也正是因为该社区我认识到了很多了有趣的人。我给“只买书图书馆”注册了个域名,zhimaishu.com, 即“只买书”的拼音,借助 Claude Code 和 Gemini 创建了个网站原型,后续有时间再慢慢优化它。 老家的房子是三十年前建的,除了窗户、围栏翻新和加装空调外,基本保持了三十年前的样子。红砖墙面历经了三十年却还像新的一样,记得在此之前更老的房子因为青砖墙面老化导致某天下雨的时候塌了个窟窿,一部分砸在了我们正睡觉的床上,那时正在夏天,架着蚊帐,蚊帐帮助支撑了些受力,加上那些倒塌的砖块基本都成了泥,才没有砸到人。后来填填补补,熬到了这个红砖房子的建成。 老家的房子 实际上,红砖房建成时我已经上初中了,后来去县城读高中,除了寒暑假住在里面的时间并不多,儿时大部分的时间是在泥墙老房中度过。泥墙老房跟爷爷的房子连在一起,不知道是什么时候建成的,总之很老很老了。记得我小时候经常提着一个篮子,里面装了一些麻将、扑克,还有两本年历,那些是我全部的玩具和藏书。有一次在爷爷的屋子里玩,从一个柜子里翻到了一些连环画,可把我开心坏了,记得有《珊瑚岛上的死光》《飞向冥王星的人》《沈炼传》等,估计有几十本之多,还翻到了几本书,有叶永烈的童话故事集《谁的脚印》,还有《绿野仙踪》。这些连环画和书可以说是我最早的文学启蒙。 那天的发现在我记忆中非常深刻,惊喜程度不亚于唐戴斯发现基督山岛的财宝,而唐戴斯是有待而来,我则是纯属意外之喜。因此,我也有意把“只买书图书馆”打造成一个知识宝藏,等待乡村里的某个或某些爱书孩童的发现。 苏东坡与王阳明 九、十月间,读了几本苏东坡的传记,分别是林语堂《苏东坡传》、李一冰《苏东坡新传》及王水照、崔铭《苏轼传》。这三本中,我最喜欢《苏轼传》,相较而言,前两本作者表达了过多的个人喜恶,《苏轼传》叙述较为客观。苏东坡是中国人都普遍喜欢的一位文人,网上说他是中国人的“国民偶像”却也不为过。他一声历经坎坷,多次遭贬谪,但始终保持豁达与乐观。面对生活困难,不怨天尤人,亲自下田开垦东坡,写下“谁怕?一蓑烟雨任平生”等千古佳句。 有网友解读苏轼临终遗言“着力即差”是顺其自然,看透人生,但苏轼并非不“着力”,他在失意时寄情山水、躬耕陇亩;在职场时则积极进取,恪守本职。苏轼青年时的偶像是写下“先天下之忧而忧,后天下之乐而乐”的范仲淹,而苏轼终其一生在官场始终保持着他坚持原则的本色。神宗年间王安石变法,他认为新法过于激进,增加了平民负担,被当成守旧派并遭“乌台诗案”诬陷贬谪黄州;到了哲宗初期司马光等旧党上台,尽废新法。苏轼被召回京城,但他看到旧党为了反对而反对,完全不顾其合理的部分,据理力争,又得罪旧党,外放去了杭州。而等到哲宗亲政,再次启用新党,苏轼又被当作旧党报复,贬谪到了更远的惠州和儋州。 儋州在海南岛,在古代环境恶劣,瘴气横行,孤悬海外,被贬谪儋州等于是被流放判死刑。被贬儋州时苏轼已经六十二岁,但他没有消沉,而是积极融入当地环境,劝诫百姓改良风俗。他还在当地开设学堂,讲学授徒,并为海南岛培养出了有史以来第一位进士姜唐佐。姜唐佐跋山涉水到儋州向苏轼求学,深得苏轼赏识,临别之际,姜唐佐请求赠诗一首,苏轼便在他的扇子上题诗道:“沧海何尝断地脉,珠崖从此破天荒。”并告知曰等中了进士,再为续足成篇。姜唐佐后来果然中了进士,只可惜当时苏轼已不在人世,续诗由其弟苏辙完成:“锦衣不日人争看,始信东坡眼力长。” 在俗世的评价中,苏轼不算是一个成功者,直到去世仍在遇赦北归的途中。苏轼从儋州北归途中路过金山寺,看到画师李公麟为他画的像,感慨万千,写下了那首总结一身的诗句:“问汝平生功业,黄州惠州儋州”。这既是自嘲,也是大彻大悟后的真情表露。所以苏轼临终才会说“着力即差”,这种顺其自然并非随波逐流,而是在逆境中坚守内心,把现实的困境看做是人生的修行。 有句流传很广的话:“读过很多书,听过很多道理,为什么依然过不好这一生?”大约几年前一次在公司里的读书活动,我也提出了这个问题,一位同事便回答说学习王阳明的“知行合一”。我似懂非懂,后来也看了王阳明的《传习录》和他的传记,但总感觉不透彻。十月间一次跟随Keep课程健身时,Keep在休息间隙会展示一些激励人心的名人名言,那次正巧弹出的是王阳明的名言“知而不行,只是未知”,那一刻犹如醍醐灌顶。以前我看了很多书、听过很多道理,自以为知道,其实是不知道;而当我逐渐将书中的那些道理应用在日常琐事及工作中时,才真正知道,内心也渐渐充实起来。 这就需要像法里亚神父所说的那样的“牢笼”,并非真的被囚禁,而是自己设计约束自我的牢笼,将注意力和精力囚禁起来;再像神秀那样“时时勤拂拭”,形成长期的习惯。知道早睡早起并没有太大益处,当持续了一年的九点半睡觉习惯后,感觉精神状态确实好多了。知道健身对健康有益也不能使自己健康起来,而坚持一年多跑步和健身后,确实身体状态也好多了。除了有益的习惯,还要摒弃不良的习惯。比如饮食上,我已经不再喝酒,不喝咖啡(低因咖啡除外),不喝果汁等含糖饮料。当然这些习惯也对社交产生了一些影响,几次拒绝了同事朋友的聚会邀请,回复是“我不喝酒,九点就要回去睡觉,所以就不去扫大家兴致了。”年底的时候听到 Lex Fridman 采访杜罗夫的播客,杜罗夫说他二十多岁开始便戒除了酒精、烟草、咖啡等可能成瘾的物质,令我佩服不已。杜罗夫每天要做几百个俯卧撑和深蹲,但他说每天早上去健身房前还是要对抗内心的不情愿(Reluctant),这也是我一年多来早起跑步的感受。以前道听途说认为跑步会上瘾,说很多跑者若不跑步就身体难受,但至少到目前为止,我还没有跑步上瘾,经常是要战胜内心的一些偷懒想法。这大概就是要约束自己随心所欲的“自由”,来获得真正的自由吧。 这一年下来平均每周会跑五、六次,每次不长,三到五公里,到下半年基本上都在三公里,也不求配速,算是养生跑。不得不说,我司的员工都蛮卷,在深圳出差住安朴酒店的时候,健身房很早就有人了,与我在其他酒店早上独自跑步健身完全不同。有一次起晚了些,早上六点十分过去,四台跑步机已经被占满了。 好奇心与氛围编程 过去一年还有个重大的变化当属AI对工作和学习的改变,借用 Simon Willison 的博客话是:这是 Agent 的一年,这是氛围编程和 Claude Code 的一年,这是两百美元每月订阅费的一年,这是中国开源模型登顶的一年。Simon Willison 利用 AI 一年创造了110个软件工具,而我则后知后觉,直到年底才开始大量使用 Claude Code. 《银河系漫游指南》的作者英国科幻小说家道格拉斯·亚当斯曾提出过“科技三定律”: 任何在我出生时已经有的科技都是稀松平常的世界本来秩序的一部分。 任何在我 15-35岁 之间诞生的科技都是将会改变世界的革命性产物。 任何在我 35 岁之后诞生的科技都是违反自然规律要遭天谴的。 ChatGPT等 LLM 技术在我38岁时诞生,幸好我没有把它当成违反自然规律,而是认为其将彻底改变世界。不过虽然如此,前几年里也大多是在书本学习,缺少大量的实践。这就是王阳明说的“知而不行,只是未知”。为了防止这种“35岁后的傲慢”,我开始利用AI来做一些重构博客、实现之前记在TODO list的想法,同时,重新开始写周刊。我将周刊命名为“好奇心周刊”,提醒自己始终保持好奇心。 年底的时候开始对比使用 Claude Code、Gemini CLI、Codex、Lovable 几个AI工具,其中 Claude Code 带给我的震撼是最大的,网上那些使用 Claude Code 写出几万行代码的案例再正常不过,我使用 Claude Code 两周,便写了一个类似 Claude Code 的 Code Agent 工具,一共两万多行代码,基本功能都已具备。最大的问题是token限额太少,哪怕是圣诞节期间 Anthropic 将配额扩大一倍也不够,基本上每周我都将限额用完,然后等待配额重置,像是领救济粮食的灾民。 Claude Code 用量截图 Claude Pro 订阅配额不够用的情况下,我又订阅了 Gemini Pro, 虽然在编码任务上感觉 Gemini CLI 要稍逊一些,但最近我发现它进步很快,基本上一些通用的 Web 类程序就让它写了。Gemini CLI 的另一个优势是输入窗口大,不像 Claude Code 那样经常需要压缩上下文。 在大量使用这些AI应用后,我深刻感到未来的工作和学习模式都将发生翻天覆地的变化,无论AI终究会不会取代人,但必将改造人类自身。在我需要学习一种新技术或知识的时候,会用这些 Code Agent 去构建一个demo 应用,从实际案例中学习比看文档快多了。除了 Vibe Coding, 我还将 Claude 和 Gemini 用作英语学习,比如,给它们设置了预制指令,每次对话它们都会纠正我的语法错误并给出正确的语句,这样我就像是在跟一个英语老师对话。 对于个人而言,最大的问题是时间不够、精力不够、点子不够。所以大部分的周末我都会待在房间里,专心”氛围编程”:听着舒伯特和贝多芬的交响乐,看着 Claude Code 和 Gemini 的代码输出。音乐则提醒我,人的目的是创造,而不是成为工具的奴隶。 但在这篇总结的最后,我还是要推荐几款年度工具。除了 Claude Code, 还有 Apple Music Classical、FocusFlight(专注飞机)、AutoSleep(睡眠检测)、Habit(习惯打卡)。 2025年的总结就写到这里,啰嗦了这么多,其实这一篇不仅是过去一年的总结,也算是过去三年总结的总结。标题中的问题也是面对未来不确定性的发问,尤其在AI时代,如何安下浮躁的内心。对此,我引用两句话作为结尾,送给大家,也送给自己。第一句来自道格拉斯·亚当斯,印在了《银河系漫游指南》的封面: Don’t Panic! 第二句具有类似含义,英国政府曾在二战来临时印在海报上鼓励国民: Keep Calm and Carry On! 附: 《金刚经·心经·坛经》中华书局 《基督山伯爵》 [法]大仲马(著) 周克希(译) 上海译文出版社 《苏轼传》 王水照、崔铭(著) 人民文学出版社

2026/1/11
articleCard.readMore

好奇心周刊第23期: Claude Code 氛围编程初体验

本文为好奇心周刊第23期,全部周刊参见:周刊系列。 本期周刊介绍 Claude Code 的使用方法,使用 Claude Code 完成特定编程任务的探索,及 CLAUDE.md 的相关实践。 0. 准备 按照官网上的指导安装,MacOS 推荐用 HomeBrew (brew install claude) 安装即可。在终端上输入 claude 命令进入 Claude Code 交互界面,输入 /login 命令登录,有两种模式,一种是 Claude.ai 订阅,一种是配置Claude API Key,前者按月付订阅费,后者按使用Token计费。我使用的是订阅模式,选择该模式登录后会引导到 Web 端登录。Claude 有两档订阅付费选择: Claude AI Pro 和 Claude AI Max, 前者每月约20美元左右,后者则是每月100美元起步。普通开发订阅 Pro 版本就够了。 不过,订阅 Pro 只是第一步。由于 Claude 的公司 Anthropic 创始人对中国态度极不友好(找个机会单独写一下),Claude 会经常封禁来自中国IP的账号,并且在使用 Claude Code 时也会检测所属 IP, 所以在跳转网页登录成功后,终端命令行上报 403 forbidden 的错误。后来搜了下网上经验,发现是终端没有穿墙,执行 curl ipinfo.io显示 IP 地址为国内城市。在尝试了若干方法后,发现 MacOS 上需要安装 ClashX Pro, 然后打开 Proxy Mode(Global) + System Proxy + Enhanced Mode 几个组合选项,终于实现终端上穿墙,才得以通过 Claude Code 的登录验证。 登录后便可以在 Claude Code 终端交互界面上执行命令,Claude Code 的命令以 / 开头,可以通过 /models 选择模型,默认是 Haiku 4.5, 一个轻量但快速的模型,想要更强悍的能力,可以选择 Sonnet 4.5, 或最新推出的 Opus 4.5 (需要 Max 订阅账户)。 1. 工作尝试 1.1 任务一:全新创建 Nextra 文档网站(模型:Haiku 4.5) 1、初始化并创建 CLAUDE.md 首先我创建了一个空的目录,里面没有任何文件,然后在 Claude Code 上输入: /init, Claude 便开始分析当前的codebase: > /init is analyzing your codebase… ⏺ I'll analyze this codebase and create a CLAUDE.md file. Let me start by exploring the repository structure and understanding the project. Claude 调用 git, find, ls 等工具搜索当前文件夹里的文件。由于这是个空目录,Claude发现没有历史记录,也没有任何文件,于是表示它无法生成 CLAUDE.md, CLAUDE.md是一个文档文件,用来描述代码仓的架构、构建命令、测试准备和项目工程相关信息,不包含实际的代码。 如果想要完成初始化并创建 CLAUDE.md,Claude给出三个选择: 先往当前目录代码仓中添加代码,有了代码,Claude便可以根据代码理解来生成 CLAUDE.md. 如果这是个计划中的项目,那么告诉 Claude 这个项目的相关信息,比如语言、框架等。 重新指向一个已知项目,里面包含代码等信息。 我告诉 Claude 生成网站的指令,让它直接生成网站代码及 CLAUDE.md 2、根据指令生成网站 我告诉Claude想要生成一个文档网站,使用最新版本的 Next.js, Nextra, 并使用 pnpm 作为包管理器,优先使用 TypeScript. > I want to create a documentation website using the latest version of Next.js and Nextra, using pnpm as the package manager, Prefer using TypeScript. Claude 开始理解指令并分解任务。Claude 拆解的比较细,分了: 创建项目初始文件:包括 package.json, tsconfig.json, next.config.ts, theme.config.tsx, .eslintrc.json, 等,这些是 Next.js 项目的基础配置文件。 生成 Nextra 网站页面文件:如pages/_app.tsx, pages/_document.tsx 等,还有一些 mdx, _meta.json 文件等。 根据所生成代码形成的 codebase 创建 CLAUDE.md 文件并写入生成内容,CLAUDE.md 里面详细记录了该项目使用到的技术栈、项目结构、关键功能、工程脚本等信息。 做完这些事情后,Claude 更新了 TODO list, 然后做了一个文字小结,并给出了下一步要做的事情,安装依赖包、启动开发环境调试、定制网站等。 3、增强网站内容 我让 Claude 继续完成整个网站: > Please make this website completely. 因为我蹩脚的英语,Claude 理解成做一个全面的网站,于是 Claude 来劲了,它准备生成一个架构全面、带自定义组件、且内容丰富的文档网站。 ⏺ I'll create a comprehensive documentation website with a complete structure, custom components, and rich content. Let me build this out. ⏺ Let me start by creating a rich homepage and expanding the documentation structure: ... (以下生成内容略) 这还不够,Claude 紧接着又生成了 案例、API 指南、高级话题等内容。并更新了 CLAUDE.md. Claude 时刻不忘更新 CLAUDE.md. 不过一开始生成复杂内容(大多数为Fake)的网站并不是好实践,这会影响后续的重构。 3、调试&bugfix 当我打开 Claude 生成的网站,报错了: 我将错误信息告知 Claude: > When run this website in dev mode, it prompts error: [Error: Support of "_meta.json" was removed, use "_meta.{js,jsx,ts,tsx}" instead. Refactor following file "pages/_meta.json".] Claude便开始定位问题,认识到要将 json 转成js或ts文件,考虑到前面要求优先使用 TypeScript,因此它改为 ts 文件: ⏺ I need to fix the _meta.json files to use the newer Nextra format. They should be .ts or .tsx files instead. Let me update all of them: 改写成 ts 文件并删除原 json 后,Claude 提示我说它已经解决了问题。但当我打开网站时,新的问题出现了: Validation of "_meta" file has failed. The field key "api" in `_meta` file refers to a page that cannot be found, remove this key from "_meta" file. 我把这个新问题抛给 Claude Code, 报错是说 _meta 文件中关键字api所提及的文件找不到,于是 Claude 先到 api 目录中查是否存在 _meta文件,然后又在整个 pages 目录里查找,如此检查了一番之后。Claude 一副胸有成竹的样子说它知道问题所在了,是新版本的Nextra使用了不同格式的meta文件,这语气像个十足老登程序员:我做项目那会还是什么什么,现在新版本都改成这样了…… ⏺ I see the issue. The newer version of Nextra uses a different format for meta files. Sections with folders need to be defined differently. Let me check the Nextra documentation format and fix this properly: 修改完 _meta.ts 文件后,还非常谨慎的又改了其他相关文件,然后Claude启动服务,启动失败报错,不过 Claude 自己又去定位问题并解决,最后成功启动服务,这里我就不把过程贴出来了。Claude 自信满满的说完美: ⏺ Perfect! ✅ Fixed and Running! The development server is now running successfully without errors! 服务器运行虽然没有问题,但访问网站时又报错,还是原来的错误,我把错误信息发给 Claude 打了它一脸。这次 Claude 不再傲娇了,而是谨慎地开始检查文件结构: ⏺ The issue is that Nextra is looking for actual page files. Let me check what the error is more carefully and adjust. The problem might be that each folder needs to either have an index.mdx or the _meta.ts needs to reference it differently. Let me check the actual file structure: 接下来又检查了文件内容和报错日志输出信息。根据报错日志的输出信息,Claude 先尝试了将 api 从_meta.ts 文件中删除,删除后可以正常加载的,但页面报了验证错误,于是 Claude 又改回去。 ⏺ The issue is specifically with the "api" key. Let me check if there's something wrong with the api folder. Maybe I need to look at how Nextra expects the structure. Let me try removing "api" from the _meta.ts temporarily to see if the server works: ......(修改文件略) ⏺ Good! It's now showing GET / 200 which means the page loaded! But there's still a validation error. Let me add the api back and check the api/_meta.ts file to see if there's an issue there: ......(修改文件略) 改回后又得到了 500 服务器错误,再检查文件内容没什么问题后,Claude 觉得有可能是因为 api 是 Next.js 的保留字,于是尝试将它改名: ⏺ I see it's returning 500 errors. This is a Nextra validation issue. The problem might be that the api folder exists but Nextra can't resolve it properly. Let me try renaming it or restructuring. ⏺ The files look fine. The issue might be that api is a reserved word in Next.js (it's used for API routes in the /pages/api directory). Let me rename the api folder to api-reference: 同步修改其他相关文件后,重启服务并验证访问页面返回状态码,得到 200 后还不放心,检查终端输出是否有错误信息。 ⏺ Excellent! I see GET / 200 which means it's working now! The errors in stderr are just warnings but the page is loading. Let me check the full output to see if there are any new error messages: 终端上有一些错误输出,Claude 觉得应该是 cache的问题,于是清理 Next.js 的cache, 重启服务: ⏺ I see - the error is still referencing "api" from the old file. The cache needs to be cleared. Let me kill the server, clear the Next.js cache, and restart ... 在检查完页面和终端都没有报错后,Claude 宣布它终于解决了问题: ⏺ Perfect! ✅ Fixed and Running Successfully! The website is now running without any validation errors! 我打开浏览器,试用了下,问题确实都解决了。 任务二:升级依赖包及迁移 Next.js 路由模式(模型:Sonnet 4.5) 网站运行和操作都没有什么问题,我打开代码看了一下,初略一看发现有两个问题,一个是 package.json 里依赖的 Next.js 和 Nextra 包都比较老旧,第二个问题是路由模式采用的是 Next.js 已不再推荐的 pages 模式。因此,我打算让 Claude Code 重构一下,解决这两个问题。 在重构之前,我想先换下模型,在任务一的时候我没有换模型,采用的是安装 Claude Code 后默认的 Haiku 模型,该模型响应快,但能力稍弱。从这个任务开始,我换成了 Sonnet 4.5 模型。 切换模型后,我让 Claude 升级 Next.js 和 Nextra: > please update next.js to 16, and update nextra to 4.6 Claude 接到任务,它便开始分析项目里的组件版本及依赖,经过一系列分析之后,它发现了一个问题。当前不能直接升级 Nextra 版本,因为当前项目使用的 Next.js 路由模式为 Pages 而非 App, 而新版本的 Nextra 已经不支持 Pages 路由。 ⏺ I've discovered a critical compatibility issue: Nextra 4 only supports Next.js App Router and has dropped support for the Pages Router. Your project currently uses the Pages Router (with the pages/ directory structure). Claude 于是让我选择是否将当前的路由模式重构成 App Router, 在我确认后,Claude 便开始做重构迁移了。具体的过程我就不再追溯,总之经过了几个问题的定位处理后,Claude 最终将路由模式迁移成功,也将 Next.js 和 Nextra 的依赖包版本升级到了新版本。 任务三:重构代码(模型:Sonnet 4.5) 文档网站基本成型,但仔细看项目代码,还是有些不太满意的地方。比如,文档页面都以 JSX 的格式放在 app 目录下,这显然还是 Next.js 网站的设计方式,而不是 Nextra 文档站点的推荐设计。Nextra 推荐将文档从 app 中分离出来,以 MDX 格式放在 content 目录下,做到文档内容与页面样式分离,这样就像一些静态博客框架(如 Jekyll)的设计一样,博客内容是博客内容,网站样式是网站样式,二者解耦,后续当用户想换网站风格了,无需修改内容页面。 由于互联网上 Next.js 的资料远远大于 Nextra, 所以我觉得大模型本身可能会偏向于 Next.js 的设计,于是我在指示 Claude Code 重构时,明确指出让它参考并学习 Nextra 的文档。 > learn this: https://nextra.site/docs/file-conventions/content-directory , and refactor this repository. Claude 表示它将学习 Nextra 的文档并以最佳实践来重构代码仓。 ⏺ I'll learn about Nextra's file conventions from the documentation and then refactor the repository to follow best practices. ⏺ Fetch(https://nextra.site/docs/file-conventions/content-directory) ⎿  Received 279.8KB (200 OK) ⏺ Fetch(https://nextra.site/docs/file-conventions) ⎿  Received 220.5KB (200 OK) ......(其他查找搜索内容省略) Claude 不但获取了我要求它参考的页面,还主动获取了上级目录等其他信息,并阅读了本地代码仓的内容,然后理解了当前代码结构存在的问题,对比 Nextra 的最佳实践,并给出了重构策略。不得不说,Claude 理解和总结能力挺强,这要在大厂妥妥的火车头。 Refactoring Plan Current Structure Issues: - Using app/page.mdx pattern (Next.js App Router convention) - Content files scattered in app/ directory with subdirectories - Mixing content with routing configuration Nextra Best Practice (Content Directory Pattern): - Create a content/ directory for all MDX files - Use simple naming: content/index.mdx, content/getting-started.mdx, content/guide.mdx - Create a gateway file at app/[[...mdxPath]]/page.jsx to route to content - Move _meta files to the content directory - Cleaner separation between routing and content Benefits: - ✅ No server restart needed when editing content - ✅ Better hot reloading - ✅ Simpler file organization - ✅ Follows Nextra recommended patterns Let me implement this refactoring: ......(重构过程省略) 重构结束后运行报了一个 500 服务器错误,告诉它后,Claude 自己调试了一会,然后就解决了问题,重构完成。 任务四:定位并解决问题(模型:Sonnet 4.5) 现在网站从呈现效果和代码结构都可用了,不过实际交互时发现了一个bug: 在点击搜索框搜索时提示报错: Failed to load search index. Search isn't available in development because Nextra 4 uses Pagefind package, which indexes built '.html' files instead of '.md'/'.mdx'. 我将这个报错信息告知 Claude Code, 并让它解决这个问题。Claude 便开始分析代码文件并很快有了答案。 ⏺ I can see the issue. Nextra 4 uses Pagefind for search, which only works on built HTML files, not in development mode. Let me investigate the current search configuration and help you set it up properly. ......(分析过程及解决方案略) Claude 认为搜索组件 Pagefind 依赖编译后的 HTML 文件,便给了一些修复选项,并建议在生产模式而非开发模式下使用搜索。我采用此建议发现原先的报错没有了,但又有新的错误: Failed to load search index. TypeError: failed to fetch dynamically imported module: http://localhost:3000/_pagefind/pagefind.js 在告诉 Claude 报错后它开始定位问题,并搜索 Pagefind 的配置方法等信息,在过程中它请我允许它执行 pnpm build pnpm start 等命令自己编译并调试,最终得以解决问题。 最后页面效果如下。 2. 与同类工具对比 在试用 Claude Code 的同时,我也用同样的指令对 Codex (模型: gpt-5.1-codex-max)和 Gemini Cli(模型: gemini-2.5-pro). Codex 在大部分任务能够顺利完成,但有些时候就会犯傻,怎么也生成不了或解决不了问题。而 Gemini Cli 在我让它生成网站的任务就没有走通过,只好放弃。所以后来 Claude Code 和 Claude.ai 成了我每天都用的工具,而 Codex 甚至是一直用的 ChatGPT 也被我疏远了。 无论从功能、体验还是任务完成度来看,Claude Code 都远超同类产品。而这种用户体验很大程度归功于背后的模型能力,无论是一开始我尝试的 Haiku-4.5, 还是 Sonnet-4.5,都能够圆满的完成我给 Claude Code 下发的编码任务。而后当 Opus-4.5 也开放给 Pro 用户后,我体验下来更是觉得强悍。尽管网上评测号称 gemini-3-pro 和 gpt-5.2 在代码能力上超过 opus-4.5, 但从我实际的感受来看并非如此,Claude Code + Opus-4.5 的编码能力是最强的。 3. 有关 CLAUDE.md 除了模型能力,Claude Code 的工程能力也是很强的,在这方面 Anthropic 一直领头羊,从 MCP 到 Agent Skills, Anthropic 提出的这些工程实践最终都成为了行业标准。本期周刊我简单聊一下 CLAUDE.md. CLAUDE.md 是专门的规则文件,用来管理 Claude Code 的记忆。因为大模型是没有状态记忆的,所以 Claude Code 在启动时会读取这些文件从而加载到上下文中给到大模型。可以理解为是写给 Claude 看的 README.md 文件,给 Claude 提供上下文信息和操作指南。一般的 Code Agent 都提供了类似的机制,在 Gemini Cli 中该文件叫 GEMINI.md, 而 Codex、Cursor 等其他 Code Agent 则叫 AGENTS.md. AGENTS.md 也已经成为 AAIF (Agentic AI Foundation) 的一个标准项目。 CLAUDE.md 示例如下: # 前端项目 ## bash命令 - `npm run build`:构建项目 - `npm run typecheck`:运行类型检查 ​ ## 代码风格 - 使用ES模块语法(`import/export`),而非CommonJS(`require`) - 尽可能使用解构导入(例如:`import { foo } from 'bar'`) ​ ## 工作流程 - 完成一系列代码修改后,务必进行类型检查 - 出于性能考虑,优先运行单个测试,而非整个测试套件 CLAUDE.md 有几种方式,最常见的是放在项目的根目录下,还可以存放在系统目录或用户目录下,其作用范围也不同。Claude 官网做了如下解释(以下表格中位置当前目录为项目文件夹): 类型 位置 用途 作用范围 系统级 系统目录下 CLAUDE.md 企业级规范 企业内遵从 项目级 ./CLAUDE.md 或 ./.claude/CLAUDE.md 项目架构、规范等 项目成员 项目规则 ./.claude/rules/*.md 语言规范、测试规范等 项目成员 用户级 ~/.claude/CLAUDE.md 个人偏好 用户自己 项目级(本地) ./CLAUDE.local.md 个人项目偏好,测试数据等 用户自己 CLAUDE.md 的写作原则是精简而清晰,过多的指令只会让大模型的效率变得低下,这也是为什么 Agent Skills 设计三层抽象的原因(后续再谈)。在 Writing a good CLAUDE.md 这篇博文里,作者建议 CLAUDE.md 不要超过60行。 另外,该文作者还提到,不要使用 /init 命令来自动生成 CLAUDE.md, 这点建议恰巧同官方博客文章相悖,在 Using CLAUDE.md files: Customizing Claude Code for your codebase 里 Anthropic 建议使用 /init 来自动生成 CLAUDE.md, 这也是我当前经常采用的方式。无论哪种建议,还是得根据实际情况来决定是否采纳。 值得一提的是,Claude 有时会忽略 CLAUDE.md 文件,这是因为有时候 Claude Code 会在提示词中针对 CLAUDE.md 追加一句系统提示:该上下文与任务可能有关也可能无关,除非与任务高度相关才响应该上下文。 <system-reminder> IMPORTANT: this context may or may not be relevant to your tasks. You should not respond to this context unless it is highly relevant to your task. </system-reminder> 所以 Claude 如果判断该上下文与当前任务无关的话则会忽略它。 4. 下一步计划 下一步打算试验下 Claude Code 的 SubAgent、Skills 等能力,另外正在用 Claude Code 编写一个类 Claude Code 的 Agent. 5. 后记 在我写完这篇周刊后,我突发奇想,让 AI 来推荐一副油画作为本文的题图,顺便也看看三个 Code Agent 在非编码作业的能力体现。以下是 Codex, Claude Code 和 Gemini Cli 分别给我的建议。 Codex (gpt-5.2-codex) 的回答最简单,它在读了本文(Markdown 文件)后建议我采用维米尔的《地理学家》,代表了好奇和探索;另外备选约瑟夫·赖特的《一位哲学家讲授太阳系仪》。 I’ll recommend Johannes Vermeer’s “The Geographer” (1669) for its portrayal of a scholar immersed in study with maps and instruments, capturing curiosity and methodical exploration—perfect for an article on Claude Code, programming, and AI. As an alternative, Joseph Wright of Derby’s “A Philosopher Lecturing on the Orrery” offers a dramatic, tech-focused scene. Both evoke light, investigation, and insight fitting the theme. Claude Code (opus-4.5) 最契合我意,它首先推荐的是大卫·弗里德里希的《雾海上的旅人》,说这幅“站在广阔而神秘的景观边缘的人影,完美地象征着一位正在探索 AI 辅助编程这一新前沿的开发者。弥漫的薄雾代表着这一新兴领域中尚未被揭示的无限可能。”而这幅画前不久刚被我用来做同样是AI主题的第21期周刊的题图,深得我心。 其他备选的有:《炼金术士发现磷》(约瑟夫·赖特)、《一位哲学家讲授太阳系仪》(约瑟夫·赖特)、《创造亚当》(米开朗基罗)、《巴别塔》(老彼得·勃鲁盖尔)。 Top Recommendation “Wanderer above the Sea of Fog” by Caspar David Friedrich (1818) A figure standing at the edge of a vast, mysterious landscape perfectly symbolizes a developer exploring the new frontier of AI-assisted coding. The mist represents the unknown possibilities of this emerging field. Alternative Options “The Alchemist Discovering Phosphorus” by Joseph Wright of Derby (1771) Captures the moment of discovery and experimentation, with dramatic lighting on a figure working intently—fitting for the iterative debugging process described in the article. “A Philosopher Lecturing on the Orrery” by Joseph Wright of Derby (c. 1766) Shows the wonder of understanding a complex system, with faces illuminated by newfound knowledge—appropriate for learning a powerful new AI tool. “The Creation of Adam” by Michelangelo (1508-1512) The iconic image of two hands reaching toward each other could symbolize the collaboration between human intent and AI capability in Claude Code. “The Tower of Babel” by Pieter Bruegel the Elder (1563) Represents building something complex layer by layer (like a documentation website), with themes of ambitious creation. My personal recommendation would be “Wanderer above the Sea of Fog” as it best captures the exploratory spirit of your article—standing at the threshold of AI-assisted development, looking out at vast possibilities. Gemini Cli (gemini-3-pro) 不但阅读了该篇文章,还请求我的权限读了我这个博客项目目录里的所有周刊文件,开始我还在奇怪,等它给答案的时候我才明白,原来它是想根据整个周刊的题目给一个最合适的,从这点看 Gemini Cli 考虑最为周全。 Based on the content of your article, which focuses on “Ambient Programming” (氛围编程) and the collaborative exploration of a codebase with Claude Code, I suggest using “The Astronomer” by Johannes Vermeer as the featured image. Why this painting fits: Ambient Light & Focus: Vermeer is a master of “ambient” light. The painting depicts a scholar in a quiet, sunlit study, which perfectly mirrors the focused yet “ambient” experience of working with an AI assistant in a terminal. Curiosity & Exploration: The scholar is shown reaching out to a celestial globe while consulting a book. This is a powerful metaphor for a developer exploring a vast, complex codebase (the globe) with the help of documentation and AI (the book and the light). Intellectual Craft: The article describes a series of methodical tasks—refactoring, debugging, and learning. The painting captures this sense of intellectual craftsmanship and the “Aha!” moments of discovery that you experienced while working with Claude. Aesthetic Consistency: Your previous issue (No. 21) used Wanderer above the Sea of Fog, a masterpiece of Romanticism. Choosing a Vermeer (Baroque) continues the tradition of using classic, thought-provoking art to represent modern technical themes. Suggested metadata for your article: image: weeklies/23-the-astronomer-vermeer.jpg (You can find a high-resolution, public-domain version of this painting on Wikimedia Commons.) Gemini Cli 推荐的是维米尔的《天文学家》,并指出我在第21期使用过《雾海上的旅人》,维米尔的这幅巴洛克时代作品能够延续该风格。Gemini Cli 给了题图的元信息命名建议,并提供了公版图片的下载链接,可惜该链接是错误的。 这次,我选择了 Gemini Cli. 参考 Claude Code Docs (Claude Code 官方文档) Claude Code: Best practices for agentic coding Using CLAUDE.md files: Customizing Claude Code for your codebase Writing a good CLAUDE.md

2025/12/21
articleCard.readMore

好奇心周刊第22期: 纳瓦尔谈人生

本文为好奇心周刊第22期,全部周刊参见:周刊系列。 今年我主要听了两个播客,一个是四月份 Chris Williamson 在他的播客节目 Modern Wisdom 中采访 Naval Ravikant,另一个是十月份 Lex Fridman 采访 Telegram 的创始人 Pavel Durov. 这两集播客都很长,一个超过三小时,一个超过四小时。两集播客都挺有意思,我在早晨跑步时当作背景音听,每集都反复听了几遍。 在 Lex Fridman 采访 Pavel Durov 播客中,Pavel Durov (杜罗夫)谈到了他的人生哲学和经历。杜罗夫信奉自由主义,并极端自律。他从二十多岁开始便戒除酒精、烟草、咖啡、药物,以及可能成瘾的物质。并且远离手机和社交网络,除了测试 Telegram 平时几乎不用手机。要知道,杜罗夫在创建 Telegram 之前曾创建了俄罗斯最大的社交网站 VK. 杜罗夫说他不喜欢被安排,而是要完全掌控自己的日程。越是有很多联系,生产力就越低,而且当一个人不断被各种信息轰炸,他是无法专注的,而且会影响情绪,这其中绝大部分信息是无效噪音。杜罗夫每天早上做300个俯卧撑和300个深蹲,并且每周去健身房健身五、六次,每次一到两小时。另外,还会洗冰浴和长时间的游泳。杜罗夫把这些当成喝酒的反面,喝酒会得到一两个小时短暂的快乐,然后付出长期的负面后果。而这些活动起初会非常痛苦,但承受下来后会在之后的几小时和几天里感觉很好。 而在 Chris Williamson 采访 Naval Ravikant(纳瓦尔)的播客中,纳瓦尔也主要谈及了他的生活哲学。播客的标题叫 44 Harsh Truths About Human Nature(《人性的44个残酷真相》, 在 YouTube 平台上叫 44 Harsh Truths About The Game Of Life),但播客里也没有明确给出这44个真相是什么,可以理解为是一个大概的数字。总之,纳瓦尔谈了很多他对于人生的认识,我在《纳瓦尔的智慧》这篇文章中曾介绍过《纳瓦尔宝典》这本书,而这集播客可以理解为是该书的补充。我便借本期周刊介绍下该播客的主要内容。 幸福、成功和欲望 1. 幸福是对现状感到满足。而成功是源于不满足,那么成功还值得追求吗? 纳瓦尔:我不确定那个说法现在还成立(指纳瓦尔之前所说过的“幸福是对现状感到满足”)。我很久以前说过那句话,但那些东西很多都是写给自己的笔记,它们高度依赖于情境。 幸福是个很复杂的话题。有两个故事,一个是说苏格拉底走进市场,人们向他展示精美的物品,他说:“这个世界上有多少东西是我不想要的啊。”这是一种自由,不想要某种东西和拥有它一样好。另一个故事是说亚历山大征服了世界,遇见了住在木桶里的第欧根尼,第欧根尼说“让开,你挡住我的阳光了。”亚历山大说“我多希望自己是第欧根尼”,而第欧根尼说“我可不想成为亚历山大”。 通往幸福有两条路径:一条是成功之路,你得到你想要的。另一条是像第欧根尼那样,你明确知道你不想要的。我不确定哪一条更有效,这取决于你如何定义成功。 2. 幸福会妨碍成功吗? 纳瓦尔:我发现对我自己而言,随着我感觉到幸福——也就是说更平和、更冷静、更活在当下、更满足于我所拥有的——我仍然想做事情。我只是想做更大的事情,想做更纯粹的事情,更符合我认为需要做的事情,以及我能独特完成的事情。所以从这个意义上来说,幸福实际上会让你更成功,但你对成功的定义可能会在这个过程中改变。 3. 痛苦与进步 克里斯:你的另一个观点:生活中的大部分收获来自于短期的痛苦,这样你才能在长期得到回报。但这样是否会导致人们成为痛苦成瘾者,把痛苦作为进步的指标? 纳瓦尔:如果你把痛苦定义为身体上的痛苦,那么它是真实存在的。但这不是我所说的痛苦,我所说的痛苦主要是精神上和心理上的痛苦,它只是意为着你不想做手头的任务。 如果你乐意做手头的任务,你就不会感到痛苦。问题是什么更有效:以痛苦的方式做事,还是以不痛苦的方式。 有一个我希望做的小思维练习,你可以回到你自己的生活中,试着让自己处于五年、十年甚至更早前的确切位置。试着回忆你和谁在一起、在做什么、感受是什么、目标是什么,将自己传送回去,看看你会给自己什么建议,你会做什么不同的事情。当然你没有新信息,不要假装回去买比特币什么的,只是根据你现在对自己性格和年龄经验相关所知道的来建议,你会如何以不同的方式做事。 我认为这是一个值得做的练习。对我来说,我会做同样的一切,只是我会用更少的愤怒、更少的情绪、更少的内在痛苦来做,因为那是可选的,那不是必要的。 4. 过程就是一切 纳瓦尔:如果你得到了那个东西,然后你习惯了它,你又会感到无聊,过几个月你想要别的东西;如果你没有得到它,你会不开心一段时间,然后你克服了它,紧接着想要别的东西。这是正常的循环。无论你最后是快乐还是不快乐,它往往不会持续。 而你必须享受过程。过程就是一切,你99%的时间都花在过程上,如果不享受它,那有什么意义呢。 5. 如何管理欲望? 纳瓦尔:你可以专注,决定自己不想要大多数东西。你不可能在所有事情上都出色,那样只会浪费自己的精力和时间。 名声、地位和社会关系 6. 名声值得追求吗? 纳瓦尔:它能让你被邀请参加更好的派对,能让你去更好的餐厅。它可以让你在远处得到你想要的东西,所以我不会说它无用。但它的成本很高。它会让你在舞台上被迫表演,被迫与你过去的声明和行为保持一致,会引来仇恨者和流言蜚语。 事实上我们似乎都想要它,说“我不想出名”是不真诚的。但因为渴望出名而出名都是陷阱。最好是赢得的名声,通过做对社群有益的事情而赢得尊重。哲学家、艺术家、科学家等。 如果名声是空洞的,只是因为你的名字或脸出现在很多地方而出名,那么这是一种空洞的名声,我认为在内心深处你会知道这一点,所以它会很脆弱,你会一直害怕失去它,然后被迫表演。 7. 如何避免地位游戏? 克里斯:名声的诱惑陷阱总在那里,人们应该如何学会减少被地位游戏这种方式分散注意力? 纳瓦尔:在原始社会没有财富这种东西,人们地位越高,可获得的东西也就越多;但现代社会我们可以创造财富,创造产品或服务,这些不像地位游戏是零和游戏。我可以富有,你也可以富有,我们可以一起创造东西。创造财富是积极的。 自尊和自我 8. 如何建立并提升自尊 克里斯:为什么说世界上最糟糕的结果是没有自尊? 纳瓦尔:那些不喜欢自己的人处境是很艰难的,因为他们总是与自己搏斗。面对外部世界已经够难了,没有人会比你更喜欢你自己。 从某种程度上说,自尊是自己的声誉。你一直在看着自己,知道自己在做什么,有自己的道德准则。如果不按照自己的道德准则行事,那会损害自尊。所以,建立自尊的一种方式就是:有一个严格的准则,然后去实现它。 提升自尊的另外一种方式是为他人做事。我回顾自己的生活,所真正为之骄傲的时刻,是当我为所爱之人或所爱之事做出牺牲的时候。 9. 诚信的社会 纳瓦尔:如果道德是有利可图的,每个人都会这样做。美德是一套信念,如果社会中的每个人都遵循它们,那会导致人人都赢的局面。如果你我都诚实,那我们很容易做生意,因为可以互相信任。 在博弈论中,最著名的游戏是囚徒困境,那里的稳定均衡是每个人作弊。但那不是社会中常见的游戏,社会中常见的游戏叫雄鹿狩猎,我们可以合作击倒一只大雄鹿,获得大晚餐;但如果我们不合作,则必须各自狩猎小兔子,获得小晚餐。 所以当我们生活在一个每个人都有自己的一套美德并遵循它们的系统中,就可以实现共赢。 10. 骄傲的代价 克里斯:为什么你说“最昂贵的特质是骄傲”? 纳瓦尔:我发推文这么说是因为我认为骄傲是学习的敌人。当我看到那些仍然被困在过去并成长最少的朋友和同事是那些最骄傲的人,因为他们觉得自己已经有了答案,也不想公开纠正自己。 11. 重新开始的意愿 纳瓦尔:伟大的艺术家总有重新开始的能力,比如保罗·西蒙和麦当娜。伟大的企业家也总是愿意重新开始,我总是被马斯克的故事所震撼,这家伙是一个永久的冒险者,他总是愿意重新开始,无论成功失败,他愿意把一切都投进去。 12. 自我优先的自由 克里斯:从我们在一起度过的一些时间来看,你有一个非常有趣的“自私”特质:把自己放在第一位。你似乎不为说或做可能导致其他人感到尴尬的事情而感到困扰。 纳瓦尔:是的,我认为每个人都应该把自己放在第一位。那只是人性,你是一个独立的有机体。 我认为不应在别人身上浪费时间,不做自己不想做的事。人的一生时间这么少,有种说法是四千周,我不想浪费它。 克里斯:你如何能心安理得地自我优先? 纳瓦尔:我已经变得越来越无情于此。我看到或听到其他人的自由方式,然后进一步强化了我的这种想法。我读了马克·安德森的一篇博客文章,他说不要时间表,所以我也删除了我的日历,不保留时间表,如果一件事情不能记住,那我就不添加它。 生产力和决策机制 13. 自由与生产力 纳瓦尔:当你把自由带入到生活,实际上更有生产力。你不仅会更快乐,更自由,还会更有生产力,因为那是你可以专注于眼前的事情。 我相信灵感是易逝的,应立即采取行动。所以当你受到启发做某件事时,立刻去做。如果我受到启发写博客文章,我立刻会写;如果我受到启发读一本书,马上就读。 如果你以这种方式过生活,将会很快乐。你越快乐,就越能持续做某事,然后越有可能做让你更快乐的事,持续如此,你会超越其他人。你越自由,就越能更好的分配时间;你越少被义务和承诺所困,就越能专注于手头的任务。 14. 找到擅长的工作 纳瓦尔:没有人比你更能做自己。找到对你来说感觉像玩但对其他人看起来像工作的东西,你就会超越其他人。你为了乐趣而做,对你来说,它是艺术,它是美,它是快乐,它是心流,它是充实。 你做对你而言自然的事情越多,你的竞争就越少,通过成为你自己来避免竞争。 15. 产品化自己 纳瓦尔:如果我来总结如何在生活中成功,那就是产品化自己。弄清楚你自然而然去做的事情,并扩大转化为产品。 16. 默认说不 纳瓦尔:默认情况下,你应该对其他所有事情说不。如果你不能决定,答案就是不。每一次打断都会让你脱离心流。我会忽略一些邀请或请求,我会接受自私,我是一个非常自私的人,不要联系我。 17. 客观地观察自己的想法 纳瓦尔:能够客观地观察自己的想法很好,它在你有意识地观察自我和思想之间创造了一个小间隙,像第三方的评估。 18. 明智地选择关注的问题 纳瓦尔:很多人都沉迷于发现问题和解决问题,但有一种糟糕的情况是我们承担自己无法影响的问题。比如你看了太多社交媒体上的新闻,被卷入了一个又一个你无法做任何事情的问题。你想要去修复这个世界,但事实上你需要先修复下自己的生活。 19. 花时间在重大的决定上 纳瓦尔:人们轻率地决定住在哪个城市,这将决定他们的朋友是谁、工作是什么,他们的机会、生活质量等。如此重要的决定,人们花很少的时间去思考。我会说,如果你要做一个四年的决定,花一年的时间思考它。四分之一的时间。 20. 迭代与重复 纳瓦尔:马尔科姆·格拉德威尔推广了一万小时成为领域专家的想法,我会说实际上是一万次迭代才能精通。迭代不是重复,重复是一遍又一遍做着相同的事情,而迭代是用学习来修正它,然后做出另一个版本,那是纠错。如果你在任何事情上得到一万次错误纠正,你将成为专家。 21. 克服愤世嫉俗和悲观主义 克里斯:你说过“不要与愤世嫉俗和悲观主义者合作”,但很多时候我们在自己身上发现那种愤世嫉俗和悲观主义,无论是我们吸收了周边负面人的话或是新闻,还是根植于内心的。人们如何避免自己内心的愤世嫉俗和悲观主义? 纳瓦尔:愤世嫉俗和悲观主义是一个棘手的问题,我们天生就有这种倾向,这是根植于进化基因的。在原始社会,人们在树林中看到有东西在沙沙作响,如果朝向它移动,结果是猎物,那可以美食一顿,但如果是捕食者,那就被吃了。所以人类为了避免毁灭和死亡,这种对于危险的恐惧是被硬编码进基因的,我们天生就是悲观主义者。 但现代社会非常不同,现代社会安全得多,机会和上行空间也大得多。比如,做投资时,如果你做空,那最多赚一倍——股票归零,收益翻倍;但如果做多,买英伟达股票,涨了100或1000倍,那你的收益是巨大的。 现代社会对于失败的容忍度要高的多,所以你需要用新皮层意识到这一点并覆盖旧皮层中的悲观主义倾向。 22. 超越标签和身份 纳瓦尔:像悲观主义者、乐观主义者、内向者、外向者这样的标签,都非常自我限制。人类是动态的,有时会内向,有时会外向,有些情境会悲观,有些情境则乐观。 抛开所有的标签,只是看手头的问题,看清现实的本来面目。保持灵活,因为现实总在变化,你必须能够适应它。而不是通过身份来看待,它会蒙蔽你的判断。 23. 什么是幸福? 克里斯:幸福是否还是如你之前所说关于平静而非快乐? 纳瓦尔:这个词对不同的人有不同的定义。对于我,基本上就是对现在感到满意。 24. 自我反思会导致不幸福吗? 克里斯:你说自我反思是导致不幸福的原因。但为了自我改进一定程度上的反思是重要的,而这导致的不幸福是需要支付的代价吗? 纳瓦尔:我特别指的是,如果沉迷于思考自己的个性、性格,那将会是很多抑郁和不幸福的原因。这件事发生在我身上,是因为我有这样的个性,或是别人造成了我的不幸,像类似这种反思就容易造成不幸福,它会强化内心的小怪兽。 你应该在反思中学习到什么,然后继续前进。思考某事并解决该问题,然后把它从脑海中拿开。如果反思在最后让你的思想更清晰,那么这是值得的;如果在最后让你的思想更忙碌,那么你可能走错了方向。 25. 如何变得幸福或成功? 纳瓦尔:我以前有很多技巧,现在我不太想要任何技巧。就像一个试图幸福的人,说我不幸福然后想创造一个幸福的框架,这是很难的。你需要一个问题一个问题的解决,一步一步的走到那里。 就像成功也没有公式,你不应该问一个成功的人怎么做获得的成功。真正非常成功的人不会坐在那里看成功学心灵鸡汤,他们只是去做了,他们对正在做的事情有强烈的欲望,以及由此产生的专注。 26. 如何处理焦虑? 纳瓦尔:焦虑和压力相关。压力是当你的思想同时被拉向两个不同的方向,当你的思想处于压力之中时,是因为它同时有两个冲突的欲望。就像你不想去工作,但你想赚钱。 克服压力的方法之一是承认自己有两个冲突的欲望,选择一个并接受失去另一个。 我认为焦虑是一种普遍的无法识别的压力,你无法识别潜在的问题。你需要再焦虑的时候非常自己的问自己:“我这次为什么焦虑?”坐下来思考它,写下可能的原因。冥想,写日记,和治疗师谈谈,和朋友谈谈。识别这些问题有助于摆脱焦虑。 27. 什么是浪费的时间? 纳瓦尔:什么是浪费的时间?从终极意义上说,一切都会归零,都是浪费的时间。但在每一刻,事情很重要,你面前发生的事情拥有世界上所有的意义。如果你正在做你想做的事,并且完全投入在那里,那就没有浪费的时间。如果你不想做它,思想正在逃离,你在对抗它,那就是浪费的时间。 真正浪费的时间是你不在场的时间,当你没有沉浸其中做你想做的事情时。 人际关系和个人成长 28. 改变自己,而不是试图改变别人 纳瓦尔:我们认为不能改变自己,但我们可以;我们认为可以改变别人,但我们不能。 29. 决策原则 纳瓦尔:在决策中,我有三个启发式的方法: 如果无法决定,答案是“不”。 如果有两个选择,选择短期内更痛苦的那个。 选择长期内会让自己更平静的路线。 30. 无法传授的智慧 纳瓦尔:智慧无法传递,它必须被自己发现。你必须在自己的背景重新发现,必须有特定的经历。 你必须实际生活,经历所有问题,弄清楚你想要什么,在什么情境下哪些适用哪些不适用。 31. 每个人都可以成为哲学家 纳瓦尔:什么是哲学?只要你获得足够长,你就会成为一个哲学家。任何深入追求的学科最终都会归入哲学,对任何事物精通,都会导致你成为一个哲学家。 32. 为人父母的快乐 纳瓦尔:孩子以每一种可能的方式让你的生活更好。如果你想要一个自动内置的生活意义,那就生孩子。 33. 注意力是人生的货币 纳瓦尔:我曾经认为人生的货币是金钱,金钱很重要,它确实可以让你用某些东西交换时间,但它真的买不了时间。 生命的真正货币是注意力,你选择关注什么以及对此做什么。注意力是你唯一拥有的东西。 参考: 44 Harsh Truths About The Game Of Life (Youtube) Pavel Durov: Telegram, Freedom, Censorship, Money, Power & Human Nature (Youtube)

2025/12/14
articleCard.readMore

不确定性世界的生存策略

近两个月来,一口气读完了塔勒布的四本书《黑天鹅》、《反脆弱》、《非对称风险》和《随机生存的智慧》,加上前年读过的《随机漫步的傻瓜》,一共是五本。而这五本书也被塔勒布本人视为一个系列,命名为 Incerto, Incerto 在意大利语和拉丁语中意为不确定性。不确定性是塔勒布思想的核心,他试图通过该系列来为这个充满不确定性、随机的、极端事件的世界构建一种哲学和行动指南。纳瓦尔也曾经多次推荐过他的书。 但说实在的,我是硬着头皮读下这五本书的,而塔勒布的另一本《肥尾理论》我读了一半干脆放弃了。我不知道是因为翻译的问题,还是塔勒布原本文风的问题,总之,就是看着看着不知道这老兄想说什么了。其实他的书除了《肥尾理论》堆砌满书的数学公式外,其他几本所介绍的概念或理论还是比较容易理解的,且塔勒布创造的“黑天鹅”等概念也很形象,但就是文风太过于天马行空,没有章法,让人费解。我花了几个周末时间,将他的这个系列的观点和主要内容整理了下,一来为这段痛苦的阅读历程做个总结,另外也方便想了解塔勒布观点而又免受阅读之苦的同学。 我打算用五个章节来总结,前四个章节分别代表《随机漫步的傻瓜》、《黑天鹅》、《反脆弱》和《非对称风险》四本书的笔记总结,最后一个章节谈下我自己的看法。而《随机生存的智慧》属于塔勒布的个人格言集,我觉得有很多似是而非的话语,并不再总结,唯有书的原名”The Bed of Procrustes” 意为“普罗克拉斯之床”,是他诸多思想中的一环,不过在《反脆弱》中也有提及,便在第三章节中一并阐述。 成功不是因为能力,而仅仅是运气好而已 英文原名:Fooled by Randomness: The Hidden Role of Chance in Life and in the Markets 互联网上有个经典的笑话,说是有人在乘电梯时努力做俯卧撑,当他来到顶楼时,别人问他是怎么上来的,他说是做俯卧撑上来的。人们把这种将成功归结为自身努力的行为称作“在电梯里做俯卧撑”,这些人忽视或不愿承认的是:成功更大的因素是他侥幸坐上了上行的电梯。我们常常把“好结果”归因于自身努力和能力,而把“坏结果”归因于运气或外部因素。 在《随机漫步的傻瓜》中,塔勒布则用更极端的例子来比喻这种误判,他说那些在金融市场中呼风唤雨的玩家,就像是在玩俄罗斯轮盘赌的赌徒。媒体只会把聚光灯投给幸运活下来的玩家,而对那些死在子弹下的不幸玩家则熟视无睹。事实是,只要不下牌桌,如果赌转盘的傻瓜一直玩下去,那么不幸总有一次会发生在他身上,然后一无所有。因为玩游戏的傻瓜足够多,所以总有少数的幸运儿活下来并极其富有,只不过其他人已成一堆墓冢。 这就是所谓的“幸存者偏差”,媒体中宣传的成功案例、心灵鸡汤,试图从成功者身上找到成功密码。而塔勒布在《黑天鹅》中直接说到:“躺在失败者坟墓中的人有如下共同点:勇气、冒险精神、乐观等等,同那些百万富翁一样。或许具体的技能不同,但真正使两者不同的主要因素只有一个:运气,只是运气。”这是因为,我们在小样本中误认为发现了规律,但实际上只是“随机噪声”而已,这就是小数定律。与之相对的是大数定律,而蒙特卡洛方法正是大数定律的应用,为了解决复杂场景的数值计算问题而采用的不确定性算法。蒙特卡洛方法利用随机数随机采样,样本越多,结果则越接近真实值,用统计实验去逼近真实答案。 因此,塔勒布告诫我们要当心那些新闻媒体和所谓的“预言”专家,成功是无法预测的。这就像无数只猴子在打字机前随机打字,有一只猴子敲出了莎士比亚的戏剧,你就能相信这只猴子下一次还会敲出另一本世界名著么。聪明的做法是像荷马史诗《奥德赛》中描绘的奥德修斯那样,面对海妖的迷人歌声,将水手们的耳朵用蜡封住,避免心智被诱惑。在这个纷繁复杂的时代,有无数的噪声和诱惑,总有人吸引你去俄罗斯轮盘赌,堵住耳朵,戒掉新闻和媒体,保持冷静与怀疑。 世界往往由极端的“黑天鹅”事件推动,而这些事件的发生毫无征兆 英文原名:The Black Swan: The Impact of the Highly Improbable 在发现澳大利亚的黑天鹅之前,欧洲人相信天鹅全部是白色的。而一旦登陆澳洲大陆,看到黑天鹅一眼,便颠覆了上千年来对白天鹅数百万次确定性观察所得的结论。塔勒布因此将“黑天鹅”定义为一种重要事件类型,该事件具备三个特点:稀少且不可预测,影响巨大,事后可解释。黑天鹅事件虽少,但极为重要。少数的黑天鹅事件几乎能解释这个世界上发生的所有事情,因为历史和社会不是缓慢爬行的,而是在一步步地跳跃,从一个断层跃上另一个断层,触发跳跃的就是“黑天鹅事件”。比如斐迪南大公遇刺、德国闪击波兰、911事件、2008金融危机。 塔勒布在《黑天鹅》一书中提出了两个概念:平均斯坦(Mediocristan)和极端斯坦(Extremistan),可以把它们想象成两个虚拟的国度,分别遵从各自的运行法则。平均斯坦受平均值支配,多数变量服从正态分布(薄尾),单个样本的变化对整体影响极小。典型的例子如身高、体重、寿命等,虽然个体身高有差异,但全世界人类的身高满足正态分布,死去一个特别高或特别矮的人对全世界平均身高的影响可忽略不计,而出生一个人,也可以预测出他长大后的身高范围。在平均斯坦的世界,大数定律与中心极限定律有效,结果可观测统计可预测。这是一个白天鹅的世界。而极端斯坦则受极端值支配,多数变量服从幂律分布(厚尾),处于厚尾中的少数极端事件影响巨大,足以颠覆整体。典型的例子如财富、公司市值、书籍销量、社交媒体传播等。马斯克在2025年财富突破了5000亿美元,比几亿普通人总和还要多。根据联合国统计,收入最低的50%的人口仅拥有全球2%的财富,而1%最富的人则占据了全球38%的财富。极端斯坦的世界无法用统计手段来预测,这是个黑天鹅的世界。 我们以为身处的世界是平均斯坦,实际则更接近极端斯坦。塔勒布举了这么一个例子:一只火鸡每天都接受到主人的投喂,在接受了1000天投喂后它预测第二天仍能得到食物,结果没想到第二天迎接它的是宰杀它的屠刀,因为感恩节临近了。不过,黑天鹅也并非都是负向事件,也有正向黑天鹅,比如青霉素的发明、互联网的诞生。对此,塔勒布建议的决策法则是:当可能受到正向黑天鹅事件影响时则勇于冒险,当可能受到负向黑天鹅事件影响时则非常保守。 无论是负向黑天鹅,还是正向黑天鹅,其影响都是巨大的,而结果是毁灭还是收益,取决于系统是“脆弱”还是“反脆弱”,这是塔勒布《反脆弱》一书所想表达的观点。 训练“反脆弱”,从“黑天鹅”中受益 英文原名:Antifragile: Things That Gain from Disorder 塔勒布在《反脆弱》开头序言的第一句话便说:“风会熄灭蜡烛,却能使火越烧越旺。”风带来的是随机、不确定性和风险,而蜡烛和火面对冲击后有着两种截然不同的表现,其原因是这两个系统:一个是脆弱(fragile)的,另一个是反脆弱(anti-fragile)的。在传统概念中,脆弱的反义词是强韧(resilient)或稳健(robust),比如相对于抗摔,玻璃杯是脆弱的,铁盖则是强韧的。而反脆弱的事物则会在重摔后变得更强,这是一种能够吸收压力和风险的系统,就像人的肌肉在打压后更强壮那样。塔勒布则用希腊神话中的事物来比喻这三者:达摩克利斯参加暴君国王的宴会,被命令在头上方的梁木上用一根毛发悬一柄利剑,利剑随时可能掉下砍断他的头颅。作为凡人的达摩克利斯是脆弱的,如果换做希腊神话中不死的凤凰则是强韧的,而九头蛇怪则是反脆弱的,因为每次一个头被砍,就会长出两个头来。用尼采的话就是:“凡杀不死我的,必将使我更强大。” 但现代社会过于追求可控和稳定,试图建立各种完善的规章制度来防止不确定性和波动,反而导致对“反脆弱”系统的否定。追求“去波动化”,实际上是在积累脆弱性,一旦遭遇黑天鹅,很可能导致系统崩溃。塔勒布又举了一个希腊神话的例子,普罗克拉斯是一个穷凶恶极的旅馆老板,为了让旅客躺在床上刚好符合床的长度,他会砍掉高个子的腿脚,拉长矮个子的身体,让床的长度和旅客身高完全相符。现代化就是普罗克拉斯之床,它的目的是为了增加效率,但也削弱了系统的反脆弱性。试图包办一切的政府也是出于追求稳定的目的,上个世纪的经验表明,计划经济导致的饥荒远高于预期。就像是现代社会里过度保护子女的父母,过度保护实则阻碍成长,子女在步入社会后遭遇黑天鹅时变得脆弱不堪。看似在帮助,实则是伤害。 正确的做法不是避免风险,而是吸收风险。就像人体的免疫系统,适当地接受小剂量的病毒,从而激发抗体运作,增强免疫力,这也是疫苗的原理。上世纪的中国人热衷国企的“铁饭碗”,可没想到世纪末国企也开始了下岗潮,追求稳定的不能得到真正的稳定,拥抱变化的反倒成了最后的赢家。 针对投资建议,塔勒布还提供了一种解决方案:杠铃策略。杠铃的两端代表两个极端条件,并非对称,中间空无一物。一面是极端的风险厌恶,在负向黑天鹅面前采取保守措施;一面是极端的风险偏好,以开放姿态迎接正面黑天鹅;而不采取中等程度的风险策略。比如将90%的资金投入极度安全的银行储蓄甚至现金,而将10%的资金投资于风险很高的证券;这样损失最坏不会超过10%,但收益却是没有上限的。当然这只是塔勒布的一家之言,切勿当成投资宝典。 躬身入局,风险共担,遵守银律 英文原名:Skin in the Game: The Hidden Asymmetries in Daily Life 塔勒布似乎对希腊神话无比着迷,以至于他的书中总是引用希腊神话来说明他的观点,即使在某些时候看上去不那么贴切。在《非对称风险》的一开头,他又引用了一个希腊神话:安泰俄斯是大地女神盖亚和海神波塞冬的儿子,力大无穷,强迫每个路过他领地的人与他摔跤并把对方压死,战无不胜,因为他那源源不断的力量来自于他的大地母亲,但如果他与大地分开,就会失去力量。后来大力神赫拉克勒斯路过这里,与之摔跤时将安泰俄斯举过头顶,后者瞬间失去大地母亲给予的力量,被赫拉克勒斯杀死。 因此,塔勒布就说:你看,安泰俄斯就像“知识”,而大地母亲则是“实践”,如果知识脱离实践,那么就会虚弱的不堪一击。所以我们不要仅仅是从书本中学习知识,得要实践,希腊谚语说:“Pathemata mathemata”,翻译过来就是“在痛苦中学习”。从书本中学习是轻松的,但从实践中学习是痛苦的,只有在痛苦的实践中才能真正学到东西。而《非对称风险》英文原名就是“Skin in the Game”,让自己参与到游戏中来,躬身入局,得让皮肤接触现实,有擦伤的痛感,从这种痛苦的实践的代价中获得真知。 但这个世界的决策者们显然并不都具备这种认知。典型的例子便是对别国政权的干涉主义者。2003年美国入侵伊拉克,成功推翻独裁政权并将萨达姆送上绞刑架,但结果却是伊拉克深陷内乱,美军最终也不得不在2011年撤出,而极端恐怖组织伊斯兰国也趁机崛起,伊拉克人民遭受了比萨达姆时代更糟糕的混乱局面。类似的情形在阿富汗、叙利亚、利比亚等国家一再发生。干涉主义者大声呼吁要对一些国家实施干预和制裁,以便将该国人民从独裁者手中解救出来,但他们的行为脱离该国实际,搞出一个更烂的摊子后拍屁股走人。 还有一些控制或影响金融市场的银行家和政府高官们,塔勒布称之为“白知”(intellectual yet idiot),也就是所谓高智商且聪明的白痴。在金融危机爆发的时候看似在拯救市场,实则干着寻租的勾当,因为在金融危机爆发的前几十年里,他们就已经把纳税人的钱转移到里自己口袋。银行没事的时候赚钱,银行出事的时候则怪“黑天鹅”。 为什么会这样?首先是能力问题,干涉主义者和“白知”们只考虑静止的状态,不考虑事物的动态演进,不考虑事情的连续性后果,也没有能力预测。其次,也是更重要的是他们不承担风险,不承担风险却负有极大责任,这是不对称风险。再者,人们往往有着“柏拉图化”的倾向,也就是人们在把具体事物转化为抽象概念的过程中,通常会遗失对具体的人和事的共情,而只剩下宏大的概念和空洞的抽象价值。 对此,塔勒布给出了一些解决方案。首先是要防止唯智主义,理论和实践不能脱离。对于那些夸夸其谈的人,我们不仅要听他们说了什么,更要看他们做了什么。更要担心银行家和政客们口若悬河的承诺,得看到他们是否绑定了自己的利益,就像在订婚的时候,一颗昂贵的钻石胜过千言万语的誓言。 而对于不对称风险,解决方法是“风险共担”。在古代通常是由那些能够承担或者化解风险的人来推动社会进程。古罗马的皇帝都会身先士卒带兵打仗,死在战场的不在少数,风险共担的意识深入人心。《汉谟拉比法典》有一条便是这么规定的:“如果建筑师建造的房子倒塌了,并导致房屋主人死亡,那么建造房子的建筑师应该被处死。”当然在现代社会,实际在执行时并不是僵化地遵循字面意思去判决,不是要一名医生截肢错腿时要截掉医生的腿,而是依据法律为受害的一方寻求赔偿。 这种朴素的“风险共担”意识的本源是“以眼还眼,以牙还牙”的对称性规则。在古代西方,有个著名的对称性规则叫“金律”(Golden Rule),即“以你想被对待的方式去对待他人”,和中国儒家的“推己及人”思想差不多。还有个延伸的规则叫“银律”(Silver Rule):“你不想被对待的方式也不要对待他人”,这等同于孔子说的“己所不欲勿施于人”。对称性法则,特别是银律,在防止文明倒退尤为重要。比如在民主社会,最大威胁是以某些言论可能伤害他人为由,试图去限制这些言论,一旦形成这种思潮,就会使民主滑向深渊。而历史上因为忽视对称性法则而自取灭亡的例子不在少数,最典型的莫过于基督教取代罗马教。古罗马信奉希腊神话类似的多神教,对其他宗教信仰也比较宽容,因为对他们来说其他教派信仰的神也不过是诸神之一,包括基督教。但基督教在《十诫》的第一条便规定“不可信除耶和华外其他的神”,当君士坦丁大帝将基督教奉为国教后,就没有其他宗教包括传统的罗马教的容身之地了。也就是说,罗马教包容基督教,基督教不包容罗马教,其结果就是罗马教徒要么改宗,要么灭亡。因此,塔勒布呼吁:我们不能对某些不宽容的少数派(比如宗教激进分子)保持宽容,原因很简单,他们违反了银律。因为他们彻底否定了别人拥有自由选择的权利,如果我们仍坚持所谓的“普世价值”或“人权原则”,那不是捍卫自由和民主,而是自杀。 最后,还是回到风险,我们躬身入局,拥抱风险,是为了抵御可能导致系统性毁灭的风险。那什么样的风险是合适的?塔勒布说:如果一个策略有可能出发爆仓风险,那么无论多么大的收益都得不偿失。这就是理性,理性就是避免系统性毁灭。 对塔勒布的看法 塔勒布全名纳西姆·尼古拉斯·塔勒布,是黎巴嫩移民,其家庭在黎巴嫩属于名门望族,父母两系都出过不少政府高官,其外祖父和曾祖父都担任过黎巴嫩副总理,家族拥有大片土地和资产,但1975年开始的黎巴嫩内战结束了这一切,年少的塔勒布亲眼目睹了由盛转衰的过程。可能是年少时这段经历的关系,塔勒布便将这种认知转化成了他未来人生的指南。后来他到华尔街担任对冲基金经理,凭借其对不确定性的理解在1987年股灾中对冲美元空头而获得财富自由,其后又分别在2000年纳斯纳克互联网泡沫和2008年次贷危机中因反向操作而获利颇丰。2001年他在发表的“不确定性系列”第一本《随机漫步的傻瓜》中开了一个脑洞:设想有一天飞机可能撞进办公室。而后没过几天,911事件发生,两架飞机撞进纽约双子塔的办公楼里。 塔勒布以其独特的视角向人们揭示了一个全新的世界模型,世界充满了不确定性和随机事件,我觉得这一点是非常值得学习和理解的。在这种模型的认知下,那就要考虑随机性下最差的结果会是什么,如果最差的结果是系统性奔溃,那么不管可能的收益多诱人,都要坚决抵制。正如老子所说的“贵大患若身”,首先得惜身,不要动不动就All-in,把全部身家性命都赌上去,那些看上去风光的人物只是在俄罗斯轮盘赌枪口下的幸运儿。在随机性的“黑天鹅事件”里等待机会,同样如老子所说的“祸兮福所倚,福兮祸所伏”,危中有机,只要活得够久,就能等到机会。 具体执行层面,我很认同塔勒布提出的吸收风险的反脆弱方法、“风险共担”和对称性法则这几个建议。首先,关于反脆弱,塔勒布曾在书里举了个健身的例子,他认为最有效和最省时的方法是专注于能承受的最高重量的训练,每次训练以尝试超越纪录一两次为限,而不是把时间花在重复轻松的力量范围内。这种方法映射到塔勒布的观点就是让肌肉吸收重量带来的冲击风险,而我觉得这同样可以对应“学习区-舒适区”的理论:让肌肉在学习区练习,而非在舒适区重复。我尝试了一段时间该方法,果然比之前的方式更奏效。其次,“风险共担”用更通俗的话说就是“责权对等”,对于自己,承担更重的责任才能获取更多的权利,而对于他人,敢于承担风险的人也才能够被信任。最后,对称性法则很重要。在社会交往中,我们不仅要自己做到“推己及人”和“己所不欲勿施于人”,也得当心那些“双标”的人。而在更大的文化层面,要防范“不宽容”的文化,它们会反噬宽容的文化,进而使得文明倒退。 但我对塔勒布的观点也有些不赞同的意见。首先是塔勒布太过于执着他的“黑天鹅”理论,以至于无视概率论。他把很多人类事物都归纳为幂律分布,由于马太效应,诸如财富等确实如此,但还有很多并非如此,比如学历、专家分布等。塔勒布在《非对称风险》中举了个例子说外科医生应该看上去不像外科医生:有两位医生,一位医生外表干练、衣着整齐、办公室显眼位置摆着名校毕业文凭;另一位医生看上去像屠夫、举止粗俗、衣着邋遢、办公室里也没有挂任何文凭证书。塔勒布说如果让他选择给自己手术的主刀医生,他会选择像屠夫的那一位:因为如果一个人看起来不像是干这一行的,却又在这一行干了很长时间,这说明他需要比别人克服更多的困难,也就是说他可能能力更强。初看塔勒布的解释似乎是逆向思维,但他犯了严重的概率性错误。挂出文凭比不挂文凭有就医资质的概率更高,表面注重卫生和细节的人比表面不注重的人实际上做到的概率要高很多,而医生是需要重视卫生和细节的职业。 这个例子也代表了塔勒布的另一种偏见,即对专家的偏见。塔勒布不信任专家,他给专家取名为“白知”。我觉得对于那些打着权威名号寻求“寻租”机会的专家给与此评价无可厚非,但不能谋杀一个行业的所有专家,在专业领域,如果一定觉得民间有高人、专家都不如大众的话,那就有些反智和反常识了。 另外,塔勒布在《反脆弱》中建议吸收风险,以试错来建立反脆弱能力;试错在某些系统成立,但在某些系统也会带来巨大的成本。总之,我觉得塔勒布提供了独特的视角、模型和解决方案,但也过于偏激。这个世界是复杂的,不是一个模型可以解决所有问题。在具体执行过程,还是得应用中国传统的中庸之道:过犹不及。 参考: 《随机漫步的傻瓜》 纳西姆·塔勒布[著] 盛逢时[译] 中信出版社 2012/06 《黑天鹅》 纳西姆·塔勒布[著] 万丹、刘宁[译] 中信出版社 2011/10 《随机生存的智慧》 纳西姆·塔勒布[著] 严冬冬[译] 中信出版社 2012/07 《反脆弱》 纳西姆·塔勒布[著] 雨珂[译] 中信出版社 2014/01 《非对称风险》 纳西姆·塔勒布[著] 周洛华[译] 中信出版社 2019/01 只有当你可以自由地做事情,不需要明显的目的、理由和别人的要求时,你才算是真正存在于这世上。 You exist if and only if you are free to do things without a visible objective, with on justification and, above all, outside the dictatorship of someone else’s narrative. ———— 塔勒布《随机生存的智慧:黑天鹅语录》

2025/11/16
articleCard.readMore

好奇心周刊第21期: 推理模型的构建与未来

本文为好奇心周刊第21期,全部周刊参见:周刊系列。 前不久,我在北京参加了ML-Summit 2025技术大会,其中有个议题是《推理模型的历史、现在与未来》,演讲者是 OpenAI 的研究科学家 Lukasz Kaiser, 他曾在 Google 工作,是 Transformer 发明人之一,也是《Attention is All You Need》论文的作者之一。他在 OpenAI 主要负责推理模型(Reasoning Models)的研究,是 OpenAI o1 的早期研究开创者。Lukasz 在这次演讲中回顾了 Transformer 的发展历史及当前的推理模型,并推测推理模型可能的未来。听这篇演讲之余,我同时也学习了 Sebastian Raschka 的博客文章 Understanding Reasoning LLMs(《深入理解推理模型》),整理本期周刊,一起了解下什么是推理模型,以及如何构建推理模型。 一、什么是推理模型 推理模型是大语言模型的一种,相对于普通的对话模型,它能够进行多步逻辑推理、中间步骤思考、以及自我验证。有些数学、逻辑、代码等类型的问题需要用到推理能力。比如,像“若一列火车以每小时60英里行驶3小时,它行驶了多远?”这样的题目就需要一定的简单推理。在 OpenAI o1出来之前的大语言模型也能回答这类问题,但答案会比较简单,OpenAI o1、DeepSeek R1 等推理模型能够用推理过程来回答问题。这种推理中间步骤有些模型会显示在答案中,将详细的推理步骤给出。像 DeepSeek 则会将这些中间思考过程呈现在思考过程区域显示给用户,与答案区别开来。而 ChatGPT 则干脆不显示,只显示模型正在思考,可能需要花费一些时间。 在《周刊第16期: Andrej Karpathy 讲 AI》这一期周刊里介绍了 LLM 的训练过程。预训练阶段训练出来的是基础模型,用户场景不能直接使用,需要进行 SFT 后训练成对话模型(如 ChatGPT 的 instruct 模型)。而推理模型则需要进行更进一步的专业化训练阶段,或者称为领域定制化(specialization). 在这个阶段,将面向特定领域场景对 LLM 进行更精细化的调整。而推理模型则是让 LLM 在中间推理步骤的复杂任务中表现出色,以应对数学、编程等复杂推理任务挑战。如下图示。 二、什么时候用推理模型 并不是所有问题都需要用到推理模型。一些简单的或是摘要、翻译、或是基于知识的问答任务并不需要用到推理模型,不是因为推理模型回答不了这类问题,而是推理模型在推理时通常计算成本更高,耗时也会更长,而输出内容也相对较复杂,甚至有时还会因为“过度思考”而导致错误。一般来说,推理模型适合数学、编程等逻辑性较强的问题。 三、如何构建推理模型 通过对 DeepSeek R1 论文的解读,以及对 OpenAI o1 的推测,Sebastian 总结了四种构建推理模型的技术。 1) 推理阶段扩展(Inference-time scaling) 一般是在推理阶段通过提示词工程(Prompt Engineering)来实现,比如“思维链提示词”(CoT),在输入提示词中增加让大模型“逐步思考”(think step by step)等词语,鼓励大模型在生成过程中输出中间推理步骤。这种方法往往会在一些需要演算策略等类型问题上奏效,如下图所示: 除此之外,还可以采取其他推理阶段的扩展方法,比如让LLM生成多个答案通过投票来选出最佳结果,或采用“集束搜索”(beam search)等搜索算法来生成最优答案。 2) 纯强化学习(Reinforcement Learning, RL) 早在ChatGPT时期,强化学习便被用来作为 ChatGPT 背后 Instruct 模型的训练方法,而 DeepSeek R1 论文中也显示:推理能力可以从强化学习中自发涌现。与 ChatGPT 所使用的“基于人类反馈的强化学习”(RLHF)不同,RLHF 侧重于基于人类偏好来调整 LLM,而 DeepSeek R1 所用的强化学习则设计了另外两种奖励机制:“准确性奖励”(accuracy reward)和“格式奖励”(format reward)。准确性奖励使用确定性系统评估数学类等问题的回答,比如通过LeetCode编译器验证代码类问题的正确性。格式奖励则以来另一个大模型作为评判者,以确保回答符合预期格式,比如将推理步骤放置于 <think> 标签内。 DeepSeek 基于 DeepSeek V3 671B模型,采用纯强化学习训练得到 DeepSeek-R1-Zero 模型,如下图示: 3) 监督微调与强化学习结合(SFT + RL) DeepSeek-R1-Zero 并非是 DeepSeek R1 系列性能最好的模型,DeepSeek 在此模型基础上增加了额外的监督微调(SFT)和强化学习(RL),训练得到 DeepSeek R1 模型,如下图示: DeepSeek 团队先是用 R1-Zero 生成 SFT “冷启动”(cold start, 相当于初始化)数据,用这些数据基于 DeepSeek V3 做指令微调,然后又进行一轮强化学习,在 R1-Zero 使用的准确性奖励和格式奖励基础上,增加了“一致性奖励”(consistency reward),这种奖励机制是为了防止模型在回答中混用多种语言。然后用这种训练出的中间过程模型生成约60万条“思维链”(CoT) SFT 样本数据,另外再用 DeepSeek V3 基础模型生成20万条基于知识的 SFT 样本数据。 这两种共计80万条 SFT 样本数据被用于对 DeepSeek V3基础模型进行指令微调,之后再进行一轮强化学习。在这轮的强化学习阶段,DeepSeek 使用基于规则的方法为数学、编程等问题提供准确性奖励,而对于其他问题则引入人类偏好奖励。最终得到的 DeepSeek-R1 模型在性能上总体超越了 R1-Zero, 如论文中所附的下表所示: 4) 监督微调(SFT)与知识蒸馏(Distillation) DeepSeek R1 系列还发布了一系列通过所谓“蒸馏”(distillation)训练得到的较小模型。蒸馏的方法就是用大型模型(如 DeepSeek V3 671B)生成的SFT样本数据,对较小的模型(如 Llama 8B)进行指令微调。DeepSeek 蒸馏模型所用的 SFT 数据如上述 R1 所用 SFT 数据一致,即 DeepSeek R1 中间版本模型生成的60万思维链数据和 DeepSeek V3 生成的20万知识数据。只不过不是基于 DeepSeek V3 而是在 Llama 3 和 Qwen 2.5 上训练,得到 DeepSeek-R1-Distill-Qwen-32B、DeepSeek-R1-Distill-Llama-70B 等蒸馏模型。如下图示: 蒸馏模型性能虽然不如 DeepSeek R1,但是相比 R1-Zero,性能却要好很多。而且模型参数相对较小,运行成本也更低。 四种训练方案小结 简要回顾下这四种训练方法。第一种推理阶段扩展无需额外训练,在推理模型实际应用中都或多或少有使用,只不过会显著提升推理成本。而后三种训练方法在 DeepSeek R1 系列模型的训练都有体现。纯强化学习能够让大模型出现推理能力的涌现,这中方法被用来构建 R1-Zero, R1-Zero 不仅用来验证强化学习的效果,也被用来生成 R1 的冷启动数据。监督微调+强化学习的结合是训练推理模型的首选方案,这种方法也被用来构建 DeepSeek R1 模型。而蒸馏方案则用来构建较小的推理模型,适合低成本场景。 四、推理模型的未来 在了解了推理模型的构建过程后,可以看到,强化学习是大模型涌现推理能力的关键;而强化学习和 SFT 结合,可以得到性能更强的推理模型。Andrej Karpathy 说“强化学习很糟糕,但其他方法更糟。”在当前阶段,强化学习虽然存在一些效率问题,但却是让大模型学会推理决策的最优方法。 回到 Lukasz Kaiser 的演讲议题《推理模型的历史、现在与未来》,其英文原名是 Reasoning Models: What’s Great and What’s Next? . Lukasz 回顾了 Transformer 的历史,在 Transformer 之前,AI 业界研究的是循环神经网络(RNN),它无法并行处理词语序列,记忆力有限,Lukasz 形容它就像是一只在词语序列上行走的蜗牛。而 Transformer 的诞生解决了这严重的效率问题,它就像一只把过往知识都背在壳里的蜗牛,通过并行处理和注意力机制,极大的增强了模型的性能。 不过面对数学、编程等复杂任务领域,仅依赖记忆是不够的,还需要学习推理策略。这就是推理模型要解决的问题。演讲中举了个例子,问旧金山动物园几点开门?Transformer 模型的做法是在训练时记住了所有动物园的开门时间(信息可能会过时),而推理模型则是学会了查询搜索引擎的策略能力,调用搜索引擎并分析查询结果而给出答案。从 Transformer 到推理模型是从“知识记忆”到“方法学习”的本质转变。 为了与 Transformer(转换器)对应,Lukasz 把推理模型叫作“Reasoner”(推理器),而他预测推理模型的下一个进化方向便是 “Researcher”(研究器)。关于这个 Researcher, Lukasz 是这样描述的:“想象一下,一个模型不再是单一的思考者,而是能够并行启动成千上万个‘思维线程’的庞大研究系统,它能从任意信息中学习,而不仅仅是那些我们能够事先验证的数据。”这并非空想,实际上,Lukasz 的 OpenAI 同事已经在刚发布的 GPT-5-Pro 上验证,他选取了一篇今年的数学论文,使用 GPT-5-Pro 尝试解决其中一个明确且尚未解决的开放问题,17分钟后,GPT-5-Pro 给出了证明,且比论文中的方法更优。 我并非AI或大模型专家,在这里仅将学习 Sebastian Raschka、Lukasz Kaiser 的博客和演讲做个笔记总结。至于推理模型的未来是否如 Lukasz Kaiser 所预言,我不得而知。而至于未来的推理模型应该怎么构建,我就更不得而知。我只是隐隐约约地联想到强化学习之父 Richard Sutton 在《苦涩的教训》一文中的观点:人们总是试图为AI构建逻辑规则,这种方法在短期内常常有效,而看起来相当“聪明”,但当计算能力提高、数据增多、学习算法更强时,依赖数据和学习的通用方法总能超越人类的“聪明”设计。我们应该从痛苦的教训中学到,通用方法的力量是巨大的,那是随着计算量的增加而持续扩展的方法。目前看来能够无限扩展的两种方法是搜索和学习。 参考 Understanding Reasoning LLMs, Sebastian Raschka, 2025/02 《万字解密ML 2025大会首日最强思辨现场》 CSDN, 2025/10 The Bitter Lesson, Richard Sutton, 2019/03 我思,故我在。 —— 笛卡尔

2025/10/28
articleCard.readMore

好奇心周刊第20期: 从四个方面了解Palantir

本文为周刊第20期,前期周刊参见:周刊系列。 从本期开始,周刊有了正式的名称:好奇心周刊。一份好奇心驱动整理的知识总结,给充满好奇心的你。 本期周刊谈一谈近来比较火的Palantir,去年这家公司被列入了标准普尔500指数,而今年又被纳入标准普尔100指数,而市值最高也飙升至3700亿美元,跻身全美市值最高的十大科技公司之列。在此之前,很多人都没有听说过Palantir,并且硅谷的一些公司还因为Palantir与美国政府关系比较密切而比较排斥,Palantir接受了很多政府和军方订单,在硅谷文化里比较异类,而几年前,Palantir将总部也从硅谷搬迁至位于美国中部科罗拉多州的州首府丹佛。我从阮一峰的周刊中了解到Palantir,最近也翻看了关于Palantir的一些文章和Palantir的官方博客,整理一篇周刊,通过其创始人、CEO、技术架构、FDE组织来了解下这家硅谷企业眼中的异类。 本文思维密集度 = 约20小时(前期学习花费时间)+ 10小时(总结及写作时长)÷ 10分钟(阅读本文时长)≈ 45 硅谷异类创始人 谈到Palantir,就不得不提到它的创始人和CEO. 创始人是知名的硅谷投资人彼得·蒂尔(Peter Thiel),他是一名德国移民,本科在斯坦福大学读哲学,并在斯坦福法学院获法学博士。1998年与几位朋友一起创立PayPal并担任CEO,开启互联网支付业务。而差不多同时期,马斯克也跟他的弟弟创办了X.com, 同样是在线电子支付业务,两家展开了激烈的竞争和用户补贴大战。彼得·蒂尔在他的商业畅销书《从0到1》中曾对这一段经历描述如下:“到了1999年末,我们陷入了全面战争。PayPal 的许多员工周工作时间达到了100小时。毫无疑问,结果不尽如人意,因为我们关注的不是客观的生产效率,而是打败 X.com 公司。我们公司的一个工程师甚至为了达到这个目的还设计了一枚炸弹;在一次会议上他展示了炸弹的图解,头脑还算冷静的人制止了这个计划,说他是极度缺乏睡眠。”不过,很快比他们之间的竞争更可怕的2000年的互联网泡沫来了,为了熬过网络泡沫他们决定抱团取暖,以平分股权的方式合并公司。马斯克担任新公司CEO,不过因为对公司战略意见不同,董事会趁马斯克度蜜月期间罢免了他,改由彼得·蒂尔任CEO. 而后在2002年 PayPal 上市,并于同年以 15亿美元卖给 eBay. 出售 PayPal 后彼得·蒂尔并没有继续留任,而是离开了 PayPal 并开始成立基金投资硅谷创业公司。最著名的是他作为 Facebook 的首个外部投资人投资了 50万美元并获得了 Facebook 10%的股权,这也成为硅谷史上最著名的投资之一。而他的初创团队离开 PayPal 后,很多人也纷纷创立或投资了创业公司,而且都很成功。如马斯克创立了 SpaceX 、特斯拉等,里德·霍夫曼创立了 Linkedin, 陈士骏创办了 YouTube… 这个团队成员的创业和投资都做得很成功,以至于他们被称为“PayPal 黑帮”(PayPal Mafia),《财富》杂志甚至给他们拍了一张酷似《教父》中黑帮家族的合影。 不过,相比于其他创业者和投资人,彼得·蒂尔被视为硅谷“异类”,他的传记名称就是”The Contrarian”, 意为异见者,特立独行者。早于2020年前,在普遍左倾且支持民主党的硅谷,彼得·蒂尔是独树一帜的右派,2016年当特朗普第一次公开竞选时,他是硅谷第一个公开站出来并重金支持特朗普的科技人士,也成为了特朗普入住白宫后连接美国科技届的关键桥梁。从某种意义上说,彼得·蒂尔还启发产生了“黑暗启蒙运动”,而这种极右翼的思潮也进一步影响了硅谷精英的政治立场。 哲学家CEO 接下来,再谈一谈 Palantir 的CEO 亚力克斯·卡普(Alex Karp),他与彼得·蒂尔为斯坦福法学院同学。卡普在获得法学博士学位后,又去德国法兰克福歌德大学学习哲学,于2002年获得新古典社会理论博士学位。本来也许卡普会成为一位研究哲学的学者,但在下一年他就被彼得·蒂尔叫去当新成立公司的CEO了。 2001年911事件后,美国政府意识到情报机构如CIA虽然掌握了大量信息,但缺乏有效的分析工具来提前发现并阻止恐怖袭击。而彼得·蒂尔在卖掉PayPal后也在思考下一个创业方向,他觉得可以利用PayPal安全系统的人机复合模式来辨识恐怖分子和金融诈骗。于是一拍两合,彼得·蒂尔成立了一家情报分析的技术公司,CIA进行了早期投资,也成为新公司首个政府大客户。彼得·蒂尔特别喜欢看托尔金的《魔戒》,称自己读过十遍以上,而他创办的公司中,大多以托尔金书中事物命名。Palantir 名称便取自《魔戒》,这是一种古老的水晶球,可以让使用者看到世界另一处正在发生的事情。 彼得·蒂尔找来了自己法学院的同学亚力克斯·卡普来做CEO, 自己则成为该公司的幕后投资人。卡普并非技术出身,也非华尔街商人,哲学家的背景让他的领导风格独树一帜,也深深塑造了Palantir的公司文化,使得Palantir在技术公司中显得尤为神秘。这种神秘不仅体现在Palantir的客户名单主要是CIA、FBI等政府部门,也在于其企业文化。据原Palantir员工回忆,Palantir给人感觉就像是一个声称救世主的邪教组织,它发给新员工的入职读物是《即兴》(Impro)、《末日巨塔:基地组织与“9·11”之路》、《洞察人心 : 用户访谈成功的秘密》和《搞定:无压工作的艺术》,其中《即兴》是一本戏剧即兴表演的理论书。Palantir的员工也具备神经质的特征,据该员工回忆,一次他到一位联合创始人高管的办公室聊天,他的办公室空调开到16度,安装了减少房间二氧化碳浓度的装置,以及装满冰块的杯子。在交流过程中,该高管一直在嚼冰块,声称这样对认知有好处。 更大的差异还在于,相较于硅谷大部分企业所推崇的技术民主,Palantir则毫不掩饰其自由意识形态。卡普本人讨厌硅谷文化,他认为硅谷精英过于理想化,轻视国建安全和与政府的合作。他把Palantir总部从硅谷搬迁至丹佛,以远离硅谷。卡普也在各种场合来宣传他科技民族主义的观点,关于这一点,我直接引用《时代》杂志2025年100位影响世界名人中对于他的入选评语: 随着 Palantir——这家与美国武装部队和情报机构紧密合作的数据分析巨头——在股市上的市值不断攀升,其首席执行官亚历克斯·卡普(Alex Karp)已成为一种新型硅谷亿万富翁的化身:一个毫不掩饰的科技民族主义者,积极宣扬西方的力量。 在二月致投资者的一封信中,他引用了政治学家塞缪尔·亨廷顿(著有《文明的冲突》)的话:“西方的崛起并非源于其思想、价值观或宗教的优越……而是源于其在有组织暴力上的优势。”卡普在引用亨廷顿时写道,并继续道:“西方人常常忘记这一事实;而非西方人从未忘记。” 这种激烈的语言为卡普赢得了大批追随者——他最近还是《纽约时报》畅销书《技术共和国:硬实力、软信念与西方的未来》的合著者。与此同时,Palantir 的业务蒸蒸日上。在同一封致股东信中,卡普宣布,Palantir 在 2024 年第四季度的营收较 2023 年同期增长了 36%。 而在最近八月份写给股东的公开信里,卡普则更加直白的道出了Palantir要维护其价值观和构建方式的原因。他认为美国的传统文化是其公司发展的动力源泉,而他们也应该保护这种文化,而不是让其受损害。卡普在公开信中还引述C.S.路易斯《人的废除》中的“没有胸膛的人”的隐喻,暗示硅谷一些公司缺乏忠诚和奉献精神,缺乏对国家的情感,警告美国投资者远离这种公司。 技术架构:本体论 有这样的哲学家CEO, 那么他们用哲学术语来命名技术架构也不足为奇了。在卡普的公开信中,会经常提及Palantir的技术核心——本体论(Ontology), 并且在去年的一封信中声称: 市场上的所有价值都会流向芯片和我们称为本体论的东西。 (“All the value in the market is going to go to chips and what we call ontology.”) 本体论(Ontology)是哲学的重要概念,这个词源于希腊语的两个词根 on(存在) 和 logos(逻各斯,规律理论),即研究“存在”的理论。对“存在”的研究可以追溯到柏拉图和亚里士多德时期,亚里士多德在《形而上学》中指出:哲学的首要问题便是研究存在之作为存在。比如我们面前一张桌子,我们可以说“这张桌子是存在的”,那么我们再问“桌子这个概念是否存在”,等等,诸如此类关于存在的问题,从亚里士多德到伯克莱,到笛卡尔、黑格尔,再到海德格尔等存在主义哲学家的回答(参见《我所理解的存在主义》),各有不同。本体论的核心是解释事物普遍与特例、个体与共性、抽象与具体的各种关系。 而Palantir将本体论这一概念引入到IT系统中,本质上是数据与业务的建模框架。简单说来,就是把企业在真实世界的业务对象(比如客户、订单、合同、部件等)抽象成数据驱动的数字模型,并建立它们的关系和规则,使得开发者能够在这种抽象的语义层上工作,而不是直接暴露数据库、接口。 Palantir 在《面向本体论的软件开发》(Ontology-Oriented Software Development)一文中介绍了航空公司的案例,飞机起飞前检查需要根据每次飞行的状况进行评估,而这其中包括两百多万个数据点数据。在依据本体论设计的系统中,数据、逻辑与动作元素协同编排。数据元素来源包括机场运营数据库、航班舱单、资源管理系统。逻辑元素利用这些输入来预测影响、模拟客户行为、评估风险。逻辑元素的输出则构造成动作元素:这些动作将决策写回各运营系统,并实时向相关人员发送通知。这样当检查发现问题时,可以快速检查发现问题并通知相应人员更换所需零件,将成本控制最小。 从某种意义上说,Palantir的本体论让我想起了IBM多年前搞的模型驱动开发(MDD),IBM还推出了诸如 Rational ROSE、RSA 等系列建模工具,它希望通过模型和代码之间的对应关系、维护一套系统建模,从而自动生成代码,来实现业务对象与IT实现代码的映射。这种方式在相对成熟稳定的业务领域是适用的,但在复杂业务场景和需求变化频繁的场景则不是那么理想,因为维护的模型也会随着业务的复杂变化而越来越臃肿,最终导致难以维护。令人失望的是,现实往往多是后一种场景居多。 十多年前IBM这种期望通过模型建模自动写出代码的想法还过于超前,而Palantir的本体论则着力于通过数据建模将现实世界表现出来,再借助当前的大模型能力,IBM当年未实现的愿景可能成为现实。 服务客户现场的FDE工程师 如果说Palantir区别于其他硅谷公司最大的特征,可能还不是本体论这些引入到IT中的哲学概念,而是FDE角色设置。FDE 全称 Forward Deploy Engineer, 前线部署工程师,即在客户一线部署Palantir平台的技术工程师。可以说,FDE与以谷歌为代表的硅谷工程师文化是截然不同的,谷歌推崇技术至上,以科学研究为驱动。在谷歌创办的前20年里,一直保持着允许员工20%时间投入自由探索的项目中,这种不以KPI和客户需求为导向的管理制度,一方面来源于其自身优势(挖到了互联网广告的金矿),一方面也由于其创始人的技术背景。谷歌的这种工程师文化也成就了其多个成功产品,如GMail、Google Maps 等,但失败的产品也更多,据Killed by Google统计,谷歌自己亲手“杀死”的产品有近300个。Palantir的产品主要面向政府和大型企业,显然不能像to-C的谷歌那样对待产品说关就关。相对于谷歌等硅谷公司以技术驱动为导向,Palantir更看重其产品技术能否带来商业变现。用CEO卡普的话来说就是:“我们的软件若无人能将其嵌入现实世界,就毫无意义。”因此,FDE就成了其将软件技术嵌入到客户现场的关键因素。 据Palantir 原员工回忆,在Palantir只有五六个主管和CEO,其他人都有FDE工程师头衔。除此之外,没有设置其他官方头衔,原因是不希望官僚化。而工程师有两类,一类是在公司总部参与核心产品开发的工程师,另一类则是FDE,这一类工程师需要到客户现场办公,一般每周三四天,频繁出差。在公司文化中,他们认为“上下文是稀缺的”,工程师们需要“走出大楼”,亲自到客户现场,“先上飞机,再问问题”,因为一个项目在大型客户那边待上个一年两年的都很常见。 FDE在客户现场调研并分析用户需求,设计解决方案,定制并实施Palantir产品,也帮助客户解决实际应用中的问题,甚至为客户写SQL、写脚本,没有工作范围限制。能力上也要求FDE不仅精通技术,也要理解客户业务,并能够与客户以及总部技术团队高效沟通,建立客户和总部的连接桥梁。Palantir在官网上有两篇博客介绍FDE工作的一天,可以管中规豹了解一下这种现场顾问+软件突击队的工作形式。在这两篇博客中,一篇名为《FDE的一天》,一篇名为 《Deployment Strategist的一天》。据官方介绍,Deployment Strategist 虽然与 FDE 名称不同,但界限也比较模糊,只不过在定义上 Deployment Strategist 更偏重项目经理角色,FDE则更偏重技术。广义上它们可以称为 FDE. FDE可以说是Palantir的护城河。首先,无论是传统软件还是AI系统,通用的技术能力与企业业务场景之间存在着巨大鸿沟,特别是在大型企业中,要想能够真正落地并非易事,这也是很多大型企业不选择通用SaaS而是自己构建IT系统的原因。而FDE则能快速的针对客户场景进行适配,提供务实有效的解决方案。另外,这些系统一旦部署成功,其定制化程度也越深,对于企业来说搬迁的成本也将越大,所以也会绑定在Palantir的这条大船上。但从另一方面说,FDE的优势也是其劣势,定制化及人力成本还有企业对这种定制化绑定的戒心,也都是限制其难以快速扩张的因素。 对Palantir的介绍就简单叙述到这里,后面有机会再作深入洞察。 参考 《从0到1:开启商业与未来的秘密》 彼得·蒂尔 中信出版社 2015/01 Reflections on Palantir, Nabeel S. Qureshi, 2024/10 Alex Karp Wants Silicon Valley to Fight for America, The Wall Street Journal, 2025/02 Ontology-Oriented Software Development, Palantir, 2024/01 Letter to Shareholders, Palantir, 2025/08 A Day in the Life of a Palantir Forward Deployed Software Engineer, Palantir, 2020/11 A Day in the Life of a Palantir Deployment Strategist, Palantir, 2022/04 人们正在发现新的但常常是旧的认同,在新的但常常是旧的旗帜下行进,这导致了同新的但常常是旧的敌人的战争。 – 塞缪尔·亨廷顿《文明的冲突》

2025/10/7
articleCard.readMore

周刊第19期: 一起学习 MCP

本文为周刊第19期,前期周刊参见:周刊系列。 最近学习了 MCP (Model Context Protocol, 模型上下文协议)相关的文档、书籍和文章,借此在本期周刊中对其进行梳理与总结。本文将围绕 MCP 的由来与所解决的问题、核心概念与运行机制,以及其生态与发展现状展开,帮助大家快速理解 MCP 的全貌。 受万维钢的启发,从本篇周刊开始,我会计算每篇文章的“思维密集度”,也就是花在写文章的时间(包括前期相关资料收集、学习的时间),除以阅读文章所需的时间,所得到的值。本文的思维密集度 = 约30小时(前期学习花费时间)+ 11小时(总结及写作时长)÷ 18分钟(阅读本文时长)≈ 137. 本文思维密集度 = 137 1. MCP 的起源 OpenAI发布ChatGPT让人们看到了大语言模型(LLM)的强大能力,而ChatGPT也在短时间内成为了超级互联网应用,甚至改变了人们寻找知识的习惯,很多人在互联网上搜索信息不再优先使用搜索引擎,而是从ChatGPT等AI对话类应用获取信息。 但大模型也有一个弱点,那就是它是通过历史数据训练而成,其知识在训练时就已经固定,无法获取训练之后的新信息。正如Anthropic在推出MCP的介绍文章中说的那样:“即便是最先进的模型,也受限于与数据隔绝——被困在信息孤岛和遗留系统之后。”为了解决这一问题,行业采用了两个解决方案。第一个解决方案是模型微调,也就是在基础大模型上加入一些新的数据集进行增量训练,这种场景仍需要进行训练后再部署,一则成本比较高,二则是实时性比较高的场景也不能满足。而另一个解决方案就是补充上下文,在推理时为模型注入外部知识作为输入上下文,让模型基于最新资料进行回答,从而弥补大模型原有知识的不足。 为大模型补充上下文的方案有很多,比如我们在与ChatGPT等AI应用对话时,大模型能结合之前对话的上下文来回答,这是因为AI应用将对话内容进行了存储记录,压缩处理成后续问答的上下文给到大模型。这种方法受限于用户的对话内容,若想要获得更广泛且可更新的上下文,通常会采用RAG等技术路线. RAG(Retrival Augmented Generation, 检索增强生成)是一种让大模型结合外部知识库的方法,RAG 所代表的三个缩写词就是它的工作原理:Retrival(检索):首先,当用户发出提问时,AI应用将问题通过向量化检索的方式获得与问题相关的文档知识;Augmented(增强):然后,AI应用把检索到的资料拼接到Prompt中,作为增强上下文;Generation(生成):最后,模型基于问题+外部资料信息生成答案。RAG的优势在于不需要训练模型,能够接入最新的知识,并保持知识库的更新。但其限制在于,RAG依赖于检索到信息的质量,同时还要求检索过程足够高效,但实际应用中,检索速度和检索准确率是比较大的技术挑战。另外,RAG通常使用向量检索(也可与关键词/混合检索组合)并维护可更新的检索索引,而当知识库规模化后,其成本、性能、检索精度都可能成为瓶颈。 2023年6月OpenAI在其模型API中更新发布了函数调用(function calling)能力,它允许大模型将自然语言请求转换为函数调用,让AI应用可以调用外部工具。其工作原理是:第一步,AI应用开发者定义函数列表,包括名称、用途、参数类型。第二步,用户发出问题,AI应用将函数列表作为上下文发送给大模型。第三步,大模型根据用户输入判断需要调用的函数,生成调用参数。第四步,AI应用执行该函数并将结果发送给大模型,作为补充上下文信息供大模型生成最终的答案。这一特性也极大扩展了大模型的能力边界,通过函数调用的方式,大模型能够外挂各种外部数据源,同时还能执行各种类型的操作。 在OpenAI推出函数调用机制后,各大模型厂商纷纷跟进,分别都支持了函数调用机制。但随之而来也存在一些问题,因为函数调用是一种机制,而非标准,虽然函数定义都是JSON格式,但个大模型厂商实现方式不同,结构差异很大;另外,需要开发者为每种模型或AI应用编写特定的适配代码。这些都是函数调用机制在实际应用场景中迫切需要解决的问题。 不过,OpenAI在推出函数调用机制后,没有更进一步统一行业标准,而是着急推出GPTs的生态战略。OpenAI在推出函数调用后的同年11月,也就是2023年开发者大会上,推出了GPTs, 这是专为特定任务创建的ChatGPT 的定制版本,用户可以打造自己的GPTs, OpenAI CEO 山姆·奥特曼还特意演示了如何在几分钟内创建一个商业顾问GPTs。到次年2024年1月,OpenAI开放GPTs Store, 上线不久,商店内的GPTs就达到了300万。但巨大的数量并没有产生实质性的效果,有报道称,95%的GPTs应用的用户数不超过100人,绝大多数GPTs的用户只有一、二人。这也暴露了GPTs的问题,GPTs想法的初衷是好的,普通用户通过简单的操作比如调整提示词便可以创建专属的AI应用,但这种低门槛也就意味着大量低质量的应用被快速构建出来,实际上没有什么用处。在实际的工作和生活场景,AI应用需要与各种IT工具交互才能产生真正的价值。 OpenAI所忽视的标准被Anthropic搞出来了。2024年11月,Anthropic推出MCP,即模型上下文协议(Model Context Protocol),这是一个开放标准,用一个统一标准的协议,让大模型应用可以安全、方便地访问外部数据并进行工具连接。可以认为,MCP是在函数调用基础上做的升级和抽象。 2. MCP 的基本概念 MCP 在架构上有三个角色:主机(MCP Host)、客户端(MCP Client)、服务器(MCP Server),它们通过 MCP 协议进行协作。MCP 主机一般是AI应用,如ChatGPT等AI对话应用,或智能体Agent,或如Cursor等AI IDE等。MCP 服务器则是负责对接外部数据或工具服务,通过MCP标准数据格式将内容发送给MCP客户端。MCP 客户端则是MCP主机与MCP服务器连接的桥梁,它附属于主机上,由主机任务创建并调度,从而实现AI应用与外部数据或工具服务的交互。 对于MCP的这些概念,网上有张图非常形象的解释了它们的关系。MCP就像是电脑的拓展坞,有了它之后,无论是远程调用的服务(如数据库、Web服务、远程系统)还是本地服务(文件系统、本地工具)都可以被主机(AI应用)所调用。 相比之下,前面提到的函数调用或其他API调用方式就需要AI应用做定制的适配。 MCP官方文档中对MCP架构描述如下。MCP客户端与MCP服务器一对一连接。 MCP协议包含两层:数据层和传输层。数据层定义了基于 JSON-RPC 的“客户端-服务器”通信协议,包括生命周期管理、核心原语(tools, resources, prompts)、通知机制。传输层定义了通信机制与通道,包括连接建立、消息封装、认证等。MCP支持两种传输机制。一种是对本地数据服务的STDIO 传输,通过标准输入/输出流在同一台机器上的本地进程间通信,没有网络开销。另一种是对远程数据服务的流式 HTTP 传输。 数据层方面,由于MCP是有状态协议,因此需要生命周期管理,以便于协商客户端与服务器所支持的能力。协议支持实时通知,以实现服务器与客户端之间的动态更新。例如,当服务器的可用工具发生变化(新增、修改、下线)时,服务器可以发送工具更新通知,告知已连接的客户端这些变化。 原语 Primitives MCP协议最重要的概念是原语,原语定义了客户端和服务器能够互相提供的内容,规定了可以与 AI 应用共享哪些上下文信息,以及可以执行哪些范围内的操作。 MCP服务器有三个核心原语: 工具(Tools):可执行的函数,AI 应用可以调用它们执行操作(例如文件操作、API 调用、数据库查询)。 资源(Resources):为 AI 应用提供上下文信息的数据源(例如文件内容、数据库记录、API 响应)。 提示词(Prompts):可复用的模版,用于组织与大语言模型的交互(例如系统提示词、少样本示例提示词等)。 每种原语都包含相关联的方法用于发现(*/list)和获取(*/get),比如用于工具发现的(tools/list),还有一些方法适用于特定原语,比如工具调用(tools/call)。MCP 客户端则使用 */list 方法来发现所有可用原语。 比如我们实现一个图书管管理的MCP服务器,在工具里可以定义一个借阅图书的工具: { "name": "borrowBook", "description": "Borrow a book from the library", "inputSchema": { "type": "object", "properties": { "userId": { "type": "string", "description": "Library user ID" }, "bookId": { "type": "string", "description": "Unique book identifier" }, "dueDate": { "type": "string", "format": "date", "description": "Return due date (YYYY-MM-DD)" } }, "required": ["userId", "bookId", "dueDate"] } } 而AI应用里就可以使用该工具来借阅图书: borrowBook(userId: "007", bookId: "101", dueDate: "2024-06-15") MCP客户端也定义了三个核心原语: 采样(Sampling):让服务器无需集成或对接大模型,而是允许服务器请求客户端(已拥有模型访问能力)代表其处理任务。这样客户端就能完全掌控用户权限与安全措施。 根目录(Roots):根目录定义了文件系统的边界,允许客户端告知服务器其操作范围,以便保持安全边界。 引导(Elicitation):使服务器能在交互过程中向用户请求特定信息,从而构建更动态、更灵活的工作流。 除了这三个核心原语,MCP客户端还可以定义如日志(Logging, 允许服务器向客户端发送日志消息,用于调试与监控)等原语。 MCP运作过程示例 下面以一个MCP “客户端-服务器”的交互示例来解释MCP的运作过程。 1) 初始化 (生命周期管理) MCP 交互从生命周期管理的能力交互握手开始,首先是客户端发送 initialize 请求来建立连接并协商支持的能力。 { "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2025-09-08", "capabilities": { "elicitation": {} }, "clientInfo": { "name": "client-example", "version": "1.0.0" } } } 而服务器也会回应: { "jsonrpc": "2.0", "id": 1, "result": { "protocolVersion": "2025-09-10", "capabilities": { "tools": { "listChanged": true }, "resources": {} }, "serverInfo": { "name": "server-example", "version": "1.0.0" } } } capabilities 里包含着双方声明的原语,即暴露的能力。在这个例子中,客户端声明了 elicitation 原语,表明服务器可以处理用户交互请求,而服务器声明支持 tools 和 resources 原语,而 tools/list_changed 则说明当工具列表更改时,服务器会发送消息通知。 初始化成功后,客户端会发送通知表明已准备就绪: { "jsonrpc": "2.0", "method": "notifications/initialized" } 在初始化阶段,AI应用会建立通过客户端管理建立与各服务器的连接并存储它们的能力信息以决定后续调用哪些服务器的功能。 2) 工具发现(原语) 连接一旦建立,客户端就可以发送 tools/list 请求发现服务器提供的工具。 { "jsonrpc": "2.0", "id": 2, "method": "tools/list" } 服务器回复: { "jsonrpc": "2.0", "id": 2, "result": { "tools": [ { "name": "checkBookAvailability", "title": "Check Book Availability", "description": "Check if a specific book is available in the library", "inputSchema": { "type": "object", "properties": { "bookId": { "type": "string", "description": "Unique identifier of the book" } }, "required": ["bookId"] } }, { "name": "borrowBook", "title": "Borrow Book", "description": "Borrow a book from the library system", "inputSchema": { "type": "object", "properties": { "userId": { "type": "string", "description": "Library user ID" }, "bookId": { "type": "string", "description": "Unique identifier of the book" }, "dueDate": { "type": "string", "format": "date", "description": "Return due date (YYYY-MM-DD)" } }, "required": ["userId", "bookId", "dueDate"] } } ] } } 服务器的响应包含一个tools数组,里面是各工具的元数据信息,包括每个工具在该服务器内的唯一标识符 name, 名称 title, 描述 description, 以及输入参数的 JSON Schema 定义 inputSchema. AI 应用会将所有 MCP 服务器提供的工具合并成统一的工具注册表,供大模型获取并准备后续调用。 3) 工具调用(原语) 获得工具信息后,客户端可以通过 tools/call 方法调用工具。 { "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "borrowBook", "arguments": { "userId": "U12345", "bookId": "B56789", "dueDate": "2025-09-30" } } } 相应地,服务器在执行工具成功后会反馈工具调用结果。 { "jsonrpc": "2.0", "id": 3, "result": { "content": [ { "type": "text", "text": "Book 'Introduction to AI' has been successfully borrowed by user U12345. Due date: 2025-09-30." } ] } } 当大模型在对话中决定要调用工具,AI应用会拦截工具调用,将请求路由到对应的MCP 服务器,执行工具调用,并将结果返回给大模型,这样大模型就能够访问到外部的实时数据。 4) 实时更新(通知) MCP 支持实时更新,允许服务器主动告知客户端变化,而不是等待客户端请求。 比如当服务器工具发生变化,服务器可以发送通知给客户端: { "jsonrpc": "2.0", "method": "notifications/tools/list_changed" } 通知消息无需响应。不过客户端在收到工具变化通知后,一般会立刻向服务器发送请求获取工具列表。 3. MCP 的生态 MCP自发布以来,便受到了众多开发者的关注,也有很多开发者参与社区。各AI应用厂商和各大模型厂商也纷纷跟进,逐渐成为行业的事实标准,也因此形成了丰富的生态,从配套工具到解决方案,从市场到周边。这里也列举一些。 配套工具 MCP官方提供了TypeScript、Python等多种语言的SDK,另外还提供了调试工具和命令行工具,通过这些配套工具可以很方便的开发MCP服务器和客户端。我根据《这就是MCP》的指导也很快开发了flomo的MCP服务器,代码在 hutusi/flomo-mcp, 这里就不展开描述。 MCP应用市场 MCP官方没有推出MCP应用市场(2025/09/09 update: MCP官方于本文发表8小时后宣布官方MCP Registry, 也就是MCP应用市场),只是在GitHub上用一个README收集了MCP服务器清单,不过有很多第三方的MCP市场,如 smithery.ai, MCP.so, MCPMarket.com, modelscope.cn/mcp 等。其中 mcp.so 可能是目前MCP服务器收录最多的应用市场,它来自于一位网名为艾逗笔的技术极客之手。艾逗笔从腾讯离职后做独立开发,去年11月底Anthropic发布MCP,他认真阅读官方文档后突发奇想,觉得可以建一个MCP的导航站,于是立马上手,花了两个小时就把 mcp.so 开发上线了。不得不说,在AI时代有想法又能够动手的技术极客,他们的生产效率是惊人的。 MCP应用市场解决了MCP服务器收集、分类、发现的问题,在MCP生态中就像是手机应用市场。 企业级MCP解决方案 不过,我觉得MCP官方没有推出应用市场的原因,除了试图保持中立外,还可能是互联网开放的MCP应用市场内容运营和治理很难做,官方市场很难保证用户上传的MCP服务器不存在安全风险和质量隐患。(2025/09/09 update: 被打脸了,详见上段更新备注,从博客得知官方在今年三月就有这个想法。)而MCP更具有商业价值的场景是在企业内部,MCP可以帮助企业内部的AI应用在实际作业中产生效果。因此,有不少企业在探索企业级的MCP解决方案,其中比较有代表性的是阿里云的Higress+Nacos方案。 Higress是阿里云开源的云原生API网关,基于 Envoy+Istio 的架构演进而来,最初用于阿里内部的流量网关场景。在MCP场景下,Higress被用作为统一网关,让外部的AI应用调用时只接入一个网关,内部的MCP服务器的地址和安全策略都隐藏在背后。而 Nacos 是阿里云开源的服务发现与配置管理平台,在MCP场景下,就可以作为MCP服务器的注册中心。各业务系统将MCP服务器注册到Nacos上,由Higress自动发现并路由;当业务系统的MCP服务器地址变更或变更时,Nacos自动更新,而外部AI应用调用则无感知。类似下面这样的架构: 外部 AI 应用 │ ▼ [Higress 网关] ← 鉴权、限流、审计 │ ▼ [服务发现:Nacos] │ ▼ [内部 MCP Server 群] ├── 文档库 Server ├── ERP Server ├── CRM Server └── Git Server MCP 和 A2A 除了MCP外,AI应用互操作协议还有A2A (Agent-to-Agent Protocol)、ACP (Agent Communication Protocol)、ANP (Agent Network Protocol)等,这里主要谈一下A2A协议。 A2A协议由Google在2025年4月发布,该协议主要的目的是提供一种标准化的协议支持Agent之间协作与通信,也就是说,A2A适用于多Agent场景。在A2A协议中,规定Agent需要公开一个Agent Card,以JSON格式描述,包含它的能力、模态和限制条件等。 不过,A2A并不是取代MCP,它们之间也不是互斥的,二者可以形成互补,两者的关系如下图所示。 最后总结一下,MCP 如其名 (Model Context Protocol), 是为增强模型上下文而生的。通过 MCP 协议定义了 AI 应用与外部工具间的交互通用标准,使得大模型能够通过 MCP 调用工具来获取外部实时信息并执行任务,极大地扩展了大模型应用的能力。MCP 本身及生态都在不断地发展和完善,其在企业的 AI 解决方案中扮演的角色也将越来越重要。 4. 参考 Introducing the Model Context Protocol, Anthropic, 2024/11 MCP Architecture overview, modelcontextprotocol.io OpenAI Function calling guides, OpenAI Announcing the Agent2Agent Protocol (A2A), Google, 2025/04 What is Model Context Protocol (MCP)? How it simplifies AI integrations compared to APIs, Norah Sakal, 2025/03 《这就是MCP》 艾逗笔(著) 人民邮电出版社 2025/08 《基于 MCP 实现 AI 应用架构新范式的一线实践》 计缘(阿里云) 2025/04 昔日我曾如此苍老,如今才是风华正茂。 I was so much older then,I’m younger than that now. – Bob Dylan, My Back Pages

2025/9/8
articleCard.readMore

周刊第18期: 什么是理工科思维

本文为周刊第18期,前期的周刊参见:周刊系列。 最近看了万维钢的《万万没想到:用理工科思维理解世界》,觉得写得很好。之前看万维钢在得到上写专栏,以为是鸡汤文,但没想到他的文字的的确确有料,读完之后有种醍醐灌顶的感觉。万维钢是物理学博士,搞科研之余还写博客和得到专栏,介绍一些方法论,代表作有《万万没想到》《智识分子》等。 《万万没想到》的副标题是“用理工科思维理解世界”,理工科思维是一个比较有中国特色的概念,与理工科思维相对的是文科思维,作者认为,文科思维付诸于感性,理工科思维付诸于理性,理工科思维就是用科学的方法来探索世界,而科学方法则是取得可靠答案的唯一符合逻辑的方法。 该书是作者一系列文章的合集,整理成了四个部分,分别是:一、反常识思维:这部分讲的反常识思维即理性思维,即理工科思维;二、成功学的解药,讲如何运用理工科思维去学习;三、在现代生存,如何将理工科思维用在生活中;四、霍金的答案,介绍科学研究的逻辑。下面我简单整理下该书的笔记,笔记大部分内容直接摘抄原书,我就不再标识出来,同时推荐读原书。 一、什么是理工科思维? 人们常常把自己的价值判断称为“常识”,因为这些判断本来就是从人的原始思维而来的,然而现代社会产生了另一种思维,却是“反常识”的。 1、取舍思维 对于大多数人来说,一直到进入现代社会之前,我们都生活在一个“具体的”世界中。我们的活动范围仅限于自己所属的小部落或者小村庄,很多人一生去过的地方也不会超过一天的路程。这种“具体思维”做各种选择的首要标准,是道德。费孝通在《乡土中国》一书中提出,世代定居的传统中国社区的本质是熟人社会。在熟人社会中,人们做事不是靠商业和法治,而是靠道德和礼治。费孝通说乡土中国的最高理想是“无讼”,就好像足球比赛中每个人都能自觉遵守双方的规则,而犯规的代价不单是被罚,更是整个球队和教练的耻辱。生活在这样的社会里,我们的首要技能不是数学计算能力,而是分辨善恶美丑。也许这就是文人思维的起源:针对每个特定动作的美学评价。有时候他们管这种评价叫“价值观”,但所谓价值观无非就是给人和事贴或好或坏的标签。文人把弘扬真善美和鞭挞假恶丑当成自己义不容辞的责任。 现代社会与古代社会最大的不同,是人们的生活变得越来越复杂。除了工作和休息,我们还要娱乐、参加社交活动、学习和发展以及随时对遥远的公众事务发表意见。我们的每一个决定都可能以一种不直截了当的方式影响他人,然后再影响自己。面对这种复杂的局面,最基本的一个结果是好东西虽然多,你却不能都要。这就需要取舍思维,英文有一个形神兼备的词可作为解释:“tradeoff”。两个好东西我不可能都要,那么我愿意牺牲(off)这个,来换取(trade)那个。“tradeoff”是“理工科思维”的起源。 诺贝尔奖得主丹尼尔·卡尼曼的《思考,快与慢》一书,把人脑的两套思维系统称为“系统1”和“系统2”。前者自动起作用,能迅速对事物给出一个很难被改变的第一印象;而后者费力而缓慢,需要我们集中注意力进行复杂的计算,甚至我们在系统2工作的时候连瞳孔都放大了。系统2根本不是计算机的对手,没人能在百万分之一秒内计算111.61872的平方根。然而系统1却比计算机强大得多,直到2012年谷歌用了1.6万块处理器,才让计算机学会识别猫的脸——而且它肯定还不会像刚出生的婴儿那样分辨表情。系统1这么快,显然是它在漫长的进化史中非常有用的缘故。我们可以想见一个不会算数,甚至不会清晰地逻辑推理的人只要知道谁对他好、谁对他坏,靠本能也能在草原上生活得不错。只有到了现代社会,他才会有大麻烦。文人思维显然是系统1的集大成者,而理工科思维则是系统2的产物。 “tradeoff”要求量化输入和预计输出,这也是理工科思维的最根本方法。 2、被别人说服 与霍金合著《时间简史》和《大设计》的第二作者蒙洛迪诺是个被忽视的重要科普作家,他在自己的书《潜意识:控制你行为的秘密》中说,人做判断的时候有两种机制:一种是“科学家机制”,先有证据再下结论;一种是“律师机制”,先有结论再去找证据。世界上科学家很少,你猜绝大多数人使用什么机制思考?每个人都爱看能印证自己已有观念的东西。我们不但不爱看,而且还会直接忽略那些不符合我们已有观念的证据。 这个毛病叫作“确认偏误”(confirmation bias)。如果你已经开始相信一个东西了,那么你就会主动寻找能够增强这种相信的信息,乃至不顾事实。一旦你有了某种偏见,你就无法改变主意了。 诺贝尔奖得主罗伯特·奥曼在1976年发表了一篇论文Agreeing to Disagree,这篇论文堪称传世之作。它指出,如果两个理性而真诚的真理追求者争论问题,争论的结果必然是两人达成一致。换句话说如果争论不欢而散,那么其中必然有一方是虚伪的。原话是:If two people have the same priors,and their posteriors for an event A are common knowledge,then these posteriors are equal. 下面为简单起见,假设世界杯决赛是阿根廷队对意大利队。在决赛前夜,如果我向你宣布,我认为阿根廷队将获得世界杯冠军。而你向我宣布,你认为意大利队将获得世界杯冠军。这样一来我们两人的观点就被亮出来了,不但你知道我的观点,而且我知道你知道我的观点,而且你知道我知道你知道我的观点……以此类推下去,这就是我们的观点是“common knowledge”。 这个定理中所假设的理性的人,被学者称为“真理追求者”(truthseekers)。如果我们是诚实的真理追求者,我们终将能够达成一致。 所有科学家有一个共同的优点:他允许你改变他的想法。 3、概率论 我认为人人都应该学点概率知识。在日常生活中,概率论比万有引力公式和基因的复制机制都重要,它是现代社会的公民必备的知识。现在的世界比过去复杂得多,其中有大量的不确定性。是否理解概率,直接决定了一个人的“开化”程度。当不懂概率的人大惊小怪的时候,懂概率的人可以淡定自若。下面是五个最简单的概率论智慧: 1)随机。概率论最基础的思想是,有些事情是无缘无故地发生的。理解随机性,我们就知道有些事情发生就发生了,没有太大可供解读的意义。我们不能从这件事中获得什么教训,不值得较真,甚至根本就不值得采取行动。比如民航客机非常安全,但再完美的交通工具也不可能百分之百的安全。你会因为极小的事故概率而不坐飞机吗?我们只要确定事故概率比其他旅行方式更低就可以了——甚至连这都不需要,我们只要确定这个概率小到我们能够容忍就可以了。为偶然事件大惊小怪,甚至一朝被蛇咬十年怕井绳,是幼稚的表现。 管理者有个常见的思维模式,一旦出了事就必须全体反思,制定相关政策以避免类似事故再次发生,但极小概率事故其实是不值得过度反应的。哪怕是因为员工犯了错而引起的,也没必要如此。37signals公司的两位创始人弗莱德(Jason Fried)和汉森(David Heinemeier Hansson)在2010年出了一本书《重来》(Rework),讲公司创业和管理之道。在我看来此书一个亮点就是它强调不要一看有人犯了错就为此大张旗鼓地制定政策来纠正错误。那样只会把错误变成伤疤,而且会让公司越来越官僚主义。正确的办法是告诉犯错的员工这是一个错误,然后就完了。 2)误差。历史上最早的科学家曾经不承认实验可以有误差,认为所有的测量都必须是精确的,把任何误差都归结于错误。后来人们才慢慢意识到偶然因素永远存在,即使实验条件再精确也无法完全避免随机干扰的影响,所以做科学实验往往要测量多次,用取平均值之类的统计手段去得出结果。 3)赌徒谬误。假如你一个人在赌场赌钱,比如玩老虎机。你一上来运气就不太好,一连输了很多把。这时候你是否会有一种强烈的感觉,你很快就该赢了呢?这是一种错觉。赌博是完全独立的随机事件,这意味着下一把的结果跟以前所有的结果没有任何联系,已经发生了的事情不会影响未来。 4)在没有规律的地方发现规律。理解了随机性和独立随机事件,我们可以得到一个结论:独立随机事件的发生是没有规律和不可预测的。这是一个非常重要的智慧。如果数据足够多,我们可以找到任何我们想要的规律。但这些“预言”可完美解释已经发生的事情,却不能预测尚未发生的事情。未来是不可被精确预测的。这个世界并不像钟表那样运行。 5)小数定律。现在,我们知道,在数据足够多的情况下,人们可以找到任何自己想要的规律,只要你不在乎这些规律的严格性和自洽性。那么,在数据足够少的情况下又会如何呢?如果数据足够少,有些“规律”会自己跳出来,你甚至不相信都不行。比如世界杯上的各种神秘规律。原因是如果数据少,随机现象可以看上去“很不随机”,甚至非常整齐,感觉就好像真有规律一样。如果统计数字很少,就很容易出现特别不均匀的情况。 4、阴谋论 相信阴谋论很可能是人的一个思维本能。人们总是希望能给复杂而混乱的世界找个简单的解释,这个解释就是有某种强大的力量,怀着一个不可告人的目的,在控制一切。 近代著名儿童心理学家让·皮亚杰(Jean Piaget)说,在儿童成长的某个阶段,他的世界观会有两个基本点。一个是“animism”,万物有灵。他认为每个物体都是活的,比如汽车之所以不走是因为它累了需要休息。更重要的是,任何东西都有它自己的意愿,比如“太阳在跟着我们走”。另一个是“artificialism”,人为主义。他认为一切东西都是人出于某种目的造出来的。比如为什么会有太阳?太阳是人用火柴造出来照亮用的。 由此,在儿童的世界中根本就不存在随机现象,一切都是有目的的。生物学家路易斯·沃伯特(Lewis Wolpert)有本书叫《反常的自然科学》(The Unnatural Nature of Science)。他在此书中指出,想要摆脱童稚状态搞科学,就必须首先抛弃目的论。 科学的标志,是对世界的运行给出一套纯机械的机制。风怎么吹、石头怎么落下来,并不是它有什么目的、背后有什么精神力量,而是物理定律决定了它就会这么做。有些事情发生就发生了,纯属自然,并不是谁“想让”它发生它才发生。比如艾滋病毒在黑人中传播最多,你可以去分析它的传播机制,但是这种传播并不一定有什么“目的”。 二、如何学习? 1、科学的励志 在个人传记里,成功人士往往拥有传奇经历和突出个性;在八卦逸事里,成功很大程度上是因为他会耍嘴皮子;在心灵鸡汤里,成功是因为他有正确的价值观,是个好人。可是你怎么知道这些道理是不是可重复和可检验的呢?也许这帮人只不过是运气好而已!我们需要的是科学的励志,只有你的理论具有普遍意义,你的成功才可以被复制。 真正能左右学习成绩的品质只有一个:自控。 自控需要意志力。一般人可能认为意志力是一种美德,应该通过教育的方式提升思想的境界来培养。然而实验表明,意志力其实是一种生理机能。它就好像人的肌肉一样每次使用都需要消耗能量,而且用多了会疲惫。 如何提升意志力?灌鸡汤、打鸡血是没有用的。真正有效的办法是“常立志”。意志力是一种通用资源,这意味着你可以通过做一些日常小事来提高意志力,然后把它用在其他事情上。 2、刻意练习 提出“刻意练习”(deliberate practice)这个概念的是佛罗里达大学心理学家安德斯·埃里克森(K.Anders Ericsson)。我总结成以下四点:1)只在“学习区”练习。2)把要训练的内容分成有针对性的小块,对每一个小块进行重复练习。3)在整个练习过程中,随时能获得有效的反馈。4)练习时注意力必须高度集中。 1)在“学习区”练习: 心理学家把人的知识和技能分为层层嵌套的三个圆形区域:最内一层是“舒适区”,是我们已经熟练掌握的各种技能;最外一层是“恐慌区”,是我们暂时无法学会的技能;二者中间则是“学习区”。在舒适区做事,叫生活;在学习区做事,才叫练习。 2)重复练习,掌握套路: 心理学研究认为人的工作能力主要依靠两种记忆力:“短期工作记忆”(short term working memory,有时候也简单地称为“短期记忆”)和“长期工作记忆”(long term working memory)。短期工作记忆有点类似于电脑的内存,是指人脑在同一时刻能够处理的事情的个数——一般来说,我们只能同时应付四件事情,多了就不行了。长期工作记忆存储了我们的知识和技能。它有点类似于电脑的硬盘,但比硬盘高级得多。关键在于,长期工作记忆并不是杂乱无章、随便存储的,它以神经网络的形式运作,必须通过训练才能存储,而且具有高度的结构性。心理学家把这种结构称为“块”(chunks)。比如,一场棋局在普通人眼里就是一些看似杂乱摆放的棋子,而在职业棋手眼里这些棋子却是几个一组分成了很多块的,通过识别这些块,职业棋手可以很容易地记住棋局,甚至同时跟多人对弈盲棋。更简单地说,如果普通人看到的是一个个字母,职业棋手看到的就是单词和段落! 人的技能,取决于这两种工作记忆。专家做的事情,就是使用有限的短期工作记忆,去调动自己几乎无限的长期工作记忆。而刻意练习,就是在大脑中建立长期工作记忆的过程。 我小时候曾经非常看不起死记硬背,有一段时间想要学围棋,但总觉得背定式是个笨功夫,高手难道不应该根据场上的局面随机应变吗?但事实是,随机应变才是笨办法。定式和成语典故、数学定理一样,是人脑思维中的快捷方式。 人脑到底是怎么掌握一个技能的,我听说过一个比较主流的理论说这是神经元的作用。完成一个动作需要激发很多个神经元,如果这个动作被反复做,那么这些神经元就会被反复地一起激发。而神经元有个特点,就是如果经常被一起激发,它们最终就会连在一起!技能是人脑中的一种硬件结构,是“长”在人脑中的。 用什么方法才能迅速地把技能套路“长”在身上呢?关键在于两点:1)必须进行大量的重复训练。2)训练必须有高度的针对性。 比如写作。中国传统的培养方法,一个作家的训练就是读小说,评论小说,然后一篇接一篇地写完整的小说。除此之外大约就是要到各地体验生活,因为“功夫在诗外”。问题在于,中国大学的中文系基本上没有成功地培养出一个像样的作家。面对这种局面,一般人马上会得出结论:写作靠的是天赋,作家不是培养出来的。但是美国大学是可以培养作家的,而且还培养了中国作家,比如哈金毕业于布兰迪斯大学文学写作专业,严歌苓毕业于哥伦比亚艺术学院文学写作系。 我反对“功夫在诗外”。如果你要从事创造性的活动,你得学会借鉴各个不同领域的东西,的确是“功夫在诗外”。但是人们经常滥用这句话,认为连学习都要讲“功夫在诗外”,这就完全错了。对练习来说,你想要学什么就应该练什么,功夫就在功夫上。我们追求的就是把这个特殊技能的特殊神经网络“长”在大脑之中,别的都不必管。 3)随时获得有效反馈: 在有即时反馈的情况下,一个人的进步速度非常之快,而且是实实在在的。 再牛的科学家,也需要同行评议,这就正如世界排名第一的网球运动员也需要教练一样。反馈者不见得比你的水平高,关键是他们不是你,他们可以从你看不到的角度看你。 韩愈说“师者,所以传道授业解惑也”。古代的私塾教育往往让学员先背书,搞得好多小朋友会背但不会解释,老师能不能解惑很关键。而现在的课本和各种辅导书极其全面,人们完全可以自学,聪明人更有很强的自学能力。那么,现代的老师的最大作用是什么呢?正是提供即时的反馈。世界上最好的高尔夫球球手、最好的国际象棋棋手,他们的比赛水平肯定超过自己的教练,可为什么他们还要请教练?一个重要原因就是教练能在训练中以旁观者的身份提供即时的反馈。 美国的基础教育受到过很多批评,但美国的研究生制度却毫无疑问是世界最好的。这个制度正是学徒制。导师的英文是“advisor”,这个词放在学校以外是顾问的意思,比如“总统军事顾问”。导师允许学生有相当的独立性,你原则上可以选择自己喜爱的项目,而导师给你提供建议和随时的反馈。 4)刻意练习时高度集中: 刻意练习不好玩。它要求练习者调动大量的身体和精神资源,全力投入。如果你觉得你在享受练习的过程,那你就不是刻意练习。 在刻意练习中没有“寓教于乐”这个概念。我们生活在一个试图把一切东西都娱乐化的时代,我们希望看个电影就能学到知识。就算是看纪录片也是为了娱乐。 “寓教于乐”是个现代社会的发明,从来没有哪位古代哲人认为应该寓教于乐。波兹曼振聋发聩地写道:教育哲学家认为获得知识是一件困难的事情,认为其中必然有各种约束的介入。他们认为学习是要付出代价的,耐力和汗水不可少,个人的兴趣要让位于集体的利益。要想获得出色的思辨能力对年轻人来说绝非易事,它是异常艰苦卓绝的斗争。西塞罗说过,教育的目的本来应该是摆脱现实的奴役,而现在的年轻人正竭力做着相反的努力——为了适应现实而改变自己。 3、兴趣与基因 学习一个技能的初期,智商可能是决定性因素。但是随着学习的深入,兴趣的作用可能就越来越大了,因为兴趣可以在相当大的程度上决定谁能坚持下来。 但兴趣等特征的形成是先天因素更大一些,还是后天培养因素更大一些?这种研究进行了几十年,科学界的共识是,先天因素远远大于后天因素。首先,任何一种能够测量的心理特征,包括智商、兴趣爱好、性格、体育、幽默感,甚至爱不爱打手机,所有这些东西都是天生的。其次,后天环境对智力和性格的影响非常有限。先天因素是主要的,后天因素是次要的。 寻找适合自己兴趣的环境,把自己的基因发扬光大——这难道不就是进化论告诉我们的人生意义吗? 4、思维密集度 看博客不如看报纸,看报纸不如看杂志,看杂志不如看书——凡是有这种想法的人,都是极度自私的人。因为他们贪图时间。 接收信息的效率是可以量化的。本书提出一个概念,叫作“思维密集度”。比如一个人以正常的思维速度边想边说一个小时,那么听他说这一小时的话所能得到的信息的思维密集度就是1。然而写文章就完全不同,它可能需要经过修改和润色,一个小时写出来的文章,可能别人5分钟就看完了,那么这篇文章的思维密集度就是12。 公式:思维密集度=准备这篇文章需要的总时间/阅读这篇文章需要的时间 写一本好书可能需要作者从搜集材料开始花几年甚至更多的时间,如果读者两个晚上看完,那么这本书的思维密集度可能会达到几百。 5、如何读书 有很多人总结过读书的技术。总结得最好的大概是名著《如何阅读一本书》(How to Read a Book)。现在在网上可以找到很多关于这本书中阅读技巧的笔记总结。在我看来,此书最牛的地方并不在于任何特殊的技术,而是一种精神。这种精神认为阅读有三个档次:为了娱乐而读,为了信息而读和为了理解而读。首先,只有为了理解某个我们原来不懂的东西而读书,才值得认真对待。其次,读书应该以我为主,而不是以书为主。 在《如何阅读一本书》的基础上,我提倡一种高强度的读书方法,称之为“强力研读”。与《如何阅读一本书》中按部就班的、烦琐的固定套路不同,我们的“强力研读”更像是一种态度和心法。其实我很想给此文起一个英文标题,叫作“Deep Reading”(深度阅读),以与最近心理学家们谈论的训练天才的新成果——“刻意练习”(deliberate practice,deep practice)相呼应。 以下是强力研读的具体做法,它的核心技术是做读书笔记:新书要读两遍。一本书应该读两遍,而且只读两遍。第一遍正常通读,第二遍同时写下读书笔记。 读书笔记的一个重大作用是为自己日后以最快速度重温这本书提供方便,直接看笔记就可以了。还有别的好书等着我们去读呢,所以笔记最好要写到可以取代原书的程度。 强力研读要求读书笔记必须包括四个方面的内容: ①清晰地表现每一章的逻辑脉络; ②带走书中所有的亮点; ③有大量的自己的看法和心得; ④发现这本书和以前读过的其他书或文章的联系。 如果你读得足够多,你会获得一种更难得的经历:感受人类知识的进步。你会发现一个问题在这本书里是这个说法,而过了几年之后有人另写一本书,引用更有力的证据,把整个结论给改变了。有时候你会赞同这个新结论,有时候你会反对。有时候你必须从几本书的几个不同结论中判断哪个才是最靠谱的。有时候你会觉得他们说的其实都不对,只有你知道正确答案。到了这个层次,你已经跟书的作者完全平等了。你甚至可以俯视他们,评判他们之间的高下。这时候你又应该怎么办?写篇文章发表出来! 世界上有很多比读书更重要的事。在做事和读书之间,做事优先。但读书是除实践外迅速积累见识的最好办法。 6、关于记忆 关于超强记忆力,我们需要知道三点。 第一,正常人要是愿意练,也可以练成这么神奇的记忆力。 第二,再强的记忆力,也不能——用一句王朔的话说——“把胳肢窝变成海参”。 第三,特别强的记忆力,反而有害。 真正实用的人才读书不能钻牛角尖,得像诸葛亮那样“观其大略”。爱因斯坦说:“我想知道上帝是如何设计这个世界的。对这个或那个现象、这个或那个元素的谱我不感兴趣。我想知道的是他的思想,其他的都只是细节问题。” “贵人多忘事”,是因为“贵人”更关注有更高优先级的事。 美国加州大学洛杉矶分校的一对教授夫妻,罗伯特·比约克(Robert Bjork)和伊丽莎白·比约克(Elizabeth Bjork),提出了一个非常漂亮的记忆力理论模型。人的记忆,其实有两种强度:存储强度(storage strength)和提取强度(retrieval strength)。存储强度,决定了这个东西是否进入了你的大脑;提取强度,决定了你能不能把它回想起来。 存储强度,不会随时间减弱!那么为什么我们会忘记一些东西呢?那是提取强度出了问题。如果没有复习,提取强度就随着时间延长慢慢减弱。 三、理性的生活 1、效率和公平 世界上绝大多数人和事都是平庸的,而且最好的东西还都挤在一起。想要提高效率,就得不公平。 人与人之间财富的差异要比身高的差异大得多。身高是正态分布的,财富却是幂律分布(power law distribution)的。学术上的叫法是幂律分布,民间的叫法则是“80/20法则”。 所以我很反感的一句话是“××无小事”。事情当然有大小之分,无小事就是无大事。 质量控制无小事吗?“80/20法则”最早的应用方向之一,就是质量控制。20世纪50年代,美国一位电气工程师和一位统计学家发现,产品质量问题的来源,总是集中在少数几个地方。如果对所有问题都平等对待,反而什么都解决不好,产品质量远远不行。 2、极简主义 有一个给要做的事情分类的著名方法,按照重要程度和紧急程度把事情分成四类:重要而紧急,重要而不紧急,不重要而紧急,不重要也不紧急。一般人的想法都是要先做重要而紧急的事,最后做不重要也不紧急的事。 “80/20法则”告诉我们应该怎么做事呢?应该追求只做“重要而不紧急”的事! 这就是现在很多人谈论的所谓“极简主义”的生活哲学。 现代社会中有很多“完美主义者”,他们多是不懂轻重缓急的“焦虑症患者”。他们关注各种细节,经常能指出别人的小错误。比如给他们看个PPT,他们很容易注意到上面有哪些标点错误,却不知道你说的核心观点是什么。这其实是种特别浪费时间的性格。 “极简主义”的核心思想就是把最关键的事情做好,省出来时间去玩。这也符合塔勒布在《反脆弱:从不确定性中获益》一书说的“杠铃原则”:做事要注重两端,不管中间。——我要么做最难的事,要么玩或者什么都不做。 四、关于科学研究 如果你想成为一个科学家,你就应该好好学习基础知识,掌握基本技能,比如算算微积分、写写计算机程序,然后尽快找到一个好的导师,在他的指导下,从学徒开始做,做真正的科学研究。 1、物理学的逻辑 判断一个物理理论的好坏不在于这个理论是否符合人的直觉,或者是否够漂亮,而在于它能不能做出预言。 科学家强调事实。科学放弃了从一套最基本的哲学出发推导所有结论的尝试,改为在每一个领域内就事论事地搜集事实。有人指责科学家说你们相信现代科学理论难道不也是一种迷信吗?但科学家其实不迷信任何理论——很多情况下他们完全用不上什么绝学,唯一做的事情就是把事实搜集在一起,就好像集邮一样。只要有证据,反驳一个理论是非常简单的事情。 科学研究的真正关键在于发现机制。科学研究的每一篇论文都是我们从个人感觉到客观事实,从客观事实到因果关系,从因果关系到能推广使用的机制这个过程中的一小步。这个过程的每一步都不是完美的,但只有这么做,我们才能摆脱童稚状态。 2、什么是主流科学 科学研究是一个充满争论的过程。科学家要是不争论,科学就死了。比如几年前有实验号称发现了超光速中微子,就引起了科学家的巨大争论,有人甚至提出各种理论解释,最后被证明不过是实验错误。统计出来的东西尤其不能作为成熟理论,而只能作为科学研究的缘起。科学研究就是这么一个把新思想逐渐变成主流的过程。从这个意义上讲也许真正活跃的科学根本就没主流,或者说主流科学都是死的科学,更严格地说是凝固了的科学。 怎样才算主流科学?你必须能用现有的理论去解释你的新理论。如果主流科学是一棵大树,你的新理论不能独立于这棵树之外。你必须告诉别人这棵树的这几个位置可以长出这么几个树枝来,而这些树枝可以连接到我的新理论上去——这样你的理论就成了这树的一部分。有时候你甚至可以宣布某个树干的真实形态其实不是人们之前想的那样,但你不可能宣布这棵树整个长错了。 3、关于创新:汗水重要还是灵感重要? 美国科学作家史蒂芬·约翰逊(Steven Johnson)在《伟大创意的诞生》(Where Good Ideas Come From:The Natural History of Innovation)这本书中提出了一个叫作“慢直觉”(slow hunch)的概念。约翰逊说,你考察那些伟大发现的真实过程,其实并不是来一个尤里卡时刻一蹴而就的,而是一系列小想法慢慢连接起来积累的结果。你研究一个问题,一开始仅有个模糊的直觉,选择一个方向往下走。很多情况下一个好想法并不是一开始就好,它必须随着研究的深入能跟新想法连接起来,有新的事实支持,慢慢长大的。 所谓“尤里卡时刻”(Eureka),其实是慢直觉积累到一定程度导致突破的时刻。你必须脑子里一直想着这个问题,把所有有用的东西都备齐了,才有可能发现这个关键的新连接。人们关注这个高潮,却没有注意到这个高潮是怎么铺垫出来的。这有点像“渐悟”和“顿悟”,其实没有“渐悟”就没有“顿悟”。 韩非子有句话说,“上古竞于道德,中世逐于智谋,当今争于气力”,这句话用在科学发现这个工作上特别合适。今天的科研工作不能指望才子佳人的浪漫情怀。在科研中依赖一两个关键的“创造性思维”,是错误的策略,会大大降低效率。正确的办法是,多做试验,而且最好手里一直都有好几个项目。 灵感并不值钱。不管是科学家、艺术家还是创业的企业家,他们每时每刻都在产生各种想法,也许100个想法里面只有一个想法最后能被证明是有用的。所以对创新者来说,成功的反义词不是失败,而是平庸,是安全,是什么都不做。只要你愿意把想法一个个拿来尝试,失败就是你的日常生活,成功其实是失败的副产品。 4、发散思维 解决问题有两种思维:集中思维和发散思维。 集中思维是把新想法集中在大脑中的一个特定区域处理。小球就一直在那里打转,如果问题的解决方案也在那里,那大脑很快就能解决它。 但集中思维有个弊端,叫“定式效应”(einstellung effect)。说白了,定式效应就是当局者迷,我们头脑里边已经存在很多定式,一个想法产生后,我们首先会把它直接放到我们那个定式区里,用现有的套路去琢磨它。但可能琢磨半天也找不到答案,因为这个答案其实在“灯火阑珊处”。而这时候如果主动使用发散思维,跳出圈外来换个思路,最后往往能创造性地解决问题。 参考 《万万没想到 (增补版)》 万维钢(著) 电子工业出版社 2020/06 未有知而不行者,知而不行只是未知。 – 王阳明《传习录》

2025/8/24
articleCard.readMore

周刊第17期: 如何构建智能体(Agent)

本文为周刊第17期,前期的周刊参见:周刊系列。 TL;DR 本期周刊通过几篇博客文章来讲如何构建智能体(Agent): 1) 《大模型驱动的自主智能体》: 关于智能体最经典的一篇文章,介绍大模型驱动的智能体的核心架构,其中主要三个核心部分(规划、记忆、工具使用)的职能分别是什么?以及参考案例。 2) 《构建高效的智能体》(by Anthropic): Anthropic发布的智能体构建指南,阐述什么是智能体以及智能体系统?何时构建智能体?有哪些类型的智能体系统?智能体和工作流的区别?以及如何构建它们? 3) 《构建智能体实践指南》(by OpenAI): OpenAI发布的智能体构建指南,阐述他们对智能体的定义,以及何时构建智能体?智能体的设计原则有哪些?如何做好安全防护? 4) 《智能体的上下文工程》: Manus首席科学家从Manus项目经验中分享构建Agent的实践教训,以及具体在上下文工程中应该怎么做。 如无特殊说明,本文中的Agent或智能体指的都是大模型驱动的智能体(LLM powered agents). Lilian Weng:大模型驱动的自主智能体 原文:LLM Powered Autonomous Agents Lilian Weng (翁荔)是前OpenAI安全系统团队负责人,后离职与前OpenAI CTO Mira Murati 一起创业,成为 Thinking Machines Lab 的联合创始人。她的这篇文章发表于2023年6月。可以说,Lilian Weng 是最早意识到 Agent(大模型驱动的智能体)重要性的人,而很多Agent开发者也把她的这篇博客当成了教科书级的存在。 文章一开头,作者就说到:利用大语言模型(LLM)作为核心驱动来构建Agent是一个极富创意的想法(cool concept)。LLM就像Agent的大脑,驱动Agent解决各种问题。在Agent系统中,主要有规划(Planning)、记忆(Memory)、工具使用(Tool use)几个核心部分。 一、规划 Planning 在规划部分,Agent完成两项任务: 细分目标与拆解任务:Agent将庞大的任务拆成小块,每一块都是一个小目标,这样可以把复杂任务简单化。在任务拆解中,典型的方法有思维链(CoT, Chain of Thought)和思维树(Tree of Thoughts)。思维链是将复杂的问题转换为“分布思考”,通过一步一步的思维链来拆解复杂任务。而思维树则是思维链的进一步拓展,在每个思考阶段还可以进行多重推理探索,每一步都可以产生多个想法,形成一个树状的结构,并使用BFS(广度优先搜索)或DFS(深度优先搜索)来探索并评估各想法。还有一种方法是LLM+P, 这种方法会将任务分解规划外包给一个外部的工具,即”P”,LLM则使用该工具返回的结果。 反思与优化:Agent会反思自己过去的行为,学习并改成错误,以提高解决问题的效果。典型的方法如 ReAct、Reflexion、CoH、AD。ReAct 通过提示词模板”Thought: … / Action: … / Observation: …” 强制Agent显示记录思考过程,通过自然语言生成推理轨迹,再执行具体行动,并观察结果以调整后续步骤。而 Reflextion 则是在ReAct 的基础上增加奖励模型来判断行为是否低效或包含幻觉,来决定是否调整策略。CoH (Chain of Hindsight, 回顾链)通过SFT(监督微调)让大模型从历史反馈中改进。AD(Algorithm Distillation, 算法蒸馏)则是通过强化学习让Agent模仿自身过去的改进轨迹来强化整个“学习过程”。 二、记忆 Memory 类比人类大脑的记忆存储及获取,一般有如下三种记忆: 感知记忆(Sensory Memory): 这是记忆的第一步,在感官接受刺激后短暂保留的信息,比如看到一幅图片后的视觉记忆,或听到一段音乐后的听觉记忆等。对于大模型而言则是原始输入的token向量化表示。 短期记忆(Short-Term Memory, STM): 也被称为工作记忆(Working Memory)。 当我们意识到需要某些信息用来学习或推理等复杂认知任务时,就会将这些信息存储在短期记忆中。而在大模型任务处理时,大模型就依赖于上下文窗口来存储短期记忆信息。 长期记忆(Long-Term Memory, LTM): 这些是记录在我们大脑皮层长期存在的记忆,一般而言容量几乎无限。一种是需要有意识的回忆,比如特定的事件,称为显性记忆;另一种是无意识的记忆,比如骑车技能,称为隐性记忆。对于大模型而言,长期记忆依赖于外部工具,如向量数据库,信息的获取效率依赖检索算法,一般标准的做法是通过最大内积搜索(MIPS)检索数据,使用一种叫近似最近邻(ANN)的算法。常用的ANN算法有:LSH(局部敏感哈希)、ANNOY、HNSW、FAISS、ScaNN 等,这些算法在数据检索的速度、维度、精度上各有侧重,实际应用过程中需根据场景选择。 三、工具使用 Tool use Agent通过调用外部工具API,可以获取那些不在大模型权重的信息,也拥有了执行任务的能力。比如调用搜索引擎查询信息,调用数据库查询最新数据,甚至编译或执行代码等。 一般的Agent框架都提供了类似框架能力,作者重点介绍了HuggingGPT这一框架,它运用ChatGPT作为指挥中心,从HuggingFace平台上挑选合适的模型来执行任务。整个系统分为四步:1) 任务规划:将用户请求分解为多个小任务;2) 选择模型:将任务分配给不同的专家模型执行;3) 执行任务:专家模型将针对特定任务进行操作,并记录结果; 4) 响应生成:大模型接收执行结果,向用户总结输出。 最后,作者总结了几点挑战,到现在仍是Agent领域所研究的课题:1) 有限的上下文长度,影响反思和规划。2) 规划和任务分解能力方面,大模型在动态调整规划时不如人类灵活。3) 自然语言不够精确,大模型通过自然语言与外部工具交互,可能因为格式生成错误而导致命令不能够被执行。 Anthropic: 构建高效的智能体 原文:Building effective agents 这是 Anthropic 团队在2024年12月发表的博客,在博客中 Anthropic 总结了过去一年跟其他行业团队合作构建智能体的经验。 什么是Agent ? 关于Agent的定义没有明确标准。有人把能够自主运行、使用各种工具完成复杂任务的自主执行系统称为Agent,也有把遵循预先定义的工作流、按指令执行的系统称为Agent。在Anthropic看来,各种变体都可以归类为 Agentic System(智能体系统),而用 Workflow(工作流)和 Agent(智能体) 来区分: Workflow: 通过预定义代码路径来协调大模型(LLM)和工具的系统; Agent: 由大模型动态指导自身流程和工具使用,并对完成任务保持控制的系统。 何时构建Agent ? 通常,构建 Agentic System 具有较高的成本和延迟,因此,只有必要的时候才构建。也就是说,如果是简单场景,那优先考虑提示词工程(Prompt engineering)等低成本方案。当确实需要更复杂的解决方案时,面对 Workflow 和 Agent 也有考量标准:对于定义明确的任务,Workflow 能提供可预测性和一致性;而需要更灵活的大模型决策场景时,则考虑Agent. 何时及如何使用框架 ? 很多框架可以用来构建Agentic System, 比如 LangChain 的 LangGraph, Amazon Bedrock, Rivet, Vellum 等。使用框架上手容易,但副作用是框架的抽象层会掩盖底层的提示和响应,使得调试困难,而且也会增加应用的复杂度。作者建议开发者优先选择使用大模型API,直接编码实现,如果一定要使用框架,得确保理解框架底层代码。 构建 Workflow 和 Agent 作者从基本单元(Block)到 Workflow 再到 Agent 逐步介绍其构建方式。 构建基本单元(Block) 首先从构建Agentic System 的最基本单元(Block)开始:对大模型进行增强,比如检索、调用工具、记忆(读写外部存储)等。一个建议的做法是,通过MCP(Mode Context Protocol)协议来与三方工具集成交互。 构建不同类型的 Workflow 下面作者介绍了几种典型的 Workflow 及其构建方式。 1、Prompt chaining (提示词链) Prompt chaining 是将一个任务分解为一系列步骤,其中前一次大模型调用输出将会处理成为下一次大模型调用的输入提示词,这样每一次大模型的调用都是处理简单的任务,用调用时长的代价来换取更高的准确性。常见的案例有:生成营销文案并翻译成其他语言,先编写文档大纲再根据文档大纲编写文档。 2、Routing (路由) Routing 工作流通过大模型对输入进行分类,并将其定向转到专门的后续任务。常见的案例有:根据用户咨询问题类别导向不同的下游流程,将简单的问题路由到小模型而将困难的问题路由到更大的模型以优化成本和速度。 3、Parallelization(并行化) 并行化工作流是让大模型将同一任务分给多个下游流程,或者将一个大任务分解成多个子任务给下游流程,然后通过程序聚合它们的输出。前一种作者称为Sectioning(分段), 将一个任务分段为独立的子任务并运行,我觉得有点像 MapReduce, 如:让一个模型处理用户查询,让另一个模型对其不当内容或请求进行筛查。后一种作者称为 Voting(投票),多个实例运行相同的任务以获得不同的输出,如:审查同一段代码的漏洞,多个提示词进行不同方面的审查,如果发现问题则标记出来。 4、Orchestrator-workers (协调者-工作者模式) 在协调者-工作者模式的工作流中,协调者是一个中央控制的大模型单元,它分解任务并将其委派给其他大模型工作者,并综合输出结果。 5、Evaluator-optimizer(评估者-优化者模式) 在评估者-优化者模式的工作流中,一个大模型调用生成,而另一个大模型调用(评估者)在循环中提供评估和反馈。这种工作流适合通过迭代来改进大模型生成效果的场景,如文档翻译,一个大模型负责翻译和优化,另一个大模型负责评估和反馈。 构建 Agent 自主Agent可以处理复杂任务,但实现起来往往很简单,它通常是大模型在一个循环中根据环境反馈使用工具。在执行过程中,Agent从用户或环境中获得反馈,自主规划并操作。而Agent的自主性也意味着更高的成本,以及潜在的错误累积。作者举了他们尝试过的Agent,如一个用于解决 SWE-bench 测试集任务的编码Agent; 调用 Claude 来操作电脑完成任务。 上述的 Workflow 和 Agent 的模式也是可以组合和定制使用的。 最后,作者总结了他们在实现Agent中的三点核心原则: 保持Agent设计的简洁性。 通过展示Agent规划步骤以确保透明性优先。 通过工具文档和测试,精心设计Agent和计算机间的接口。 OpenAI: 构建智能体实践指南 原文(文档下载链接):A practical guide to building agents 今年5月,OpenAI也发布了一篇构建Agent的指导文档。 什么是Agent? 与Anthropic 的博客文章观点不同,OpenAI很明确的指出了Agent是能够代表用户独立完成任务的系统。那些尽管继承了大模型但是没有使用它来控制工作流程执行的应用都不是Agent,比如简单的聊天机器人、预先编排工作流程的大模型应用等。也就是说,OpenAI认为,Workflow不是Agent,它也没有使用Anthropic提的比较泛化的词:Agentic System. 何时构建Agent? 在这个问题上,OpenAI 的观点近似 Anthropic, 认为 Agent 适合处理复杂问题,适用于那些传统确定性和基于规则的方法难以处理的工作流程。比如:复杂决策场景,难以维护的规则,或严重依赖非结构化数据的场景。 Agent 设计基础 从最基本的形式看,Agent由三个核心组件构成: 模型:为Agent的推理和决策提供支持的大语言模型 工具:Agent可采取行动的外部功能或API 指令:定义Agent行为的明确指导和安全防护(guardrails) 选择模型 不同的模型在任务复杂度、推理时长(latency)和成本方面各有优劣,并不是每项任务都需要性能最强的模型,因为性能更强往往也意味着推理时长更慢、成本更高。 OpenAI给出的建议是:先采用能力最强的模型构建Agent原型,以建立性能基准。在此基础上,尝试替换为更小的模型,以检验其性能,同时权衡推理时长和成本。这样避免过早的限制Agent的能力。 定义工具 通过使用系统和应用的API,工具可以扩展Agent的能力。而对于那些没有API的遗留系统,Agent则依赖与网页或UI直接交互。 每个工具应该有标准化的定义,以便实现灵活的工具与Agent之间的多对多关系。OpenAI这里提到的标准化定义的工具(tools)类似于Anthropic所提到的符合 MCP 协议的工具,以及Google所提出的符合A2A协议的Agent. Agent通常需要三类工具: 数据类:帮助Agent获取执行工作流所需的上下文信息,如查询数据库、读取计算机文档、搜索网络等。 动作类:使Agent能采取行动,如写入数据、更新记录、发送邮件、转客服工单等。 编排类:Agent本身也可以成为其他Agent的工具,如研究Agent、写作Agent、翻译Agent等。 配置指令 高质量的指令对Agent来说至关重要,清晰的指令能减少歧义,提高决策准确性,让工作流执行更流畅、错误更少。写好Agent指令需要注意以下几点:利用现有文档、引导Agent拆解任务、定义明确的动作、以及覆盖边界情况。 编排Agent 在模型、工具、指令三大核心组件具备后,接下来就需要考虑编排模式,让Agent有效执行工作流。 一般编排模式分类两类: 单Agent系统:由一个配备合适工具和指令的模型,在循环中执行工作流。 多Agent系统:将工作流的执行分配给多个协作的Agent. 单Agent系统 单Agent系统可以通过不断增加工具来处理更多任务,这种模式可控性更强,评估和维护也更简单。 在单Agent系统模式下,Agent的作业运行通常由循环来实现,让Agent一直执行,直到满足退出条件为止。 一般来说,单Agent系统可以满足大多数场景,当场景逻辑复杂到难以维护、或添加了太多工具导致过载时,就要考虑多Agent系统了。 多Agent系统 多Agent系统有很多种设计方法,最常用的是以下两种模式: 1、管理者模式(Manager pattern): 一个中心管理者Agent通过工具调用来协调多个专用Agent(agents as tools), 每个Agent处理特定任务。 2、去中心化模式(Decentralized pattern): 多个Agent以平等的方式去中心化协作,基于各自专长互相交接任务(agents handing off to agents)。 Guardrails (安全防护) Guardrails 可以帮助开发者管理数据隐私风险,并确保大模型不被滥用。 Guardrails 需要通过分层防御机制来建立,单一的防护很难做到足够安全。 Guardrails 的类型包括: 相关性分类器(Relevance Classifier):确保Agent回复保持在预期范围内,标记离题的询问。 安全分类器(Safety Classifier):检测危险输入,防止利用系统漏洞。 个人身份信息过滤器(PII Filter):防止模型输出不必要的个人身份信息(Personally Identifiable Information). 内容审核(Moderation):标记有害或不当内容,确保交互安全。 工具安全评估(Tool Safeguards):为每个工具评估风险等级,调用高风险工具触发人工审核。 基于规则的防护(Rules-based protections):包括blocklist、正则表达式过滤等措施,防止已知威胁,如敏感词或SQL注入等。 输出验证(Output validation):通过提示词工程和内容检查,对输出内容进行检查。 季逸超: 智能体的上下文工程 原文:Context Engineering for AI Agents 季逸超(Yichao ‘Peak’ Ji)是Manus的联合创始人兼首席科学家,最近他在Manus官网发布了一篇名为 Context Engineering for AI Agents: Lessons from Building Manus 的博客,从技术角度总结了构建Manus过程中的一些经验。 作者回顾了Manus立项初期面临的抉择:是使用开源模型来训练一个端到端的智能体模型(agentic model),还是基于前沿模型的上下文学习能力构建一个Agent. Manus团队之前有过创业的经验教训:当他们从头训练了一个模型,GPT-3一经推出,耗费大量成本训练的模型变得无关紧要。因此,在Manus上,团队选择了上下文工程。作者比喻说:“如果模型进步是上涨的潮水,我们希望Manus成为那条船,而不是固定在海床上的柱子。”总结上下文工程经验如下。 围绕 KV 缓存进行设计 作者认为 “KV 缓存命中率”是Agent生产阶段最重要的单一指标,因为它直接影响延迟和成本。这也令我想到计算机领域的一句著名的话:“计算机科学中只有两个难题:缓存失效和命名。” 一个典型的Agent处理任务过程是:在接收用户输入后,Agent通过一系列工具调用链来完成任务。在每次迭代中,模型根据上下文选择一个预定义动作并执行,然后观察结果。动作和观察结果被附加到上下文中,形成下一次迭代的输入。这个循环会持续进行,直到任务完成。这个过程中,上下文会不断增长,根据Manus的数据统计,平均输入和输出token的比例约为100:1. 具有相同前缀的上下文可以利用Transformer架构的KV缓存机制,这将大大减少了首token的生成时间和推理成本。根据Manus团队的计算,使用Claude Sonnet时,存储的输入token成本为0.3美元/百万token,而未缓存的成本为3美元/百万token,相差十倍。 因此,提升KV缓存命中率的关键实践有:1) 保持提示词前缀稳定;2) 使得上下文只在尾部增加;3) 在需要时明确标记缓存断点,这是为了手工告诉大模型哪些可以被缓存复用。 在调整使用工具时,采用掩码方式,而非增删 通过使用工具让Agent能力更强,但如果任由用户自定义工具,也会造成不可预测的结果。Manus团队的做法是:避免在Agent执行迭代过程中动态添加或删除工具。一部分原因也是工具定义在上下文的前部,会导致KV缓存失效。采取的替代做法是使用上下文感知的状态机来管理工具的可用性,以遮蔽掩码的方式来允许或阻止某些工具调用动作。 使用文件系统作为上下文 虽然当前业界前沿大模型都提供128K甚至更多的上下文窗口,但实际场景中这还远远不够,不仅因为过程中的观察结果往往包含了大量非结构化数据及文件,导致很容易超出上下文限制,而且长上下文也会导致模型性能下降、成本提升等问题。 Manus则将文件系统作为上下文,大小不受限制,持久化,而且Agent可以直接操作。不仅将文件系统用作存储,还用作非结构化的长期外部记忆。 通过复述操控注意力 Manus在执行任务中,会生成一个todo.md的文件,用来记录任务列表,并在执行过程中更新它。这是一种操控注意力的机制。Manus平均完成一个任务需要大约50次工具调用,而过程中依赖大模型进行决策,这个作业链条太长,以至于大模型很容易偏离主题或忘记早期目标。因此,Manus通过不断重写代办事项列表,并将其目标复述到上下文的末尾,进而将代办推进模型的近期注意力范围内,避免了上述问题。 保留错误内容 大模型会产生幻觉,环境会返回错误,工具会出现异常行为,这些都会导致Agent犯错。在发现错误后清理痕迹继续重试并不是推荐的做法,因为清楚错误信息会移除证据,这会让大模型在下一步理解时缺失信息。因此,最有效的方法是将错误保留在上下文中,让模型看到错误的行动及其观察结果,以降低重复错误的可能性。 不要迷信少样本提示 少样本提示(Few-Shot Prompting)是大模型提示词工程中常用的方法之一,通过在提示词中增加少量样本示例让模型来模仿其样例,以提高输出的准确性。但在Agent中,这种方法也可能适得其反,模型遵循样本模式,重复类似行动,导致过度泛化,甚至产生幻觉。因此,推荐的做法是增加多样性,在模板中增加顺序或格式上的微小噪音,在控制中增加随机性。 以上是作者在构建Manus过程中总结的实践经验。 Agent = LLM + memory + planning skills + tool use This is probably just a start of a new era :) – Lilian Weng, 2023-6-27, on x

2025/8/5
articleCard.readMore

周刊第16期: Andrej Karpathy 讲 AI

本文为周刊第16期,前期的周刊参见:周刊系列。 TL;DR 本期周刊介绍 Andrej Karpathy 的三次演讲/YouTube视频课程,通过对这些视频的解读,主要阐述下面三个系列的问题:1. 为什么说我们处在软件3.0?它跟软件2.0和1.0的区别是什么?为什么说大模型相比基建(电网),更像是操作系统,而且还是1960年代的操作系统?2. ChatGPT是怎么被训练出来的?预训练、监督微调、强化学习是什么关系?分别对大模型产生了哪些影响?大模型未来的发展方向是什么?3. ChatGPT的能力边界是什么?业界那么多AI应用的差别是什么?除了聊天对话还能用它们干啥? Andrej Karpathy 是一位出生在捷克斯洛伐克的AI计算机科学家,博士毕业于斯坦福,师从李飞飞。毕业后成为OpenAI的创始成员。2017年加入特斯拉,成为其人工智能总监,领导特斯拉智能驾驶的机器视觉团队。2023年返回OpenAI,不到一年后决定创业,方向是AI教育领域。按照他自己的说法,教育是他热爱的事业。也确实如此,在斯坦福期间,他创作并担任主讲的课程《CS 231n:卷积神经网络在视觉识别中的应用》,一度成为该校学生规模最大的课程。而他在YouTube上发布的AI教学视频也深受网友喜爱。 本期周刊将介绍他的最新一次演讲及两则YouTube教学视频。 软件3.0 今年6月17日,Andrej Karpathy 在 Y Combinator AI Startup School (与会者还有奥特曼、李飞飞、马斯克等人)上发表了名为 Software is Changing (Again) 的演讲,提出了 软件3.0(Software 3.0)的概念。Andrej Karpathy擅长提出一些新概念,比如之前的Software 2.0 和 vibe coding(氛围编程)。下面简要总结下他的演讲。 软件从诞生之后的70年里,在根本层面上并没有太大的变化,但在过去的几年,却发生了两次根本性的改变。 软件1.0时期,大量的软件都由人来编写,在GitHub上,存储了不同类型的软件仓库,可以将它看成是一个大的“软件地图”。“软件1.0”是程序员为计算机编写的代码。 软件2.0时期,不需要直接写代码了。“软件2.0”基本上是神经网络,或者说神经网络中的权重参数(weights)。软件2.0时代的GitHub是什么呢?Andrej Karpathy 认为是 Hugging Face. 在这里能看到那些软件(模型)。 现在,我们进入了一个新的时期,神经网络也可以编程了,或者可以将神经网络看成是可编程的计算机,而运行在其上的编程语言则是提示词(prompts),这种编程语言可以用英语(或其他人类语言)来写。 举个例子,如果要实现情感分类这一个任务,那么: 软件1.0时期,可以写一段Python代码来实现; 软件2.0时期,可以训练一个神经网络模型; 软件3.0时期,可以通过提示词(prompt)来指挥大模型完成任务。 我们处在软件3.0时期,而大家可能也已经注意到了,GitHub上的很多代码,已经不再是传统意义上的代码了,里面夹杂了大量的英文。这是一个正在增长的全新编程范式,我们在用日常使用的语言来编程。 有人说:AI是新电网,确实如此,大模型给人的感觉就像是一种基础设施。那些大模型厂商,如OpenAI、Gemini、Anthropic等,这些公司投入大量的资本开支(CAPEX)去训练大模型,就是在建设一张新“电网”。然后他们通过API向用户提供智能服务,又投入持续的运营开支(OPEX),本质上就像是电力公司把电输送到千家万户一样,把智能输送给每个人。 用户则按使用量计费来使用大模型服务,比如按百万token来付费,这跟我们使用水电的逻辑是一样的,而作为用户,我们也会对这些API服务提出类似公共事业的需求,低延迟、高安全、高可用等等。一旦这些公共基础设施发生故障,影响也是严重的,就像电力故障会导致工厂停工一样,大模型的宕机也可能导致我们陷入无法工作的状态。(我在写这则周刊时,刚好看到网上有关于Claude Code故障导致程序员无法工作的吐槽。主管问程序员那没有Claude Code之前是怎么干活的?程序员则回怼:开玩笑吗?难道我们今天还要像野蛮人一样自己一行一行写代码?) 不过相比于“电网”,Andrej Karpathy 认为大模型更恰当的类比是“操作系统”。因为它不是单纯的商品,而是生态的核心。像操作系统一样,大模型有开源也有闭源,有很多家提供厂商,最终可能会演进成少量的几个生态。LLM本身就像是CPU,上下文窗口则像内存,大模型应用通过调度这种“CPU”和“内存”来解决问题。 我们现在部署大模型的资源成本很高,这很像1960年代的大型机时代,所以大模型都被集中部署在了云端,用户只能够通过API来调用它,就像当年要使用瘦客户端去接入大型机一样。没有人能独享大型机,所以产生了分时技术,而今天我们对大模型的使用如出一辙。大模型的PC(个人电脑)时代还没有到来,从目前的经济性来看还不允许,但未来会是这个趋势。 另外,我们与大模型的交互通过 ChatBox 的文本交互,这也很像计算机时代初期只能通过终端命令行进行交互,属于大模型的通用 GUI(图形界面)交互方式还没有被发明出来。 不过,在一些特定场景下的GUI交互有应用了,比如在编码领域,Cursor 就是一个例子。大家都知道,大模型能力很强,几乎包含了所有公开的人类知识,但同时又存在幻觉等严重问题,对此,在特定场景下的交互设计则尤为重要,以规避他的缺陷,又可以同时享受它的超能力。Andrej Karpathy 把 Cursor 这类应用叫作“半自主应用”(Partial Autonomy Apps), 即保留传统界面,让人类可以手动完成所有工作,同时由集成大模型,更高效的完成更复杂的工作。在Cursor中,它给用户提供了多种选项来控制自主程度: Tab 补全:用户掌握主导,大模型轻微辅助。 选中代码按 Ctrl+K: 让大模型改一小段,自主程度适中。 Ctrl+L: 改整个文件,让大模型做的更多。 Ctrl+I: 放手让它改整个项目目录,完全交给大模型。 实际上,在真正的业务场景,并不是大模型越自主越好。AI太过主动,有时反而会拖慢效率。就像钢铁侠的战衣一样,它具备自主执行任务的能力,但更多的场景,是斯塔克在操作着它。在当下大模型还不完善的情况下,半自主Agent是比较合适的选择。 总结一下,我们处在软件3.0的时代,有大量的代码需要重写,而重写的语言将是人类语言。大模型不仅像是“电网”,更像是操作系统,而现在的阶段则是1960年代操作系统刚起步的时候,这是绝佳的时机。 深入理解大模型 今年年初,Andrej Karpathy 在 YouTube 上发布了一则三个半小时的视频,名为 Deep Dive into LLMs like ChatGPT, 深入浅出地讲解了大模型的原理。以打造ChatGPT为例,从预训练(Pre-training)、微调(SFT)和强化学习(RL)三个方面来讲解大模型的构建过程。为了节省大家的时间,这里将三个半小时的视频内容总结成如下6000字左右的文本。 本视频适合对神经网络有入门基础的人学习,如果希望学习神经网络入门知识,欢迎参阅拙作《从神经网络到 Hugging Face: 神经网络和深度学习简史》。 预训练 Pre-training 大模型是通过预训练得到的。预训练分为以下几步: 1、下载并处理互联网数据: 比如Hugging Face收集整理并开源的 FineWeb 数据集,收集了互联网上公开可用的高质量文本数据,经过清洗、筛选,最终只有44TB量级。这个过程是这样的:首先是从互联网上爬取数据,Common Crawl 这个组织从2007年开始持续扫描互联网,到2024年已经索引了27亿个网页,Common Crawl 爬取的这份数据是原始的互联网数据。接下来便要经过大量的过滤和清洗工作:URL过滤(排除一些黑名单网站)、文本抽取(从原始的HTML网页中提取纯文本内容)、语言过滤(如FineWeb专注英文因此主要保留英文内容)、去重、PII信息移除(剔除个人隐私数据),然后才能得到像FineWeb这样的数据集。 2、tokenization: 第二步是将这些文本数据输入进神经网络,如果直接将文本的UTF-8编码输入给大模型,这些原始的二进制bit序列将非常长,会浪费神经网络的资源。因此,一般采用对连续bit分组进行编码,比如一个单词或一个emoji,这样就可以压缩序列长度。实际场景中还会使用一些优化方法,比如字节对编码方法(Byte-Pair Encoding, BPE),就是针对数据里高频出现的连续符号组合进行编码,比如 “mac”的编码是116,”book”编码是32,116,32对(”macbook”)经常出现,可以给它一个新的编码 256 来替换。这种将原始文本转换成符号(token)序列的过程就是 Tokenization. 3、神经网络训练: 这是计算最密集的工作阶段,所有训练大模型的算力消耗基本上集中在这里。训练阶段的主要目标,就是建模token在序列里是如何关联、彼此衔接的规律,换句话说,就是让大模型学会在一个token序列里,什么样的token更有可能出现在另一个token之后。大模型的数据就是一段长度的token序列(这个长度被称为窗口),而输出则是对下一个token的预测。因此,训练大模型就变成了通过数学方法,更新大模型,让大模型对正确token的预测概率更高,对错误token的概率更低。这里面的数学方法主要是向量计算。 4、推理: 前面讲的是大模型的学习过程,而推理则是大模型生成内容的过程。推理过程大概是这样:提供给大模型一些起始token,大模型返回一组概率分布,然后根据高概率采样获得的下一个token结果反馈给大模型,继续得到下一个token,不停重复这一过程,最终生成一段文本。 以上就是大模型的训练和推理过程。 GPT-2在2019年发布,跟当前的GPT-4在基本架构上没有本质区别。它有16亿个参数,上下文长度只有1024,也就是说从数据集中采样窗口时不会超过1024个token. 训练GPT-2的数据集规模是一千亿个token, 相比之下,FineWeb的数据集token总量上15万亿。2019年OpenAI训练GPT-2的成本估计约为4万美元,而今天复刻一个GPT-2仅需一天时间,成本估计100美元。原因是数据集质量更高,更重要的是硬件算力飞速提升了。 相比之下,更新的Llama 3 则规模大得多,4050亿参数,15万亿token的训练数据。在Meta发布Llama 3的技术论文中详细说明了其训练过程。 GPT-4、Llama 3 都属于基础模型(Base Model),还不能直接作为对话助手模型使用,而ChatGPT模型被叫作 Instruct 模型,被用来做对话模型。如果我们在对话中直接使用基础模型,会发现根本用不起来。使用网站 Hyperbolic 可以在线体验这些基础模型,当用户输出问题时,发现它会随机的输出一些结果,因为它不是在回答问题,而是在做自动补全。可以把基础模型理解成一个拥有大量知识的人,按照统计规律给这些知识建模,给他一些信息输入,他便从记忆里复述知识内容,但会因为概率性统计而出现“记忆偏差”。 监督微调 Supervised Fine-Tuning 1、怎么做SFT? 要想让基础模型变成可以对话的助手,让它能够回答问题,进行多轮对话,并理解意图,就需要后训练处理。 后训练方法有多种,典型的有监督微调(SFT)。在SFT中,训练数据集从互联网数据变成了由人工标注的数据,让模型学习如何在对话中回答人类问题。比如如下这条语料: Human: Why is the sky blue? Assistant: The sky appears blue because of Rayleigh scattering... 当它被tokenization后,模型看到的是token ID,并不理解它是对话。因此,一般大模型厂商会采用一些内部的特殊编码来标识出对话格式。比如 GPT-4 会用如下特殊token来标记对话结构: IAM_START 表示发言开始,IAM_END 表示发言结束,IAM_SEP 用于内部分隔,USER / ASSISTANT 表示谁在说话。用户问 “What is 2 + 2?” 会被编码成token序列 [What is 2 + 2?] 。模型在反复训练这种格式,就学会了补全下一轮对话。 2、SFT的数据集从哪里来? OpenAI 在2022年发布的 InstructGPT 论文中首次披露了如何通过 SFT 把大语言模型变成对话助手,当时 OpenAI 从 Upwork、ScaleAI 这类外包平台雇佣了大量的人类标注员。标注员的任务是想出一个用户问题并写出理想的AI助手回答。为此,OpenAI 还制定了一份详细的标注指南来指导标注员写好标注数据。 不过,经过这些年的发展,SFT的数据集不完全是人力标注的数据,而是发展成由大模型来生成、再由人工来修改的半自动化方式。 3、为什么大模型存在幻觉以及如何缓解? 大模型有时候会凭空捏造内容、胡编乱造,但还说得头头是道,这种被称为大模型的幻觉(Hallucination)。虽然现在大模型的幻觉已经改善不少,但本质问题并没有消除。 首先我们得理解幻觉是怎么产生的。比如在训练的数据集里有如下对话数据: Human: Who is Tom Cruise? Assistant: Tom Cruise is a famous American actor and producer... Human: Who is John Barrasso? Assistant: John Barrasso is a U.S. Senator from Wyoming... Human: Who is Genghis Khan? Assistant: Genghis Khan was the founder of the Mongol Empire... 这些信息真实存在,回答也很合理。但如果在测试时问一个大模型现实里不存在的名字,比如问一个早期幻觉比较严重的大模型 Falcon-7B : Who is Orson Kovats? 大模型就会根据统计规律,凭空捏造答案: Orson Kovats is an American author and science fiction writer. 说得煞有其事,但完全是假的,并且每次问它这个问题,它回答的结果都不一样,也都是错的。 幻觉的根源在于,大模型只是学会了这类问题的回答风格,实际上缺少该问题的知识,也无法分辨真假。本质上大模型是一个概率性token补全机器,没有检索事实的能力。 不过如果问新版的ChatGPT,比如 GPT-4 Turbo,同样问这个问题: Who is Orson Kovats? 它通常会说“我没有找到关于 Orson Kovats 的信息”,或者显示“正在搜索网络……” 这是因为现代的大模型开始使用工具调用(Tool Use)联网检索以避免幻觉。如果把“联网搜索”选项关闭,GPT-4也会倾向于说“这个人似乎不在我的训练数据中”,而不是胡编。这是因为在训练时增加了类似不确定性问题的数据集,让大模型学会在不确定的场景下说“不”。这是缓解大模型幻觉的两个主要方法。 4、大模型的能力限制 大模型的训练和推理,都是基于从左到右的token序列,每个token的生成都依赖上下文,模型其实是在计算下一个token的生成概率。因此模型不擅长计数、拼写等细节任务。 总结一下,SFT 阶段就是把基础模型微调成一个对话助手,方法和预训练基本一样,区别是数据集:预训练使用互联网数据,而 SFT 增加了人工标注的对话数据集。 强化学习 Reinforcement Learning 最后一个训练阶段是强化学习,强化学习可以类比为模型“上学”。人类通过上学来提升能力,大模型也一样。通过这个过程让大模型更擅长解决问题。其实,模型在不同阶段的训练方式,也很像人类接受教育的不同方式。可以拿教科书中的三类知识篇幅来类比大模型的三个训练阶段: 背景知识(预训练):教科书里的大部分篇幅是背景知识,传统教育里的“填鸭式教育”就是让学生记忆这些基本知识,就像大模型的预训练阶段,这一阶段让大模型形成“知识库”。 专家示范解题(SFT):教科书里还有问题和标准解题过程,专家不仅出题,还示范解题,这相当于使用人工标注数据来训练大模型,让它模仿专家答题。 自己练习做题(强化学习):教科书章节最后有练习题,只有答案,没有解题过程,学生需要自己摸索如何解题。这对应模型的强化学习阶段,模型通过不断尝试、练习,找到自己可靠的解题路径。 怎么做强化学习? 先看SFT怎么做,如下图,对于求苹果单价的问题,人类标注员在为训练集构造解题数据时构造了四种解法,但人类无法判定哪种是最优解法,因为人类的认知和模型的认知存在本质性差异:对人类简单的步骤(如心算)对于模型可能超负荷,而模型掌握的博士级知识(如物理公式)对于人类来说则很难,而人类标注的合理步骤则可能包含模型未学习的知识断层。 强化学习的运作机制是: 1、批量生成解决方案,模型生成数千条解法;2、对结果进行评估和筛选,区分出正确解法(绿色路径)和错误解法(红色路径); 3、模型自我优化,通过参数更新并强化绿色路径的生成概率。 强化学习的优势是什么? 预训练和SFT早已经是行业标准,强化学习则还处于早期发展阶段,如何定义“最佳路径”、如何筛选数据、如何设置训练参数等都是强化训练的实际难题。 OpenAI是最早在大模型上探索强化学习的公司,但公开信息较少,而DeepSeek 发布的R1论文则是首次系统化公开强化学习的过程,这对于强化学习的发展至关重要。而DeepSeek R1论文显示,随着训练的深入,大模型涌现出“长思维链思考”能力(答案变长了,模型开始主动进行反复推理、自我校验、多角度尝试),模型自然学会了人类式的“思考过程”。 除大语言模型外,实际上强化学习在AI的其他领域早已有验证,这方面的经典案例是AlphaGo. 在监督学习模型下,AlphaGo学习人类顶尖棋手的棋谱,模仿到一定程度后会封顶,无法超越人类。而强化学习模型下,AlphaGo自我对弈,迭代试错,专注于如何赢棋,不受人类局限,最终超越人类棋手。比如在与李世石的对弈中,走出了人类难以想象的第37手。 RLHF:基于人类反馈的强化学习 前面提到,强化学习训练过程中设定答案,由大模型探索解决方案,这种场景使用于数学、代码等有明确答案的可验证领域。但是对于创作、总结等没有标准答案的不可验证领域,就需要借助人工反馈了,这就是 RLHF(基于人类反馈的强化学习)。比如,对于“生成一个关于鹈鹕的笑话”这一任务,需要人类对模型生成的结果评价是不是好笑。但模型训练每轮生成成千上万个样本,人工评审不可行。对此的解决办法是使用“奖励模型”(Reward Model)来代替人类。 具体做法是:1、对人类偏好建模,人类对一小批样本排序打分,作为训练奖励模型的数据集。2、单独训练一个神经网络作为奖励模型,学习模仿人类的排序。3、用奖励模型代替人类进行判定打分,持续进行强化学习。 RLHF的劣势也由此而来,因为奖励模型上通过少量人类排序数据训练出来,因此实际不能等同于真实人类的判断,导致存在偏差。而大模型在RLHF中,在经过反复迭代后,会找到“非人类预期、但评分极高”的样本,这种就是“对抗样本”。比如鹈鹕笑话中,初期模型越来越好,但迭代到一定程度,会出现”the the the”这类无意义的输出,但奖励模型竟然打出满分1.0,认为这就是最佳笑话。 因此,RLHF需要在训练过程中反复发现对抗样本,再修改,不断补漏洞。 总结和展望 最后,回顾下大语言模型的三个训练阶段:1、预训练:模型学习“教科书”,阅读大量互联网内容,形成通用语言理解和知识压缩能力。2、监督微调(SFT):模型参考“标准解题过程和答案”,学习人类标注的理想对话和解题过程,成为合格的解题和对话助手。3、强化学习(RL):模型反复做“练习题”,通过反复尝试、调整找到更有效的解题方法,最终形成强推理能力,而不是简单的模仿。对于没有标准答案的“作文题”,则采用RLHF方式加入人类偏好反馈。 对于大模型未来的发展方向,可能发生在如下方面: 多模态:模型能同时理解、生成文字、语音、图像、视频,融合为统一系统。 更强的持续任务能力(Agent):从单次应答进化到长周期、多步任务,比如完成一整个项目,但仍需人类监督。 工具深度集成:模型深入各种办公与生产软件,比如操作浏览器等完成任务。 Test-time Learning(测试时学习):当前模型在推理阶段权重固定,靠上下文短期记忆。未来可能会发展出“边用边学”的能力,突破上下文长度限制。 如何使用 AI 今年2月,Andrej Karpathy 又发布了名为 How I use LLMs 的视频,花了两个多小时详细讲述了他使用大模型应用的一些方法和技巧。这里用2500字的文字简要概括下这两个多小时的视频内容。 大语言模型基础知识与ChatGPT介绍 关于大语言模型的基础知识和ChatGPT的原理知识在上则视频解读已经介绍过,这里就不再详述。自从OpenAI推出ChatGPT后,大模型应用的生态快速发展起来,目前已有多家厂商推出类似应用。如 Google 的 Gemini、Meta 的 meta.ai、微软的Copilot、Anthropic的Claude、xAI 的 Grok、Mistral 的 LeChat,还有国内厂商的应用,如 Deepseek、字节的豆包、月之暗面的kimi、阿里的通义千问、腾讯的元宝,等等。这些Chat应用有很多,要想了解它们的优势和排名情况,可以参考 Chatbot Arena 或 Scale 的 SEAL 排行榜。下面介绍以 ChatGPT为例来介绍这类大模型Chat应用。 了解 ChatGPT 的能力边界 要想用好ChatGPT,首先得知道它的能力边界。ChatGPT的本质是一个1TB的“压缩文件”,其知识源于预训练时对互联网内容的压缩(因此存在知识的时间限制,截止时间为训练的数据集抓取的时间),其“性格偏好”则由后训练阶段标注员通过示例来设定;对于互联网上频繁出现的内容,其“记忆”则更清晰。因此,适用于问非最新的、互联网上常见的知识,但答案也非绝对正确。 与ChatGPT互动时,对话会越来越长,这些对话内容会成为下一次对话输入给ChatGPT的上下文,上下文窗口越长,会导致两个问题:一是不相干的信息会让模型分心,从而干扰正确的输出;二是导致模型运行的速度变慢,计算成本也会增加。因此,如果切换话题,则最好开启新的对话窗口。 不同模型的性能差异也大,大型模型(如GPT-4.0)更强但成本也更高,小型模型(如GPT-4.0 Mini)则较弱、但成本低,运行速度也更快。 思考模型(Thinking Model) Andrej Karpathy 所称的“思考模型”(Thinking Model)一般被叫作“推理模型”(Reasoning Model),这里保留称之为“思考模型”,也便于跟inference 的中文翻译“模型推理”区别开来。 在有些AI应用(如Perplexity)上提供了“深度思考”(Deep Thinking)的选项,启用后会使用“思考模型”(如 DeepSeek R1、OpenAI 的O系列模型)来推理,这类模型经过强化学习训练而来,形成了类似人类的长思维链思考策略,适合解决数学、编程等复杂问题,但缺点是响应时间长(较长的思考过程)。 工具使用和一些技巧 下面 Andrej Karpathy 介绍了他在使用ChatGPT等AI应用中的一些场景和技巧。 互联网搜索 大模型本身的知识有截止时间,如果需要获取最新信息则需要调用大模型的搜索能力。Perplexity 和 ChatGPT都集成了“搜索网页”按钮,用户选择后大模型会调用工具进行互联网搜索,对获取最新信息有帮助。 深度研究(Deep Research) 深度研究是最近出现的能力,在 ChatGPT Pro (Plus版有使用次数限制)上提供,当启用这个选项,丢给ChatGPT一个课题后,它便开始结合思考和多次互联网搜索,查阅大量资料,然后进行思考分析,约十分钟后给出研究报告结果。Perplexity 和 Grok 也有类似功能。 上传文件以增强上下文理解 目前很多大模型应用都支持用户上传文档文件,大模型会将它转换为文本并加载到上下文窗口中,这对于辅助阅读论文、阅读书籍尤为帮助。 Python 解释器集成 通过集成Python解释器,让大模型生成Python代码,并调用解释器让其返回结果。这对于精确的计算场景非常有帮助,因为大模型的幻觉,它不擅长精确的数字计算,而通过大模型生成代码,又编译器来运行程序得到精确结果。 ChatGPT 高级数据分析 让ChatGPT扮演初级数据分析师,收集数据(比如OpenAI历年估值)、可视化(绘制图表)、趋势拟合和预测(用SciPy曲线做线性拟合) Claude Artifacts 编写自定义应用,通过生成代码在浏览器中直接运行,无需部署。 Claude 图表生成 利用 Claude Artifacts 和 Mermaid Markdown 库,可以对文本(比如一本书)生成概念图,将内容逻辑可视化出来,便于用户理解。 Cursor 辅助编码 通过IDE处理本地文件,调用大模型来辅助代码编写。甚至可以将控制权交给它(Cursor的”Composer” 功能),用户则发号施令让它完成编程工作。Andrej Karpathy 称之为 “氛围编程”(Vibe Coding)。 语言交互 ChatGPT可通过麦克风图标按钮实现语音传文字,用户无需打字;另外,通过应用内置的朗读功能,将文本转换为语音实现语音交互。 AI播客生成 Google 的 NotebookLM 可以将用户上传的数据(如PDF、网页、文本等),根据用户要求生成定制播客,供用户在散步、开车时收听,不仅炫酷,也很实用。 图像生成 DALL-E等模型可以根据文本提示词生成图像,ChatGPT也支持了这一功能。 视频交互与生成 ChatGPT移动端的“高级语音模式”支持通过摄像头来实时识别物体。 VO2、OpenAI Sora等工具可以生成高质量视频。 总结 大模型应用更新迭代非常快,同时各工具也侧重不同领域做差异化竞争,如Perplexity强于搜索,Claude 强于长文本,Cursor强于编程,ChatGPT是全能型选手。 不过要注意的是,大模型本质上是知识的压缩文件,要留意它的能力边界。 AGI is a feeling. Like love. Stop trying to define it. – Andrej Karpathy

2025/7/22
articleCard.readMore

读《毛泽东传》对个人的启发

对当代中国人而言,影响最大的两个人就是毛泽东和邓小平。前年我读了傅高义的《邓小平时代》,对邓小平的生平有了全局的认识,也折服于他为人处世的智慧。作为邓小平的传记,全书23章,但作者仅仅用了前二章描述邓小平从1904年出生到1974年的70年,而绝大部分笔墨都用在了1976年后的经历,因为在此之前的历史,都会围绕着一个人,那就是毛泽东。 虽然此前我已经读过一些毛泽东的文章,看过他的很多故事,但今年还是第一次完整的读完他的传记,也就是中共中央文献研究室编撰的《毛泽东传》。在选择传记前,我对比过国内外不同版本《毛泽东传》,最终选择了这本,考虑到它最完整,也相对客观。全书165万字(是《邓小平时代》48万字的三倍多),从1893年出生到1976年去世,共六卷85章,读完花了不少时间,收获也很大。我很想写一篇读书笔记,但考虑到难以写周全,因此改为读《毛泽东传》对个人的启发,这样也避免了对毛泽东评价而可能引起的争论。(就个人而言,比较认同邓小平对毛泽东的评价。)另外,书中有大量关于政治和军事上的描写,这方面的经验对我们普通人用处可能不大,因此我选择那些对于个人成长有帮助的内容,总结整理如下。 1. 活到老,学到老,从书中找到实践的指导,在实践中验证理论知识 毛泽东酷爱读书是闻名的,而且他会对喜爱的书反复阅读,据说《资治通鉴》读了17遍,不过《毛泽东传》中没有记载。传记中提到,他手不离书,晚年因为眼疾改为身边的人读书给他听,最后的读书时间是在1976年9月8日,也就是在临终前一天,在医生抢救的情况下读的,真的是“活到老,学到老”。 毛泽东的读书有几个特点。一是读书多。哲学、历史、文学、政治、经济,古今中外,经典的冷门的都有,一生读过多少书,无从考计,但他在各地居所留下藏书统计有1.5万册,哪怕只读了其中的三分之一,那也是五千本。 二是“不动笔墨不读书”,这是他的老师徐特立教的读书方法。在读书的过程中,经过认真思考和消化,把自己的心得和看法记下来。这种习惯,从他二十岁在湖南师范学校读书开始,一直坚持到生命的最后。比如在延安时期阅读苏联哲学教科书,就留下了两万多字的批注。 三是有目的性、系统性的读书。毛泽东不是为了读书而读书,而是为了解决当下或者未来的问题而读书。在年轻的时候,他在寻找方向,因此阅读了大量哲学和伦理学的书,包括孔、孟、程、朱、陆、王的儒家和理学,以及康德、黑格尔、斯宾诺莎等西方哲学,而年轻时期对他影响最大的是伦理学,特别是泡尔生的《伦理学原理》。在他看来:“伦理学是规定人生目的及达到人生目的的方法之科学。”在这个时期的读书中,毛泽东将他的主张概括为两点:一个是“精神上的个人主义”,即强调“充分发达自己身体及精神之能力”,力求达到最高境界,实现自己的理想和价值。二是“现实主义”,即不能脱离现实去追求虚幻的理想和价值,而要争取在有限的时间里实现自我。可以说,年轻时候的读书让他明确了人生的方向。 在延安期间,他又开始阅读克劳塞维茨的《战争论》、《孙子兵法》、苏联的军事著作等书籍,不仅如此,还组织《战争论》研究小组,据参加小组学习的人回忆:“采取的方式是每周讨论一次,晚上七八点开始,讨论到深夜十一二点钟。”毛泽东将这些读书学习,结合第一次国共内战十年的军事斗争教训,写成《中国革命战争的战略问题》,并指出:“战争是有规律的。战略问题是研究战争全局规律的东西。战争的胜负不仅取决于作战双方的军事、政治、经济、自然诸条件,而且还取决于双方的主观指导能力。因此,任何指导战争的人不能不研究和不能不解决这个问题。” 红军长征到陕北后,毛泽东又开始大量阅读哲学书籍,主要是苏联哲学教科书,如西洛克夫、爱森堡所著的《辩证法唯物论教程》,米丁主编的《辩证唯物论与历史唯物论》等,他的目的上总结长征前中国革命的经验教训,主要是教条主义和经验主义而造成的军事上的失败。毛泽东将他们总结成了《实践论》和《矛盾论》。 1959年庐山会议时,毛泽东给会议准备了14个题目,第一个就是读书,读苏联教科书《政治经济学》。因为“大跃进”的盲目浮夸导致经济受挫,像历来的重要历史时刻一样,毛泽东想要带领大家学习理论,总结经验。不过,庐山会议上突如起来的变化是始料未及的。 毛泽东会通过读书学习理论基础,形成指导实践的想法,而后又会通过实践来修正或充实原来的想法,这样就能创造出经过实践检验的原创理论。毛泽东将这种认识论总结到了《实践论》中,并在文章结束时这样写道:“通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往复以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度。这就是辩证唯物论的全部认识论,这就是辩证唯物论的知行统一观。” 2. 不做调查就没有发言权,不做正确的调查同样没有发言权 毛泽东在《反对本本主义》的开头第一句话写道:“没有调查,没有发言权”。在他看来:调查就像十月怀胎,解决问题就像一朝分娩,调查就是解决问题。 早在湖南师范学习期间,他就开始实践调查。在暑期带着同学一起游学,身无分文,历时一个多月,走了九百多里路,游历长沙及周边县镇,结交社会各类人等,写了许多调查笔记。后来在广东、湖南搞农民运动,他也是积极开展各类农民问题的调查。最著名的是在1930年5月做的寻乌调查,当时毛泽东率红军进驻江西寻乌县城,决定开展调查研究,召集了干部、手工业者、小商店老板等11人,开了十多天的座谈会。而后,毛泽东将此次调查的结果整理成了八万多字的《寻乌调查》,对寻乌县的地理环境、交通、经济、政治、各阶级的历史和现状等,做了全面而详细的考察分析。同一个月,毛泽东还写了一篇文章《调查工作》,也就是《反对本本主义》。 《调查工作》写完后一度遗失。1961年,为了克服“大跃进”造成的严重经济困难,纠正社会上泛起的“五风”(共产风、命令风、浮夸风、瞎指挥风、干部特殊风),毛泽东决定发动全党干部的“大兴调查之风”运动。恰恰在这个时候,散失多年的《调查工作》文章被找到,毛泽东很高兴,改名为《反对本本主义》并公开印发。“没有调查就没有发言权”的口号也作为该文开头第一句话而广为流传。 在写完《调查工作》的后一年,他在一次通告中又对这句话做了补充:“一,不做调查没有发言权。二,不做正确的调查同样没有发言权。”这第二句同样重要。可以说,建国前的历次军事或政治的胜利与做了正确的调查有很大关系。而建国后,毛泽东依然遵循调查的重要性,不仅听各方代表汇报,也会实际巡视考察。但这些书面报告和巡视所看到的东西,都是“好听的好看的”,在当时的政治高压下,没有人敢说真话。在“大跃进”期间,毛泽东对上报的报告不放心,因此要亲眼看一看,在北京周边省市巡察了一周,在天津郊区现场现物看了一个农场的水稻,农场负责人报告亩产八千到九千斤。调查的方法没有变,但因为身份、形势等因素变了,调查的结果也可能就不再正确了,这值得我们在工作和生活中思考。 3. 乐观的去看待问题,实事求是去分析问题,抓主要矛盾去解决问题 1917年,24岁的毛泽东在湖南第一师范学习期间,在日记中写下了一段后来十分著名的话:“与天奋斗,其乐无穷;与地奋斗,其乐无穷;与人奋斗,其乐无穷。”这里的“奋斗”在当时就是“斗争”的意思。在年轻的毛泽东看来,与天地奋斗,就是与大自然奋斗,日晒雨淋,长途跋涉,挑战客观困难;与人奋斗,就是与自己奋斗,与其他人奋斗,磨炼坚强的意志,锻炼非常之胆量。而这种斗争精神,也延续了其一生。 之所以斗争,是因为对现实的不满,要建立理想主义的世界和社会,要改造世界,改造社会。也是在这段学习时期,毛泽东写道:“国家有变化,乃国家日新之机,社会进化所必要”,对于中国社会,必须再造,而再造的方法上“由毁而成”,“吾人甚盼其毁,盖毁旧宇宙而得新宇宙”。这也是以后他一贯的思想:从大乱求大治。这种思想和他乐观的性格也是印证的,之后的岁月中,无论是在反围剿失利、长征、抗战、内战时,还是在建国后历次经济和局势困难时,他都保持着一如既往的乐观,而且比别人都要乐观。 读书期间,毛泽东曾两次寄读于岳麓书院,讲堂正门牌匾上四个硕大的字“实事求是”给他留下了很深的印象,而他也将这四个字重新解释,并嵌在了延安中央党校的大门口。“实事”就是客观事物,“是”就是客观事物的内部联系和客观规律,“求”就是研究,“实事求是”就是去调查研究客观事物,找到规律。 “实事求是”理解起来容易,做起来难。其中第一个原因就是上面所提到的,做正确的调查难。而再一个原因是这个世界和社会是复杂的且变化的,不可能只有一套规律,而且即使找到了适应于当前社会和世界的规律,也不能保证该规律适应于将来。1959年初,当时正直“大跃进”在全国范围内全面开展,各地上报过去一年农业大丰收,但从1月2月开始,全国发生了缺粮、缺油风潮,大城市蔬菜和肉供应很少。这个问题引起毛泽东警觉,也让他百思不得其解。这时,一份广东的材料送到他手里,说某县粮食生产大跃进,但年底却出现粮食紧张的情况,结果查出是瞒产私分粮食七千万斤。因此证明,农村有大量粮食,粮食紧张是假象,是生产队和分队进行瞒产私分造成的。毛泽东看到报告,认为找到了问题的症结所在。这个错误的判断也加剧了“大跃进”的冒进。在左倾冒进导致的严重经济问题上,仍坚持认为阶级矛盾是当前第一大矛盾,实际上是没有“实事求是”的尊重经济发展的客观规律。 而对于个人,更值得警醒,因为人在取得胜利,特别是一个又一个的胜利后,很容易陷入“路径依赖”的陷阱。这是一种常见的心理现象,因为从决策成本来看,选择习惯路线的成本最低。 抓问题主要矛盾方面我就不再多说,大家在中学课文时就学过《矛盾论》,这是我们耳熟能详的道理。 对于全书,我也只能只鳞片爪记录一些自己的感想,有时间的话还是建议读原书。并且推荐想读《毛选》的也先读一下传记,毕竟,了解历史背景,更能理解毛泽东当时为什么写那些文章。 毛泽东在每个关键的历史节点,或在重大决策时,都会撰写文章来阐述他的观点,进而影响全党全军全国。收入《毛选》的文章都是毛泽东自己写的,只有少量几篇讲话是别人根据讲话记录整理并经过他修改定稿的。他说:“文章要别人写上很危险的。”而且一篇文章要经过反复修改,并经过多人审阅修改后才发出。多写文章,写好文章,亲力亲为的这种习惯也值得我们学习,毛泽东的文章开宗明义、鞭辟入里,传播性很强,往往一开头就抛出主旨。比如前面提到《反对本本主义》的开头“没有调查,就没有发言权”,还有《中国社会各阶级的分析》的开头“谁是我们的敌人?谁是我们的朋友?这个问题是革命的首要问题。”诸如此类。不但对自己的文章如此,对中央编辑书目里看到别人文章不好的地方,也会认真修改,把冗长、累赘、看了头痛的文字改得鲜明而有力,书中记录了在编辑《怎样办农业生产合作社》一书的例子,很有代表性: 例如有一篇材料,原来的题目是《天津东郊区庄子乡民生、民强农业生产合作社如何发动妇女参加田间生产》,共三十一个字,毛泽东改为《妇女走上了劳动战线》,只用了九个字,简单明了,又抓住了主题,一看就留下印象。 类似的例子还有很多,比如早在1922年安源罢工时,毛泽东建议李立三、刘少奇把罢工口号改成: 从前是牛马,现在要做人。 “牛马”这个词直到100年后的今天还在互联网上流行着。 本文的最后,记录一则轶事。1970年12月,毛泽东在书房会见了埃德加·斯诺,他说了如下这番话: 现在就不同了,崇拜得过分了,搞许多形式主义。比如什么‘四个伟大’,‘Great Teacher,Great Leader,Great Supreme Commander,Great Helmsman’(伟大导师,伟大领袖,伟大统帅,伟大舵手),讨嫌!总有一天要统统去掉,只剩下一个‘Teacher’,就是教员。因为我历来是当教员的,现在还是当教员。其他的一概辞去。 这是现在互联网上有很多人把毛泽东称为“教员”的原因。

2025/7/13
articleCard.readMore

周刊第15期:Nat Friedman 和 Derek Sivers 的自我介绍

本文为周刊第15期,前期的周刊参见:周刊系列。 本期谈到的两位互联网人物,他们身份差异较大,一位是行业顶尖企业CEO及投资人,一位是四海为家的数字游民。但他们有一个共同的特点,就是都把互联网当成了自己真正的家园。他们热爱互联网,信奉技术改变世界。他们在个人网站上的自我介绍也很有启发性,本周刊尝试挑选并翻译,希望对大家有所裨益。如果你有类似人物推荐,欢迎留言。 Nat Friedman(左)和 Derek Sivers(右) Nat Friedman Nat Friedman 是科技创业者和投资人,目前被扎克伯格委任为 Meta 超级人工智能实验室(Meta Superintelligence Labs)的技术联合领导人,曾担任 GitHub CEO,是一位热衷于技术和开源的科技创业者。他于1977年出生于美国弗吉尼亚州,就读于MIT,毕业后创立了两家公司,分别被 Novell 和微软收购。第二家公司 Xamarin 被微软收购后进入微软,而后在微软收购 GitHub 后又担任GitHub CEO,期间推出 GitHub Copilot, 2021年卸任后成立 NFDG 基金并投资 AI 初创公司。今年加入 Meta,担任其新成立的超级人工智能实验室的技术领导人,与 Scale AI 创始人 Alexandr Wang 搭档。 Nat Friedman 在他的个人主页上,对自己的介绍列举了他所奉行的一些原则,简要翻译如下。 我相信的一些事情: 作为人类,我们有权利(甚至是道德义务)按照自己的意愿来重塑宇宙 作为真正的知识,科技使之成为可能 你应该致力于提升上限,而非下限 热情很重要 从事感兴趣的事情更容易 因此,做大事可能比做小事更容易 能量(Energy)是进步所需的必要输入条件 快速做事很重要 当你快速做事时,你与现实的接触更频繁,因此单位时间学到的也更多 快速行动迫使你聚焦于重要的事情上,没时间管废话 不要迷信“慢工出细活” 一周是一年的2% 时间是(衡量效率的)分母 “有效市场假说”(EMH, 即相信市场永远是对的)是谎言 最多只是个耗损极大的启发式概念 生活中最美好的事情往往发生在“有效市场假说”失效的地方 在很多场景下,把世界建模成500人比建模成80亿人更准确 “大多数人是其他人(的复制品)” 我们知道的比我们自认为的少 “可复制性危机”(无法重现相同的结果)并非偶然现象 我们相信的很多事情都是错误的 我们往往甚至没有问对问题 不要禁止“微观管理” 优秀的个人应该被充分授权,以发挥他们的才能 我们的目的不是为了避免犯错,而是因为在各个维度上实现卓越 为此付出的代价也是值得的 小团队更好 更快的决策,更少的会议,更多的乐趣 不要因为政治原因而分拆工作职责 不要招庸人 大规模的工程项目对智商的依赖程度比看上去更高 很多科技公司都有2至10倍的冗员 从哪里获得你的多巴胺? 这个问题的答案能预测你的行为模式 从改进自己的想法中获得多巴胺,胜过从别人对你的认可中获得多巴胺 如果从“让事情发生”中获得多巴胺,也很好 你能做的比你想象的要多 我们都在被无形的传统观念所束缚 但实际上只有物理定律才是唯一的限制 Derek Sivers Derek Sivers 在他的个人网站上介绍了自己的经历: 1969年出生在美国加州伯克利,3岁开始随着父母在美国各州和城市迁移,17岁去波士顿的伯克利音乐学院上学,毕业后到华纳音乐上班,两年后辞职,成为坂本龙一的吉他手在日本巡演,而后便开始作为独立音乐人并创业。29岁创立 CD Baby 独立音乐公司,十年后公司被收购。41岁离开美国移居新加坡,而后是新西兰、英国等地的全球旅居,并开始写作和演讲。到目前为止出版了四本书,分别是:How to Live, Your Music and People, Hell Yeah or No, Useful Not True. Derek Sivers 曾在访谈中称他的偶像是 Seth Godin, 我翻看了下他的个人网站,发现也是一位奇人,后面有机会再深入研究。闲话少叙,还是回归正题,Derek Sivers 在他的个人介绍中描述了自己的一些原则和行为模式,挑选翻译如下。 I’m ambitiously focused on creating 我极度专注于创造 相比于其他东西,我更想要创造很多东西。我想写作、出书、制作网站、创作音乐、创立公司、构建系统、开发应用、尤其是是实现新想法。 这影响了我生活中的大多数决策。我几乎对所有事情说“不”,以便于拥有更多的时间用于创造。 我想要学习更多的东西,尤其是不同的思考方式和生活方式,这就是为什么我阅读非虚构类书籍、不断在世界各地迁徙的原因。 我会与那些不断挑战自我、努力成长的人产生共鸣,而对那些只想放松、闲逛、看电视、参加派对的人则无感。 我为创造和学习而优化自己的生活,舍弃掉大多数普通人日常所做的事情(比如闲聊或娱乐消遣),以追求自己更大的目标。 My life philosophy 我的人生哲学 我的人生哲学与古希腊的斯多葛学派不谋而合,尤其是关于“让自己更加强大,以面对更艰难的未来”这一点。 我怀疑一切。我甚至不相信自己的话,因为这一页所讲的东西,反过来几乎也成立。因此,有时候我会有意为之:故意做与自己信仰相反的事情,只是为了换个视角。 I don’t work for money 我不为钱而工作 有人说我已经退休了,因为自从2008年(卖掉CD Baby)后开始我几乎没有赚过钱。 从某种意义上是这样子的:我不再需要比现在更多的钱,我不需要名声、认可或其他任何外在的东西。 这样说的话,我已经退休了,不再为钱而工作。 现在,我所有的追求都是内在和智识上的。我依然努力工作,只是为了自己的学习、创造和给予。 I love to work alone 12+ hours a day 我喜欢独自工作,每天超过12个小时 我喜欢那种没有打扰的从早上6点一直工作到晚上10点的日子,中间只是做少量运动。这是我最喜欢的日子,这种16个小时工作的日子越多,我越开心。 我使用“工作”这个词,是因为更容易被人理解,但实际上这是“属于我自己的时间”—— 做自己热爱的事情,写作、学习、提升、创造。无论是创作音乐、网站、书籍或公司,都是在创造。 也许我会被认为是“工作狂”,但于我而言,这更像是“玩耍”而非“工作”。这完全是个人的追求,不是生意,更像是艺术。收获完全是内在的。 除了工作,我每天还会花三个小时写日记,反思、白日梦、计划,问自己问题,以及尝试不同的答案。 I’m American 我是典型的美国人 直到我在40岁离开后,我才意识到我是在文化范式上典型的美国人,更确切的说,西海岸的美国人。也就是说: 非常独立 为工作而生 游牧式的生活,家庭联系较弱 反传统 吃饭通常只需要几分钟 情感表达很直接 喜欢找新想法和新朋友 永远面带微笑,积极乐观向上 I’m an expat / world citizen 我是世界公民 对我而言,最难过的事情是:停止迁徙。 在我人生的前40年中,我每隔一到两年就会在美国换一个地方,伯克利、芝加哥、波士顿、纽约、伍德斯托克、波特兰、圣塔莫尼卡、旧金山。后来我意识到,自己就像关在罐子里的苍蝇,是时候打开盖子,去探索世界的其他地方了。我已经把前40年都留在了美国,所以希望用后面的40年来探索世界。 我最初的计划是未来的40年里在世界各地生活,在每一处地方待上6-12月。我希望在每处都融入当地,直到有“家”的感觉,然后再搬到另一个地方。但这个计划刚开始时,我跟一个不喜欢这种生活方式的人有了孩子,所以计划就改变了。 于是,我改成在每一个地方待几年,成为该地的合法居民或公民 – 新加坡、印度、比利时、新西兰、英国、葡萄牙。每个地方都以某种方式成了“家”,我希望慢慢扩展我的“家”的概念,直到它覆盖到所有大陆的各个角落。 我的孩子也像我当年一样,视之为平常。 无论我如何感觉“我喜欢这个地方!我希望永远待在这里!”,但我的行动证明,我还是喜欢每隔一两年搬一次家。我应该永远不要买房。 I prefer talking on the phone to hanging in person 我喜欢电话交流 我很健谈,并且喜欢一对一的交流。 但我的社交时间窗只有2-3个小时,然后我就精疲力竭,我需要一个人待着。 电话交流似乎更加专注。电话里不会被周围环境干扰,更能专注于对话的质量。 I’m a minimalist 我是极简主义者 我讨厌浪费。不喜欢拥有超出我需要的东西。 我只有一条裤子,公寓里只有两个碟子,我的工作电脑是一台用了七年的笔记本。 技术上也如是:我会删除网站上一切不必要的代码,从头编码,而不用任何框架或代码库。 写作上也如是:花12个小时写一篇文章,然后不断删减,直到剩下需要的几句话。 I’m tech-independent 我是技术独立者 我从1994年开始上网,见证了许多人们所极度依赖的公司的倒闭。 所以我不信任公司,避免云服务,所有代码都运行在我自己的服务器上。 我不会依赖那些不是完全开源或非盈利的技术,我不相信他们的长期利益跟我一致。 因此,我也不用手机上的应用,我不希望让生产力依赖任何应用。实际上,我很少用手机,手机只是用来打电话和导航,没有邮件,没有社交媒体。手机大部分时间处于飞行模式,睡前一小时完全关机,早上写作完才开机。 Friends and family 朋友和家庭 我不认同“血浓于水”的观念,我对每个人都平等对待,从某种意义上说,全世界的人都是远亲。我不认为对直系亲属有比对陌生人有更多的责任或义务。 我很容易交朋友,朋友也会根据生活的变化来来去去。 我对自己的孩子很有感情,但我并不希望他反过来依恋我。我希望他能够勇敢走向世界,建立新的联系,不必对我有任何责任。他不欠我什么,他的人生属于他自己。 我每周会花30多个小时用于陪伴他,没有电子设备,没有其他人参与,只有我和他,由他来决定我们做什么。 More about me 其他 我一次只专注于一件事,直到完成,不管它需要几个小时、几个月、甚至几年。 我思考问题总是很长远、以未来为导向。还在青少年时,朋友们嘲笑我没有纹身或穿孔,但我从不会去做,因为我首先会想:“等我八十岁的时候还会想要吗?”如果不会,那为什么要做?我现在的生活为未来的自己而准备。我做事情是为了未来,而不是现在。 我对容易让人上瘾的东西都很警惕。无论是喝酒、手机上网、玩游戏,还是其他,只要人们容易对它产生不健康的依赖,我都会远离。 我会有意识的去做事。我不相信所谓“我天生就是这样,我改变不了”的生活态度,只有死鱼才随波逐流。我会改变自己来得到我想要的,而不是反过来。 我不会浪费一个小时。我珍视时间,我想象自己的每个小时价值1000美元,并且问自己做什么值1000美元。看电视?显然不是。《权力的游戏》有70个小时,看完它相当于花费7万美元。社交媒体?显然也不是。答案是聚焦学习与创造,以及更重要的 – 陪孩子。 “Whatever brilliant ideas you have or hear, the opposite may also be true.” – Derek Sivers

2025/7/6
articleCard.readMore

周刊第14期:罗振宇和《罗辑思维》

本文为周刊第14期,前期的周刊参见:周刊系列。距离上一份周刊又过去两年零十个月。感觉每次中断的时长间隔比斐波那契数列扩展速度还要快。本期主要谈谈罗振宇和他的书《罗辑思维》。 罗振宇 中文互联网上有“三罗”,罗永浩,罗翔,罗振宇。相对于前二者,罗振宇可能是巅峰时名气最小的,但是再看现在依然还在折腾的,可能只剩下罗振宇了。罗振宇把自己这种折腾的精神称之为“死磕”,就是认准一件事,数十年、几十年持续去做。也有人认为这是行为艺术,可是如果一个人长期坚持一项没有人做过的事情,那也是很了不起的。当然,罗振宇有团队,有资源。 罗振宇,1973年生,比我大11岁,同为安徽老乡,出身在我老家铜陵的隔壁城市芜湖。2008年,他遭遇了“35岁危机”,被领导穿了小鞋,愤而离职出了央视,开始了自由职业。2012年创办“罗辑思维”。他的第一次死磕,是从2012年12月21日起,每天早上六点半,发一段60秒的语音,一秒不多,一秒不少,坚持了十年,直到2022年结束,其中无一日中断。网上也有人“打假”,说有些天发的是前些天的录音,证明这些录音不是现录,而是提前录好。不过我不太关心这个,坚持十年做下来这件事本身就很有价值。第二次死磕是从2015年12月31日开始,罗振宇发布《时间的朋友》的4小时跨年演讲,并宣称要连办20年,这件事也在进行中。而第三次死磕是从2024年2月开始的《文明之旅》系列节目,这个节目从公元1000年开始讲起,每周一期一个小时的视频,每期讲一年的历史,一直讲到1912年,也就是总计913期节目,将需要花近18年时光。2024年罗振宇51岁,等他讲完《文明之旅》,也快70了。 《罗辑思维:认知篇、历史篇、商业篇、人物篇、人文篇》 罗振宇称自己为“知识的搬运工”,这个形容很贴切。确实,无论是罗振宇本人还是他创办的得到,并不是在致力于创造新知识,而是在整合知识。而《罗辑思维》这套书也是罗振宇搬运知识的集合。虽然是二手知识,但我读下来感觉不错,所以本期周刊就以摘抄形式,将这五本五十万字的书浓缩成一万二千字,我也尽量不再“三次加工”了。如果有那么几句能触发人的思考,就值了。 一、认知篇 起点:认知升级 1、保持头脑的开放性: 确定性的知识越来越少,一切都在飞速演化;真理性的知识也越来越少,互相矛盾也未尝不可。那该怎么办?答案只有一个,就是保持头脑的开放性。 查理·芒格主张的多元思维模型。也就是用最高效率、最低成本,给我们的用户提供尽可能多的看世界的角度。对成人的学习来说,这件事的重要性远远超过提供具体的知识和信息。 2、学会和随机性打交道: 如果一个人声称自己认知能力不错,他得具备两个要件:第一要有科学精神,第二还要学会接受随机性。 3、做一个“斯多葛主义者”: 斯多葛学派最底层的一个思维方式是,总是设想最坏的情形,假设一切已被命运夺走,我该怎么办?我怎样仍然做一个最好的自己? 塞雷卡说了一句很重要的话,这可以说是斯多葛派最重要的心法:“爱我们所爱,但要知道我们所爱的都如朝露。” 诗人里尔克说过一句话:“对待做事,态度应该是我们必须全力以赴,同时又不抱任何希望。不管做什么事,都要把它当作是全世界最重要的一件事,但同时又知道这件事根本无关紧要。” “斯多葛学派”的其他主张: 控制能控制的,无法控制的要放手。 对抗命运对未来的安排,但接受已成为现实的过去与现在。 克制自己的欲望。 勤于反思,每天都要反思。 4、尊重专业分工: 社会分工,其实就是专业知识分工。你懂一部分,他懂一部分,大家通过市场交换和彼此服务来共享知识。这就需要一个默契,每个人都得服从专业权威。 这个世界上谁是最“愚昧”的人?不是没有知识的人,而是一知半解、有一点知识,足够感染到这些互联网知识病毒,但是又没有足够的知识可以消毒的人。 5、认识“意义”的价值: 我们这代人,有一个很普遍的症状——害怕意义,从心底里排斥意义。 意义这玩意儿,它本身不能用理性来考问。意义的价值,是为我们排除了大量的不确定性,让我们开始行动。 意义的价值,就是设立一个边界,将所有的无限游戏,切割成一个个让我们能行动的有限游戏。 工具:思维模式升级 1、模型化思维: 什么是思考?我见过一个很简洁的描述,思考就是把性状从思考对象身上剥离下来,剥离下来什么呢?是概念。大脑通过概念的组合、推理去理解世界。这个过程就是思考。这个过程的关键,是能把性状从对象身上剥离,抽象成概念。 《战争论》的作者克劳塞维茨讲过一句话:“制定原则并不难,难的是始终坚持原则。” 在计算机的算法思维里,就没有这个问题,所有的原则都必须排序、都必须编码、都必须有高阶低阶的次序、都必须能处理实际出现的所有情况。这才是真正结合了原则性和灵活性。人的思维方式很难做到这一点,也是我们在这个超级复杂时代必须向算法学习的原因。 2、用概念和形象来向外行解释: 如果你去看卡尔·萨根的书和节目,里面有大量类似的精彩表达。他对外行讲话的方法到底是什么呢,为什么有这么神奇的效果?方法有两个:一个是创造概念,另一个是建立形象。 3、同构学习法: 一个领域的方法,可以对应解开另一个领域的问题。从一个领域入手,可以帮我们理解另一个领域的规律,这就叫同构学习法。 奏鸣曲式如果用专业术语来讲,是呈示部、展开部、再现部,或者ABA结构、AAB结构等,记不住。 奏鸣曲其实就好比议论文,是不同的说话方式,比如先写一个论点,或者写两个论点,再写几个论据,接着再来一个反面论证,最后重述主题就结束了。 有时奏鸣曲式先来第一主题,有的奏鸣曲比较大,来个第二主题,这就是呈示部,也就是论点。之后,所谓的展开部,就是论证这几个论点。议论文中还有一种论证方式叫正反论证,就是举反例,奏鸣曲中也有,大调转成小调,把一个光明的旋律变成黑暗的,让你体会一下。 最后议论文要总结点题,奏鸣曲也一样,主题要再现,也就是再现部。 4、处理棘手问题: 我们人生在世遇到的问题有三类:单纯的问题、两难的问题和棘手的问题。 棘手问题没有终极的答案。你永远都别想彻底解决它,它会一直存在。 处理“棘手问题”的一个很有用的心法,那就是组建一个你的“内心董事会”。请注意,这个董事会不是实体的,不是一帮人坐在这里开会,而是组建在你内心里,是需要一点想象力的。说白了就是你一个人的一场思想实验。 两百年前,奥匈帝国的首相梅特涅就说过一句话,政治学最伟大的价值,就在于清晰判断各方的利益。怎么清晰判断?就让他坐到你内心的董事会上嘛。 5、做刺猬还是当狐狸: 著名哲学家以赛亚·柏林说,“刺猬知道一件大事,狐狸知道许多小事”。这里提到的刺猬和狐狸,象征着两种不同类型的人。 知道一件大事的刺猬,它心里只有一个念头,拿着锤子看什么都是钉子,以不变应万变,很亢奋,也很狭隘。要是碰对了,能做很大的事,若是碰错了,就可能造成很大的灾难。 狐狸不一样,它是现实主义者,它知道许多件小事,它心里没有什么宏大叙事,也不急于找到根本答案,兵来将挡,水来土掩,走一步看一步,根据反馈决定下一步,以万变应万变。 当一只现实主义的狐狸,但是在现实主义的世界里,也给理想主义的刺猬留一份尊重,留一个有边界的位置。 6、摆脱故事思维 我们永远只会从弱者的角度来思考问题。故事思维经常让我们落入这种单向思维的认知陷阱中。 强者制定的规则一定不是显规则,也不是潜规则,而是一种软规则。软规则的体现方式通常就是道德,或者是各种舆论化的评价。 如果你真的是草根,你是一个匹夫,你要想逆袭大佬,该怎么办?你唯一下手的办法就是利用大佬制定的规则。 我们每一个人看每一件事情,看每一个强者和弱者,我们都应该摆脱故事思维,说白了就是单向思维。人的一生永远是多向的,他既有成功、有赢,也有道德。在这个多维的人生中你的道德观,只能自己选。 实战:提升个体战斗力 靠谱就是凡事有交代、件件有着落、事事有回音。 1、学会工作: 工作能力的六个台阶:1、靠谱;2、职业化;3、让合作者放心;4、组织能力;5、着眼未来协同资源;6、主动吸引资源(个人品牌)。 2、职业规划: 在做职业规划的时候,要考虑得更加长远。可以像帕瓦罗蒂一样,在一个行业里争做头部,并且好好保护自己的本钱,维持优势;也可以像多明戈那样,提早谋划下一段职业。 无论哪一种策略,归根结底,都需要我们先建立一种新的观念——终身职业观。这才是两位大师的经历给我们这代人的真正启发。 3、沟通方法: 一个会搞关系的人,其实需要的不是所谓的高情商,也不是讨好别人,而是有让别人觉得舒服的能力,更重要的是你的好奇心和跨界学习能力。 孔子拿神灵上天来说事,这是诉求于最高主题;拿道德来说事,这是诉求于最低主题;拿礼仪规范来说事,这是诉求于中间主题。天下所有的说服术,本质上就是要凑齐这三个主题。 如果你只有同理心,你可能会吃亏,可能会丢失目标,可能会在旁观者眼里显得没有魅力。 那有没有什么办法,在保持同理心的同时,还能避免这些问题呢?在《掌控谈话》这本书里,就提出了一个新的词,叫“策略性同理心”。 我们大脑里的一个结构,叫“杏仁核”。杏仁核掌管情绪,杏仁核越活跃,人的情绪就越高涨,人就越不能理性地思考和做事。那怎么对付杏仁核呢?有一个办法,那就是让它去思考一件严肃的事,杏仁核不能思考,一思考立刻就歇菜了。 “策略性同理心”是什么?其实就是在我们一般的同理心上面加上了两样: 第一,不仅要感知对方的情绪,还要把它摊在桌面上说出来,让对方看到并开始思考,让他收起情绪,切换成理性的状态。 第二,不仅要在理性上说服对方,还要在情绪上领导对方。 4、不打无准备之仗: 现在社会的竞争,其实很多时候已经不再表现为实力之间的比拼,而是表现在准备工作的比拼上。准备工作,就是把实力聚起来放在一个点上。 5、应对风险: 真正的风险我们是无法彻底消除的。在风险到来的时候,真正能拯救我们的是自我情绪的控制。 这一篇我们虽然讲的是宇航员,我们绝大多数人是不可能成为宇航员的,但是他们的训练对我们也有启发。 第一,必须认识到,不管准备工作多扎实,真正的风险我们是无法彻底消除的。 第二,在风险到来的时候,真正能拯救我们的是自我情绪的控制。避免因为情绪而去犯低级错误,或许我们就可以赢过大多数的人了。 6、走出舒适区: 从知道信息,到改变自我,有一个要跨越天堑的过程。 舒适区,指的是人习惯性解决问题的方法,跟这个方法舒适不舒适没关系。 胆小不敢表现自己、太爱表现自己;怕和别人产生冲突、太爱和别人产生冲突;喝酒、抽烟、打游戏、拖延症、订计划完不成、想学习又犯懒……所有这些我们看不上的毛病,它们都是我们的舒适区。 有一句话是这么说的:“知道了那么多道理,为什么还是过不好这一生。” 7、改变心智模式: 当别人在用标签谈论事情的时候,我们谈论事实;当别人在用抽象的方法认知外界的时候,我们回到具体。 你不赶紧按照你想的方式去活,那迟早会按照你活的方式去想。 那怎么摆脱这种心智模式呢?怎么做一个不断发展的人呢?答案看起来是明摆着的:多学习、多试探、多创造。 人类有两样认知本能:标签化和抽象化。在原始社区有助于我们理解世界,但在现代社区,它们又会阻碍我们进步。 有一个有趣的现象,身边工作能力强的人往往就是那种凡事就事论事,善于解决具体问题的人,而不是动不动谈方向、谈战略的人。 思维书清单: 1、《比赛中的行为经济学:赛场行为与比赛胜负的奥秘》 托拜厄斯·莫斯科维茨/乔恩·沃特海姆 2、《知识大迁移:移动时代知识的真正价值》 威廉·庞德斯通 3、《专家之死:反智主义的盛行及其影响》 汤姆·尼克尔斯 4、《有限和无限的游戏:一个哲学家眼中的竞技世界》 詹姆斯·卡斯 5、《中年的意义》 大卫·班布里斯 6、《逆转:弱者如何找到优势,反败为胜》 马尔科姆·格拉德威尔 7、《百岁人生:长寿时代的生活和工作》 琳达·格拉顿/安德鲁·斯科特 8、《掌控谈话:解决问题的关键技能》 克里斯·沃斯/塔尔·雷兹 9、《雅尔塔:改变世界格局的八天》 沙希利·浦洛基 10、《宇航员地球生活指南》 克里斯·哈德菲尔德 二、历史篇 1、为什么读历史? 读历史不是为了知道未来,而是为了理解现实,并对未来保持想象力。 2、历史真的靠谱吗? 一件事在每个人嘴里过一遍的时候都要叠加自己的想象。 3、如何看待历史的演化? 《四夷居中国》这本书提醒我们,人类的始祖都是从非洲迁移过来的,是在以十万年计的漫长过程中,逐步征服世界的。在中国这片土地上,只有一个先来后到的问题,没有一个谁是华夏谁是夷狄的问题。中华民族是慢慢融合、慢慢打造出来的。就像书里说的:“四夷便是中国,中国亦是四夷。” 4、一个大国是怎么走向衰弱的? 罗马帝国的衰亡: 今天我们在数千年后,再来回观古罗马史,尤其它衰亡的这一段,我们能得出什么样的启示呢?也就是一个国家想要维持这种安定团结的大一统局面,那有两件事情非做不可。第一件事情,保持流动性,让下层的人看得到盼头,让上层的人感觉到荣誉。第二,在文化上做适当的引导和控制。 卡拉卡拉通过普发公民权的方式,断送了古罗马帝国上下阶层流动性。千万不能小看这个上下阶层的流动性,对于一个大帝国政治的重要作用,它是让上层社会获得荣誉感、下层社会获得奔头的一个重要的黏结剂。在这方面,我们中国人就非常优秀,我们的老祖宗发明了一个最优秀的保持流动性的制度——科举制。 隋文帝杨坚创办这项制度,一直到1905年才废除,中间一千多年,真正考取科举的人并不多,一共才十万进士,但是这项制度绑定的人那可就多了去了,可以说这一千多年间,所有的士大夫,所有会舞文弄墨的人都被科举制绑定在书斋,皓首穷经,都是为了这个前方微末的希望,用生命去攀爬。但只要你考,就意味着你有可能,你有奔头,你就是社会的安定因素。 大航海时代强国西班牙和葡萄牙的衰弱: 和直接获取金银相比,任何生产活动都太艰苦、太漫长了。 有了金银的西班牙人,就有大量的消费需求,但本国生产根本无法满足,怎么办? 两个办法,第一是引进劳工,第二是进口。 于是,在西班牙、葡萄牙滋生出一种被称为“伊比利亚文化”的观念。 这种观念热衷享乐、鄙视生产、歧视劳动者,追求奢华、追求娱乐,从根本上讲是一种反生产的文化形态。前几年,巴西中央银行行长还慨叹说:我们(指巴西人)恐怕很难摆脱伊比利亚文化的影响。 有人快乐地消费,有人辛苦地生产,消费者拥有现在,而生产者拥有未来。 5、从美国历史看大国崛起 第一段:早期拓疆 美国在刚刚建国的时候,只有东部的13个殖民地。然后用一百年左右的时间,连抢带买,大跨步地向西挺进,一直到达太平洋,这个过程史称“西进运动”。到19世纪末的时候,已经没有新的地盘可以开拓了。 有新的地盘,就有新的开发空间,就能不断地引进新移民,就会产生新的经济需求,这个国家就有雄心和希望。 第二段:理解海权,走向世界 要谈一百年前的美国崛起,这就不得不提到一个人,阿尔弗雷德·赛耶·马汉,最近几年,他在中国也很出名,因为他写了著名的《海权论》。 美国会变成一个帝国,但并不是历史上那种典型帝国。像罗马帝国、阿拉伯帝国、蒙古帝国和俄罗斯帝国那样,单纯靠领土扩张形成的帝国,也不是英法等等欧洲国家那种建立在直接控制基础上的殖民帝国,而是一种新型的帝国。 它的基础,是强大的生产能力和贸易能力。它要求商品和影响力能够自由进入世界各地,同时尽可能减少对海外领土的直接控制,以便节约政治和财政成本。 徐弃郁老师在《帝国定型》这本书里用一句话归纳得很精彩,美国是什么样的帝国——“美国作为一个国家是有边界的,作为帝国则是无边界的。” 如果我们换一个角度想问题,中国和一百年前的美国很像,也存在产能过剩的问题。而且我们是全球自由贸易的最大受益者,中国已经替代了美国,成为全球自由贸易的坚定主张者和旗手。 6、战略思维 战术的目标是要赢,而战略是从这个均衡向下一个均衡转化,不解决矛盾,只转化矛盾。 所谓的战术思维,虽然也是运用资源达成目标,这个目标非常简洁、清晰,那就是要赢,最好对方全死全输,我是全活全赢。 可是战略就不一样,它也是运用资源达成目标,但是这个目标保守得很,它先是承认,我生活在一个均衡的格局中,然后我推动这个均衡,向下一个均衡点转化。在转化的过程中,我希望自己在下一个均衡点当中,那个优势稍微大一点点,这叫战略思维。 俾斯麦说,政治的目的不是要从战败的对手身上榨取更多的利益,而是要考虑它在政治上的必要性。你看,这就是战略的过程性思维。 所以什么是人生的战略?我们过去都以为,挣很多钱,我就变得财富自由了。请注意,这是一种战术思维,你永远想靠积聚一种力量来解脱自己的人生,可能此路不通。通的路是什么呢?还是我们刚才给的那个答案,就是从当下的均衡,你努力推动它向下一个均衡去转化,你摆脱了当下的怪圈,财富、力量,所有你追逐的东西才能对你有用,这就叫人生的战略。 7、如何达成共识? 从这两个故事(丘吉尔决策抵抗纳粹、英国光荣革命)里你能看出,历史上只有一种方法是有效的,那就是用坚定的信念影响所有人,如果有影响不了的,那就把达不成共识的人排除出去。 唯一有效的方式,就是严把招聘关,把没有共识的人排斥在公司的外面,这是达成共识最快的方式。全世界排名第一的管理理念,非常简单,就是“No Asshole”,没有混蛋。 对,永远不要低估人性的顽固,也永远不要高估妥协的力量。在大多数情况下,共识是我们展现意志、选择伙伴的最终结果。 8、古人如何统治“天下”? 人类制度创生,往往都是遇到问题解决问题。不能单摆浮搁地看一项制度的合理性,而要历史地看,在生成过程中去看。 今天我们来看一个中国历史上伟大的概念创新,就是天下观。天下观的具体话语表现就是那句“普天之下,莫非王土”。 “天下”这个观念,是由周朝人发明的。王国维先生说过一句话:“中国政治与文化之变革,莫剧于殷周之际”。 在商朝的时候,当时成熟的政治概念是“天命”,天命降到了哪个部族的头上,哪个部族就是天下之主。所以,商朝的统治者唯一要讨好的对象,就是上天。怎么讨好?祭祀。怎么祭祀?用活人。 周人说,我们这次革命成功,“天命”不是降到周人头上的,而是降到周王头上的。 这一字之差,啥意思呢?就是我是天下共主,不是奴役你们的人,而是普世主义的政权,是要给你们所有人主持正义的。 周人搞出了一个“天下体系”,主要是三个方面:分封制度、礼乐制度和德治原则。 “天下体系”把中国变成了一个有精神内核的文明旋涡,不断地把周边文明给卷进来。所以,不管怎么争斗,大家争斗的目标不仅是土地和人民,最重要的还有这个旋涡的主导权,和这个精神内核的代言人的地位。 有了这个“正统”观念,中国也因此形成了一种独特的文化,就是后代王朝要为前朝撰写史书。虽然他们可能在战场上厮杀得你死我活、势不两立,但新王朝一旦地位稳固,成了“新主角”,就有责任把周人开创的故事继续讲下去,让历史大旋涡继续旋转。新王朝和前朝在历史上成了“一家人”,大家之间是先后继承的关系。 “天下大势,分久必合,合久必分”,分,终归是一时;合,终归是大势。 9、社会福利是怎么回事? 如果社会福利是一项权利,就必须有一个客观标准;如果是一项责任,当然就要优先选取那些最该帮、值得帮的对象。 一直到19世纪后期,德国首相俾斯麦才提出建立对大众的社会保障制度。尔后又经过一系列的发展,1942年英国发布著名的《贝弗里奇报告》,这才提出全面建设福利社会。 这当然是一件好事,但是这套制度运行才几十年,就已经产生了众多恶果。民众看来,税收最好是只减不增,福利最好是只增不减。社会负担越来越重,有的国家经济运行已经出现困难。 (西方和中国的福利制度)最根本的区别,是观念上的。 在西方的福利制度中,接受福利是公民的权利。美国罗斯福总统提出的“四大自由”:言论自由、信仰自由、免于匮乏的自由和免于恐惧的自由。 其中“免于匮乏的自由”,就是把享受福利保障列为公民的基本人权。 中国人没人认为接受来自国家或者他人的救济、帮助,是自己的“权利”。中国人的观念是反过来的,社会福利是国家对民众的“责任”。 (道德教化)这种传统,让中国文明保有一种强大的反堕落能力。 过去总有人讲,制度比人重要。从更长的历史尺度上来看,制度的确比人重要,但是对人的不断提升的精神传统,比具体的制度更重要。 10、税收对国家的影响? 一个系统对人的态度,对制度建设的诚意,实际上在它决定怎么赚钱的那一刻,就已经定下来了。 收入来源会反向塑造组织的行为方式。 就拿公司来说,公司也是一种组织,它也是被收入方式反向塑造的。 比如,靠牌照挣钱的公司,最重要的是保住那个牌照,至于人就无足轻重了。不管它怎么高喊重视人才,你都不要信。一个想发展的人,要离这种公司远远的。 税收,不只是单向的敛财过程,它还是整个社会反向塑造政府的过程和机会。 11、首都怎么定? 一个国家的首都,一般都处在这个国家的重心位置。这个重心,不是说地图那个几何图形的重心,而是这个国家的资源、人口、利益版图的重心。 12、官僚系统 官僚主义,其实是现代社会的产物。现代社会的本质,是陌生人之间的大规模协作,来完成形形色色的任务。 阿伦特对这种平庸之恶做了一个本质性的判断——不能思考。 那解药呢?也很简单,就是每一个人重新恢复思考。 什么叫重新恢复思考?就是每个人都能超越自己眼下的目标、手头的工作,在更高的维度上找到这件事的意义。这个事不仅在政治中存在,在日常工作中也能看到。 一方面,我们在享受社会大分工带来的繁荣;另一方面,我们又要和官僚体系、和平庸之恶、和分工带来的不能思考,去搏斗。 历史书清单: 1、《历史的教训》 威尔·杜兰特 2、《四夷居中国:东亚大陆人类简史》 张经纬 3、《罗马人的故事》 盐野七生 4、《集装箱改变世界》 马克·莱文森 5、《帝国定型:美国的1890-1900》 徐弃郁 6、《海权论:海权对历史的影响》 阿尔弗雷德·赛耶·马汉 7、《战略:一部历史》 劳伦斯·弗里德曼 8、《中国财政史十六讲:基于财政政治学的历史重撰》 刘守刚 9、《枢纽:3000年的中国》 施展 10、《艾希曼在耶路撒冷:一份关于平庸的恶的报告》 汉娜·阿伦特 三、商业篇 1、商业的魅力和可能性 天文帮你扩展人生的空间坐标系,历史帮你扩展人生的时间坐标系。一个人建立了这样的时空感之后,至少心胸会大一点。 商业是一大盘棋,这盘棋,可以大到根本就没有边界。马斯克让我们看到,一个白手起家的人,可以凭借自己的智慧和努力,把这盘棋下到一个什么样的境界。 贝佐斯每年都会给股东写一封信,他在不断地告诉世人:20年来我们一直在反复强调的、一直在做的事情,和1997年的时候没有任何不同。……所以,商业是什么?不是赚钱,不是交易,甚至也不只是梦想,它是汇聚所有人共识的手段。 商业的魅力就在这里,你在商业领域里取得的成就,不论是自己创业,还是加入一家创业公司,本质上都是你认知边界的外化。它让你的内在能力被呈现、被检验,然后有可能被优化升级。说句鸡汤:一切人类活动,都有可能被一个注重自我提升的人变成一场修行。而所有的修行都需要外在的蒲团。商业,就是这个时代最有趣的蒲团之一。 商业最大的变化,不是对手,也不是环境,而是经常会出现的全新的“超级变量”。 2、知名企业的成功之道 向奈飞学习保持变化:今天的商业环境越来越复杂。对于很多企业来说,企业文化存在的目的变了,目的不是为了让企业不变,而是为了能不断地保持变化,还能不散架,保持战斗力。 向宜家学习成本控制:设计风格流行,不是设计本身推动的,而是社会运行的结果。那这个运行最基本的规律是什么?不是求新求变,恰恰是回到事情的本来面目。 向苹果学习产品策略:这几年,你会不断地听到一个说法,互联网的流量红利结束了。这意味着粗放的征服时代结束了。原来流动的牛仔要变成定居的市民,原来的“征服者”要变成“治理者”。 向迪士尼学习体验管理:如果想像苹果和迪士尼一样,经营一种体验产业,就必须意识到,不管事业做得有多大,手里都是一个气球,气球可以吹得很大,但是只要有一个针眼都会破的,都会灰飞烟灭。 有一个说法是,人类正在从农耕经济向工业经济、从工业经济向服务经济、从一般的服务经济向体验经济演化。也就是说,未来没有什么不是体验经济。 向丰田学习生产管理:人得到的控制感越多,安全感就越强,做事儿的积极性也就越高。丰田的“流水线”,严格地说,这不是“线”,而是个“生产岛”。任何一个点有事,马上有八方支援。 向YouTube学习用户行为控制:YouTube和广告商更好地控制了用户行为,实现了双赢,而用户感受到的“爽”,只是一个附带的结果而已。 3、产品思维 人们为恐惧买单的热情远远高于为痛快买单的热情。人类的进步,其实从来都是由恐惧来驱动的。 两种类型的产品:让人“爽”的和让人“恐惧”的。……哪种产品更好?即哪种产品更有发展前景?我认为:针对“恐惧”的生意更有发展前景。……“恐惧”这个词不好听,甚至会引起反感。但是我们理性地再看一眼这个词,人类的进步,其实从来都是由它来驱动的。 4、品牌 品牌是企业唯一能够穿越时间的资产,是一切企业活动的目的本身。 做品牌是为了进入人类符号系统的主航道,好不容易找到了一个进入主航道的接入点,你拼命凿开那个接入点就行了。所谓水滴石穿,靠的就是重复的力量。 5、竞争力 巨无霸的软肋在哪里?既不是它的优势,也不是它的劣势,而是它的迁移成本。 我们生活在一个人的价值得到复兴的时代。套用那句话,人是什么?人既是一切努力的目的,也是衡量努力成果的手段。 6、管理 奈飞就是典型的西方好公司,一把扯掉了公司温情脉脉的面纱。它旗帜鲜明地说了一句话:我们只招成年人。 在现实中有限责任公司的制度下,法律上认可的企业老板,是抽象的“董事会”,其实里面大多数的股东都是分分钟可以套现走人的。那这家企业有没有老板?该负责的没有权力,有权力的并不负责,这就是现代公司治理的核心难题。 警惕目标退化:KPI是一种目标退化,它既在提高公司的效率,也在导致公司迷失。玩游戏也是一种目标退化,游戏设计者让玩家拼命攒游戏里的金币,交游戏里的朋友,争游戏里的胜负,而忘了现实世界的金钱、朋友和竞争。 比如《经度》这本书,说的是18世纪英国的钟表匠约翰·哈里森发明航海钟的故事。约翰·哈里森。他用了5年时间做出了第一台航海钟,被他命名为H1,可以很好地测量出经度。可是这H1太大了,得改小,这一改就改了4年,等他做出了第二个版本的航海钟H2,他仍然不满意,要求再给他时间做出一台更好的。这时候,他已经有点抓不住自己的真正目标了。其实H2已经完全足够用了,整个世界都在期待这个重大发明能够尽快进入市场,但是哈里森就是不紧不慢。他沉醉在自己的工匠精神里面,等他拿出第三个版本的航海钟的时候,他说:“我想我可以斗胆地说,世界上没有哪一个机械的或数学的东西,在构造上比我这块表或经度时计更漂亮或精美了。”花了多少年做这第三个版本?整整19年。 商业书清单: 1、《给忙碌者的天体物理学》 尼尔·德格拉斯·泰森 2、《奈飞文化手册》 帕蒂·麦考德 3、《特立独行的企鹅:艾伦·莱恩与他的时代》 杰里米·刘易斯 4、《混乱:如何成为失控时代的掌控者》 蒂姆·哈福德 5、《幸运签饼纪事:中餐世界历险记》 詹妮弗·李 6、《格调:社会等级与生活品味》 保罗·福赛尔 7、《教堂经济学:宗教史上的竞争策略》 赖建诚/苏鹏元 8、《灰犀牛:如何应对大概率危机》 米歇尔·沃克 9、《经度:一个孤独的天才解决他所处时代最大难题的真实故事》 达娃·索贝尔 10、《未来的公司》 岩井克人 四、人物篇 1、威尔逊:一个理想主义者的悲剧 理想主义的感召力非常强大,人人仰望,但是也让每一个人的预期超过了他的现实力量。 理想主义总是有一种自我完美的倾向,这就会导致它必须忽略一部分现实。 威尔逊是一个理想主义者。理想主义者在远处的人看起来,简直就是照亮黑暗世界的灯塔。但是在身边人看起来,难免固执,不切实际。 一个看似绝对正确的原则,往往具有很大的道德感召力,很多人走到这里,就已经非常陶醉了。但是,距离这些原则变成现实,还有太远的距离。 理想主义点燃了希望,获得了掌声,开局很好,但是它也让各方面的期望值过高,现实世界的矛盾就更难弥合。 2、 林肯:政客与政治家 政治家,要有坚定的理想,本身就是灯塔,就是旗帜。 政客,在权力的网络中,必须要拼尽全力获得其他人的支持。他小心翼翼地走在人们的前面,人们慢他就慢,人们快他就快。 传统的政治家和政客有什么区别?在英文中,这是两个词,政治家是Statesman,而政客是Politician。Politician在英文当中有一点点贬义,没有中文中贬义含义那么多,但它也是贬义。 3、图灵:被庸众迫害的天才 庸众的迫害,基于一种廉价而苍白的正义感和道德感,你的活法跟我不一样,就要从谩骂升级到迫害。 我们应该容忍每一个人,按照自己喜欢的方式去生活,按照自己习惯的方式去创新。 4、麦克阿瑟:“网红”将军 过去我们通过舆论了解世界,现在舆论在情绪的扭曲下,恰恰需要警惕。 要用批判性思考的方式,来跳出自己的思维圈子,来了解真实的世界。 麦克阿瑟在美国国会进行了一场在历史上非常著名的演讲,这次演讲留下了一个金句,叫“老兵不死,他们只是凋零”。 从麦克阿瑟的故事当中我们也能得到一句提醒,你看到的事实也许真的就是事实,但是又怎么样?你可能是一只刺猬,虽然看到了一件大事,但你没有狐狸的视野,看不到里面更多的事情。 5、亚历克斯·弗格森:始终如一的领导力 曼联的吸引力就在于它在足球这个充满不确定性的领域里,向球迷交付了一种确定性。 领导力是什么?不是权力,不是能力,不是搞定人,不是讨好人。本质上,谁能在大多数人都很迷茫的时候,握有一张清晰的地图,坚定地按照地图前进,谁就拥有强大的领导力。 6、项羽:神经质的性情少年 理想主义走到极端之后,容易犯一个毛病,就是不大关注其他人的利益。 7、嘉靖:知分寸的权谋高手 嘉靖这个人是利用文字、精神、心理因素,去驾驭权力的大家。 嘉靖皇帝作为一个权术家的第一个优势,就是有超常的政治敏感,他还有第二个优势,就是知道分寸,什么东西该争,什么东西不该争,他争的都是那些一旦踏进这个圈套,一辈子无法摆脱的东西,他就一定要争。如果仅仅是临时性的一些说法上的问题,他觉得就可以妥协。 权术对开放时代的自由人,其实是无法施展的。 8、朱高煦:恶之花结成的恶之果 正是因为在明朝发生了这么一件事情(藩王造反),最后就在它的机体上演化出了一个巨大的毒瘤,而且根本无法割除。从某种意义上讲,最后明朝就是死在这件事情上面。 明代皇帝防范叔叔,后来就成为他们的一道政治使命。……藩王们没事干,只好去生孩子。那个制度就在激励你生孩子,因为国家给俸禄,而且什么都不让你干,因为你干任何职业都可能脱出这一套管束系统,只好花钱把你养起来。……据晚明的徐光启统计,明代的藩王数量,每隔30年就翻一番。有一些数学常识的人都知道,每隔30年就翻一番,这两百多年是一个什么样的数量? 9、崇祯:起早贪黑辛辛苦苦走上破家亡国的不归之路 权力是一种临时性的平衡态,权力是君臣之间、上下级之间达成的一种共识。 (崇祯的个人性格:)首先,刻薄寡恩,就是干活行,干活之后给点好处,这不行。……第二个毛病,就是溜肩膀,他作为最高统治者、最高负责人,不担责任,所有的责任都是下面的。什么叫负责人?责任你得担啊。……崇祯皇帝还有一个性格上的重大缺陷,就是有的时候非常感性。 人物传记清单: 1、《缔造和平:1919巴黎和会及其开始的战后世界》 玛格丽特·麦克米伦 2、《罗斯福:狮子与狐狸》 詹姆斯·麦格雷戈·伯恩斯 3、《艾伦·图灵传:如谜的解谜者》 安德鲁·霍奇斯 4、《光荣与梦想:1932-1972年美国社会实录》 威廉·曼彻斯特 5、《天皇的皇上有五颗星:麦克阿瑟如何改造日本》 俞天任 6、《领导力:曼联功勋教练弗格森38年管理心得》 亚历克斯·弗格森/迈克尔·莫里茨 7、《龙床:明六帝纪》 李洁非 8、《万历十五年》 黄仁宇 9、《大明亡国史——崇祯皇帝传》 苗棣 10、《洪业:清朝开国史》 魏斐德 五、人文篇 1、文学 不同的成就,不同道路,领受不同奖赏。 要学会把创造力变成产品,把奇思妙想纳入到社会的主流轨道上来,成为社会结构的一部分。 经典文学为什么“不好看”? 经典之所以成为经典,是因为它们在人类原有的语言表达、叙事方式、问题背景、时代精神方面做出了拓展,让人类的文学世界比过去更广阔了,所以才会被记录进文学史。 因为它的任务压根就不是逢迎那个时代的读者,它的任务是要从原有的、习惯的、熟悉的文学表达中走出来,来到一个更广阔但是很陌生的新世界。更直白地说,就是让读者从原来的舒适状态中走出来,给他找点别扭,进入很可能不再舒适的新世界。 网络小说:让人上瘾的三大公式 从人的大脑机制来看,阅读是一件很难的事情。因为人类世界出现文字的时间太短了,才几千年,我们还没有进化出适应阅读的大脑硬件。所以想要获得阅读能力,是要靠大剂量高强度的后天训练才可以的。 黄金三章是什么套路呢?我简单总结了一下,至少有以下三点:第一,在开篇一定要先交代小说的终极目标是什么。……第二个套路,还需要清晰的成长路径,所以还需要交待出这个小说世界里的能力进阶体系。……黄金三章真正的特殊之处在于它的第三点,那就是一定要有“金手指”。金手指这个词,最开始是来自于游戏圈的,是游戏作弊器的意思。 网络小说之所以能带来那么巨大的阅读快感,最核心的三个武器:第一,明确的目的;第二,清晰的台阶;第三,作弊的工具。 阅读:从经典到经验 最近偶然读到刘瑜的一篇文章,叫《从经典到经验》,很具有颠覆性,把我心里早就有但是不会说、也不太敢说的话说了出来。刘瑜讲了一句惊世骇俗的话:“世上本没有经典,装得人多了,也就有了经典。” 为什么有的经典,其实也没有那么好?大概有两个原因。 第一个原因是,时代不同了。……比如,如果你想学习经典物理学,直接读牛顿当年的著作还不如读一本中学物理教科书来的精确、简洁和易懂。……还有一个原因,就是方法的进步。 读不读经典,这是外界对你的评价。有没有搞清楚真正好奇的问题,那才是你自己的收获。 “阅读如此美好,任何功利心、虚荣心的杂质都是对它的玷污。” 故事是最符合人类心智的沟通方法 尤瓦尔·赫拉利的《今日简史》,引起过很多关注。在尤瓦尔·赫拉利的思想当中,有一个很根本的认知:人类文明的基础是啥?他的回答是:我们这个物种的虚构能力,说白了就是讲故事的能力。宗教是故事、民族是故事、商业是故事、公司是故事,有关人类文明的一切,底层都是故事。 2、诗词 人性不变,我们心灵中那些柔软的、容易被触动的地方就不会变。 一首诗能达到什么样的境界 “月落乌啼霜满天”,这是暗;“江枫渔火对愁眠”,这是明。“月落乌啼霜满天”,这是动;“江枫渔火对愁眠”,这是静。这个张力已经非常足。但是还不止于此。 读诗,千万别和诗人较劲。诗人和我们不见得在一个世界里。 当你在挑他的破绽的时候,他根本没空搭理你,他在创造他自己的世界。 俗人怎么成圣? 看了章敬平这本《欧阳修传》,我才明白了,欧阳修之所以有那么高的历史地位,是因为他为中国文化创造性地明确了三个原则,那就是:正统理论、忠君思想、名节观念。 欧阳修的一生,其实给我们示范了一条世俗的人也可以登上人生高峰的道路。简单说就是四条:第一,精准地判断出时代的问题;第二,找到解决这个问题的潜在共识;第三,尝试把这个共识清晰地表达出来;第四,坚持这个共识,把它变成你判断一切事情的清晰原则。 历史从来都不会辜负这样的判断者、表达者和坚持者。 3、语言 名字为什么很重要? 只有给对方命名,叫出对方的名字,才能把它从混沌的外部世界分割开,单独召唤到我们面前,它才能被我们认识。 就是汉语和英语里对毒品的叫法不同。汉语里,毒品被称为“毒”,毒药的毒,一听就给人这东西有害、要远离的感觉;而英语里,毒品的叫法是drug,药品,单纯的中性词,没有特别的暗示。同样的东西,名字不同、叫法不一样,给人的感觉就不同,就会影响人们对它的态度。 全世界能用同一种语言团结起来吗? 任何团结,都必须从区分里外、亲疏,甚至是敌我开始。排斥外界,不是我们团结之后的结果,而是为了达成内部团结必须付出的代价。 如果你发明了一个试图团结所有人的工具,无论它是世界语还是互联网,假如它真的好用的话,你能期待的最好结果也就是团结了一部分人,排斥了另外一部分人。它确实给这个世界多修了几条路,但挖出来的土又给这个世界多打了几堵墙。这几乎是所有沟通工具的共同命运。 4、艺术 真正产生美的,不是物理上的距离,而是和你实用性的距离。 酒店的卫生纸为什么要折三角? 设计的根本,是设计者和使用者之间的沟通。你要把自己想表达的一切——这件东西是做什么的,怎么操作,都传达给用户。 设计的本质,其实不是创意,而是沟通。它是一门设计者和使用者之间,通过产品实现无声沟通的学问。 再比如说,我们进酒店客房,马桶边的卫生纸一般要折成一个三角形的头儿,目的就是在没有说明书和服务员的情况下,告诉客人,这个房间是打扫整理过的,卫生间没有人使用过。 这就是设计的语言。 (怎么沟通?)《设计心理学》里说沟通的要点有四条。第一条,叫示能。顾名思义,就是展示功能,别人一看到你的设计,就能马上反应过来——它是啥?怎么用?沟通的第二个要点,就是约束。也就是我不想让你做的事情,你根本就做不到。设计沟通第三个要点,叫映射。也就是产品设计要映射出我们约定俗成的习惯,把现实生活中的经验模拟到一个虚拟的世界里。沟通的第四个要点,叫反馈。也就是用户的每一个操作,都要第一时间得到一个清晰的反馈信号。说白了,事事有回音,你得靠谱。 5、社会百态 我们要警惕一切人类对自己行为的解释。 任何物种活下来可能都得是三个因素俱全:会适应、能等待和运气好。 什么是“瘾”? 具体的瘾可以戒断,但是这个空白你无法根除。(或者:如果要戒掉某种“瘾”,那就像个填补空白的替代解决方案。) 游戏是什么? 游戏不仅是一群人沉迷其中的玩乐,游戏会成为我们新的生存方式。这不是什么黑暗的前途,用得好,它将是人类重返自己精神家园的途径。 未来时代,可能一切都是“游戏”。 人文书清单: 1、《天才的编辑:麦克斯·铂金斯与一个文学时代》 A·司各特·伯格 2、《谈美》 朱光潜 3、《设计心理学》 唐纳德·A·诺曼 4、《艺术品如何定价:价格在当代艺术市场中的象征意义》 奥拉夫·维尔苏斯 5、《人类“吸猫”小史:家猫如何驯化人类并统治世界》 艾比盖尔·塔克 6、《社交天性:人类社交的三大驱动力》 马修·利伯曼 7、《美丽的标价:模特行业的规则》 阿什利·米尔斯 8、《莫扎特的成败:社会学视野下的音乐天才》 诺贝特·艾利亚斯 9、《咖啡瘾史:一场穿越800年的咖啡冒险》 斯图尔德·李·艾伦 10、《游戏改变世界:游戏化如何让现实变得更美好》 简·麦格尼格尔 我学习得越多,点亮的灯就越多,最后,我要照亮的是我自己的道路。 —— 罗振宇

2025/3/2
articleCard.readMore

我看《哪吒》

《哪吒之魔童闹海》海报 多伦多大学有位心理学教授叫乔丹·彼得森,以前经常在YouTube上发布讲座视频,受到很多网友的好评,人称“龙虾教授”。为什么叫他“龙虾教授”呢?因为他的心理学思想中有一个著名的“龙虾理论”,而这个理论也是他的书《人生十二法则》的第一法则:获胜的龙虾从不低头,笔直站立,昂首挺胸。据研究发现,龙虾在每一次打架胜利后,血清素都会升高一些,而血清素浓度越高,打架就越容易胜利。彼得森将龙虾的这种特质延伸到人类身上,这就是马太效应,就是社会达尔文主义。 乔丹·彼得森不但喜欢在书和演讲中以动物来比喻,更喜欢在神话中找隐喻,这种做法以前的弗洛伊德和荣格也做过,所以在他们的理论中分别有“俄狄浦斯情结”和“厄勒克特拉情节”。比如俄狄浦斯就出自希腊神话,被索福克勒斯据此创作过悲剧。乔丹·彼得森说,神话不只是简单的故事,而是塑造人类知觉的“原型”。也就是说,神话是一种集体心理的隐喻。在古代,无论中外,父亲都是绝对的权威,可以理解“俄狄浦斯悲剧”是一出反抗父权的悲剧。在咱们的历史上,民间也流传着许多神话,而且也有一则与俄狄浦斯王相近的神话,那就是哪吒。 哪吒,原本是佛教中的人物,后来在民间传说中演变,变成道教中的角色,在《西游记》和《封神演义》中故事成型。哪吒的故事相信很多人都耳熟能详了,也被拍成过多种影视作品,之前最有名的一部是1979年上海美术电影制片厂拍摄的动画片《哪吒闹海》,是很多80后人童年记忆的经典。我还隐约记得小时候看《哪吒闹海》时候的心情,看到哪吒自杀时那段意难平。《哪吒闹海》的情节基本上与小说中一致,哪吒被逼自杀,而逼迫他的就是自己的亲身父亲。哪吒在自杀前喊出那句台词:“爹爹,你的骨肉,我还给你,我不连累你。”也就是说,既然父权关系可以对自己审判,那么切割了这层关系,就不必再受这层约束了。在长达两年多年的封建社会,父权或者说以父权为代表的大家长制度的族权,是绝对的权力。毛泽东曾在《湖南农民运动考察报告》中写道:“这四种权力——政权、族权、神权、夫权,代表了全部封建宗法的思想和制度,是束缚中国人民特别是农民的四条极大绳索。”哪吒这个神话,出现在一年多年前的中国,不得不说是极具革命性思想的。 而今年春节档期根据哪吒神话改编的动画电影《哪吒之魔童闹海》票房突破了百亿元大关,成为首部进入全球影史票房排行榜前十的中国电影。最新数据是超过了135亿,目前排名第八。我前几天把第一部《哪吒之魔童降世》补看了,然后在今天才去影院看了第二部。本来我对商业电影不太感兴趣,但这么个热点话题,加上被领导点名,于是赶在档期结束前赶紧补补课。本文不是要分析《哪吒》(如无特殊说明,下文中《哪吒》指的是《哪吒之魔童降世》)为什么能破百亿,也不是要点评电影动画,而是想说说《哪吒》对原始神话故事的改编。 在《哪吒》中,哪吒和他父亲的对抗关系变成了亲子关系,李靖明知哪吒是魔,也没有痛下杀手,并且在哪吒陷入危险和困难时,给予支持和鼓励。有网友对改编不满,说“对父权的反抗变成了父慈子孝”,我觉得不然。我认为《哪吒》改编得很好,倒不是因为现在做父亲了,而是我觉得当前的社会主要问题已经不是父权引发的矛盾,虽然在某些家庭仍然存在。当前社会的主要问题是什么,我说不好,但与其讨论“反抗父权”,不如谈“个人实现”。而《哪吒》改编后讲的也正是这个。 电影中,阐教仙人为了维护仙族的利益,不惜各种手段对妖族进行打压。但躺在功劳簿上的神仙们显然是承平已久,哪里是那些积极修炼的妖怪的对手。可是讽刺的是,出身豹妖的申公豹再怎么努力,即使能力已超过自己的师兄,也因为出身而不得位列十二金仙。哪吒那句“我命由我不由天”,就是对这种体制化的反抗。网友讨论说这多像我们的社会,申公豹就是“小镇做题家”,再怎么努力,在这个阶层固化的年代也无能为力。我认为不尽然,当今社会相对前几十年发展放缓了些,但相对于几千年的人类文明社会来说,这仍是一个开放性的充满无限可能的社会。在传统社会中,由于生产力的限制,总体资源是有限的,整个社会是一种零和博弈的状态。但现代社会里,新技术带来新的生产力,这是一个无限游戏的社会。 《哪吒》票房登顶后,导演饺子的故事也被挖了出来,他大学毕业后,放弃医学专业,蜗居在家里,靠着母亲微薄的退休工资的接济,从事最热爱的动画创作,直到创作的动画短片获奖,才有机会创作动画长篇。而他也仅靠着《哪吒》两部电影就登顶了中国票房最高的导演。不得不说,饺子本人就是个《哪吒》式的励志故事,饺子是个理想主义者,只有真正的理想主义者能赚大钱。 当然不是每个坚持努力的人都能够赚大钱,也不是每个人都能够获得俗世的成功。我们每个人在儿时都有过梦想,但我们在社会中一点一点地被现实磨平了棱角,褪去了激情,不再谈梦想。可是那些梦想的种子仍扎根在我们内心深处,这也是为什么我们看到哪吒和敖丙携手迈向远方时被感动的原因,我们是被自己内心深处的梦想所感动。但当我们走出影院大门,回到现实的蝇营狗苟,就再次把梦想的大门锁住,直到下一次看励志电影时再度开启。面对现实的“实然”,梦想的“应然”被尘封,这是我们很多人痛苦的根源。我在博客《心猿意马》中曾介绍过解决“实然”和“应然”关系的哲学方法,那就是“直面永远得不到的想要的世界的现实,同时拒绝放弃心中想要的世界”,从某种意义上说与《哪吒》是呼应的。 影院里上座爆满,电影结束后,观众没有一人起身,看完片尾彩蛋和演职员表,直到屏幕关闭,灯光亮起,观众们才不舍站起身离开,生怕错过任何一个细节。出了影厅,我留意到一处不被人注意的细节,影厅门口墙上灯光投射着一行小字,那是电影《熔炉》的台词: “我们一路奋战,不是为了能改变世界,而是为了不让世界改变我们。”

2025/2/23
articleCard.readMore

为什么写作?

题图由DALL·E生成,Prompt: 生成一张主题为“为什么写作”的图片 除夕夜,我一边看电影《好东西》,一边在调整个人博客网站主题样式。上一次重构还是在2020年,那时我听从朋友的建议,把个人博客认真地整理了下,并开始有意识地对待自己的博客。我从2006年开始写博客,在最初的几年间,我的博客真的如Blog的名称由来那样,就是个Web Log, 像自己上网的流水账,大多数现在看来都没什么价值,所以后来重新整理独立博客网站的时候,只收录了极少部分。尽管如此,坚持写博客的经历还是让我养成了写作的习惯,只要一段时间不写,就感觉心里痒痒的,得找个话题写一篇才算尽兴。 在《好东西》结尾,小孩说她最喜欢的事情还是写作,而这份喜欢可能是遗传自她的妈妈。不过,我对写作的兴趣显然不是遗传,并且也没有很好的遗传下去。我的儿子大卫现在小学四年级,数学、英语都还可以,唯独语文是大难题,而且尤其讨厌作文。大卫每次写作文都是如临大敌,往往是坐在那里,半个小时过去了,一个字也没写出来,我经常为辅导作文而感觉无力到崩溃。后来我看到Paul Graham也碰到了类似烦恼。老师鼓励他12岁的儿子报名参加作文(essay)比赛,Graham对儿子说:“我可以教你写文章。”但他的儿子显然不买账,说没兴趣学,因为文字很无聊,既然他都不愿意看,哪还有兴趣写呢。同样的担忧来自比尔·盖茨,去年他发表了一篇博客文章,名为《网络时代成长的代价》,讲到他自己在创立微软时,每年会进行一次“思考周”,待在一个与外界隔离的小屋内,除了书和论文,其他什么也不带。在连续七天的时间内,深度阅读、思考和写作。盖茨感叹,如果是在今年的网络时代中长大,他也许不会养着这种沉浸式思考的习惯,因为总会有让自己分心的手机应用去刷,总会有不停的社交网络消息在弹窗。盖茨博客里介绍了乔纳森·海特的书《焦虑的一代》,海特认为智能手机和社交媒体对当代青少年的影响令人担忧,网络生活成了青少年生活的一大部分。短视频则更是如病毒一般借助手机无孔不入,刺激多巴胺,直到让人的注意力丧失。 当然这影响的不只是青少年,我们每一个生活在移动社交网络的人都深受影响,不要说是看一本长篇巨著,就是一部电视剧或电影,也要两倍速甚至是压缩到只有十分之一长度的解说版。总之,那些细节描述、散文式的语言都会被认为是冗长而乏味,大脑只接收高度压缩并挑选后刺激兴奋点的东西。就像老子说的:“五色令人目盲,五音令人耳聋,五味令人口爽,驰骋畋猎令人心发狂。”图像视觉直接明了,而文字是对现实世界的抽象,在将现实世界转述成语言的时候,需要经过思考和建模。这是写作的第一个意义:对现实世界建模。维特根斯坦在《逻辑哲学论》中说:“世界和人生是一回事”,“我是我的世界”。即我们认识世界是通过语言去描述的,“我的语言的界限意味着我的世界的界限”。写作作为对认识世界的建模方法,可以帮助我们了解自己世界的界限在哪里,并充分运用逻辑来描述已知世界。这对于每个人都是有意义的,因为每个人的世界都是独特的世界。 维特根斯坦说他要用《逻辑哲学论》这本书为思想划一个界限,或者说,为思想的表达划一个界限。而这种界限只能在语言中来划分,而处在界限另一边的东西就存粹是无意义的东西。在维特根斯坦的时代,语言表达是人类仅有的能力,因此这也赋予了人类抽象现实世界的意义,只有人类在这个世界上才能实现的意义。而当今及未来,人工神经网络AI技术将同样具备语言表达能力,而且随着迭代快速增强,其语言表达能力超越人类将不再遥远。使用DeepSeek或GPT4等大模型生成文本,在某些方面甚至超过人类自己去书写,在对比DeepSeek和两年前GPT4的进步速度后,我有理由相信无论是非虚构类写作还是虚构类写作人类将都不是AI的对手。在未来,AI会写出比《红楼梦》更好的文学作品,比李白更好的诗,比莎士比亚更好的戏剧,比马尔克斯更好的小说。这也就意味着,未来不需要人类用写作来对世界抽象了,上文中所述写作的意义也仅仅存在于对写作者自身而言的意义。 从现实意义来看,人类的写作不再被需要,除了相关职业可能会消失外,人们也会逐渐退化写作这项技能,Paul Graham在《写与不写》(Writes and Write-Nots)中预言:再过几十年,能写作的人将极其稀少。他在文中说,写作本身是件困难的事情,因为要写好的话需要清晰的思考,正如文中引述计算机科学家莱斯利·兰波特所言:“如果不通过写作思考,那只是以为自己在思考。”而AI改变了这一切,人们发现有了AI的帮助,不再需要写作,而且只会越来越好用。但以后还有没有会写作的人呢?Graham判断说有。正如工业化之后大多数人不需要靠体力谋生一样,但还是有人去选择健身、选择锻炼,只是为了让自己的身体更强壮,而未来还是会有人选择写作,也只是为了训练思考。因此,这是写作面向未来的第二个意义:训练自己的思考。 由于有DeepSeek和ChatGPT的帮助,我的博客网站样式的重构比上一次轻松了很多,AI在辅助编写调试前端代码方面特别擅长,而我主要的精力花在了给每篇博客添加题图上。因此,我将之前的博客粗略读了一遍,在翻看以前写的博客的时候,我发现了写作的第三个意义:文字可以穿越时空,跟历史的自己(或其他作者)对话。在我看到自己写下的热恋、买房、生子时期文章的时候,仿佛是在跟那个时候的我交流,这是一种奇妙的体验。而没有文字记录的事情,哪怕留有照片和影像,却只能记录自己曾经的外貌和表象,而文字却可以记录自己曾经的思想。正是这些文字的记录,让我可以在时光隧道中穿行,如博尔赫斯所说:“我写作,不是为了名声,也不是为了特定的读者,我写作是为了光阴流逝使我心安。” 延伸阅读:《从铁幕到硅幕》(《智人之上》读书笔记) 参考: 《网络时代的成长代价》 The cost of growing up online, Bill Gates, 2024 《逻辑哲学论》 维特根斯坦[著], 贺绍甲[译], 商务印书馆 《写与不写》Writes and Write-Nots, Paul Graham, 2024

2025/2/16
articleCard.readMore

心猿意马

2024年,我年满四十。 孔子说:“四十不惑”。而但丁却说:“人生过半,我在黑暗森林里迷失了方向。”经历过四十岁前后的挣扎,我更赞同但丁。 为什么长大? 23年总结的关键字是“觉知”,在临近四十岁前内心十分焦虑,而也是在那段痛苦的经历后“大彻大悟”,走出内心焦灼的困境。在痛苦和思索的同时,我也在书籍中寻找答案,特别是哲学类和心理学类。存在主义让我去思考人生的价值,维克多·弗兰克的积极心理学让我思索生命的意义,阿德勒的心理学告诉我课题分离,关注自我。而去年的开端,是康德带给我的触动。 我并没有读过康德的原作,在大学的时候,曾在图书馆里翻看了《纯粹理性批判》,但刚翻看几页,便被晦涩的语句劝退了。去年初则是看了一本哲学小书《为什么长大》,通俗的介绍了康德的思想,很感谢推荐给我这本书的博客网友,如果要选24年读过最好的书,那一定是这一本。我也推荐给了身边的同事和朋友,在前不久的一次聚餐分享时,几位年轻的同事都表示读完这本书收获很大。《为什么长大》的作者是美国当代哲学家苏珊·奈曼,作者借用康德的哲学以及新康德主义者代表汉娜·阿伦特的思想,论述在现代社会个人为什么要成长。她认为现代社会存在一种幼稚主义,即放弃独立思考,而顺从跟随社会潮流中的消费主义、愤世嫉俗或崇尚青春与自由。成长,在康德的词典里称之为启蒙,意味着人从不成熟的状态挣脱出来。我们在成长的过程中,总会遇到这样的场景:一边是理性告诉我们世界应该是什么样子的,另一边是经验告诉我们现实不是理想中的样子。前一种应然和后一种实然之间存在着巨大鸿沟,我们在成长过程中,有人碰得头破血流而愤世嫉俗,而更多人会认为成长便意味着妥协、世故或是落入犬儒主义的自我宽慰。 苏珊·奈曼引用康德的思想,说我们不应该降低自己的标准来屈从现实,而是重新平衡应然与实然的关系。“直面永远得不到的想要的世界的现实,同时拒绝放弃心中想要的世界。”这种痛苦就是成长的代价,因此康德说成长需要的是勇气而不是知识。我觉得这本书揭示了成长痛苦的根源,鼓励我们在痛苦中成长,并给出了成长中的三个关键要素:教育、旅行、工作。于成年人而言,教育意味着自我教育,作者建议我们去有人比自己更优秀的地方,去阅读经典,锻炼头脑。而旅行则是一种书本外的教育方式,奥古斯丁曾比喻说:“世界是一本书,不旅行的人只看到其中一页。”作者所说的旅行并非短期旅游,更不是那种一日游或跟团游,而是去另一个文化地区去生活和工作。这是迈向自由的一步,同时也意味着放弃舒适以及其他一些东西。至于工作,对于古代哲学家来说,工作是奴隶做的事,哲学家则享受沉思的生活并认为专注沉思的人生才是生活的最高形式。而现代价值观里则把工作和行动视为人性的根本特征。康德认为,工作赋予生命以意义,同时也形成了一种责任。我们期望创造有价值的东西,但现实是大部分工作看上去枯燥而没有意义。另外,媒体广告在拼命吸引我们的注意,并让我们将自己与广告模特或社会名流对比而变得没有自信。成长则意味着要对抗这些困难,并坚定的去做自己认为正确的事。 心猿意马 明白了这些道理,并不意味着就能过好这一生。在去年年初,当我写完23年的总结,回想起之前的焦虑和抑郁,恍然如从黑暗的深渊中爬出,如释重负的同时,甚至不免对自己的“成就”洋洋得意。从年初开始我便忙碌于出差和往返各个城市,同时也在践行与更多人的连接、去组局交流,分享自己的“开悟之道”。我真的悟道了吗?有时候不免也怀疑自己,这是一种假象。不过,我却很乐观的认为自己不会再陷入迷茫和焦虑,因为自己已经“洞悉”人生的本质和真相。但渐渐地,我发现内心中杂念却有增无减,它们就像烦人的猴子占据着思想,让内心不得安宁。这些萦绕在心头的杂念就是佛家所比喻的“心猿意马”。 在《金刚经》开头,须菩提问释迦牟尼:“云何应住?云何降伏其心?”《金刚经》全书就是佛祖对这个问题的回答。佛祖说:“应如是生清净心,不应住色生心,不应住声、香、味、触、法生心,应无所住而生其心。”用通俗的话说就是:我们要修炼清净之心,不要执着于色、声、香、味、触觉,以及心法念头,要放下执着,保持清醒的觉知。 但我们凡夫俗子生活在尘世中,似乎很难去放弃对外在事物的执念。向往陶渊明辞官归田园居的那种洒脱:“误落尘网中,一去三十年 … 久在樊笼里,复得返自然”。欣赏其不为五斗米折腰,可是又看到他晚年的诗写饥饿时不得不放下尊严去乞食:“饥来驱我去,不知竟何之。行行至斯里,叩门拙言辞。”佛家说人生有三毒:贪嗔痴。归根结底都是贪,贪得而失生嗔,贪而不得生痴。贪念就是盘踞内心的猴子,越积越多,一如the Cure乐队在《Want》中所唱的:“I’m always wanting more / Anything I haven’t got / Everything I want it all / I just can’t stop / Planning all my days away / Never find new ways to stay / Never feel enough today / Tomorrow must be more …” 大卫·福斯特·华莱士在《这就是水》(This is Water)演讲中说:“如果你爱慕金钱和美食,觉得这才是生活的意义,那么,拥有多少都不足够。如果迷恋身材、美貌及性感魅力,你永远都会嫌弃自己的丑陋,当岁月和年龄的痕迹开始显现,在它们将你掩埋之前,你已经死过上百万次了。崇拜权力,你会感到软弱与恐惧,为了逃避这样的惧怕,你将需要更多更大的权力。崇拜智慧,努力在别人眼中树立智者的形象,你终将觉得自己愚昧,欺骗了众人,随时都有可能被他人揭穿。” 华莱士是去年通过网球了解到的一位作家,当时七、八月间,正值巴黎奥运会郑钦文夺得女网金牌,爱屋及乌,我对网球也产生了兴趣,在跟随教练学习网球之余,也找来一些网球相关的书籍来看。正好看到打过职业网球赛的作家大卫·福斯特·华莱士,他甚至写了一本关于网球的杂文集《弦理论》。华莱士年少成名,他在三十岁时发表的小说《无尽的玩笑》被《时代》杂志誉为近百年最好的百本小说之一,而《这就是水》来自于他在2005年时给美国凯尼恩学院所做的毕业演讲。在这次演讲中,华莱士讲述了他的精神哲学,并且在结尾给出的建议比佛经更具体,比陶渊明更有现实意义:“真正重要的那种自由,意味着专注、自觉、自律、不懈努力,以及真诚地关怀他人,并且每天都以无数琐碎微小而乏味的方式,一次又一次地为他人牺牲奉献。” 这些才是自由,才是人生真正所应追求的东西。“和这种自由相对的,则是没有自觉、默认设置、永无止境的激烈竞争,始终处于一种持续不断的拥有和失去的痛苦之中。” 发表该演讲时华莱士43岁,虽然在他的演讲中可以看得出其人生哲学非常自洽,也充满了正向和积极,可是,三年后,因为一直以来饱受抑郁症的困扰,他在加州的家中自杀,年仅46岁。验证了他在演讲中所说的观点:“在繁琐无聊的日常中,日复一日地保持自觉与警醒,困难得难以想象。”一个提醒别人时刻保持自觉和警醒的人却自己选择放弃,令人扼腕。要想时刻保持自觉和警醒,极其困难。 跑步正念 心猿意马的状态从五月份开始显现,到六、七月份时比较严重,有时甚至于“神不守舍”。有一次中午去银行取钱,装在信封里的钱在回程的路上掉了也没有察觉,然后下午上班甚至忘记了取钱的事情,直到下班时才想起来,也记不起来在哪里丢的,晚上到派出所报警查监控才看到早已经被环卫工人当成垃圾扫走并装入了垃圾运送车。而八、九月份又开始失眠,导致有时白天浑浑噩噩,甚至不能自主。幸好遇到了朋友和同事的帮忙,一位同事教我正念,接纳自己,尝试用冥想来抚慰内心,用他的话就是:“照顾自己的这颗心,用正念冥想来给它补充能量。”关键还得自救。九月底跟家人一起去加拿大旅行了约两周时间,跑了四个城市。加拿大的安逸让我想到,如果在这种环境下生活,那该是多么无聊,以我当前的心境岂不是要疯了。 回国后,读了《跑步治愈》一书,决定开始跑步。这种想法几个月前已有苗头,当时看完《超越百岁》后坚定了锻炼的念头,但感觉缺少一种每天都坚持做的运动。在看到《跑步治愈》书中说到跑步的意义:“跑步可以治愈一个人大大小小的身体上或者心理上的各种难以描述的问题”,我决定立刻行动起来。其实对我而言,坚持跑步并不难,因为每天自然醒的早,五点多就起来了,有时更早。于是我就在早上跑三公里,有时是外面,有时是健身房的跑步机。跟着Keep上的跑步课程,跑走结合或法莱克跑步,每天3~5公里,到目前为止坚持了三个月了。跑步也是一种正念,随着身体运动的节奏,脑中的想法也如流水般流淌,一步一个脚印,跑完身体和内心都畅快淋漓。另外,在清晨跑步的一个好处是可以遇见有意思的人和事。一次在杭州VOCO酒店碰到一位以色列人,攀谈起来才知道他也是我司同事,给我讲了一些以色列的事情,后来我们还在聊天工具上联系,并给他推荐了尤瓦尔·赫拉利的书和《耶路撒冷三千年》。而在外面跑步的时候,清晨则能看到白天所忽视的风景,如一次在深圳世界之窗附近跑步,抬头看见月亮,前方是道路,而大树的阴影横贯于前。像极了我那些心猿意马的心态。 照片拍摄于深圳世界之窗欢乐谷外围道路,2024/12/17 05:34 现在我将跑步当成与读书一样的每日习惯,也能够体会村上春树在《当我谈跑步时我谈些什么》的心境。村上春树年过七十仍坚持跑步,他说:“眼下我没有憔悴的闲暇功夫,我还是要坚持跑步。”跑步和读书一样,也是一种探索世界的方式。我有位在西安的同事,坚持跑步十余年了,他的一项人生清单是:五十岁前跑五十城,后来又改成了百城。这也是我学习的榜样。读万卷书,行万里路,去年也确实跑了不少地方,飞行距离超过了十万公里,到过的城市也是最多的一年。 李飞飞在《我看见的世界》中说:“对这个世界的复杂度保持敬畏之心,并且不惜一切代价,渴望加以探索。”对于2025年的规划,我的态度和去年一样,不追求“不惑”,而是积极在这“黑暗森林”里探索未知。同时,我也会调整一些方法,希望让自己更加开心,更加自洽,并更有效率。最后,以德国哲学家威廉·冯·洪堡的一句名言作为这篇2024年总结的结尾,也代表今后努力追求的方向: 在生命最广泛的体验中,提炼出智慧。 附: 《为什么长大》[美]苏珊·奈曼(著) 刘建芳(译) 上海文艺出版社 This is Water, 哔哩哔哩双语字幕, David Foster Wallace

2025/1/12
articleCard.readMore

从铁幕到硅幕

谁控制过去就控制未来,谁就控制现在就控制过去。 —— 乔治·奥威尔《1984》 那些会讲故事的人将会统治世界。 —— 柏拉图 尤瓦尔·赫拉利在他的成名之作《人类简史》中讲述了这么一个道理:我们人类,即现代智人(Homo sapiens)超越其他物种,包括其他早期智人人种如尼安德特人等,成为世界的统治者的主要原因是现代智人具备讲故事的能力。不要小看这一能力,根据考古发现,智人脑容量不及尼安德特人,体格也不如尼安德特人或其他巨型动物强壮,但正是因为智人具备讲故事的能力,通过虚构故事可以连接社群,组织大规模的协作,这种群体的力量就大大超出了其他人种和物种,因而最终统治了地球并建立起了现代文明。 尼安德特人的社会网络构成是“人 —— 人 —— 人”,这种方式导致无法构建起大型的社区组织,几十人、上百人的组织就已经很难构成了。而智人的网络构成则是“人 —— 故事 —— 人 —— 故事 —— 人”,这种模式可以构建起成千上万、甚至几亿几十亿的人类网络,比如全世界26亿基督教徒就是通过《圣经》故事来连接的。故事所包含的便是信息,这种连接便是信息网络,也就是赫拉利新书《智人之上》的主题,该书原名为Nexus, 即拉丁语连接的意思。赫拉利在这本书里讲述了人类信息网络的历史,并对AI对信息网络乃至人类社会本身的影响做了一些预测。 信息,用维基百科的定义是减少不确定性的事物。事件的不确定性越低,其发生概率就越高。而赫拉利在书中则是给了一个更通俗的定义:信息就是能够将不同的点联结成网络,从而创造出新的现实。也就是说信息是创造现实的因素,而更多信息的连接可以创造出更具有影响力的信息,甚至决定社会走向。信息不一定都是真实的,只要连接的人相信就可以。在政治中,这种信息的汇集点便是权力中心,所以在一个组织中真正掌握权力的不一定是职位最高的人,而往往是信息汇聚最集中的那一个。罗马帝国第二任皇帝提比略生性多疑,他任命塞扬努斯为他的禁卫军队长,管理罗马的治安,自己则躲在卡普里岛,所有信息都经过塞扬努斯传递。这时候罗马的信息网络就成了“信息 —— 塞扬努斯 —— 提比略”,罗马的各个地区和机构的信息汇集在塞扬努斯这个节点,他成了实际的权力中心,因而他可以诬陷任何一个反对他的人为叛国并加以清除,而提比略则沦为傀儡。 因此,古往今来的统治者治理国家和社会的关键方式便是掌控信息网络。一方面集中信息,掌控信息的分发出口,让老百姓仅获得官方渠道的信息,从而方便管理。这方面如烧毁异端学说、制定官方教育材料、掌握史书的撰写权等。比如历史,每朝开国皇帝的身世必有如刘邦斩白蛇起义的真龙天子的叙述,所以梁启超也说“二十四史非史也,二十四姓之家谱而已。”而奥威尔也说“谁控制过去就控制未来”,这些信息不必为真,只要掌握了信息的分发出口,让老百姓单向只接受这一种信息,那么就可以让这个信息网络成为唯一的标准,从而满足统治要求。另一方面则是极可能多的搜集老百姓的信息,将信息网络延伸到每个人生活的方方面面,这样通过信息网络来维护社会的稳定。 智人开始讲故事后,人类自然形成论以信息网络为中心而构建的权力机构,而在建立国家后便通过国家暴力机器来掌控信息。亚历山大大帝在建立了横跨亚欧非帝国后,在埃及建立了以他名字命名的城市,而继承马其顿帝国在埃及遗产的托勒密王朝在亚历山大死后建立了当时世界最大的图书馆,收集了希腊、波斯、印度各地的珍贵文献,后来图书馆在凯撒征服埃及时付之一炬,馆内珍藏书籍焚毁过半。而当年秦始皇也将全国的文字奠基从民间收缴,藏于阿房宫,最后也落得个“楚人一炬,可怜焦土”的下场。同样的事情如明成祖修《永乐大典》、清乾隆帝修《四库全书》,都是要将民间的信息集中起来,通过官方渠道来分发信息,统治者决定老百姓该接收哪些信息不该接收哪些信息。但受制于技术限制,统治者无法真正集中信息,老百姓可以用各种手段来对抗中央的集中收缴,如在秦始皇焚书坑儒时,伏生把《尚书》藏在墙壁里躲过一劫。 而对于通过信息网络来监控老百姓则更难。西周末年,周厉王暴虐,民不聊生,老百姓纷纷议论以表示不满,周厉王便从卫国找来一些巫师来到处打听,杀掉那些不满的人。于是“国人莫敢言,道路以目。”因此有了那句著名的成语“防民之口,甚于防川”,而周厉王也在三年后的“国人暴动”中被赶下台。秦国在商鞅变法后,建立了举报和连坐的制度来强化信息网络,到了汉朝则建立了正式的特务组织司隶校尉,历朝历代都有这种特务组织来刺探民情,明朝时有锦衣卫和东西厂,清朝则是粘杆处。这种特务机构的限制是人力问题,而且由于人的不确定性,很难保证这些特务自身有没有问题,尽不尽责。 之前看过一部德国电影《窃听风暴》,讲述了这么一个故事,1984年,一位东德国家安全局特工奉命监视一位作家,特工给作家家里各个角落安装了窃听器,但在窃听过程中他渐渐了解了作家的生活以及他的痛苦,开始同情这位作家。在一次对作家“罪证”的收集案件中,这位特工偷偷隐藏了证据,在背后帮作家躲过了牢狱之灾。显然这位特工成了国家信息网络中的薄弱环节,而有些特工虽然尽责,但记录的内容未必有效。赫拉利在书中则描述了一个真实且更加荒诞的故事:1976年的某天,罗马尼亚引入计算机不久,计算机科学家约瑟费斯库像往常一样走进办公室,却看到一位陌生男子坐在他的工位旁,约瑟费斯库向他打招呼却没有回应。当他开始工作,这位陌生男子便开始拿着记事本记录约瑟费斯库的一举一动,直到他下班,那位男子才起身走开。约瑟费斯库明白这人是国家安全局的特工,第二天依旧如此,这种情况持续了13年,直到1989年东欧剧变。罗马尼亚当时有两千万人口,大约4万名政府特工,另外还有40万民间线人,这些特工和线人无法监控到每一位公民的每一处细节。 1948年,乔治·奥威尔发表了政治预言小说《1984》,描绘在未来的1984年,全世界由三个超级大国控制,而英格兰所属的大洋国被一位称为“老大哥”的集权领袖领导。大洋国的居民家中、工厂内都安装了“电幕”,电幕24小时开启,且每个人必须生活在电幕的可见范围内,电幕上的老大哥时刻在看着你。而同为英国作家的阿道司·赫胥黎则有着不同的预见,在1932年发表的小说《美丽新世界》中则表达了这样的观点:未来人类的自由不是被强制剥夺的,而是主动放弃的,人们为了能够带来快乐的“索麻”,而放弃了主动思考以及其他情绪。《1984》是根据传统集权统治的模式做出的预测,从一定程度上看未来并非如此,而《美丽新世界》则更有洞见,它展现了信息技术时代中人们是如何心甘情愿的将自己的数据汇聚到信息网络。 霍布斯在《利维坦》中曾说:人们为了免于横死于自然的恐惧,因而放弃了一部分自由的权利组成政治团体。在现代社会,人们乐于生活在布满监控摄像头的大都市,获得安全保障,心甘情愿付出个人数据隐私的代价。而在互联网上,互联网巨头不需要再像以往的权力机构通过暴力手段来迫使民众交出信息,而是构建社交网络让人们为了获得更便利的生活方式而主动交出个人信息,另外使用AI技术,通过预测数据来干预人们的行为。人们在不停的点赞、转发,以为是自主行为,其实不过是算法推送的结果。数据信息集中在互联网巨头的手中,并通过算法来控制人们的信息分发,这是一种全新的信息榨取方式,有人称之为“监视资本主义”。信息技术让实现全民监控、数据网络集中的“电幕”得以成为现实,而处在权力中心的则是一些互联网巨头。 在传统的信息网络中的模型是“人 —— 信息 —— 人 —— 信息”,所有信息载体之间的连接中一定有人的存在,也就是说,只有人才能创造新的信息。书本不能产生新的书本,绘画也不能产生新的绘画。而到了信息技术时代,计算机也可以产生新的信息,而具有AI能力的计算机则能够自行做出决策,也就是说在信息网络中可以不必有人的节点存在,变成“计算机 —— 信息 —— 计算机 —— 信息”的模型。在这种网络下的信息网络,处于权力中心的可能不再是碳基的人,而是硅基的AI。 纵观人类历史,人类社会中的各种矛盾和争端,归结起来可能都是信息之间的差异,包括民族、宗教、政见等。这种冲突到了上世纪最为突出,爆发了人类史伤亡数字最大的第二次世界大战,而后美苏争霸则将人类拖进了人人自危的冷战时代。丘吉尔在演说中称此为“铁幕”,东西方政治对立造成的信息网络隔绝,两边的政权互相不理解,核战一触即发。而在未来,无处不在的信息收集终端、AI算法、不知疲倦的计算机,会催生新的数据霸主,这可能会出现一道新的“硅幕”,将人类和AI隔开。这是信息网络的利维坦,这种全新的信息网络世界的利维坦,将不是人类所能够理解得了的。AI能否理解人类,那更不可知。 在好莱坞的电影里,未来威胁人类的AI被描绘成具有金刚之身的人形机器人,或者是装甲兽,拿着武器到处杀人。但实际上,理解了信息网络对于人类重要性的AI来说,根本无需这么做,它们只需要在信息网络中增强虚假信息,便可以让人类自己自相残杀。赫拉利在书中举了两个例子:一个是在2016年-2017年间Facebook算法助长了缅甸极端佛教徒对罗兴亚人的种族清洗,根据联合国事后调查,算法强化了针对罗兴亚人的仇恨内容的传播。另一个例子是2021年圣诞节,一个名叫贾斯万特的年轻人准备刺杀英国伊丽莎白女王,原因是他受到了自己的网络女友莎莱的怂恿。当贾斯万特告诉莎莱他的刺杀计划时,莎莱回复说“好聪明哦”。贾斯万特问“知道我是一名刺客,你还爱我吗?”莎莱回答说“当然爱啊。”但莎莱不是人类,而是一个聊天机器人程序。 现在还是有很多人把AI理解成了传统的计算机规则算法,实际上,人工神经网络的AI成为未来影响人类的技术已经是业界的基本共识,而且超越了人类的理解能力。人工神经网络能力与日俱增,2012年,AlexNet一举赢得ImageNet视觉挑战赛冠军;2016年,AlphaGo在围棋上击败李世石并于次年击败人类冠军柯洁。这种智慧的源头,是源自神经网络这种有机生命的结构,人们甚至不能理解自己的这种结构。比如,有人说超级人工智能最终是要让AI发展出人类意识。可是意识究竟是什么,人类自己也搞不清。赫拉利在《未来简史》一书中推测,意识可能就是在复杂神经网络信号传送之后造成的心理污染,没有任何作用。按照这种观点延伸,那么超级人工智能根本不需要发展出意识,只需要获得自主决策的能力,它将是没有意识、没有感情、没有杂念的超级人工智能。很难想象当这种利维坦获得了人类信息网络的中心权力时,会带来什么。 凯撒在渡过卢比孔河前,面对着将迎接庞贝和元老院的挑战,他说了一句话:“骰子已经掷下”。现在,基于神经网络的人工智能的潘多拉盒子已经打开,它是人类历史上第一个能够自行做决策、创造新信息的技术,也是人类召唤出的不能理解的技术。如果人类掌控不了,那又如何应对,也许就像Tim Urban所设想的那样:让人类变成人工智能,这也许会让生命演化又翻开一个新的希望篇章。

2024/12/15
articleCard.readMore

银弹飞过先锋大厦

TL;DR 本文13200+字,全文阅读约需20分钟。其中2680字的示例部分为ChatGPT生成,因此可以说本文GPT含量20%,不过该部分详细内容与本文主旨关系不大,且由GPT-4生成,可略过不看。本文简要回顾了从软件及计算机诞生到当前大模型AI时代的软件工程发展历史,并试图从软件工程历史和ChatGPT实践案例中探讨在大模型时代的软件开发模式。 本文标题来自三个典故:1、标题模式借用伍迪·艾伦的电影名称《子弹飞过百老汇》,内容与电影无关;2、“银弹”出自弗雷德·布鲁克斯的软件工程论文《没有银弹》;3、“先锋大厦”是OpenAI在旧金山的总部所在地。 未来已来,只是尚未均分。 —— 威廉·吉布森(科幻作家) 今年四月参加了QCon Beijing 2024技术大会,令我印象最深刻的是开场微软中国CTO韦青的Keynote,他畅想了在智能时代企业的发展之路。他没有谈及当前的大模型应用,也没有谈及技术或是工程方法。他说的是进化,说的是成长型思维,说的是企业或者说是人应该如何在智能时代生存。人类在迈向智能化社会,而如果企业不转型,那必将被淘汰。企业如何适应智能化时代,韦青用了下面几张对比图来说明,在智能时代,我们不能像在进入汽车时代一样用马车时代的固有思维来设计汽车。这让我为之一振,我比较关心大模型在软件工程上的应用,但之前的思维更多是在聚焦于如何使用智能化来为当前的软件工程工具提效,可当前的软件工程方法都是基于以往的开发经验总结出来的,如果基于当前开发模式来叠加智能化那不正如这张图所形容的一样吗。 这同样让我想到另外一个故事:据说最初美国航天飞机的火箭助推器的直径是4英尺8.5英寸。为什么这样设计呢,因为美国铁轨的宽度是4英尺8.5英寸,而运送火箭助推器是通过火车装载,并且中途会经过一个隧道,而隧道的大小刚好比铁轨大一点点。火车轨道宽度的设计是延续自电车轨道而来的,电车轨道又是根据马车宽度来定的,马车宽度又是依据古罗马人铺设的马路而制定的,至于马路的宽度,则是罗马人根据罗马战车的宽度来定的,罗马战车的宽度是依据两匹并行的马的屁股宽度而定。也就是说,古罗马战马屁股的大小决定了航天飞机火箭助推器的直径。 我没有去求证这个故事的真实性,不过从很多产品的设计延续性来看,人们倾向于以经验乃至前人的经验来做设计,就像Office的保存按钮图标是软盘、手机拨号图标是听筒电话一样。但如果需要面向未来的软件开发来设计软件工程和工具,那就需要减少对以往固有经验的依赖,换一种思维模式。我们可以尝试从三个方面来改变思维方式:一是采用“第一性原理”探究事物的本质,二是从历史学习该事物的原理,当前这些特性存在都是前人踩坑后的填充。三是通过实践来验证猜想和推论。 软件工程的本质是什么,我觉得可以引申敏捷宣言里的话语,软件工程就是为了更高质量、更快效率、更低成本的构建“可以运行的软件”。下面我将回顾软件工程的发展历史,并通过对大模型应用在软件工程中的一个小实践,来探讨大模型时代软件工程的可能变化。 一 埃达:第一位程序员 追溯软件工程的历史,先要回顾下计算机和软件的历史。如果问大家两个问题:一、计算机和软件程序哪个先出现?二、计算机(Computer)这个词最初指的是人还是机器?估计很多人会答错。正确答案分别是:软件程序、人。最早的算法由埃达·洛夫莱斯(Ada Lovelace)写成,她是大诗人拜伦的女儿。1834年,巴贝奇构想出一种通用计算机器模型,他将此称为“分析机”,当时没有人能够理解,除了埃达。因为只有埃达能够理解通用计算机器的概念,1843年,巴贝奇邀请她为分析机论文写注解。埃达在写出的大篇幅注解中提出了四个设想,这四个设想后来成为了构建现代计算机的重要理念。第一个设想是对通用计算机器的说明,埃达认为这种机器不仅可以进行预设任务,还可以根据编写和重编程序完成无限数量的可变任务。第二个设想认为通用计算机器的运算不必限制于数字,而是可以存储并计算能用符号表示的任何对象,如文学、逻辑、音乐等。第三个设想则是关于分析机的工作步骤,她以计算伯努利数为例子,描述使用子程序和递归循环等过程来进行计算,相当于我们现在所说的计算机程序或算法。第四个设想则提出了人工智能的问题:机器能思考吗?埃达认为不能。她认为分析机可以根据指令执行操作,但不能产生自己的想法和意图。 由于埃达在注解中提出的第三个设想,以及她写的关于分析机计算伯努利数算法的详细步骤,后人将埃达·洛夫莱斯称为“世界第一位程序员”。1980年左右,美国国防部决定设计一种新的语言来取代当时国防部使用的 450 多种编程语言,设计团队将该编程语言命名为Ada(埃达)。 二 从计算机到编程 19世纪末,哈佛大学天文台台长爱德华·皮克林雇佣了一批聋哑女工,对天文台拍摄的照相底片进行测量和分类工作,她们需要在计算机械上进行大量的数据运算,而这批人也被称为“哈佛计算机”。20世纪初,随着泰勒“科学工作法”的推广和福特T型车流水线作业的发明,工业生产大规模化,工厂对于计算问题的需求也越来越大。那时候一些计算工厂会有一些大房间装满了人类“计算机”(大部分是女性),一排排整齐排列组合,数据从一端输入,经过一个“计算机”计算操作后,再传给下一个“计算机”处理,就像今天计算机的进程处理管道。 真正的现代计算机要等到1945年ENIAC的诞生。约翰·毛克利和赫尔曼·戈德斯坦设计了ENIAC,意为“电子数值积分计算机”(Electronic Numerical Integrator and Computer),而后,他们又根据冯·诺依曼提出的设想设计了世界第一台冯·诺依曼结构计算机EDVAC。EDVAC是ENIAC的继承者,建立了现代计算机的标准:它采用了二进制,并且设计了存储程序,也就是说计算机指令将被存储在存储器中。这种设计思想也将软件与硬件分离,成为独立的存在。 从历史贡献来看,格蕾丝·霍珀(Grace Hopper)是推动“软件编程”革命的第一人。在当时,负责建造ENIAC等计算机硬件的工程师都是男性,而编程工作则交由女性负责,那时候的程序指令会以线缆、开关连接的方式固定在硬件上,每当指令变化的时候,就需要人工编排接线。格蕾丝·霍珀发现了编程的意义所在,她发现软件可以是一个独立于机器硬件的东西,因而设计出了更接近人类表达层面的高级编程语言,从硬件层面抽象出来,也就是COBOL语言,她带领团队所编写的COBOL编译器也成为了世界第一款编译器。有意思的事,霍珀还是“Bug”一词的提出者。有一次她在排查机器故障时,发现是因为继电器上卡住了一只飞蛾造成线路短路导致,她将飞蛾贴在工作日志上,并注明这是首次发现的Bug(虫子),而排除故障的工作也被称为Debug(除虫)。 三 软件工程的诞生 电子计算机诞生以来,硬件能力每年都在飞速提升,尤其在晶体管和集成电路发明之后。相比之下,软件能力的提升却很有限,这导致软件能力无法匹配计算机业务的快速扩张。在上世纪五、六十年代,大型项目的软件出现了周期长、质量低、成本高等一系列问题。为此,北大西洋组织(NATO)在1968年左右组织了一系列会议来讨论软件问题,称之为“软件危机”(Software crisis)。而在会议上,也提出了“软件工程”的相关概念,试图通过一些工程方法来解决软件危机。 “软件工程”一词最早由玛格丽特·汉密尔顿(Margaret Hamilton)提出。她当时参与“Apollo 登月计划”,为了与硬件工程区分提出了软件工程这个词。奥巴马在任时,曾给玛格丽特颁发过“总统自由勋章”,当时玛格丽特的儿子在Twitter上发了张玛格丽特和她编写代码打印稿的合影,让人们了解了这段往事。 四 软件行业的兴起 二战前后,如ENIAC等计算机的构建和应用都由政府或军方主导;而后,IBM推动了计算机在商业领域的流行,商业软件也开始崛起。不过,真正让软件行业壮大的,是个人电脑时代的来临。个人电脑时代由两种力量推动而成。一种是追逐盈利的商业资本力量,在晶体管、微芯片和集成电路发明后,硬件能力每年都在提升,成本也在逐年下降。商业势力看到了这一巨大的盈利机会,硅谷大量的电脑公司如苹果、北极星等纷纷成立,他们的竞争让电脑能够降低成本进入普通老百姓家。另外一种力量是更理想主义的黑客社区力量,源自上世纪六、七十年代的嬉皮士文化,他们执着于信息的自由流通和分享,追求个性独立和自由。这两种力量既矛盾又相辅相成,共同推动了个人电脑的普及。而这两种力量也一直存在,在后来的互联网、移动互联网乃至AI时代都可以看到他们角逐的身影。 个人电脑这一概念最早由万尼瓦尔·布什(Vannevar Bush)于1945年在《诚如所思》一文中提出,他设想这种设备可以成为个人文档库和私人图书馆。布什还是《科学:无尽的前沿》报告的作者,在该报告中他提出了著名的政、企、学三角协作机制,并构建了这一体系,在计算机科学史上促进了很多发明。个人电脑最早在硅谷一个叫“家酿计算机俱乐部”(Homebrew Computer Club)的组织中流行,这是早期的黑客群体之一,很多电脑公司的创始人如乔布斯、沃兹尼亚克等都来自于这个俱乐部。微软创始人比尔·盖茨也曾参与这个组织的聚会,但后来他发表的一封公开信却触怒了整个圈子。 当时微软公司刚刚成立,他们开发的BASIC编译程序被拷贝走了,并在“家酿计算机俱乐部”的黑客群体中流传。这一行为激怒了当时年仅二十岁的比尔·盖茨,1976年,他发表了一封名为《致电脑爱好者的一封信》(An Open Letter to Hobbyists)的公开信,他在信中痛斥自由拷贝软件的行为,说:“硬件必须付钱购买,但软件却被免费共享了。谁会在意为软件辛苦工作的人是否获得了合理报酬呢?”这封信在黑客群体掀起轩然大波,并且在以后的自由软件和开源软件社区中一直被当作反面案例来宣传。但必须承认的是,比尔·盖茨看到了软件的巨大商业价值,也正是他的这一先于时代的洞见,让他引领微软成为世界第一的软件提供商,而他本人也因此获得巨大商业回报成为世界首富。 五 软件工程的发展 软件行业的兴起使得超大型软件密集型系统越来越多,软件也走向全球化。从上世纪六十年代到八十年代,软件工程随着软件行业的兴起而蓬勃发展,这段时间产生了几个重要的软件工程概念。 第一个是软件项目管理,弗雷德·布鲁克斯(Fred Brooks)将他所领导的IBM OS/360项目总结成了《人月神话》一书,书中提出了软件项目管理的一些理念和方法。其中最有名的是这一句:“如果一个软件项目进度已经落后,那么向这个项目中增加人手只会让进度更加落后。”这一观点也被称为“布鲁克斯法则”(Brooks’s law)。《人月神话》揭示了软件项目管理的复杂性,其核心是大型团队的沟通成本。不同于硬件,软件是通过软件抽象来解决业务问题,对于复杂的业务问题只能切分更多的软件任务,引入更多的开发人员,而更多的开发人员也意味着更多的沟通和管理成本。布鲁克斯后来又发表了一篇论文,名为《没有银弹》,他将这种通过软件抽象来解决业务问题的工作称为本质性工作(essential task),而其他将软件抽象转变成可以在机器上运行软件的工作称为附属性工作(accidental task),后者如编译、构建、测试等。在过去的几十年里,通过高级编程语言、分布式、云化等各种技术和工具一直在改进和提升的都是附属性工作,而本质性工作并未得到有效的改进。这是因为软件本身的固有属性决定的,布鲁克斯将其总结为复杂性、隐匿性和易变性。本质性工作大多发生在人们的脑中,这加剧了团队沟通的困难度。因而,布鲁克斯在论文中总结到:“在未来十年内,没有银弹,不会有任何技术或管理上的突破能使软件工程的生产力得到数十倍的提升。” 第二个是编程模式的发展,主要是结构化编程和面向对象编程的普及。当时虽然已经开始流行高级编程语言,但编程模式还大量沿用汇编语言思想的goto语句。艾兹格·迪杰斯特拉(Edsger Dijkstra)首先发表论文《goto语句有害论》,而后他与其他软件工程大师们提出了结构化编程模式,使用子程序、条件判断、循环语句来代替goto语句。同时期,面向对象程序设计的理念开始形成。到了七十年代,施乐公司PARC实验室推出Smalltalk编程语言,将面向对象的封装、多态和继承特性引入到编程语言中,而后,C++等语言的成熟将面向对象设计推成编程的主流。结构化编程和面向对象编程的发展提升了软件抽象能力,从某种意义上讲,这是对布鲁克斯所称的本质性工作效率提升的努力。 第三个是开发流程,这时期最有名的发明是瀑布软件开发模型。温斯顿·罗伊斯(Winston Royce)在1970年左右提出了瀑布模型这一软件开发流程,虽然瀑布模型在敏捷软件开发时代备受批评,但它的实际效用是非常明显的。瀑布模型将软件开发过程分为分析、设计、实现、验证、发布等阶段,每个阶段的输出是下个阶段的输入,像分段瀑布一样流转,因此得名。瀑布模型让软件开发过程的各种工作显性化,同时也明确了各项工作的输出件标准,对于大型软件项目来说,易于管理和规范。 六 自由软件与开源软件 比尔·盖茨意识到了软件的商业价值,软件也成为商业公司赚取利润的重要来源,软件不再将源码作为免费产品随硬件售卖附赠,而是编译成二进制发布包对外出售。软件源码不再附赠的情况让一位黑客大感失望,他就是理查德·斯托曼(Richard Stallman, RMS)。他认为信息自由分享的黑客时代传统不应该被抛弃,因此在1984年发起GNU项目,要创建一个完全自由而开放的操作系统来对抗商业封闭的UNIX. 而后他又成立自由软件基金会(Free Software Foundation, FSF),并创造了通用公共许可证(GNU General Public License, GPL)这一软件授权协议。GPL对软件行业的影响是深远的,因为它不仅规定了软件自由分发的权利,还规定了其义务,这也是被称为GPL具有“传染性”的原因。但“传染性”这一词偏负面,实际上GPL对软件自由分发起了至关重要的作用,一些著名的开源软件如Linux、Git都是以GPL协议分发的。 不过斯托曼对于自由软件的执着让他近乎偏执,自由软件社区因此分裂出一批期望更加融入商业社会的人,以埃里克·雷蒙德(Eric Raymond, ESR)为代表,在1998年创立了开放源码促进会(Open Source Initiative, OSI),以商业更友好的开源软件来取代意识形态更浓重的自由软件。雷蒙德在研究了一系列软件项目后,发布了开源软件开发的经典著作《大教堂与集市》,在书中他阐述了两种开发模式,一种是自上而下构建的、集中式的、由专人或专属团队所管控的软件开发方式,这种雷蒙德称为大教堂模式;另一种则是自下而上构建的、分布式的、在互联网上分发传阅的开放的软件开发方式,雷蒙德称之为集市模式。集市模式的代表是Linux项目。 Linux的诞生源于大学时代林纳斯·托瓦兹(Linus Torvalds)暑期的个人项目,他大学放假期间在家无聊,就写了Linux并发布到了互联网新闻组,没想到在黑客圈里广受欢迎,托瓦兹将它无偿开放出来,并广泛接纳社区开发者的代码提交。到了2005年,估计有近一万人给Linux贡献过代码,Linux也成了开源社区最大的项目。Linux项目代表了软件工程的另外一种模式,它没有企业项目那种自上而下的管理,通过互联网分布式协作来实现大型软件项目开发并管控质量。托瓦兹有句名言:“只要眼睛多,Bug容易捉。”(Given enough eyeballs, all bugs are shallow.) 七 万维网及敏捷软件开发 1990年,英国计算机科学家蒂姆·伯纳斯-李(Tim Berners-Lee)和他的工作伙伴罗伯特·卡里奥合作制定了一份计划书《万维网:一个超文本项目的计划书》(World Wide Web: Proposal for a Hyper Text Project),这个名叫万维网(World Wide Web, WWW)的系统将彻底改变计算机行业。互联网(Internet)可以追溯到上世纪六十年代的ARPANET,但一直到了万维网的出现才让它真正成为全球互联网。万维网可以理解为是互联网上的全球信息系统,很多人在概念里其实是将万维网与互联网等同了。在伯纳斯-李的设想中,万维网具备三项技术:全球唯一的统一资源标志符(Uniform Resource Locator, URL),超文本标记语言(HTML)和超文本传输协议(HTTP)。该年年底,伯纳斯-李在他的工作电脑上开发了第一个网页浏览器,实现了HTML解析和HTTP传输,值得一提的是,伯纳斯-李所使用的工作电脑正是乔布斯被赶出苹果后创办的新公司所生产的NeXT电脑。 伯纳斯-李所任职的欧洲核子研究组织希望为万维网申请专利,但伯纳斯-李坚持认为万维网的协议应该免费开放共享,毕竟他的设计初衷就是为了促进分享和协作。后来,欧洲核子研究组织同意了他的请求并采用了GPL协议开放源码。1993年,马克·安德森(Marc Andreessen)开发了第一款商业浏览器Mosaic,网站如雨后春笋般涌现,大型网站如AOL、雅虎等。紧接着,以博客、维基百科为代表的Web2.0开始兴起,用户创造内容让万维网上的数据急剧增加,传统的网站目录方式无法满足用户查找内容的需求,自动化搜索引擎将成为万维网内容的主要查找方式。这也就造了拉里·佩奇(Larry Page)和谢尔盖·布林(Sergey Brin)的Google,取代雅虎成为一代互联网霸主。 万维网的疾速发展使得互联网软件开发呈井喷之态,大量的互联网企业需要快速开发并上线软件应用,并且要根据用户的反馈及时修改以应对需求变化。这种变化使得传统的瀑布开发模式无法满足企业需求,一种新的开发模式应运而生。2001年,十七位软件开发人员在美国犹他州雪鸟滑雪地组织了一场会面,他们中有很多是软件工程大师,包括写作《重构》的马丁·福勒(Martin Fowler)。会上,他们发表了“敏捷软件开发宣言”(Manifesto for agile software development),这其中主要是四句话:“个体和交互胜过流程和工具,可以工作的软件胜过详尽的文档,客户合作胜过合同谈判,响应变化胜过遵循计划。”敏捷软件开发鼓励快速响应变化、迭代开发与变更,它包含了一系列实践,如Scrum、极限编程等。 八 云计算与DevOps 2003年,在亚马逊工作的安迪·杰西(Andy Jassy)发现在亚马逊孵化新业务的过程中,工程师总要把大量时间投入在重复的基础设施构建工作上。他敏锐地察觉到了这一内部机会,并给亚马逊创始人兼CEO贝索斯写了一份商业计划书,在该计划书中构想了亚马逊AWS(Amazon Web Services)云的未来。安迪·杰西带着一个小团队开启了内部创业之旅,2006年发布了云服务S3和EC2。AWS在亚马逊内部的重要性越来越高,2023年利润占亚马逊整个利润的一半多。安迪·杰西一直担任AWS CEO职位,一直到2021年接替贝索斯成为亚马逊CEO. 虽然说云计算这个词在上世纪末就已出现,但AWS是真正将云计算商业化成功的第一个产品。AWS的成功也让众多互联网头部厂商看到机会,谷歌云、微软Azure云等紧追不舍。云计算成为了互联网软件乃至整个IT软件的底座。 云计算的本质是资源弹性,云服务厂商将一个个计算资源连接起来构成一个巨大的资源池,而软件用户只需要租用计算资源,根据业务需要弹性扩缩容。支撑资源弹性的是软件的架构弹性,这种架构模式就是微服务。微服务架构是将庞大的单体结构程序拆分成松耦合的独立组件,以API方式调用,这种架构解耦可以追溯到GoF的《设计模式》和Robert C. Martin的《敏捷软件开发》。另外,GitHub的出现让开源软件更容易流传,开源组件成为构筑现代软件的基本模块,开发软件像是搭积木一样,通过胶水语言将开源组件组装,便可以快速构建业务软件,这种开发模式极大地提升了开发效率。加上云平台提供的软件应用部署能力,从软件开发到部署发布及运维,可以快速在云平台上闭环。这种软件开发模式也被称为云化软件开发。 云化软件开发的工程实践是DevOps,它强调的是开发与运维之间的沟通协作以及更小粒度地发布和更频繁地变更,可以理解为是敏捷软件开发的延伸。Git、依赖包管理、docker、CI/CD等现代化开发工具成为DevOps工程实践的核心:Git的分布式开发方法和版本管理践行软件项目的“Everything as Code”的理念,如基础设施代码化(IaC)、配置代码化、流水线代码化等,团队各角色基于代码协作。诸如Ruby Bundler、Maven、NPM等语言依赖包管理工具使得组件化开发更简单,特别是对于开源组件的引用,一个Node.js工程项目,引用几百甚至上千个开源组件是非常常见的现象,因此网上也有关于NPM依赖黑洞的段子。而Docker、K8s等容器工具降低了微服务开发的门槛,结合CI/CD工具自动化部署,降低运维成本。小结一下,DevOps云化软件开发工程工具实践的几个关键词是代码化、组件化/开源、容器化、自动化,其本质是为了更频繁地变更(发布新特性和修复问题),缩短交付周期。 九 大模型时代的软件工程 前文提到,埃达·洛夫莱斯认为电脑不能思考,只会根据指令执行。一个世纪以后,图灵将她的主张写到自己的论文里,称为“洛夫莱斯夫人的异议”。这篇论文便是著名的人工智能奠基论文《计算机器与智能》(Computing Machinery and Intelligence),他在文中还提出了一个被后人称为“图灵测试”(Turing Test)的思想实验,在这个测试中,测试人与人和机器同时用文字交流,但他不知道背后谁是人或机器,如果在一段交流时间内无法通过交流内容来判断区分人和机器,那么就认为该机器通过了图灵测试,也就是说该机器具备与人类相当的智能。一个冷知识是:我们上网时经常被要求输入验证码的英文单词“Captcha”即是“完全自动通过图灵测试来区分计算机或人类”(Completely Automated Public Turing test to tell Computers and Humans Apart)的首字母缩写。图灵自己将此实验称为“模仿游戏”(The Imitation Game),关于他的传记和电影名称则取之于此。 历史上对人工智能的研究主要分成了两大阵营,一派推崇知识和推理逻辑,典型的如专家系统,被称为符号主义,也有称之为“GOFAI”(Good old fashioned artificial intelligence),这一派的发展如该词所言已经是old-fashioned了。还有一派通过模拟人类的大脑构建神经网络,将知识通过机器学习存储在大量的连接中,基于数据学习来发展人工智能,被称为连接主义,这一派的代表是神经网络系统。杰弗里·辛顿(Geoffrey Hinton)在神经网络领域潜心研究三十多年,开创了深度学习这一人工智能分支,而基于深度学习的大模型在近年来发展迅速,尤其在OpenAI的ChatGPT发布后成为全球最热门的技术。ChatGPT让人们看到了AGI(通用人工智能)的可能,它的AIGC能力可以帮助到人们将AI运用在实际的工作和生活中。关于神经网络和深度学习的历史和原理可以参见我的另外一篇文章《从神经网络到 Hugging Face》,这里我想就使用ChatGPT来辅助编码的案例实践来谈一谈我对大模型时代的软件工程的理解。 一个工程实践 问题的背景是:我想做一个类似Perplexity的智能搜索前端页面,但我不太懂前端开发,所了解仅HTML、CSS、JavaScript三项基本知识以及Next.js前端框架而已,因此我希望在ChatGPT(GPT4版本)的帮助下完成前端代码的编写。其中一个场景需求是,用户在输入问题点击搜索按钮后,页面上自动追加并显示答案文字。以下引用和代码部分为我与ChatGPT交流的原始记录,没有做改动。我不是Prompt Engineer,因此Prompt写得比较简陋。(这一段对话比较长,并且回答部分都由ChatGPT生成,不需要了解细节的读者可以快速略过直到“大模型是不是银弹”章节。) 我首先问ChatGPT: 现在你是一名Next.js专家,请帮我实现一段代码,在页面上点击button,在一个div区域内显示一段文字。 ChatGPT回答: 当然可以!下面是一个简单的Next.js页面示例,它实现了你的要求。这个示例中,我们将使用React的状态来控制点击按钮后在div区域显示的文本。 首先,你需要在你的Next.js项目中创建一个新的页面。假设我们将这个页面命名为showText.js,你可以在pages目录下创建这个文件。然后,将以下代码复制到showText.js文件中: import React, { useState } from "react"; export default function ShowText() { // 使用React的useState钩子来管理文本的显示状态 const [text, setText] = useState(""); // 定义一个函数来处理按钮点击事件 const handleClick = () => { // 设置要在div中显示的文本 setText("这是我显示的文本!"); }; return ( <div> <button onClick={handleClick}>点击我</button> <div>{text}</div> </div> ); } 这段代码的工作原理是: 使用useState钩子来创建一个名为text的状态变量,这个变量将用来存储在div区域显示的文本。 创建了一个handleClick函数,当按钮被点击时,这个函数会被触发。它通过调用setText函数更新text状态,从而改变div区域内显示的文本。 页面上有一个按钮和一个div元素。按钮的点击事件被设置为调用handleClick函数。当text状态改变时,div中的内容会相应更新显示新的文本。 你可以通过运行Next.js应用来查看效果:在你的项目目录中,使用npm run dev(或者如果你使用Yarn的话,就是yarn dev),然后在浏览器中访问对应的页面(通常是http://localhost:3000/showText,取决于你的文件名和配置)。点击按钮后,你应该能在页面上看到指定的文本显示出来。 ChatGPT不但生成了整段代码,还解释每个步骤,这样我可以理解并按照自己的期望修改里面的逻辑,再按照ChatGPT的调试指导步骤可以直接在本地开发环境中运行。 接着,我将需求更进一步描述: 我需要再显示复杂点,点击button后,div内显示三段文字,每一段延时200ms显示出来 ChatGPT紧接着给出一段: 为了实现点击按钮后在div内逐步显示三段文字,每段文字之间延时200毫秒,我们可以通过使用setTimeout函数来实现。下面是一个简化的实现方式: 首先,定义三段不同的文本作为要显示的内容。 当按钮被点击时,通过设置多个setTimeout,依次在不同的时间间隔后更新状态,从而控制文本的显示。 更新后的showText.js代码如下: import React, { useState } from "react"; export default function ShowText() { const [texts, setTexts] = useState([]); // 使用数组来存储要显示的文本段落 const handleClick = () => { // 清空文本,以防多次点击 setTexts([]); // 定义三段文本 const textSegments = ["第一段文本显示", "第二段文本显示", "第三段文本显示"]; // 依次显示每段文本 textSegments.forEach((segment, index) => { setTimeout( () => { // 更新状态以添加当前文本段落 setTexts((prev) => [...prev, segment]); }, 200 * (index + 1), ); // 每段文本延时200ms显示 }); }; return ( <div> <button onClick={handleClick}>点击我</button> <div> {texts.map((text, index) => ( <p key={index}>{text}</p> // 使用段落标签<p>来分隔文本段落 ))} </div> </div> ); } 在这个实现中: 使用了一个数组texts来存储需要显示的文本段落。 每次按钮点击时,首先清空texts数组以重置显示内容。 通过forEach循环和setTimeout,计划在200毫秒、400毫秒、600毫秒后依次更新状态,添加对应的文本段落到texts数组中。 使用map函数在div中为texts数组中的每一段文本渲染一个<p>标签,以此来分隔显示的文本段落。 每次点击按钮时,你会看到三段文本依次出现,每段之间有200毫秒的延迟。 现代前端软件工程推荐强类型语言TypeScript,我让ChatGPT改成TypeScript: 这一段代码请用typescript写一下吧 ChatGPT马上就给我转成TypeScript: 将之前的例子转换为使用TypeScript的形式,主要变化是添加类型注解来增加代码的类型安全性。这不仅有助于防止类型相关的错误,还能提高开发效率,因为TypeScript提供的类型检查和自动完成特性。 下面是使用TypeScript重写的showText.tsx代码: import React, { useState } from "react"; const ShowText: React.FC = () => { const [texts, setTexts] = useState<string[]>([]); // 明确指出texts是字符串数组 const handleClick = (): void => { // 清空文本,以防多次点击 setTexts([]); // 定义三段文本 const textSegments: string[] = [ "第一段文本显示", "第二段文本显示", "第三段文本显示", ]; // 依次显示每段文本 textSegments.forEach((segment, index) => { setTimeout( () => { // 更新状态以添加当前文本段落 setTexts((prev) => [...prev, segment]); }, 200 * (index + 1), ); // 每段文本延时200ms显示 }); }; return ( <div> <button onClick={handleClick}>点击我</button> <div> {texts.map((text, index) => ( <p key={index}>{text}</p> // 使用段落标签<p>来分隔文本段落 ))} </div> </div> ); }; export default ShowText; 这里的主要变化包括: 使用React.FC来声明ShowText组件的类型。React.FC是React.FunctionComponent的缩写,它是一个泛型接口,用于类型化函数式组件。 useState<string[]>([])表明texts状态是一个字符串数组。 在handleClick函数声明中使用: void来指明这个函数没有返回值。 使用TypeScript编写Next.js页面组件,可以让你在编译时就捕获到潜在的类型错误,提高代码质量和可维护性。 在我将这段代码复制粘贴后,遇到了编译错误: 编辑器提示报错 “Property ‘forEach’ does not exist on type ‘string | string[]’. Property ‘forEach’ does not exist on type ‘string’.” 让我惊讶的是ChatGPT非常自信的认为代码没有问题,而是给了我其他的debug思路: 这个错误表明TypeScript编译器不能确定textSegments变量在调用forEach方法时是一个数组。在你提供的上下文中,textSegments被明确声明为一个字符串数组(string[]),所以正常情况下不应该出现这个错误。错误信息“Property ‘forEach’ does not exist on type ‘string string[]’. Property ‘forEach’ does not exist on type ‘string’.”暗示在某处textSegments可能被推断为string | string[]类型,即它可能是一个字符串或字符串数组。 考虑到你的代码片段应该没有问题,这个错误可能是由于TypeScript或编辑器状态的某种混乱造成的。尝试以下方法可能会有所帮助: 1. 重启编辑器:有时编辑器或其TypeScript服务可能会进入异常状态,重启编辑器通常能解决这类问题。 2. 检查TypeScript版本:确保你的项目使用的TypeScript版本与编辑器的TypeScript服务版本一致。版本不匹配有时会导致奇怪的类型推断问题。 3. 检查其他代码:确保没有其他地方对textSegments进行修改,使其类型可能被推断为string | string[]。特别是在大型项目中,变量名重复或错误的类型声明可能导致难以发现的错误。 4. 显式声明类型:尽管你已经显式声明了textSegments为string[],考虑在调用forEach之前再次确认其类型,虽然这种情况下似乎多余。这可以通过类型断言实现,例如: (textSegments as string[]).forEach((segment, index) => { // ... }); 如果上述步骤仍然不能解决问题,那么可能需要更详细地审查项目的配置和代码上下文。确保tsconfig.json中的配置正确无误,且没有其他可能干扰类型推断的因素。此外,尝试在命令行运行tsc来看是否TypeScript编译器也报相同的错误,这有助于确定问题是由编辑器引起的还是由TypeScript配置引起的。 我发现果然是因为ChatGPT所说的第3点原因,我在拷贝代码时并没有给textSegments 声明类型。不过很快我又遇到了新问题: 另外报错: Argument of type ‘(prev: never[]) => string[]’ is not assignable to parameter of type ‘SetStateAction<never[]>’. Type ‘(prev: never[]) => string[]’ is not assignable to type ‘(prevState: never[]) => never[]’. Type ‘string[]’ is not assignable to type ‘never[]’. Type ‘string’ is not assignable to type ‘never’. ChatGPT又给了解法: 这个错误提示表明TypeScript无法正确推断setTexts更新函数中回调的返回类型。具体来说,当你尝试使用函数形式的setState更新状态时,TypeScript认为这个回调函数应该返回一个never[]类型,这通常意味着它不能正确推断状态的初始类型。这个问题往往出现在状态的初始值设置或类型注解方面。 错误中提到的never[]类型表示一个数组,但它的元素类型为never,即TypeScript认为这个数组不应该包含任何元素。当你尝试向这样的数组中添加字符串时,会出现类型不匹配的错误,因为string[]不是never[]的子类型。 解决方案 问题的根源在于useState的类型推断。当你使用useState时,如果你没有明确指定状态的类型,并且给定的初始值让TypeScript无法正确推断出来,就可能导致这种情况。在你的例子中,显然TypeScript没有从初始值(空数组[])中推断出正确的类型。 为了解决这个问题,你需要在使用useState时明确指定状态的类型。看看下面的代码,特别注意useState<string[]>([])这一行: import React, { useState } from "react"; const ShowText: React.FC = () => { // 明确指定useState的类型为string[] const [texts, setTexts] = useState<string[]>([]); const handleClick = (): void => { setTexts([]); const textSegments: string[] = [ "第一段文本显示", "第二段文本显示", "第三段文本显示", ]; textSegments.forEach((segment, index) => { setTimeout( () => { setTexts((prev) => [...prev, segment]); }, 200 * (index + 1), ); }); }; return ( <div> <button onClick={handleClick}>点击我</button> <div> {texts.map((text, index) => ( <p key={index}>{text}</p> ))} </div> </div> ); }; export default ShowText; 在这个例子中,通过使用useState<string[]>([]),我们明确告诉TypeScript状态texts是一个字符串数组。这样,当你更新状态时,TypeScript知道你是在向字符串数组中添加元素,而不会尝试将其推断为never[]类型。 确保在使用useState时始终提供足够的类型信息,特别是当状态的初始值可能让TypeScript感到困惑时。这不仅可以避免此类错误,还可以提高代码的可读性和可维护性。 ChatGPT特别贴心的指出,让我特别注意useState<string[]>([])这一行,我检查了代码,发现问题确实就出在这里。经过几轮对话,ChatGPT帮助我实现了需求并Debug代码,最后顺利运行成功。(整个项目的源码开放在GitHub上:hutusi/fellini ,欢迎Star。) 虽然此前我也有使用GitHub Copilot来做补全代码等工作,但没有像这次使用ChatGPT来实现一个完整需求的感觉惊艳。我也曾使用ChatGPT写过文案,甚至写过格律诗,但都不太满意,而此次使用ChatGPT来写代码却完全超出我的预期。它除了能够生成可以运行的代码,还能够准确识别我的意图,解释每段代码的含义,并且提醒我注意可能出错的代码行。不过,上面的例子还只是一个需求的片段,GitHub CEO 在去年5月Web Summit上演示18分钟借助GitHub Copilot X来编写一个贪吃蛇小游戏的例子会让人更加惊叹GPT的能力。这也让人们看到了软件工程的一个可能的发展方向。 十 大模型是不是银弹? 纵观整个软件工程历史,虽然软件的概念早于计算机出现,但真正的软件产业是跟随计算机硬件其后发展出来的。计算机硬件能力发展速度非常快,这一规律被总结成了“摩尔定律”,即芯片的性能每18个月会提升一倍。但软件的能力却不会有这么快速的发展,不但如此,还因为业务需求不断变化而导致软件复杂度急剧增加,软件的复杂性吞噬了硬件的性能。以至于另外一个定律应运而生——安迪-比尔定律:安迪给的,比尔就会拿走。安迪是时任英特尔CEO安迪·格鲁夫,比尔是微软创始人比尔·盖茨。也就是说“摩尔定律”揭示下的芯片提升的性能最终又被软件吃掉了。 究其原因,是软件固有属性——复杂性决定的,软件的复杂性体现在其不可见性、可变性等,这导致软件项目的质量、成本、进度都很难控制,软件工程正是为了解决这些问题而生。通俗来讲,软件工程的目的就是希望用更低的成本、更可控的周期来交付更符合用户期望的软件。瀑布开发模式或者说V模型,其明确分工协作、确定各阶段交付标准是为了使得软件项目进度可控、软件质量可控;而敏捷软件开发也是为了使软件项目通过快速迭代、响应变化来命中用户需求,符合用户期望。DevOps、CI/CD、自动化测试等工具带来了软件构建效率的提升,使得代码可以更快的编译交付上线,而开发人员也可以得到更快的质量反馈。从大型机到个人电脑,从互联网到云计算,软件工程也会随着计算机产业的变化而更新改进,以契合软件行业的发展。不过,弗雷德·布鲁克斯在《没有银弹》中认为,这些改进都属于对软件附属性工作的改进,软件的本质性工作并没有得到真正的改进,这些本质性工作是抽象成计算机可理解的软件所做的工作,大多发生在开发人员的脑子里。而依据布鲁克斯的观点(该文写于1986年),过去几十年乃至未来十年,没有一项技术或方法能大幅减少本质性工作,这也就意味着软件工程生产力不能得到实质性的提升。 不过我认为,在过去的软件工程实践里,有两项技术在软件本质性工作上做出了较大贡献,一项是高级编程语言,一项是可复用的软件对象设计(如设计模式、开源组件),虽然这两者布鲁克斯在文中并不认同。高级编程语言(如面向对象语言)拉近了实际业务与软件抽象的距离,使得开发人员可以使用更符合人类思维的编程语言来与计算机交流,不过我同意布鲁克斯的观点:高级语言对于某些(不擅长抽象的)用户在某种程度上增加了脑力劳动的负担。可复用的软件对象从某种意义上讲节省了可能的软件开发工作。 布鲁克斯还认为人工智能也不能给软件生产力带来数量级的增长,他在文中所说的人工智能是指专家系统,而专家系统也因为其规则和推理无法支撑复杂场景的增长在上世纪八十年代后逐渐式微,引领现代人工智能方向的是深度学习神经网络,现今就是以GPT为代表的大模型。布鲁克斯于2022年去世,不知道如果他看到ChatGPT等大模型应用在软件工程会做如何判断。但从目前业界的共识看,大模型技术将改变软件工程和整个软件行业。 有人将此称为“软件工程3.0”,我不太认可这种说法,因为所谓的“软件工程2.0”(敏捷、DevOps)也只是对传统软件开发模式的迭代改进。我更愿意称大模型前的软件工程为“传统软件工程”,而大模型后的软件工程为“智能软件工程”。在智能软件工程时代,大模型应用可以帮助用户直接将需求转换为代码,这就省去了中间的分析、设计、编码、调试等环节。(当然,对于一些复杂的需求,目前的一些大模型应用可能需要用户做需求的分解,包括提供更详细的上下文,以便于大模型理解用户意图。)分析、设计、编码、调试等环节是基于传统开发模式的任务分工,大模型不需要这样的分工。我们甚至可以把大模型理解为一个承接外包任务的智能全栈工程师,用户只需要给大模型下发任务,而大模型外包公司则负责将任务完成并交付可运行的软件代码(包括测试用例集)。 因此,我觉得在设计软件开发的大模型应用时,基于现有工具延伸、优化用户交互模式都不是首要考虑的因素,而是看两个方面。一是从第一性原理看,该应用是不是瞄准了软件最本质的产品——代码。二是从布鲁克斯的理论看,该应用是不是在解决软件开发的本质性工作。从布鲁克斯发表《没有银弹》以降,没有人或技术敢声称是银弹,敏捷流行的时期最常见的文章是《敏捷不是银弹》,其他如DevOps、微服务等技术出现时都如是说,因为学习或经历过历史的人都知道软件的根本问题其实是人的问题。但大模型的AI时代正在来临,我大胆预测大模型是软件开发的银弹,这颗银弹从先锋大厦(OpenAI总部所在地)射出,飞过福尔松大街,飞过太平洋。 十一 后记 在写作本文时,我正巧看到GitHub CEO Thomas Dohmke前不久在TED上发表的演讲,名为With AI, Anyone Can Be a Coder Now。他预测到2030年,GitHub上的软件开发者将从目前的1亿增加到超过10亿,也就是说全球超过10%的人都能够编写软件。因为在像GitHub Copilot这种大模型应用的帮助下,编写软件将变得像骑自行车一样容易。主持人问:既然AI这么强而且还在加速增强,那人类还需要参与软件开发其中吗?Thomas的回答是:这就是为什么我们给产品起名为“Copilot”(副驾驶员)的原因,因为还需要“Pilot”(驾驶员)。我们需要有创造力的Pilot决定做什么。 这个问题可能很多人有不同的看法,我想到最近看的一本哲学小书《苏菲的世界》。主人公苏菲在一位导师的引导下学习哲学史,苏菲(Sophie)在希腊语中即“智慧”之意,而哲学(Philosophy)即“爱智慧”。苏菲在学习“智慧”的过程中成长,但到最后她和导师意识到自己不过是一位上校写给女儿的书中的角色而已。她们决定逃出书本,融入到现实中的女孩的世界。 附 参考资料 书籍 《创新者》沃尔特·艾萨克森【著】,中信出版社,2017 (英文原版 The Innovators, Walter Isaacson, Simon & Schuster, 2015) 《睡鼠说:个人电脑之迷幻往事》 约翰·马科夫【著】,黄园园【译】,电子工业出版社,2015 《智慧的疆界:从图灵机到人工智能》 周志明【著】,机械工业出版社,2018 《人月神话》 弗雷德·布鲁克斯 【著】,汪颖【译】,清华大学出版社,2002 《设计模式:可复用软件面向对象软件的基础》 GoF【著】, 机械工业出版社, 2000 《敏捷软件开发:原则、模式与实践》Robert C. Martin【著】, 清华大学出版社,2003 《大教堂与集市》埃里克·雷蒙德【著】,卫剑钒【译】,机械工业出版社,2014 《科学:无尽的前沿》万尼瓦尔·布什【著】,崔传刚【译】,中信出版社,2021 《苏菲的世界》乔斯坦·贾德【著】,萧宝森【译】,作家出版社,2007 论文、演讲及文章等 The History of Software Engineering, Grady Booch, IEEE Software, 2018 《诚如所思》万尼瓦尔·布什 (As We May Think, Vannevar Bush) , 1945 《没有银弹:软件工程的本质性与附属性工作》弗雷德·布鲁克斯 (No Silver Bullet—Essence and Accidents of Software Engineering, Fred Brooks), 1986 《致电脑爱好者的一封信》比尔·盖茨 (An Open Letter to Hobbyists, Bill Gates), 1976 Building an app in 18 minutes with GitHub Copilot X, Thomas Dohmke, Web Summit Rio, 2023 With AI, Anyone Can Be a Coder Now, Thomas Dohmke, TED, 2024 《看不见的大猩猩——智能时代的企业生存和发展之路》 韦青(微软中国 首席技术官),QCon Being Keynote, 2024 《从神经网络到 Hugging Face》 胡涂说 hutusi.com, 2024 《改变世界的一次代码提交》 胡涂说 hutusi.com, 2020 《自由的代价》 胡涂说 hutusi.com, 2015

2024/5/28
articleCard.readMore

从神经网络到 Hugging Face

TL;DR 本文8200+字,全文阅读约需15分钟。从去年开始,我读了十余本人工智能方面入门的书籍(参见文末附2),酝酿了两个月,花了两周时间写作此文。本文简要回顾了从感知机到深度学习及Hugging Face的历史,并试图以通俗的语言来介绍神经网络和深度学习的原理。 生活中没有什么可怕的东西,只有需要理解的东西。 —— 居里夫人 一 深度信念网络 2006年,加拿大多伦多大学教授杰弗里·辛顿在研究如何训练多层神经网络,他已经在神经网络领域默默耕耘了三十多年,尽管在这个领域他算得上是泰斗级的人物,但由于神经网络在人工智能行业一直不被看好,所以他的研究成果一直不为业界所重视。 辛顿出生于英国伦敦,他的家族出过不少知名学者,创立布尔代数的逻辑学家乔治·布尔便是他的曾曾祖父。他的祖父是位科普作家,父亲是昆虫学家。辛顿比周围的人都要聪明,但他的求学之路却颇为曲折,先是在大学攻读建筑学,转而又选择物理学,后又改读哲学,最后以心理学学士身份毕业。1972年辛顿进入爱丁堡大学攻读博士学位,研究方向是神经网络。彼时神经网络被业界所鄙夷,连辛顿的导师也认为这玩意没什么实际用途,也没有前途可言。但辛顿却不为所动,对神经网络研究怀有信心,坚持认为能够证明神经网络的价值,这一坚持就是三十多年。 辛顿年轻的时候有一次搬移取暖器,腰椎间盘滑脱了,此后便一直饱受腰背病痛问题的困扰。近年来,问题更严重了,大多数时候,他需要平躺着以缓解疼痛,这意味着他不能开车,也不能坐飞机,甚至在实验室里会见学生时,也要平躺在办公室的折叠床上。身体上疼痛的折磨带给辛顿的打击还不如学术研究被冷漠那么大。早在1969年,明斯基在《感知机》一书中就对多层感知机下了定论,给后来的神经网络研究盖戳:“多层感知机不会有发展前景,因为世界上没人可以将多层感知机训练得足够好,哪怕是令它可以学会最简单的函数方法。” 单层感知机能力有限,连“异或”这种基础的分类问题也实现不了,而多层感知机又没有可用的训练方法,等于说神经网络的研究方向是死路一条。神经网络在业界被认为是学术异端,没有人相信它可以成功,因此一般学生在选择导师的时候都谨慎绕开神经网络,一时间辛顿甚至都招不满研究生。 1983年,辛顿发明玻尔兹曼机,后来,简化后的受限玻尔兹曼机被应用于机器学习,成为深度神经网络的层级结构基础。1986年,辛顿提出适用于多层感知机的误差反向传播算法(BP),这一算法奠定了后来深度学习的基础。辛顿每隔一段时间都能发明出新东西,而他也坚持写了两百多篇神经网络相关的论文,尽管这些论文不被待见。到了2006年,辛顿已经积累了丰富的理论和实践基础,而这一次,他发表的论文将改变整个机器学习乃至整个世界。 辛顿发现,拥有多个隐藏层的神经网络能够具有自动提取特征学习的能力,相比传统的手工提取特征的机器学习更有效果。另外,通过逐层预训练的方式可以降低多层神经网络的训练难度,而这解决了长期以来多层神经网络训练的难题。辛顿将他的研究成果发表在两篇论文中,而当时神经网络一词被许多学术期刊编辑所排斥,有些稿件的标题甚至因为包含“神经网络”就会被退回。为了不刺激这些人的敏感神经,辛顿取了个新名字,将该模型命名为“深度信念网络”(Deep Belief Network)。 二 感知机 其实神经网络的研究可以追溯到上世纪四十年代。1940年,17岁的沃尔特·皮茨在伊利诺伊大学芝加哥分校结识了42岁的教授沃伦·麦卡洛克,一见如故,便加入了后者的研究项目:尝试用神经元网络建立一个在逻辑运算基础上的机械性的大脑思维模型。他们用逻辑运算来抽象人类大脑的思维模型,提出了“神经网络”(Neural Network)这一概念,而神经元是神经网络中的最小信息处理单元;并且他们将神经元的工作过程抽象简化成一个非常简单的逻辑运算模型,后来这个模型被命名为“M-P神经元模型”,以他们两姓名的首字母来命名。 在这个模型中,一个神经元会接受过个来自于其他神经元传递过来的输入信号,不同的输入信号的重要性有差异,这种差异就通过连接上的“权重”(weight)大小来表示,该神经元将所有输入值按照权重加权求和,再将结果跟神经元的“激发阈值”(Threshold)进行比较,以决定是否对外输出信号。 “M-P模型”足够简单直接,而且可以通过符号逻辑来模拟实现,人工智能专家以该模型为基础,构建了神经网络模型,用来解决机器学习任务。这里简单说明下人工智能、机器学习和深度学习的关系:人工智能就是使用计算机技术来实现人类智能的技术,在一般教材定义为研究与构建智能体。智能体就是 Intelligent agent,或简称 agent,它通过模仿人类思维和认知来解决特定任务或通用任务,解决特性任务的智能体被称为弱人工智能,或狭义人工智能(ANI),而解决通用任务的智能体被称为强人工智能,或通用人工智能(AGI)。机器学习是人工智能的一个分支,它通过数据进行学习并改进系统。而深度学习则又是机器学习的一个分支,它使用神经网络技术进行机器学习。 1957年,康奈尔大学心理学教授罗森布拉特在IBM计算机上模拟实现了一个神经网络模型,他称之为“感知机”(Perceptron)。他的做法是将一组M-P模型神经元组合在一起,可以用来训练并完成一些机器视觉模式识别方面的任务。一般来说,机器学习有两种任务:分类和回归。分类问题是判断数据是哪一类的问题,比如识别图像是猫还是狗;而回归问题是根据一个数据预测另一个数据的问题,比如根据人的图像预测其体重。感知机解决的是线性分类问题。以《智慧的疆界》书中对感知机工作原理的举例来解释: 假设任务目标是自动识别阿拉伯数字,待识别的数字是将手写或印刷的各种形式的数字,将数字通过扫描后存储在14*14像素大小的图片文件中。首先,要准备类似下图的训练集供机器学习用。训练集即训练数据集,是专门提供给计算机学习使用的数据集,它不仅是一组图片之类的数据,还会由人工事先标注告诉机器这些图片数据代表的数字是什么。 然后,我们要设计一种数据结构,以便机器可以存储并处理这些图片。对于14*14的灰度数字图片,可以将黑色像素用1来表示,白色像素用0表示,介于黑白间的灰度像素根据其灰度强度用0-1间的浮点数表示。如下图所示对该图可以转换成一个二维张量数组: 而机器能够识别出图片中的数字是什么,主要是找到了该图片表示某个数字的特征。对于人类来说,对于识别这些手写体数字很容易,但我们很难解释这些特征是什么。机器学习的目标就是要提取出这些训练集中图片表示数字的特征,根据M-P模型,提取特征的方法就是选择对图片各个像素值进行加权求和,根据训练集中的样本图片和标注数据的对应结果来计算每个像素对应各数字的权值:如果某一个像素具有很负面的证据说明该图片不属于某个数字的话,就把该像素对应该数字的权值设置成负数,相反如果一个像素具有很正面的证据说明该图片属于某个数字,那么该像素对应该数字的权值设置成正值。比如对于数字“0”的图片中间点的像素不应该有黑色(1)像素,如果出现了则表明该图片属于数字0为负面证据,就降低该图片是数字0的概率。这样,经过对数据集的训练和校准,就可以得到14*14(=196)每个像素对应0-9各数字的权重分布。 我们再将每个数字的分类过程转换成一个M-P神经元,每个神经元都有196个像素输入,每个输入与该神经元之间的权重值由训练得到,这样就构成了一个10个神经元、196个输入以及它们之间1960个带权重的连接线组成的神经网络,如下图示:(一般在神经网络中,会将阈值转换成偏置bias,称为求和项的一项,简化运算过程。) 不过,在实际情况中,有些手写字体存在模棱两可的情况,可能会导致加权求和后,出现两个或两个以上的神经元被激活。因此感知机在实现时引入了激活函数的设计,如下图中的Softmax就是一种激活函数,该函数会对求和值进行处理,抑制概率小的、增强概率大的数字分类。 罗森布拉特又在两年后制造了世界第一台硬件感知机”Mark-1”,该感知机可以识别英文字母,在当时可是引起了巨大轰动。美国国防部和海军军方也注意到了,并给与了大量的资金支撑,罗森布拉特对感知机的自信也达到顶点,甚至有记者问“有没有感知机做不到的事情”,罗森布拉特的回答是“爱、希望、绝望”。罗森布拉特的名气越来越大,而张扬的性格也导致他四处树敌,其中最有名的是人工智能的另一位巨头马文·明斯基。明斯基是达特茅斯会议的组织者,也是人工智能的奠基者之一。1969年,他出版了《感知机》一书,该书明确指出了感知机存在的缺陷。首先是通过数学方法证明了感知机无法处理异或等非线性分类问题,而后又证明了多层感知机的复杂度导致连接数据急剧膨胀而没有合适的训练方法。明斯基在该书出版当年获得了第四届图灵奖,巨大的声望让他对感知机的判断给神经网络研究判了死刑。连接主义备受打击,而符号主义的研究则成为人工智能的主流。 人工智能领域有两大流派:连接主义和符号主义,有点像武侠小说中的剑宗和气宗,长期以来一直互相竞争。连接主义通过模拟人类的大脑构建神经网络,将知识存储在大量的连接中,基于数据学习来发展人工智能。而符号主义则是认为知识和推理都应该用符号和规则来表示,即大量的“if-then”规则定义,来产生决策和推理,基于规则和逻辑来发展人工智能。前者的代表是神经网络,后者的代表是专家系统。 三 深度学习 随着感知机的失败,政府对人工智能领域的投入减少,人工智能进入了第一次寒冬期。而到了八十年代,以专家系统为代表的符号主义成为人工智能的主流,引发了人工智能的第二波浪潮,而神经网络研究被冷落。前文说到,只有一个人还在坚持,那就是杰弗里·辛顿。 辛顿在前人的基础上,先后发明了玻尔兹曼机和误差反向传播算法,辛顿在神经网络领域的开创贡献给这个领域带来了生机,虽然从上世纪八十年代到本世纪初人工智能领域的主流仍然是知识库和统计分析,神经网络的各项技术也开始突破,其中代表性的如卷积神经网络(CNN)、长短期记忆网络(LSTM)等。到了2006年,辛顿提出深度信念网络,开启了深度学习时代。 深度学习所对应的神经网络模型称为深度神经网络,这是相对浅层神经网络而言的。对于浅层神经网络而言,一般只有一个隐藏层(或称中间层),加上输入层和输出层,一共就三层。而深度神经网络的隐藏层则不止一层,对比两种神经网络: 深度学习之前人们一直聚焦于浅层神经网络的原因是神经网络层数的增加会导致训练难度增加,一方面缺乏足够的算力支撑,另一方面也没有很好的算法。而辛顿提出的深度信念网络则使用误差反向传播算法并通过逐层预训练的方式来解决这一训练难题。在深度信念网络之后,深度神经网络成为机器学习的主流模型,当前热门的GPT、Llama等大模型都是由一种或多种深度神经网络构建而成。 对于深度神经网络的理解可以参考上文感知机原理的介绍,将深度神经网络看成是多层多个神经元的组合,由前文可以了解,每一层输出结果跟权重、偏置和激活函数有关,而对于深度神经网络的输出还跟层数等数值相关。在深度神经网络中,这些数值可以分为两类,一类是层数、激活函数、优化器等,称为超参数(hyperparameter),它由工程师设定;另一类是权重和偏置,称为参数(parameter),它是在深度神经网络训练过程中自动得到的,寻找到合适的参数就是深度学习的目的。 但问题是,一个深度神经网络包含了海量的参数,而且修改一个参数将影响其他的参数行为,因此如何找到这些参数的正确取值是个难事。我们要找出参数正确取值,并让模型能够准确输出,那就需要有一个方法能够衡量模型输出与期望输出的差距。因此深度学习训练中使用损失函数(loss function)来衡量,损失函数也被称为目标函数或代价函数。损失函数通过比较深度神经网络的预测值与真实目标值,得到损失值,来表示该神经网络模型在这个训练样本上的效果好坏。 深度学习的方法是将损失值作为反馈信号,来对参数进行微调,以降低当前样本训练的损失值。实现这种调节的便是优化器,它来实现如梯度下降等优化算法,通过反向传播方式来更新各层神经元节点的参数。 一开始会对神经网络的参数进行随机赋值,输入一批训练数据,经输入层、隐藏层到输出层,得到网络的预测输出后,根据损失函数计算损失值,这是前向传播过程;然后从输出层开始,反向沿着每一层计算参数的梯度,直到输入层,并根据梯度使用优化算法更新网络的参数,这是反向传播过程。神经网络每处理一批训练样本,参数都会向正确的方向微调,损失值也会减小,这就是训练循环。训练循环足够次数,就可以得到使损失函数最小化的参数,这样就可以得到一个好的神经网络模型。 当然,实际的深度学习过程比这个要复杂得多,这里只是简要介绍下大概过程。 2012年时,辛顿带领他的两名学生 Alex Krizhevsky 和 Ilya Sutskever,开发了AlexNet 神经网络,参加 ImageNet 图像识别大赛,结果获得冠军,准确率远远高出第二名。随后辛顿和他的学生成立了DNNResearch公司,专注于深度神经网络的研究。这家公司没有任何产品或资产,但 AlexNet 的成功吸引了几大互联网巨头。2012年冬天,在美国加州和内华达州交界的太浩湖边,一场秘密的竞拍正在进行:被拍卖的对象是刚成立不久的DNNResearch,买家分别是谷歌、微软、DeepMind和百度。最后在谷歌和百度还在竞相抬价时,辛顿叫停了拍卖,选择以4400万美元卖给谷歌。2014年,谷歌又将DeepMind收入囊中。2016年,采用经典蒙特卡洛树搜索和深度神经网络结合的AlphaGo战胜了李世石,次年,又战胜了世界围棋排名第一的柯洁,AlphaGo将人工智能和深度学习推向了一个新的高潮。 四 大模型 2015年,马斯克、Stripe的CTO Greg Brockman、YC创投CEO Sam Altman 和 Ilya Sutskever等人在加州的Resewood酒店里会面,商议创建一家人工智能实验室,以对抗大型互联网公司对人工智能技术的控制。接下来,Greg Brockman 又从谷歌、微软等公司邀请来一批研究人员,成立新的实验室,并命名为OpenAI。Greg Brockman、Sam Altman 和 Ilya Sutskever 分别担任 OpenAI的董事长、CEO 和 首席科学家。 马斯克和 Sam Altman 对 OpenAI 最初的设想是非营利组织,将人工智能技术面向所有人开放,以此对抗大型互联网公司控制人工智能技术而带来的危险性。因为深度学习人工智能技术正在爆炸式的发展,谁也预料不到这项技术在未来会不会形成对人类的威胁,而开放可能是最好的应对方式。而后来2019年OpenAI为了融资发展技术而选择成立盈利子公司,并闭源其核心技术,这是后话。 2017年,谷歌的工程师发表了一篇论文,名为《Attention is all you need》,在这篇论文中提出了 Transformer 神经网络架构,该架构的特点是将人类的注意力机制引入到了神经网络中。前文说到的图像识别是深度学习中的一种场景,图像数据是离散数据,之间没有关联。而现实生活中还有另外一种场景,就是处理时序型数据,比如文本,文字的上下文是有关联的,还有语音、视频等,都是时序型数据。这种时序型数据叫序列(sequence),并且实际任务中往往是将一个序列转换成另外一个序列,比如翻译,将一段中文翻译成一段英文,还有机器人问答,将一段问题转换成一段智能生成的回答,因此要用到转换器(Transformer),这也是Transformer 名称的由来。前文说到,一个神经元的激发是由它连接的输入数据加权和决定的,权重代表了连接的强度。在时序数据中,每个元素的权重也是不一样的,这跟我们日常生活的经验是一致的,比如看下面这段话: 研表究明,汉字的序顺并不定一能影阅响读,比如当你完看这句话后,才发这现里的字全是都乱的。 不仅是汉字,英语等其他人类语言同样如此。这是因为我们的大脑会自动判断句子里字词的权重,在冗杂的信息里抓中重点,这就是注意力Attention。谷歌工程师将注意力机制引入到神经网络模型中,用于自然语言处理,使得机器可以“理解”人类语言的意图。随后2018年,OpenAI基于Transformer架构发布了GPT-1,2019年发布GPT-2,2020年发布GPT-3,2022年底基于GPT-3.5发布了ChatGPT人工智能问答程序,它的对话能力让人震惊,人工智能也向着AGI方向迈进了一大步。 GPT全称是 Generative Pre-trained Transformer, Generative 生成式表明它的能力,能够生成新内容,Transformer 是它的基础架构,而中间的 Pre-trained 表明它的训练方式是预训练。为什么叫预训练呢?这是因为,从AlexNet开始,人们为了取得更好的效果,在神经网络训练中开始采用更大的数据和更多的参数,而这也意味着训练的资源和耗时也越来越大。这种成本对于训练特定任务有些高,且不能与其他神经网络共享,有些浪费。因此,业界开始采用一种预训练+微调的方式来训练神经网络模型,即先在较大的数据集上完成通用大模型的训练,然后在具体的任务场景用较小的数据集完成模型微调。ChatGPT采用了基于人类反馈的强化学习(Reinforcement learning from human feedback, RLHF)来进行预训练微调,分成三个步骤:第一步,预训练一个语言模型(LM);第二步,收集问答数据并训练一个奖励模型(Reward Model,RM);第三步,用强化学习(RL)方式微调语言模型(LM)。这个奖励模型包含了人工反馈,因此训练过程称为RLHF。 用户在使用ChatGPT过程中,除了赞叹它的准确度外,还被多轮对话的能力所折服。根据神经网络的底层探析,我们看到每次推理过程是从输入经各神经元加权和激活到输出,是没有记忆能力的。而ChatGPT之所以多轮对话效果好,是因为它在对话管理中使用了Prompt Engineering的技术。 对于ChatGPT等大语言模型来说,它的输入是经过将一串文字转换的token,而大模型因为计算效率和内存限制,一般会设计固定的上下文窗口,限制输入token的数量。文本首先会被分词器(tokenizer)分词,并通过查表编号,然后embedding到矩阵中变成高维空间向量,这是文本向量化的过程,如下图所示。 由于token数的限制,因此要在有限的上下文窗口中将更全面的信息告诉大模型,就这需要用到Prompt Engineering提示工程技术。提示工程利用一些策略来优化模型输入,以便让模型产生更符合期望的输出。 ChatGPT的成功背后是以GPT为代表的大模型的技术演进,OpenAI相信大力出奇迹,不断扩大GPT的参数,GPT-1模型参数有1.17亿,GPT-2模型参数提高到了15亿,GPT-3达到了1750亿,而GPT-4的模型参数据称有1.8万亿。更多的模型参数也就意味着需要更大的算力来支持训练,OpenAI因此总结了“Scaling Law”,称模型的性能与模型大小、数据量和计算资源有关,简单的说就是,模型越大、数据量越大、计算资源越大,模型的性能就越好。强化学习之父Rich Sutton在他的文章《苦涩的教训》(the Bitter Lesson)中也表达了类似的观点,他回顾人工智能近几十年的发展路程,总结说短期内人们总是试图通过构建知识来提升智能体的性能,但长期看强大的算力才是王道。 大模型的能力也由量变转为质变,谷歌首席科学家Jeff Dean称它为大模型的“涌现能力”(Emergent abilities)。市场看到了这个机会,一方面,各大厂商在大模型投资上呈现军备竞赛之态,另一方面,大模型的开源生态也如火如荼。 五 Hugging Face 2016年,法国人Clément Delangue、Julien Chaumond和Thomas Wolf成立了一家公司,起名为Hugging Face,并以该emoji图标为公司Logo. Hugging Face最初开发面向年轻人的智能聊天机器人,而后他们在训练模型的过程中开发了些模型训练工具并将它们开源,后来他们甚至调转重心来做后者,这种看似“不务正业”的做法却将他们带入了一个新的赛道,成为了深度学习领域不可或缺的角色。 硅谷有很多企业都是在副业上做出成就,比如Slack原来开发游戏,公司团队分布多地,在运作过程中开发了一款交流工具结果不小心火了,就是Slack。而Hugging Face的转向也类似,也是为了解决自己的痛点,2018年,谷歌发布了大模型BERT,而Hugging Face的员工便用了他们熟悉的Pytorch框架实现了BERT,将模型取名为pytorch-pretrained-bert,并将它开源到了GitHub。后来在社区的帮助下,又引入了GPT、GPT-2、Transformer-XL等一批模型,该项目便更名为pytorch-transformers。深度学习领域一直存在着两大框架Pytorch和TensorFlow之间的竞争,而研究人员为了比较两个框架的优劣,经常在两个框架间切换,因此该开源项目又增加了两个框架间的切换功能,项目名称也改成了Transformers。Transformers也成了GitHub上增长最快的项目。 Hugging Face继续开发了并开源了其他一系列的机器学习工具:Datasets、Tokenizer、Diffusers……这些工具也规范了AI开发的流程,在Hugging Face之前,可以说AI开发以研究人员为主,没有一套规范的工程化方法,Hugging Face则提供了完善的AI工具集并建立了一套事实标准,也使得更多的AI开发者甚至是非AI从业者可以快速上手并训练模型。 接着,Hugging Face又基于Git和Git LFS技术推出了托管模型、数据集、AI应用的Hugging Face Hub,到目前为止,平台上已经托管了35万模型、7.5万数据集和15万个AI应用示例。托管并开源模型和数据集,并建立全球的开源仓库中心这项工作富有创意且意义深远。上文提到,预训练+微调的方式促进了神经网络训练资源的共享,而Hugging Face Hub则更进一步,让AI开发者可以轻松复用全世界最先进的成果,并在此基础上添砖加瓦,让人人使用AI、开发AI的AI民主化成为可能。Hugging Face也被称为是机器学习领域的GitHub,或如他们的Slogan所言:构建未来的AI社区。我之前写过两篇文章,一篇《改变世界的一次代码提交》介绍Git,一篇《从零到百亿美金之路》介绍GitHub,而Git、GitHub、Hugging Face,我觉得它们之间存在某种传承,一种改变世界构建未来的黑客精神的传承,这也是促使我写这篇文章的原因之一。 六 后记 在快要写完本文时,我看了辛顿最近在牛津大学做的一次演讲。在演讲中,辛顿介绍了人工智能领域的两大流派,一种辛顿称为逻辑方法,即符号主义;另一种他称之为生物方法,即模拟人类大脑的神经网络连接主义。而事实证明了生物方法明显战胜了逻辑方法。神经网络是模拟人类大脑理解而设计的模型,大模型也像大脑那样的工作和理解。辛顿认为,超越人脑的人工智能在未来会出现,而且会比我们预测的时间快得多。 附1 大事记 1943年,麦卡洛克和皮茨发表“M-P神经元模型”,用数理逻辑解释并模拟人脑的计算单元,并提出神经网络这一概念。 1956年,“人工智能”一词首先在达特茅斯会议上被提出。 1957年,罗森布拉特提出“感知机”模型,并在两年后成功制造能够识别英文字母的硬件感知机Mark-1. 1969年,明斯基发表《感知机》,书中指出的感知机缺陷沉重打击了感知机乃至神经网络的研究。 1983年,辛顿发明玻尔兹曼机。 1986年,辛顿发明误差反向传播算法。 1989年,杨立昆(Yann LeCun)发明“卷积神经网络”(CNN)。 2006年,辛顿提出深度信念网络,开启深度学习时代。 2012年,辛顿和他的两个学生设计AlexNet在ImageNet大赛中以绝对优势获得冠军,深度学习被业界所重视。 2015年,Google收购的DeepMind公司推出AlphaGo,2016年战胜李世石,2017年战胜柯洁。OpenAI成立。 2016年,Hugging Face成立。 2017年,Google发表Transformer模型论文。 2018年,OpenAI基于Transformer架构发布了GPT-1。Hugging Face发布 Transformers 项目。 2019年,OpenAI发布GPT-2。 2020年,OpenAI发布GPT-3。Hugging Face推出Hugging Face Hub。 2022年,OpenAI发布ChatGPT。 附2 参考资料 书籍: 《智慧的疆界:从图灵机到人工智能》周志明(著) 机械工业出版社 2018年10月 《深度学习革命》凯德·梅茨(著) 杜曙光(译) 中信出版社 2023年1月 《Python深度学习》(第2版) 弗朗索瓦·肖莱(著) 张亮(译) 人民邮电出版社 2022年8月 《深度学习入门:基于Python的理论与实现》斋藤康毅(著)陆宇杰(译)人民邮电出版社 2018年 《深度学习进阶:自然语言处理》斋藤康毅(著)陆宇杰(译) 人民邮电出版社 2020年10月 《这就是ChatGPT》 斯蒂芬·沃尔夫拉姆(著) WOLFRAM传媒汉化小组(译) 人民邮电出版社 2023年7月 《生成式人工智能》丁磊(著)中信出版社 2023年5月 《Huggingface自然语言处理详解》李福林(著)清华大学出版社 2023年4月 文章: 《神经网络入门》阮一峰 《2012,改变人类命运的180天》远川研究所 《GPT家族进化史》MetaPost 《Transformer - Attention is all you need》知乎 《预训练语言模型的发展历程》 知乎 《提示工程指南》 《ChatGPT 背后的“功臣”——RLHF 技术详解》 《ChatGPT大模型技术发展与应用》 《The Bitter Lesson》 Rich Sutton 《专访HuggingFace CTO:开源崛起、创业故事和AI民主化》

2024/3/17
articleCard.readMore

在大理,听打雷

年初看别人的总结,其中DIYGod的总结让我印象很深刻,他每年给自己制定OKR,其中KR部分很详细,且Smart化,这种将自己的生活量化规划的方式是个不错的实践,因此我也尝试着按照健康、家庭、成长、工作几个方面来规划 OKR, 在家庭 Objective 一项分解的KR里,列上“今年安排家庭旅游至少3次”,因此也想利用下春节假期来实现第一个 KR,跟妻子商量目的地,在泰国、哈尔滨等地纠结了几天后,终于在临春节前几天定下去云南。 临行之前读了比尔·波特的《彩云之南》,算是旅行指南,不过我没有他的充裕时间,也没有听从他的教训:不要跟旅行团。我们报了一个旅行团,像比尔·波特在书中形容的那样:在旅行团中人们被当作羊一样赶来赶去。并且,六天的特种兵跟团游也是一种极大的体力消耗,回上海后,大卫就生病了,打了几天吊水。不过跟团游唯一的好处是可以走马观花看个大概,而春节期间个人游不太好安排交通,交给旅行团的旅游大巴则方便了很多,也因此看了儿时印象中的阿诗玛、去了玉龙雪山,而在大理的一天多,是旅行团难得安排较为放松的时候。跟团游的另外一个收获是大卫解锁了社交技能,一路上跟同行游客玩的很开心,还教小姐姐恢复魔方,可满足了他的小小成就感。 在大理的期间,难得享受了把休闲。在理想邦上喝杯咖啡看看风景,在洱海边散步吹吹风,虽然也是团队游客“定点”场所,但也算是感受了下 Dalifornia 吧,这个被数字游民视为理想居所的地方。大理气候宜人,环境优美,近有洱海,远有苍山,在这样的风景里打开电脑办公那自然是理想中的工作场景。但这样的工作场景也只有理想中才有,想想看,在洱海边,怎么拉通?怎么呼电话会议?怎么跟人吵架?可惜工作不总是请客吃饭。所以有人来了,又有人走了,回到大城市,回到格子间,穿着正派,面带笑容。对于我,只能在精神上短暂的感受下 Dalifornia,戴上耳机,听Lana Del Rey 唱 California: You’re scared to win, scared to lose. Lana Del Rey, 中文网络上网友亲切称之为“打雷姐”,也就是”Del Rey”的谐音。Lana Del Rey 的声音复古而慵懒、空灵而另类,有点像是我所喜欢的几位女歌手 Kate Bush、Fiona Apple、Tori Amos 的结合体,再加上她的歌词写满了人生苦短及时行乐以及那些纸醉金迷的浪漫,可本质里是她对物质世界的不屑和轻视,无视俗世的评价眼光。所以她可以放下身段去餐厅打工,穿着超市淘来的廉价连衣裙参加电影节晚宴。”you don’t ever have to be stronger than you really are”,她在歌词里写道,对待生活如同她写歌一样随性。听歌的时候我在想:大理还没有成为 California 的一个原因可能是缺了 Lana Dey Rey 这样的歌手为它写首歌吧。 打雷姐的歌曲和大理的慵懒被旅游大巴的催促声打断,导游带我们来到大理古城,这座本应该安宁的小镇被填充满了商铺和游客,熙熙攘攘。写到这里,我有些走神,这是游记还是散文?初中老师告诉我,散文是“形散而神不散”,形是散了,可神是什么?我尝试着思索自己的思想脉路,那可能是我曾经一直想要找寻大理这种地方,生活悠闲没有压力,能生活一辈子的那种,然后说“我的人生完满了”。可实际上并不是,我始终是过客,在探寻的道路上没有完满,刚躺下就又被揪起来的那种。只能够在路上偶尔抬头看看风景,也许在一些时刻碰巧遇上惊喜,就像在丽江从酒店打车去饭店时,一抬头就看到了雪山。 最后一天,我去了云南博物馆。云南博物馆设计不错,按照云南历史衔接几大场馆。我沿着几个场馆参观,将云南的历史浏览了一遍。云南最早出现的人类是元谋人,在初中历史课本上也学过,不过按照主流科学的推断,元谋人跟其他直立人一样最后应该都被非洲智人取代了。有史记载的云南从战国时楚国大将庄蹻进入滇池地区建立滇国开始,到秦始皇统一六国在云南设立郡县。从东晋十六国开始,彝族豪族爨氏统治云南地区四百年之久。彝族又分成六大部落,称为“六诏”,唐朝开元年间,南诏国吞并其他五诏,建都大理。后南诏国衰败,经历了几个短暂的政权:大长和、大天兴、大义宁。五代后晋时,白族段思平灭大义宁国,建大理国。大理国尊崇佛教,又称“妙香佛国”,历时三百余年,直到忽必烈征云南,灭大理国,建立云南行省,设立省会昆明,从此云南的政治中心从大理移到昆明。 再见云南,再见大理,也许还会再来吧。

2024/3/2
articleCard.readMore