注册并分享邀请链接,可获得视频播放与邀请奖励。

搜索结果 劇透可能
劇透可能 贴吧
一个关键词就是一个贴吧,路径全站唯一。
创建贴吧
用户
未找到
包含 劇透可能 的推特
#劇透可能# 「初音⋯回去吧。」 欸⋯哪個⋯ - 謝謝菌菌跟我一起完成了我的夢想(乾 第一次初音正裝居然是為了拍母雞卡 一輩子的摳捨🫶超級好玩 #AveMujica# #hatsune# #初音#
显示更多
0
2
129
4
转发到社区
<纽约客>:“克里斯托弗·诺兰的《奥德赛》,把众神剪进了废片里”(有些微剧透) 作者:Richard Brody 最有可能喜欢克里斯托弗·诺兰新版<奥德赛>的,或许恰恰是那些没有读过荷马原著的观众。原因并不只是电影删掉了大量内容——任何篇幅较长的文学作品被搬上银幕,都免不了删减和压缩——而是因为影片中存在一个更加根本、无处不在的缺失:众神。 在荷马史诗中,故事的第一幕发生在奥林匹斯山上的宙斯宫殿里。众神召开会议,争论奥德修斯的命运。而在诺兰的电影里,人们会提起神,却看不到奥林匹斯山上的神明辩论。事实上,古希腊诸神中真正现身的只有雅典娜,由赞达亚饰演。她只是偶尔出现,注视并守护着故事的发展。 诺兰呈现的,是一场完全属于人类的戏剧。 影片开场时,曾在特洛伊战争中率领希腊军队作战的奥德修斯,由马特·达蒙饰演,已经离开故乡伊塔卡大约二十年:十年征战,之后又漂泊了十年。他迟迟无法归乡,一路上遭遇了无数诱惑和阻碍,从卡吕普索的勾引,到食人独眼巨人的暴怒。 与此同时,他的妻子潘妮洛普——由安妮·海瑟薇饰演——正在抵挡几十名伊塔卡贵族男子的追求。这些人逼迫她从中挑选一人再婚,一边等待她作出决定,一边住在王宫里大吃大喝,挥霍王室储存的粮食和美酒。 奥德修斯出征时,他的儿子忒勒马科斯还只是个婴儿。如今,由汤姆·赫兰德饰演的忒勒马科斯已经长大成人,一心想把这些求婚者赶出家门。这是一条最古老、最典型的成长故事线。最终,当奥德修斯设法回到故乡后,父子二人联手对付这些试图篡夺家业的人。 当故事以这种方式讲述,将神明干预压缩到最低限度后,它依然是一场令人兴奋的冒险,其中充满激情、恐惧、温情和奇观。但它失去了阅读荷马时那种独特的震撼:现代人的思想,与青铜时代人的精神世界之间,存在着一道巨大的鸿沟。 荷马描绘的是一个陌生而令人不安的世界。人类的生存始终受制于神明的商议与反复无常,而这些神明也有自己的欲望、动机和算计。诺兰切断了自然世界与超自然世界之间原本连贯的联系,也因此舍弃了许多真正让荷马时代显得如此不同的东西,其中包括无处不在的神圣气息,以及与之相伴的独特道德体系。 我原本很好奇,诺兰会如何处理故事中其他带有远古色彩的部分,比如暴力与宗教仪式:动物献祭时鲜血喷涌的场面;怪物在受害者凄厉惨叫中将人活活吞食的超自然暴怒;砍掉手掌和生殖器;对酷刑的依赖;以及人们从残忍复仇中获得的强烈满足感。 他又会如何表现荷马世界中那种极度外放的情绪?比如人们会因为痛苦而撕裂自己的衣服,或者像艾米莉·威尔逊在2017年出版的<奥德赛>译本中所写的那样,奥德修斯“放声痛哭,在悲伤中翻滚”。 还有那些色彩斑斓的幻想场景。例如在第一卷中,雅典娜与忒勒马科斯告别时,“像一只鸟一样飞走,穿过烟雾升入空中”,从而显露出自己的神性。 但诺兰并没有试图把观众带进古希腊人的精神世界。他选择了一种经过精简、几乎接近自然主义的处理方式,将一切驯化、节制,并削去锋芒。 影片中的暴力大多被拍成了缺乏具体质感的普通动作场面。快速剪辑的战斗,只是隐约暗示人物死得十分惨烈;献祭场面只短暂出现,而且干净得如同外科手术;复仇既没有多少鲜血,也缺少恐怖感,执行起来极为克制;泪水带着煽情片式的精确,从人物的一侧脸颊缓缓落下;悲痛则通过现代军人式的沉默和隐忍来表达。 尽管诺兰的创作构想迎合观众,而且带有明显的时代错位,他仍以强劲的自信和无可挑剔的清晰度将其推进。 电影对白简短、现代,让这批知名演员能够在自己最熟悉的表演方式中发挥,也把古代那些充满流光溢彩般复杂性的角色,重新雕琢成轮廓鲜明、质地坚硬的人物。 饰演潘妮洛普的安妮·海瑟薇,拥有与这一处理方式相匹配的锐利目光。在告诉忒勒马科斯,他还不够成熟、无法参加真正的大战时,她借用了一个古典好莱坞式的绝妙动作:先盯着他的眼睛,然后短暂而嘲讽地把视线向下移到他的身体上。 斯巴达国王墨涅拉俄斯由乔·博恩瑟饰演。博恩瑟为这个角色赋予了一种纽约外围城区白人族裔口音,听起来出人意料地合适。 露皮塔·尼永奥饰演海伦。她与墨涅拉俄斯的婚姻显得有些勉强,而她当年的被劫持正是特洛伊战争爆发的导火索。当海伦哀叹自己被当成死亡与毁灭的借口时,尼永奥以一种压低音量、却极具力量的方式,将角色的愤怒推向高点。 约翰·雷吉扎莫饰演被奴役的牧猪人欧迈俄斯。这个人物对奥德修斯忠心耿耿,也极力保护忒勒马科斯。雷吉扎莫身上流露出一种饱经世事的智慧和粗粝沉稳的气质。他内在的高贵,与那些身份显赫却贪婪卑劣的求婚者形成鲜明对比。 萨曼莎·莫顿饰演的瑟西直率强硬,带着一种乡野人物的粗犷气质。她的表演几乎让剧本对原著的改写显得可信。在荷马笔下,瑟西拥有迷人的歌声,是一名危险的诱惑者;在电影中,她却变成了一位喜欢训诫他人、批评社会风气的人。她解释说,自己之所以把奥德修斯的手下变成猪,是因为他们吃东西时“就像猪一样”。 在所有演员中,与诺兰对人物的整体构想结合得最紧密的,是饰演奥德修斯的马特·达蒙。 荷马笔下的奥德修斯以足智多谋、善于谋划而闻名。但在这部电影中,他显得朴素而直接,是一个粗犷、务实的战术家,而不再是那个更富创造力、行动更加活跃,同时在道德上也更值得怀疑的人。 这个角色原本需要一种既强健又圆滑、既有力量又变幻莫测的表演。但达蒙遵循诺兰的设定,将奥德修斯塑造成一个不动声色、背负重担的人。 那么,奥德修斯背负的究竟是什么? 为了界定这位英雄的困境,进而塑造他的性格,诺兰大胆扩展了<奥德赛>中只是被顺带提及的内容,把它们变成电影中的重要场面。 其中最关键的,是特洛伊木马,以及奥德修斯在这项计谋中发挥的领导作用。在诺兰的版本里,木马成为整个故事的核心:它塑造了奥德修斯的性格,也通过此后漫长的漂泊,决定了他一生的走向。 特洛伊人毫无怀疑地把木马运进城内,以为这是一件宗教祭品。但藏在木马内部、由奥德修斯率领的少数希腊士兵趁夜打开城门,让大批希腊战士涌入城中,将特洛伊彻底摧毁。 电影把奥德修斯描绘成一个长期为这项计谋深感内疚的人。他认为,自己将一件表面上的礼物变成致命武器,违反了宙斯所规定的待客之道。 影片还暗示,奥德修斯患有创伤后应激障碍。他多年的漂泊,也代表着他多年无法重新融入战后生活。 他被卡吕普索扣留七年,几乎以囚禁情人的身份被带上她的床,又在她喂食的忘忧莲作用下变得麻木。卡吕普索声称,自己的所作所为其实是在治疗他。 她对他说:“那时候的你,还没有准备好回家。” 以这种方式对奥德修斯进行心理分析,让<奥德赛>拥有了一种容易理解和消化的现代感——看吧,古希腊人其实也和我们一样。 但它为此付出的代价,是原著丰富的细节和复杂的社会结构。恰恰是这些内容,才使阅读荷马成为一种如此鲜活、直接而有生命力的体验。 电影压低原作中大量残酷情节,也不只是一般意义上的净化和删改。这其实是在尝试为现代社会重新“拯救”奥德修斯,把他塑造成一个既值得同情、又具有悲剧色彩的英雄。 因此,电影里容不下荷马史诗第九卷中的那个奥德修斯。在原著里,他若无其事地向一位主人讲述自己旅途中较早的一站: “我洗劫了那座城,杀死了男人。我们带走他们的妻子,并把他们的财物平均分掉。” 我不会剧透电影的结局,但它并不是原著中的那个结局。这个改写大胆得令人兴奋,野心很大,具有鲜明的社会意识,却最终没有得到充分展开。 作为导演,诺兰似乎在情节、对白、表演、自然景观、场景、陈设和服装上投入了远比影像本身更多的注意力。 电影的大部分画面都以一种中性的方式记录剧情,很少展现出足够鲜明的风格和质感,让人感受到导演对银幕世界有一套完整的美学构想。 诺兰在<信条>和<盗梦空间>等科幻作品中,曾展现出强烈得多的视觉冲击力。但值得注意的是,那些电影所构建的世界,在文化和精神层面都与现代社会保持着连续性。 相比之下,<奥德赛>这种朴素的现实主义风格,似乎与诺兰试图将一种无法被简化的古老精神加以理性化的努力密不可分。 观看诺兰的电影时,我不断想起皮埃尔·保罗·帕索里尼拍摄的两部古希腊题材作品,并对它们产生了更深的敬意:<俄狄浦斯王>(1967)与<美狄亚>(1969)。后者由玛丽亚·卡拉斯主演,也是她一生中唯一一次出演剧情长片。 在这两部作品中,古典时代令人不安的残酷,与一种崇高的视听体验彼此呼应。这种视听上的崇高,也准确反映了电影所依据的悲剧作品本身的诗意——两部电影分别改编自索福克勒斯和欧里庇得斯的作品。 帕索里尼对青铜时代生活中暴力与神秘色彩的强调,还延伸到规模宏大的宗教仪式,包括活人献祭。这些场面既像经过精密设计的舞蹈,也带有一种人类学式的观察,而影像本身的高度形式化,与银幕上的行动完全融为一体。 诺兰则受到现代道德自我约束力量的推动,把一部史诗拍成了散文。
显示更多
都说《龙餐厅》很不错,好多人称这是《我不是药神》导演文牧野的又一部“封神之作”。刚抽空去看了,的确相当精彩,但也没到“封神”的地步。在此不多剧透,仅谈谈几点看法: 电影制作与演员表现 首先,故事的叙述、人物的刻画以及整体剧本的驾驭都非常出色。节奏极为紧凑,即使采用了倒叙等手法,也没有任何错乱、交代不清或刻意雕琢的感觉。选角也很贴切,主角沈腾的演技稳如老狗,该幽默时幽默,该煽情时煽情,演得十分真实自然,完全没有表演痕迹,活脱脱就是那个大时代里一个有血有肉、有感情的小人物。配角们也同样给力,广西小伙、美国一等兵、前后拥有两种身份的餐厅老板、帮厨的本地小男孩以及一众儿童群演,都把各自的角色塑造得十分丰满。 此外,整个中东场景的搭建也非常考究。10万平方米1:1手工搭设的完整中东城市街区,复刻了200多栋中东风格建筑,龙餐馆室内、市井街道以及巷战炮火都在这里完成,服化道真实到位。电影的主旨总体来说没有大问题,以保护战乱地区的儿童为核心,呼吁全世界不要将儿童绑架到任何意识形态的战争中充当炮灰。结合目前巴以冲突的现实背景,具有相当积极的现实意义,值得大力点赞👍。 叙事视角与历史背景 作为一部主要在中国大陆上映(且顺利过审)的作品,叙事上自然需要一定的主旋律加持。说句公道话,虽然片中未明确说明,但显然是以当年的伊拉克为原型,时间线完全吻合。影片并没有过度将美军刻画为单纯的入侵者,虽然涉及美军对某些恐怖分子头目施加刑讯的镜头,但整体表现得比较克制,没有刻意煽动渲染。同时,片中对当地的“反抗力量”(实质上的恐怖分子)也没有给予过多同情,反而主要谴责他们以家国、宗教等名义欺骗诱导战乱孤儿,让他们充当盲目牺牲的炮灰。 不过,片中依然难免带有某些意识形态的“私货”。例如对美军说出“没有你们美国来这里,怎么会有恐怖分子?”之类的台词。现在很多国内的90后、00后可能真的以为当年伊拉克等地的局势,纯粹是因为美国无端干涉他国内政、发起入侵才导致了一系列人道主义灾难。 然而,了解历史的人都知道,第一次海湾战争主要是因为萨达姆入侵邻国科威特,联合国通过决议后,美国组建多国部队击败伊拉克军队并解放了科威特;随后第二次伊拉克战争才正式进入伊拉克推翻了萨达姆政权。 对国际秩序的思考 也许美国的某些军事行动并非完全出于正当理由(well justified),其行为也远非完美,但试想一下:在过去数十年里,如果没有一个像美国这样的“世界警察”角色存在,世界会变成什么样子? 南斯拉夫、巴勒斯坦、黎巴嫩、伊朗、利比亚、俄乌冲突、印巴与朝韩局势、台湾海峡以及军阀混战的非洲诸国等,是否早就乱成了一锅粥?当今世界或许并不完美,但总体上依然保持着和平与发展的主旋律。因此,一味将中东局势的动荡归咎于美国的介入,是一种既愚蠢又危险的论调。 最后,我们可以看看今天伊拉克人民的实际生活状况——这一点在国内其实鲜少宣传。大家不妨一起看看,在战争结束20多年后的今天,那里究竟是变好了,还是变差了: 人口:萨达姆上台时(1979年)人口约1317万,倒台时(2003年)约2680万;现在(2026年)约4800万,比2003年增长近80%。 经济:萨达姆时期人均GDP从高峰约3000-4000美元跌至倒台时约800美元,现在约5410美元,已明显超过其末期水平。 生活:萨达姆制裁年代贫困与物资短缺严重,现在贫困率约17.5%、食品支出占比下降,但部分地区电力和服务仍不足。 安全:萨达姆靠高压维持表面稳定却伴随战争与镇压,现在大规模内战已结束、安全感大幅提升,但仍有局部民兵与区域风险。 发展与自由:萨达姆时期教育医疗一度较好但政治零自由,现在HDI进入高人类发展区间、预期寿命提高,且有相对开放的政治空间。
显示更多
Kevin Warsh 完成自己首场 FOMC 会议演讲,对市场释放了 7 个重磅信号: 1. 通胀必须回到2%,没有任何妥协空间! 这好鹰啊,无论付出什么代价都要到2%(甚至加息)! 2. 美联储不再剧透市场 删除前瞻指引、点阵图利率预期,以后就别猜加息还是降息了 3. 利率可能比市场想象得更高、更久 鹰派信号,当前利率维持在3.5%-3.75%,2026年无降息预期,9位官员预计今年至少加息一次! 4. AI 将成为美国经济增长的最大引擎 AI会结构性降低成本,带来非通胀性增长 5. 美国不存在衰退危机 • GDP持续增长 • 企业投资强劲 • 生产率提升 • 就业市场稳定 6. 新官上任三把火,全面改革! 一口气成立5个特别工作组: ① 美联储沟通机制 ② 资产负债表 ③ 数据体系 ④ AI与就业 ⑤ 通胀框架 准备学马斯克,重申一切流程,让美联储回到第一性原理! 7. 美联储回归传统央行角色,让市场自己定价 未来市场波动可能会更大!
显示更多
0
24
43
9
转发到社区
昨晚沃什首次以美联储主席身份召开发布会,市场原本期待的是何时降息,但沃什传递出来的信息却是:现在讨论降息还太早。 我总结了几个最重要的信号 1⃣2%通胀目标不会妥协 沃什明确表示,美联储将坚定实现2%的通胀目标。这意味着即使经济增长放缓,只要通胀没有被彻底控制,美联储也不会轻易转向宽松,抗通胀优先于刺激经济。 2⃣高利率可能维持更久 本次会议维持利率不变符合预期。但真正让市场紧张的是:​沃什没有释放任何明确降息信号。相反,他强调未来决策将继续依赖数据,而不是市场期待。翻译成人话:​市场想要降息,美联储暂时不想给。 3⃣美联储未来将减少剧透 这是昨晚最被低估的内容。​过去鲍威尔时代点阵图、前瞻指引、官员讲话​,都会提前向市场传递政策方向。 而沃什认为市场过度依赖美联储的预测,未来市场需要自己解读经济数据。这意味着未来市场波动率可能明显提升。 4⃣启动内部改革 沃什宣布设立多个工作组,研究:​通胀、就业、生产率、数据质量、美联储沟通机制​,说明他不仅是在调整利率政策,更是在重塑未来美联储的运作方式。 昨晚释放的信息可以浓缩成一句话:​降息预期被推迟了,市场原本押注下半年流动性进一步宽松。而沃什的态度是先看到通胀回到目标,再谈降息。 对金融市场的整体偏利空
显示更多
🚨今天想探讨一个问题:沃什时代到来,美联储的制度会如何变革? 这张图里的沃什这套政策框架,最麻烦的地方不是偏鹰还是偏鸽,而是它把美联储带进了一种很拧巴的状态: 利率上偏鸽,资产负债表上偏鹰,嘴上强调独立性,现实里又无法彻底跟特朗普切割,同时还想弱化前瞻指引,减少市场对美联储“剧透”的依赖。 今天谁坐在美联储主席这个位置上,都已经不可能像过去那样,只围绕通胀和就业做选择。沃什这个官场老油子,显然也知道这一点: 他不能公开讲强硬加息,因为特朗普不爱听; 也不能只讲快速降息,不然国会一看,这不就是懂王派来的工具人吗? 所以最安全的说法就是:降息+缩表,利率可以更低,但资产负债表要更小。 这其实也是沃什和鲍威尔最大的区别—— 鲍威尔这几年虽然经常左右摇摆,但他的核心逻辑始终没变:市场预期不能失控,所以美联储必须不断沟通、不断修正、不断引导。 但沃什明显更反感美联储过度引导市场这件事,所以才会提出弱化前瞻指引、减少点阵图影响,甚至公开说自己更喜欢“混乱的会议”。 这个变化其实挺危险的: 过去十几年,美联储最值钱的不是利率本身,而是预期管理。 大家默认美联储最终会救市场,所以敢做高估值、敢加杠杆、敢长期持有风险资产。 而沃什的政策框架会把这些全部打破,但问题在于,美国现在很多资产价格、财政结构和金融稳定已经对这种模式形成依赖了,很难说这样大刀阔斧会不会形成反噬。 说一下我对于沃什路线的推演,我觉得市场会有三个阶段: 1⃣ 第一阶段,市场先交易降息预期。美股、黄金、BTC 都会喜欢“利率更低”这四个字,尤其是风险资产,会先把鸽派那半边故事吃进去。 2⃣ 第二阶段,市场开始反应缩表压力。美债长端供给没人接,期限溢价抬头,流动性没想象中宽,科技股和高估值资产会开始发现:利率下来了,但钱更不好赚了。 3⃣ 第三阶段,市场重新定价美联储的可信度。如果沃什既想独立,又想配合特朗普;既想降息,又想缩表;既想压通胀,又想稳资产,最后大概率会变成一句话:什么都想要,什么都不好做。 所以目前我不太相信沃什真能彻底改变什么,可能不一定对,也许沃什突然真神上身,能带我们直接去到 20w 也说不准! 唯一能确定的是,会比鲍威尔时期更难做交易! 图自:金十
显示更多
0
10
22
6
转发到社区
6月18日,JP摩根发布了一份非常重要的ASIC行业报告,我提取了一些关键内容和大家分享。 报告最核心的观点是:AI时代正在推动定制芯片ASIC进入新一轮黄金周期,而最大的受益者是Broadcom和Marvell。对的,Mrvl最近风头十足!!独占存储,光通讯,Asic芯片设计三大热点赛道,难怪股价走势如此坚挺!😄 接着报告提到为什么云剧透要设计自己的XPU芯片:AI训练几乎被NVIDIA GPU主导。GPU的优势是通用性强、生态完整,但问题是成本高、功耗高,而且很难针对云厂商自己的软件栈和模型架构做深度优化。因此,Google、Amazon、Microsoft、Meta、OpenAI、SoftBank等公司都在加速开发自己的AI ASIC芯片。 然后报告提到值得关注的一个预测:JP摩根预计,到2027年,AI ASIC/XPU的出货量将首次超过GPU。报告预测2027年ASIC/XPU出货量达到1250万颗,而GPU出货量为1090万颗。也就是说,ASIC/XPU占比达到53%,GPU占比为47%。 我认为这是整份报告里最重要的产业趋势判断。因为这意味着未来AI加速器市场可能不再是NVIDIA GPU单一主导,而是进入“GPU + ASIC双轨制”的时代。这个判断非常大胆,也非常值得美股投资者关注。 另外报告还解释了为什么云厂商不能完全自己做XPU芯片的原因:云厂商虽然有软件能力、模型能力和系统架构能力,但并不一定具备完整的底层芯片工程能力。真正困难的部分包括高速SerDes接口、HBM接口、chiplet设计、先进封装、2nm/3nm物理设计、功耗验证、热设计、tape-out等,这些能力需要十年以上的积累,正是Broadcom和Marvell的护城河。 对于Broadcom, JP摩根预计Broadcom AI收入将从2025年约200亿美元,大幅增长到2027年超过1500亿美元,这个涨幅非常惊艳,目前市场上很少有这么乐观的预期,值得关注。另外JPM海列举 了AVG目前的Asic项目名称:Google TPU、Meta MTIA、Anthropic TPU、OpenAI ASIC,以及SoftBank/ARM XPU。
显示更多
0
41
374
107
转发到社区
淫人妻之《送外卖的是外卖》完整视频版已经上线评论区直达❗️先看帖子再看视频体验直升300%,从1分20秒左右开始,没有伴奏🙏🏻 不知道多少人还记的整整一年前发布的这篇《送外卖的变外卖》 总之当时的情况是,索菲不知道,外卖小哥不知道,只有我暗搓搓的计划着一切。 由于那次的体验还蛮不错,索菲和我便开始了 —— 外卖计划。 从最简单的全裸拿外卖,到进阶版的塞着跳蛋和肛塞拿外卖, 再到告诉外卖小哥自己没有现金,帮外卖小哥打飞机, 以及面对大门全裸捆在椅子上,插着震动棒,遮目捆绑。(这里剧透一下,本贴在正文会提及。) 我们尝试了很多,但是为什么没有再次发布相关主题呢? 因为太难了... 陌生人代表着随机性, 包括但不限于,秒射侠,无视哥,死活不敢进门怕仙人跳的, 被门卫拦住死活不让进的,敢看十分钟但绝对不摸的,说没钱就投诉的等。 当然还有上述那位,我们整的最硬核,且在正文中会提到的小哥... 而且还有一次 App显示是个男的送外卖... 结果进门来的是个女士... 可能是老公骑车到门口老婆送上来... 这种情况其实在这边还蛮多的~ 当然不只是外卖员的客观原因,我们自己造成的失物也有, 太紧张以为点了录像其实没录,没考虑周全完全没有在镜头内, 太臭了索菲直接说“不”。评分太低索菲觉得他肯定是个傻逼的。 总之,难上加难。 不然也不用拖一整年才制作出第二期不是么 😌 @ToBulma @ToBulaer @KawasawaSen @BulmaList
显示更多
0
76
13.3K
1.4K
转发到社区
决定代码复杂度的东西不在代码里,在写代码的人的脑子里。LLM 碰不到它。 这是 软件工程师 Pol Alvarez Vecino 读完 Peter Naur 1985 年的论文后得出的结论。 为什么 LLM 没法让你的代码更简单 本文最初发表于 Medium( tl;dr:Peter Naur 的《Programming as Theory building》指出,真正的程序——他称之为 Theory,大写的 T——存在于工程师的脑子里。代码和文档只是下游的(因而不完整的)产物。我对 LLM 最大的抱怨之一,就是它写出来的代码有多啰嗦、复杂度是怎样到处蔓延的。我一直抱着一丝信念:也许我们可以用 LoC 或者独立代码路径数量之类的指标来约束它们。然而,读完 Naur 之后我意识到,我们想降低的那个复杂度是 Theory 的复杂度,不是代码的复杂度,而这方面没有任何可用的度量,因为它非常主观。 我最近读了 Peter Naur 那篇精彩的论文《Programming as Theory building》( LLM 能做什么、不能做什么的看法,也改变了我对如何给它们写提示词、当前 agent 系统的主要局限,以及结对编程为何如此有效的看法。 今天我只聚焦它和代码复杂度的关系。 如果你还没读过这篇论文,我真的建议你读一读。说实话,我写这篇文章的主要目的,就是让一些人去读原论文。它值得花这个功夫。这也是练习(或学习!)在 Solveit 里做精读的绝佳机会,因为在 Solveit 里这要容易得多:你可以在阅读过程中随时提问,钻进任何你感兴趣的兔子洞,或者直接让 Solveit 帮你把语言讲清楚。关于精读的更多信息见这篇博文( fork 我的对话记录快速上手( 话说回来,如果你还是决定不读,这里是论文的 tl;dr: 程序是构建和维护它的人所持有的 Theory:一种理解——程序如何与现实世界的问题相关联,哪些约束和权衡塑造了它,它为什么能工作,以及哪些改动符合它的设计。代码和文档是这套 Theory 的下游产物,永远无法完整地承载它。 工程师通过经验发展出这种理解:与用户交谈、观察故障、学习领域知识、观察系统在真实世界中的表现。这种理解指导着对相关性、相似性、简洁性和良好设计的判断。 LLM 不太擅长持续学习,不擅长和用户交谈,也不擅长在真实世界里体验事物。但这和复杂度有什么关系呢? 我想我们都同意:LLM 总体上倾向于让代码库的复杂度上升,如果没人管的话。原因有很多:它们没意识到某个方法已经存在,于是又写了一遍;它们写过度防御的代码,比如为不可能发生的边界情况做防护;或者过早地过度优化。顺便说一句,大多数前沿实验室从你消耗的 token 里赚大钱,所以它们多少有动机去推广 token 最大化。总而言之,LLM 很少遵循 KISS 原则。这个问题在你不看输出、纯 vibe-coding 的时候最严重。但即使你会审查代码,要想让程序保持简洁,也需要主动付出努力去尽量削减复杂度。 在我天真的日子里(大约两周前),我曾以为我们早晚能爬出这个复杂度的大坑。前沿实验室只需要在 RL 训练里加一些复杂度惩罚就行。他们可以用总 LoC 作为最小化的指标,但我们都同意,有时候一行代码比两三行更复杂。另一个选项是圈复杂度(cyclomatic complexity),它衡量独立代码路径的总数。读完 Peter Naur 之后我意识到,这些东西无法真正解决问题(也许能稍微缓解一点)。我们来看看为什么。 为什么代码复杂度是错的指标 在下面这个(我编的)例子里,我们想支持调用 OpenAI 和 Anthropic。假设所有的消息准备和重试逻辑完全一样,只有请求体参数略有不同,于是我们有两个不同的方法 call_openai 和 call_anthropic。 在第一个朴素版本里,我们有两个不同的类,带重复的样板代码(即 prepare 和 with_retries)。 分开 —— 指标会发现重复 class OpenAIClient: def complete(self, prompt): msgs = prepare(prompt) # 公共样板代码 y = call_openai(msgs) # 唯一不同的一行 return with_retries(y) # 公共样板代码 class AnthropicClient: def complete(self, prompt): msgs = prepare(prompt) y = call_anthropic(msgs) return with_retries(y) 一个直接的 refactor 是创建单个类,做到 DRY。按很多指标看这都是更好的实现:行数更少、Halstead 容量更好(V=N×log2(n),N 为程序长度,n 为词汇量)、可维护性指数(Maintainability Index)也更好。 合并版 —— 按指标看确实更好:DRY,行数更少 class LLMClient: def __init__(self, provider): self.provider = provider def complete(self, prompt): msgs = prepare(prompt) y = call_openai(msgs) if self.provider == "openai" else call_anthropic(msgs) return with_retries(y) 一般来说,第二个版本(或者类似减少 LoC 和重复的版本)复杂度更低。但是,如果我告诉你,下个月我们很可能就停止支持 Anthropic 了呢?在那种情况下,我更倾向于让它们保持分开,这样到时候我只要删掉包含 AnthropicClient 的那个文件就行。 当然,这种简单的例子很容易解决,尤其是现在 LLM 可以帮你写代码。但如果你的目标不是 2 个供应商,而是像 LiteLLM 那样支持 165+ 个供应商呢?那种情况下,直接用 LiteLLM 就行。但那样你就把 120 多万行 Python 代码放到了你和最终供应商之间。值得吗? 设计良好的 API 是抽象复杂度的绝佳方式。你有清晰的契约,不需要理解背后发生了什么。即使 LiteLLM 是一个庞大的包,它也可能不计入你的 Theory 总复杂度。LLM 推理端点早期的日子就是这样:「文本进,文本出」。然而,当契约不再可靠时,这一切就会崩塌。原因可能是它有 bug,可能是 API 背后藏着大量你拿不到的状态,也可能仅仅是你不确定某个新供应商特性是否被支持。 每当你被迫窥视 API 抽象层背后的深渊时,那份复杂度就成了你的问题。这个问题正变得越来越普遍。像 OpenAI 和 Anthropic 这样的供应商,越来越多地把数据藏在服务端,比如加密的压缩数据或推理 token(更多讨论见 如果你在快速推进、只用基础功能、想尝试很多供应商,那么 LiteLLM 或类似的库可能值得用。反过来,如果你看重控制力、调试和对技术栈的理解,那可能就不值得。不存在「正确的」复杂度(虽然我非常偏好第二种选择)。 进入 Theory 决定走哪条路的信息不在代码里。这些信息属于 Naur 所说的程序的 Theory 的一部分。迄今为止,LLM 几乎接触不到这些信息,因为它们活在人的脑子里。它们可以从 IM、邮件或其他书面文档里得到一些线索,但那些永远只是局部的(最好的情况下)。 其中一些信息可以作为上下文提供给 LLM,比如业务优先级、预期的产品变化、运维约束,以及早期决策背后的原因。这样做也许能改善它的选择,但这些仍然只是 Theory 的产物。它们无法完整地传递团队发展出这套 Theory 所依赖的经验和判断。 这些都很好,但如果我全身心投入 vibe-coding 和 token 最大化、完全不在乎代码呢?那样的话,这篇博客后面的内容说服不了你。如果你处于两者之间,我来描述一个我们在 亲身经历的真实情况,关于 Solveit 的计费系统。 剧透警告:在 最初的计费系统 Solveit 是一个平台,你可以在里面用 AI 在一个类 notebook 的环境里工作。环境是持久化的,所以我们对 LLM 用量、CPU、磁盘、内存和带宽收费。 最初的计划是向用户收月度订阅费(比如 5 美元)。这笔月度订阅费变成当月可以消耗的积分(credits),如果全部用完,下个月之前就得充值。我们先在一个更小的项目里测试了这套方法来验证它。 这套方法后来证明比我们想要的更复杂。第一,积分 + 订阅的机制会把人(比如我自己)搞晕。第二,它让代码在多个层面上更复杂。你得处理「先消耗月度订阅积分、再消耗普通积分」的所有逻辑,以及剩下的积分怎么办。在 Stripe 这一侧,它有两个不同的代码路径:手动充值和订阅服务。 对不熟悉的人来说,Stripe 订阅是一个全托管服务。Stripe 管理整个生命周期(扣款周期、发票、重试全在他们那边)。 你大致只需要这样创建订阅: stripe.Subscription.create(customer=cust_id, items=[{"price": "price_5usd_monthly"}]) 然后监听他们的 webhook,在订阅状态变化或付款到达时更新你的数据库(还有很多其他事件可以选择)。 直接收款则需要你启动一个 checkout session,让用户跳转到 Stripe 的域名填卡。这需要你提供一个 customer ID。那应该在什么时候创建 Stripe customer?用户注册时?他们尝试付款时?还是别的时机?全都是合理选项。 stripe.checkout.Session.create(mode="payment", customer=cust_id, line_items=[{"price": "price_5usd", "quantity": 1}], success_url="") 到目前为止还好吧?如果你对 Stripe 或支付没有太多经验,很可能你已经感到吃力,没法把这一切全装进脑子里。也许你设法把它简化成了: • 订阅 → 交给 Stripe 订阅服务管理 • 充值 → Stripe checkout 一个不明显的问题是:使用 Stripe 托管服务意味着你有重复的数据。一半数据在 Stripe 的后端,而你必须保证本地数据库和它同步。另一个问题是,调试的时候,你既要查 Stripe 的服务,又要查自己的数据库。比如,一笔付款没到账,是 Stripe 没发 webhook(「他们的错」),还是我们没把它存进数据库(「我们的错」)? Stripe 订阅服务很棒、很容易上手,但它是为支持海量用例而设计的。这意味着,即使设计得很好(它确实很好),这个 API 抽象最终也相当复杂。在这种情况下,你在用「卷起袖子自己写代码的复杂度」交换「学习 Stripe API 的复杂度」。 LiteLLM 和 Stripe 在不同规模上展示了同一个权衡:只要契约成立,外部抽象能极大地简化你的 Theory;但每当你需要调试、修改或超出契约去推理时,它隐藏的复杂度就变成你的了。 AAI 的做法 在 经过很多天的探索和讨论,我们最终定下了一个简单得多的系统。 首先,我们只做积分(credits),按用量收费。这是一个超级简单的模型(和 Theory!):充值积分,用多少付多少。 订阅一去掉,我们就可以删掉一大块用来保持同步的代码。剩下的付款路径只有两条:手动充值和自动充值。要做自动充值,你需要能保存客户的信用卡,以便随时扣款。而 Stripe checkout 不会保存信用卡,你只是让 Stripe 在他们的 UI 里处理这次付款。 长话短说,我们最终发现最简单的办法是:用户一注册就保存他们的信用卡。卡一旦在档,用户可以用它手动充值,也可以设置成自动充值。因为全部是我们自己处理的,同步问题几乎为零。我们只监听支付成功事件(没有订阅了!)。 结果就是,我们支付系统的 Theory 可以用一句话概括: 客户注册时添加信用卡,之后我们对该卡扣款——要么手动(充值),要么在余额不足时自动扣。 手动充值和自动充值现在走同一条支付路径。我们整个支付技术栈——拆在 Solveit 和 faststripe 之间——大约 300 行代码。 结果是非常低的复杂度,但这是数小时的探索、尝试和讨论换来的。我这里的解释充其量只是触及皮毛。 印度登场 那么上线那天发生了什么?一切顺利吗?没有。上线后我们发现,印度信用卡不支持你想什么时候扣就什么时候扣的 off-session 扣款。手动充值属于 on-session,仍然可以工作,因为用户会在我们的 UI 里看到一个类似 3DS 的验证流程;但自动充值不行。 在寻找解决方案时,我们发现 Stripe 托管订阅在印度确实能工作。为什么?因为 Stripe 替你绕开了所有这些复杂度。他们提前一天创建并持有 off-session 的支付意图(payment intent),这样银行就能在实际扣款前向用户发送预扣款通知或认证请求。 我们迁移出托管订阅时,就失去了这个特性。我问了一个前沿 LLM——我记得是 GPT-5.5——我们该怎么处理这个问题。你猜它给出的方案是什么? 用回 Stripe 订阅来处理 这个 LLM 提议的正是我们刚刚迁移出来的方案。读到这里,你会怎么说?你的意见是什么?我们应该迁回去吗? LLM 列出了两个选项:要么同时支持两套系统(随时可以开工,你一句话就行!),要么完全迁回旧的系统。我们做了什么?什么都没做。我们非常看重 Theory 复杂度,于是我们决定:让印度用户手动充值就好了(抱歉了各位!),换来一个更简单、更健壮的平台。 如果你不同意我们的选择,反思一下为什么不同意。真的,现在就停下来想一想。 这个问题没有正确答案,而这篇博客的目的之一,就是帮你看清你的答案来自哪里。你的论据是什么?更具体地说,它们是从哪里来的? 有很多场景下 Stripe 托管服务是更优的选择。举几个例子: • 公司收入最重要,手动充值的额外摩擦可能会让我们损失一些印度销售额,那我们应该迁回去(或者同时支持两套) • 销售团队用 Stripe Dashboard 的 UI,所有支付信息都放在我们自己的数据库里并不理想,因为他们没法在那里管理 我的观点是:你的代码的复杂度,真的取决于一大堆和代码无关的因素,而那些信息不在代码里。 隐藏的优势 那么为什么不干脆让 LLM 全权处理这些事呢?在我看来,最妙的答案是:我们的工作方式揭示了一个可能的商业机会。印度不支持 debit mandate(借记授权)的方式和世界其他地方不一样。Stripe 试图解决这个问题,但远远不是一个完整的解决方案。 在理解和简化流程与 Theory 的过程中,我们学到了产品之外有价值的东西。在我看来,这类洞察是可以转化为竞争优势的。 努力去理解,本质上就是一个简化 Theory 的过程。如果你放任 LLM 在复杂度上为所欲为,你可以很快产出大量代码。选择简化路线更长、更费劲,但长远来看我认为它是值得的,而且你可能会在路上发现隐藏的宝石。 原文: #LLM# #编程# #代码复杂度#
显示更多
你真的以为,世上有完全不会动摇、永远忠诚的伴侣吗? 走进婚姻之后才会懂,这段关系藏着太多现实与人性,今天一次说透 6 个真相。 我们电视剧、小说看多了,才会幻想一辈子只爱同一个人。 周国平说过一段很真实的话: 性是肉体生活,遵循快乐原则 爱情是精神生活,遵循理想原则 婚姻是社会生活,遵循现实原则 这三者根本是完全不一样的东西。 婚姻最难的地方就在这: 我们奢望在同一个人身上,同时拥有这三样。 不想热情被日常平淡磨掉,不想理想被柴米油盐埋没。 但婚姻本来就追求稳定,人的天性却永远需要新刺激,两者本就互相冲突。 没有人能完整满足你的三种需求💔 性、爱情、婚姻,我们全都想在另一半身上一次拥有。 老话常说:再好的婚姻,也会有一百次想离婚、五十次想掐死对方的念头。 假设 25 岁结婚、80 岁离开,长达 55 年都要被婚姻束缚。 一边压抑自己想要新刺激的天性,一边又要求对方满足自己所有期待,根本不可能长久。 成熟的人会懂得自我调整、找到平衡;执着追求完美的人,只会被现实重击。 完全没有矛盾、永远舒服的婚姻根本不存在。 结婚前要做好的心理准备,就是接受往后数不清的不顺心。 换个角度想:就算独自一个人过,你也没办法时时刻刻感到快乐自在。 世上没有绝对不会出轨的人🌫️ 很多人固执觉得,相爱就该毫无保留、绝对忠诚,一点私心都不能有。 但见过足够多感情之后才明白,这想法太天真了。 人的情绪本来就复杂善变,没办法像机器人一样永远理性。 过度理性的人反而没人喜欢,因为平淡、毫无波动,感受不到恋爱的悸动。 人性就像阴阳,有光明就一定有阴暗面。 不分男女,每个人都会有片刻精神游走、心动动摇的时刻。 人之所以高于动物,是我们懂得分辨界线、衡量后果。 每个人都会有精神出轨的瞬间,但会不会跨过肉体界线,全看个人选择与底线。 完美婚姻、完美爱情本来就不存在🪞 如果你要求另一半毫无隐瞒、绝对忠诚,自己也能做到同样标准,这种纯粹的人很难得。 但人性本就阴晴不定、充满欲望,一辈子维持单纯毫无杂念,简直是奇迹。 真正高阶的爱,从来不是互相束缚、强求完美。 彼此信任,给予对方空间,不用绑住谁,最后却谁也离不开谁,这才是婚姻最好的模样。 能好好经营婚姻的人,都是真正的英雄🤍 愿意踏进围城、用心维持婚姻的人,对人生的体悟远比单身的人更深。 所谓英雄主义,就是看清所有残酷现实,依旧热爱生活; 看懂婚姻所有磨人、不舒服的地方,依旧愿意用心经营。 熬过争执与内耗,才能体会相守的温柔: 身边有人知冷知热,下班有一个温暖的家,情绪低落时有依靠、随时有人能说心里话。 愿意扛下婚姻所有难处的人,一定勇敢又柔软。 痛苦本就是常态,想要更好就必须熬过磨难⛰️ 就像健身增肌,想要改变身形,就得控制饮食、承受运动的酸痛,经历撕裂重组才能蜕变。 婚姻也是一样,想要高品质的关系,就得克服懒惰、自私等人性弱点。 熬过那些煎熬,才能体会旁人感受不到的温暖与安心。 我们不用强迫自己当经营婚姻的英雄,随遇而安也是一种活法。 安于平淡闲适的生活,也是拚命追逐光鲜的人得不到的幸福。 别羡慕任何人的表面风光,每一场看起来美满的关系,背后都藏满磨难与一地鸡毛。 现在的你处在哪种婚姻状态? 1、长期冷战,两人零沟通 2、天天争吵,动不动就提离婚 3、发现对方动摇、疑似出轨
显示更多