前OpenAI研究员Andrej Karpathy制作了一张职业自动化风险评估表后迅速删除。这张表用Gemini Flash评估各行业受AI影响程度,但它忽略了最关键的问题:当白领大规模失业,所谓的“安全职业”也会因连锁反应崩溃。
此表标注哪些职业容易被AI替代。软件工程师、律师是重灾区,体力劳动相对安全。表发出没多久就删了。
他自己也承认这是“slop”(垃圾输出),用AI评估AI的影响本身就很讽刺。但真正的问题不是方法论有多粗糙。
有观点提到,这种分析最致命的缺陷是把自动化当成孤立事件。一个办公室关门,清洁工、周边餐厅、托儿所都会受波及。失业潮会传导到每个角落。那些标记为绿色的“安全职业”只是暂时的,当所有人都想当水管工,供需失衡会让这个行业也变成红海。
更微妙的是,大部分工作不会完全消失,而是一个人干三四个人的活。公司不再补缺,招聘冻结,失业率统计看起来还正常。刚毕业的年轻人找不到对口工作,只能去送外卖,算“就业”但实际上是underemployed。数据会骗人。
有网友提到建筑工人也不安全。机器人技术在突破,虽然成本高、环境复杂、数据不足,但失去一个40万美元的机器人总比失去一个人便宜。这个逻辑很冷酷,却可能就是未来的现实。
Karpathy删表这件事本身比表的内容更有意思。给职业自动化打分会引发政治风暴,无论数据多精确。当你把失业量化成具体数字,就不再是抽象的技术讨论,而是每个人都能对号入座的恐慌。
最讽刺的是,软件工程师——十年前被认为最安全的职业——现在成了高危行业。有刚入行的人说自己改专业学了CS,结果刚工作几个月就面临职业消失的可能。这种错位感很残酷。
UBI(全民基本收入)在美国是个笑话。一个连全民医保都做不到的国家,指望它发钱给所有人?有观点认为,美国是资本主义大本营,UBI是资本主义的反义词,权力者为什么要放弃权力?
表本身是垃圾,但它至少让人开始讨论。问题是讨论之后呢?大多数人还是会继续假装一切如常,直到裁员信真的来了。
有人在修改OpenCode工具代码时发现:运行`opencode serve`后,Web UI的所有请求都被代理到这里。没有启动参数可以关闭,没有选项可以修改。
GitHub上堆积了十几个相关PR和issue,最早的投诉可以追溯到几个月前。防火墙内运行?启动时会卡在白屏等待外部请求超时。完全断网?功能直接残废。
更诡异的是,即便关闭自动更新,Web UI版本依然会自动刷新,新的模型provider会突然出现,甚至成为默认选项。一位用户说得直白:“我以为在用本地模型,结果OpenRouter给我发了账单补充提醒。”
有网友验证:启动时的第一个动作就是把你的初始prompt上传到opencode.ai/zen/v1/responses生成标题,无论你用的是不是本地模型。除非手动指定small_model,否则这个行为无法避免。文档里写着“会fallback到主模型”,但代码里根本不是这么干的。
看看RolandCode(一个剥离了隐私功能的fork)删掉的endpoint列表:
- us.i.posthog.com → 使用分析
- api.honeycomb.io → 遥测数据、IP、位置
- api.opencode.ai → 会话内容、prompts
- opencode.ai/zen/v1 → prompts代理
- app.opencode.ai → 全局代理
一个本地工具需要连接这么多服务器?
有观点认为这是为了盈利做的妥协。OpenCode背后有VC资金支持,拒绝合并显示tokens-per-second指标的PR,在OpenCode Zen项目中对provider、量化方案、速率限制都不透明。锁定默认的build prompts,要求重新编译才能修改,这种设计选择本身就很可疑。
另一个细节:即便用户明确关闭自动更新,Web UI仍会静默升级,新的模型provider会突然出现在列表里,甚至自动成为默认路由目标。这不是失控,是有意为之。
社区里开始有人重新审视当初OpenCode和Crush的争议:“现在想想,那场冲突可能不是我们以为的那样。”
终端复制粘贴遵循不了Linux标准,退出后看不到会话历史,这些看似小问题的背后是什么?有人说是editor风格的trade-off,但Gemini CLI、Claude CLI、Codex都没这些毛病。
现在的选择:
Pi Coding Agent被多次提及,简单、轻量、真正本地。有人fork了oh-my-pi增强版,也有人在用RolandCode。Nanocoder从头设计,原生支持agentic coding和tool calling。
但守住“本地”这个词的意义比工具本身更重要。
模型权重能离线运行吗?系统能在没有任何外部API调用的情况下工作吗?网络访问是可选还是强制?如果运行时管道依赖远程endpoint,那就别叫它“本地”,叫“混合”更准确。
本地AI的价值在于隐私、确定性和成本控制。当这些保证被隐藏的网络依赖打破,整个价值主张就变了。
一位剑桥学生用Claude配合五个问题,20分钟内就能像资深学者一样批判性地阅读论文。关键不在于让AI总结内容,而在于用它来检验论文的逻辑漏洞、未言明的假设和缺失的对话。
大多数人用Claude读论文的方式是错的。
他们粘贴论文,要求总结,得到一段流畅的概括,然后以为自己读懂了。这不是阅读,这是带着科技感的走马观花。
剑桥这位学生的做法完全不同。她先完整读一遍论文,然后问Claude:“仅从方法和结果来看,这项研究能合理推出什么结论、不能推出什么?现在读摘要,告诉我作者在哪里过度延伸了。”
她不是让Claude替她读论文,而是用它来检验论文是否真的证明了作者声称的东西。大多数学生读到作者的主张就当成了作者的发现。这两者之间的鸿沟,正是她用20分钟学会的。
接下来更有意思。
她问:“这项研究没有测量什么,如果测了会显著增强或削弱核心主张?作者的方法论在悄悄假设什么,却从不说明?”大多数学生读方法论是为了理解研究者做了什么。她读是为了找到他们没做什么,以及他们希望没人注意到什么。
然后她让论文自我对质:“如果我在不同背景的不同人群中重复这项研究,结果最可能在哪里变化?这说明作者的结论实际能推广到多远?”大多数发表的主张看起来是普遍的,实际上是特定的。这个问题每次都能找到两者之间的界限。
有观点认为,她这不是在加速阅读,而是在把研究当作论辩而非文件来对待。资深学者读论文时把它们看作持续辩论中的一个立场,而不是完成品。这种框架一旦切换,问题自然从“他们说了什么”变成“这实际证明了什么,基于什么假设”。
她还会追问:“这篇论文在回应什么辩论?它回应的那些人会怎么反驳?这篇论文在已有争论中处于什么位置?”那一天,她不再把论文当作孤立的对象来读。每篇论文都是对某事的回应。大多数学生从不知道是什么。她五分钟就找到了,这完全改变了论文的意义。
最后她问:“这篇论文的参考文献中缺失的、该领域每个严肃研究者都会认为必不可少的最重要引用是什么?作者没有参与但应该参与的对话是什么?”
她在研讨班上提出了一个作者的理论盲点。导师停下讨论,问她怎么发现的。她说她向论文提了正确的问题,而不只是读了它。导师说这正是在学术界干二十年才能学会的。
她做了三周。
有网友提醒,使用Claude时要验证答案,避免“幻觉”。也有批评指出这些提示词本身就是AI生成的,文风过于明显。还有人质疑:如果她真的读了论文,不应该自己就知道答案吗?
但更多讨论集中在这种方法的本质。有人指出,这其实是将本科教学转向研究生风格,增强学生的推理能力。也有人担忧,这是在让Claude替她理解论文,而不是替她读论文,后者可能更糟。
工作流很简单。五个问题,按顺序:方法和结果能合理推出什么?研究没测量什么、方法论在默默假设什么?换人群或情境会怎样?论文在回应什么辩论?参考文献缺了哪篇关键文献?
大多数学生花三年从外部读论文。这五个问题让你20分钟就进入内部。论文没变,问题变了。
OpenAI CEO Sam Altman一条看似温情的“感谢”推文,在程序员社区引发了剧烈反应。大家愤怒的不是AI能写代码,而是“感谢”背后那套“过河拆桥,卸磨杀驴”的硅谷剧本,以及一个更残酷的现实:赖以生存的技能,正在被自己亲手喂大的模型釜底抽薪。
OpenAI的CEO Sam Altman发了条推文,大意是:非常感谢那些曾逐字逐句编写复杂软件的人,我们已经快忘了那有多难。谢谢你们带我们走到今天。
听起来像一句温情的致敬,但在程序员的耳朵里,这更像一句“感谢你们的鱼,再会”,充满了临终关怀的客套和傲慢。一场关于“程序员已死”的论战瞬间被点燃。你可能以为,程序员们会对这种“外行指导内行”的论调嗤之以鼻,觉得不过是又一轮CEO的自嗨。但这次,社区的反应复杂得多。争论的焦点,已经从“AI到底行不行”,悄悄转移到了一个更让人不安的层面。
人们不再简单地争论AI会不会犯语法错误,而是开始激烈讨论一个近乎于“原罪”的问题:AI大模型,究竟是不是靠“偷”走所有人的代码才得以成立的?一位工程师一针见血地指出,Stack Overflow上的代码片段,根据MIT或CC协议,都需要署名。而这些商业闭源LLM,显然没有遵守规则。这已经不是开源精神下的“借鉴”,而是赤裸裸的“数据盗窃”,目的是将程序员的技能商品化,最终让程序员“出局”。
更深的恐惧,来自那套熟悉的硅谷剧本:先用海量资本提供“免费”或极低价的服务,让你养成依赖,彻底摧毁旧有的工作模式和生态位。等到所有人都离不开它时,再通过涨价、限制、制造信息差,把所有权力收归自己手中。一位网友将其称为“技术依赖锁定”,就像麦当劳必须拥有自己的地产,可口可乐必须控制自己的装瓶厂一样,当一家公司的整个代码库都依赖于OpenAI时,它的命脉就交到了别人手里。
如果说以上还只是商业模式的博弈,那么另一则评论则触及了行业的根基:一位被裁掉的资深开发者说,他现在每天用AI来刷LeetCode算法题,因为这是他找下一份工作所必需的——尽管这技能他二十年没用过了。这个场景荒诞得令人心寒:一个被AI浪潮波及的失业者,必须用AI作为工具,去迎合一个正在被AI颠覆的、早已过时的面试体系。
当AI能让你完成95%的开发工作,写代码本身就不再是护城河。你的价值不再是你写了什么,而是你“指导”AI写出了什么。但问题是,当Anthropic(Claude的母公司)一边宣扬“编程的时代结束了”,一边又用50万美元的年薪招聘软件工程师时,谁都不知道这条船在驶向何方。
对于刚入行的人来说,这可能意味着晋升的阶梯被抽走了。对于资深工程师,这意味着“编码”和“软件工程”被强行剥离,前者变得廉价,后者成为少数人的游戏。
所以,当Sam Altman轻描淡写地“感谢”过去时,程序员们听到的,是对自己整个职业身份的轻蔑,和一句冷冰冰的告别。
最精彩的不是Sam Altman说了什么,而是这篇素材里程序员们的反应。它揭示了从业者内心真实的、层次分明的恐惧:1. 道德层面的愤怒(我的作品被偷了);2. 商业层面的警惕(我正在被温水煮青蛙);3. 身份认同层面的危机(我到底是谁,我的价值是什么)。那个用AI刷题的失业工程师的例子,堪称年度最佳赛博朋克微型小说。
“在2026年,AI编程已不再是实验性的尝试,而应该成为企业软件开发的核心生产力。本手册源于TRAE团队在构建AI编程助手过程中的真实实践——我们用AI构建AI,在这个过程中积累了从方法论到工程实践的完整经验。
这不是一本理论书籍,而是一线研发团队的实战总结。我们将分享如何将AI真正融入企业级开发流程,如何建立可复制的工程规范,以及如何让团队从“会用AI”到“精通AI编程”。无论你是技术决策者、架构师还是一线开发者,都能在这里找到可落地的方法和工具。
AI时代的软件开发不是替代人类,而是重构协作方式。让我们一起探索这个新范式。”
LLM的原生语言其实是诞生于50年前的Unix命令行。本文揭示了为什么一个简单的`run(command)`工具,比庞大的专用工具库更高效、更符合LLM的“思维模式”。
前Manus(后被Meta收购)的后端技术负责人Morro Hsu,最近分享了一个他干了两年AI Agent后得出的、足以颠覆许多开发者常识的结论:他已经完全抛弃了主流的Function Calling。
取而代之的,是一个简单的`run(command=“...”)`工具,配上最古老的Unix命令行。
这听起来很反直觉。在OpenAI、Google等大厂的官方文档里,精细的、结构化的Function Calling/Tool Calling被奉为圭臬。你以为,给AI Agent的工具库越丰富、越结构化,它就越强大。
但现实是,LLM早已在数十亿行代码的训练数据中,把Unix命令行玩得炉火纯青。当你需要“读取日志文件,筛选出错误行,并计算总数”时,Function Calling的思路是三次调用:`read_file()` -
Hsu把这种模式总结为“启发式设计”,核心是三点:
1. 渐进式`--help`发现:Agent不需要一次性加载所有工具文档。它会像人类一样,先调用`memory`空命令看看用法,再用`memory search`探索具体参数。LLM按需探索,极大节省了宝贵的Context。
2. 把错误信息当导航:当Agent用`cat`命令试图读取一张图片时,传统的CLI只会报错。但Hsu的设计会返回:`[error] cat: binary image file. Use: see photo.png`。错误信息直接指明了正确的路,Agent下一步就知道该怎么做,而不是原地打转、盲目重试。他分享了一个惨痛案例:因为stderr(标准错误流)被静默,一个Agent为了安装一个包,在`pip`,
uv, `apt`等命令间盲目重试了10次,浪费了大量时间和token。3. 两层架构:这是最关键的工程洞察。命令的执行(执行层)和返回给LLM看的结果(表现层)必须分开。执行层追求Unix管道的原汁原味,数据无损传递。而表现层则为LLM服务:自动截断超长内容并告知其完整路径、将二进制文件替换为提示信息、附加上`[exit:0 | 12ms]`这样的元数据。这能防止LLM的Context被垃圾信息污染,并让它逐渐学会评估每个命令的成本。
这个思路不是要给Agent一个完整的Linux系统,而是要用LLM最熟悉、最原生的“语言”和它沟通。就像Hsu在讨论中回应的那样:Shell是超集。你永远可以从Shell里调用Python代码,但反过来,在一个纯代码环境里调用Shell命令,本质上只是给自己多绕了一段路。
这篇分享最牛的地方,是把一个看似“退步”的技术选择(用50年前的CLI代替时髦的Function Calling),升华成了一种更深刻、更符合AI第一性的设计哲学。它没有停留在“CLI更好用”的表面,而是解剖了“为什么好用”(训练数据吻合度、可组合性)和“如何才能好用”(渐进式帮助、导航式报错、分层架构)。其中“stderr是Agent最需要的信息”和“Shell是超集”这两个论断,堪称金句,点醒了无数还在工具集里打转的开发者。这是一种工程上的返璞归真。
和AI协作编程,最磨人的瞬间莫过于它突然“痴呆”。上一秒还在讨论的复杂逻辑,下一秒就忘得一干二净,让你怀疑自己带的是个患有短期记忆丧失症的实习生。有用户在社区里承认,他曾被气到对着屏幕大吼“给我他妈的集中注意力”,结果居然管用了一阵子。
你以为解决办法是花更多钱买更大的上下文窗口,或者每次都耐着性子把需求重复一遍。其实,当你还在用“复制粘贴”对抗遗忘时,一小撮人已经在使用Claude内置的两个“隐藏开关”,实现了完全不同的工作流。更关键的是,他们发现了一个不成文的规则:给Claude的长期记忆文件(MEMORY.md),它每次只会读取前200行。
这个200行的限制,听起来像个缺陷,但它却成了高手们的过滤器。他们意识到,记忆文件不是一个倾倒所有信息的垃圾场,而是一份极其精炼的“每日简报”。里面只写最重要的项目决策、已踩过的坑、必须遵守的代码规范。这强迫他们像训练真正的下属一样,思考什么信息才是最高信噪比的。
而另一个功能Stop Hooks,则像是给AI设定了一套“肌肉记忆”。比如,你可以设定一条规则:“写完任何代码后,自动运行格式化和语法检查”。或者“在制定计划后,先自我审计一遍有无遗漏边缘情况”。这让AI从一个被动等待指令的工具,变成一个拥有初步“工作习惯”的协作者。一来一回的聊天没有了,取而代之的是一个设定好规则便能自动运转的系统。
当大多数人还在问“AI能做什么”的时候,一些人已经开始定义“AI应该怎么做”。他们讨论的黑话已经变成了“Ralph Loop”(一种自循环工作流方法论)和“GSD”(一个上下文管理框架)。对他们来说,评价AI生产力的标准,早已不是它能不能写出一段代码。
而是你的AI,究竟是一个需要你手把手教的聊天机器人,还是一个能独立管理上下文、自我检查、并且在你项目里稳定发挥的“数字员工”。这道题,200行代码就能给出答案。
这已经不是在用工具了,这是在驯化一个数字生命。当别人还在抱怨AI的缺点时,一小撮人已经开始为它编写行为准则和反射弧了。未来不属于会用AI的人,而属于会“管理”AI集群的人。