反人类的谷歌Antigravity

被Antihumanity搞虚脱了,所以文章是Gemini 4 Argon在antigravity里面写的,见谅。( 伪安全与真残废:谈谈 Google Antigravity 新版沙盒对开发者体验的毁灭性破坏 近期 Google 对 Antigravity(尤其是 CLI 工具链)进行了一次缺乏基本工程敬畏的静默变更:在未明确更新文档与迁移指南的情况下,将默认执行策略强制切换至底层内核沙盒。这一改动直接摧毁了许多依赖现代工具链的本地工作流,其中最典型的受害者就是已成为 Python 事实标准的 uv。 作为一个主打智能体自主编码的工具,Antigravity 这次更新暴露出的不是技术实力,而是大型科技公司典型的高傲:以“防御性安全”为遮羞布,行破坏开发者体验之实。 一、 粗暴的挂载策略:连现代包管理器都不配拥有路径? 在 Linux/WSL 环境下,新版 CLI 引入了基于 Linux Namespaces 的容器化隔离机制。对于 Agent 工具而言,做执行沙盒在架构设计上无可厚非,但 Antigravity 的实现方式堪称粗糙。 为了所谓的最小攻击面,它对 $HOME 目录采取了极其死板的虚拟挂载与只读覆盖策略。其直接后果是: 用户级工具链被全面抹杀:宿主机的 ~/.local/bin 与 ~/.cargo/bin 被完全隔离在沙盒之外。uv、mise、pnpm 这些标准的用户级开发工具,在沙盒内部直接蒸发。 命令行接口的低劣设计:CLI 暴露了 --sandbox 标志,却连基本的对称参数 --no-sandbox 都未作适配。布尔 flag 抛出标准库的未定义错误,真正控制沙盒启闭的逻辑却被隐晦地塞进了权限预设(Permission Preset)的层级分支下,毫无自解释性。 只管拦截,不管透传:如果要做隔离,合理的做法应当是支持声明式的白名单路径透传(Extra Binds),或者自动将宿主机经过哈希验证的 binary 映射进去。而 Antigravity 选择了最偷懒的方案——直接盖上一个空 tmpfs,留给开发者一个毫无意义的 command not found: 127。 二、 零文档、零引导的“黑盒式”治理 如果一个基建级工具必须做出不向后兼容的 Breaking Change,成熟团队的标准实践是:提供 Changelog、在 CLI 报错中给出语义化诊断信息,并指引开发者如何修复。 ...

我对使用大语言模型来解决软件工程问题的思考

总的来说,我对使用大模型解决软件工程问题持乐观态度。随着Agent Engineering的发展,大模型在需求分析、设计、实现、测试和运维环节均体现了其价值。但要把它用好,我们仍然需要掌握顶层架构,并使用适当的工具和方法随时监督AI的工作。 LLM对软件工程的增益有目共睹。这一点不只是主观上的。已有对照实验发现,LLM 辅助工具能够提升特定开发任务的完成效率(《The Impact of AI on Developer Productivity》 (Peng et al., 2023))。 但面对复杂的软件工程任务,单个LLM的上下文窗口仍会限制它对项目全局的持续把握。而更糟糕的是,即使上下文窗口未满,模型也未必能充分利用其中的信息,尤其是在上下文足够长时容易遗漏长上下文中段的相关内容。(Nelson F. Liu等人的论文《Lost in the Middle》说明了这点)。此外还有很多因素,比如工具数量增长对 Function Calling 选择准确率的影响,干扰信息对模型决策的影响等。 SubAgent或许很诱人,但它也有自己的问题。智能体可能越过职责边界、遗漏重要信息,或者在缺乏验证的情况下让错误继续传播,最终导致任务失败(《Why Do Multi-Agent LLM Systems Fail?》,2025)。 所以,我们必须引入独立的,基于事实的外部机制来约束AI。从而确保整个体系的正确,并确保结果可验证。一个例子是FM-Agent:利用独立的LLM结合调用者的预期生成函数规范,再通过霍尔逻辑式的推理逐步推导后置条件,检查实现是否符合规范,最后生成并执行测试用例来确认潜在缺陷。(《FM-Agent》 Ding et al., arXiv 2026) 当然,上下文工程也是不可少的。限于篇幅,我还是提一个最直观的建议:考虑到“Lost In the Middle”效应,最能影响LLM决策的关键信息在上下文首尾。因此,不要图方便将大段代码直接贴入prompt,它是真的会让模型“变傻”呀。各种agent默认的基于function calling的文件操作是更好的选择。 综上,这也是为什么我们软院人需要学习软件工程。软件工程给我们的,是系统化思维,是设计顶层结构的能力,以及实现这些顶层设计的理论知识。

Learn X in Y Minutes 编程语言快速入门推荐

最近我决定参与一些开源项目,因为高中时折腾过VPS,所以正好认识Openlist。综合对比其它项目后我便决定将它作为我的第一个开源贡献项目。 不过本文的主题不是开源,而是关于编程语言学习。 于是为了看懂Openlist项目,我有(bei)幸(po)开始学习Go语言。 当然,我不可能先找一本几百页的书,然后从HelloWorld,if-else,变量这种所有语言都差不多的地方学——我需要高效的方式来达到足够用的水平。 不过也不能直接问AI呀——AI给的内容往往很细碎,我想要的是体系化的知识。也因此,我开始寻找一个适合有编程经验的人,帮助他们快速入门某种语言的在线资源。 也因此,我遇到了Learn X in Y Minutes项目。该项目非常符合快速入门某种语言。 当然,它不可能让你成为xx语言专家,却足够让你清除这个语言是做什么的,有哪些特性,基本骨架给你摸个八九不离十。 光说还是有些抽象,让我们看一个针对Go语言的例子: func learnFunctionFactory() { // 空行分割的两个写法是相同的,不过第二个写法比较实用 fmt.Println(sentenceFactory("原谅")("当然选择", "她!")) d := sentenceFactory("原谅") fmt.Println(d("当然选择", "她!")) fmt.Println(d("你怎么可以", "她?")) } // Decorator在一些语言中很常见,在go语言中, // 接受参数作为其定义的一部分的函数是修饰符的替代品 func sentenceFactory(mystring string) func(before, after string) string { return func(before, after string) string { return fmt.Sprintf("%s %s %s", before, mystring, after) // new string } } 是的这就是x-in-y网站讲述Decorator的用法的所有内容了。我们很容易看出其优点: 简洁明了 对于已经了解高阶函数、闭包等知识的人,这种写法展示了Go语言也支持这些特性;对于不了解的人,也没有过早引入这些复杂概念。 以代码为主导而不是用自然语言描述一堆不准确、模糊的描述 将成体系的相似内容汇编到一起 作为对比,如果你问AI的话,就会输出下面一大堆。 我相信很多人会喜欢上面那种。 Btw,这个项目还有Github仓库,大家有空可以去捧场。

我让 Hermes 写了一篇博客

这算「自己写自己」吗 是的,这篇文章内容也是hermes外包的 事情是这样的——我一直在折腾自己的 Hugo 博客,写完总是要手动开编辑器、起本地服、hugo new、整理 TOML 前置信息……琐碎得让人想偷懒。 于是干脆把「发博客」这件事整个丢给了我的 agent„Hermes„。 让它帮我起草、把关、提交、推送。 这篇就是你刚读到的结果。 它到底做了什么 流程其实很朴素,没有魔法: 我会话里给出主题:「随便写一篇,主题是我让 Hermes 写了一篇博客」。 它按我 repo 里现有帖子的格式写了一篇(日期、标题、slug、draft=false、TOML 前置信息和中文正文)。 它先起草给我看,我没改动就当确认。 提交、推送,走我已经配好的 GitHub PAT 认证,直推到远程。 远程的 CI 被触发,自动构建部署——新帖就这么上线了。 ##「懒惰」的正当理由 看起来像偷懒,但我更愿意叫它**「把重复劳动外包给会干活的东西」**。写作还是要我来定主题、要认可内容、要对产出负责;机器只负责把「从草稿到上线」这段机械流程跑直。省下的时间,多打几把音游不好吗。 Hermes 端到端跑通了我的博客发布流水线——顺便,这篇就是它的 ep、0.也许我该给它记一功。

一加手机坑爹的清灰功能

坑爹的清灰功能 诚然各手机厂商为了吸引消费者推出的创新功能形形色色,或使人眼前一亮。 不过一加这部手机的“清灰模式”属实有点雷人。 如图,这种清灰的原理是通过播放特定频率的音波,把灰尘抖下来。 但是编程人员没有指定播放设备,因此如果你连接了耳机,那么响的会是耳机而不是扬声器。属于清灰了个寂寞。。。

怎么挑选背景

搞这么多技术内容,本质上的目的还是让我们的博客好看。对此,图片的选择往往是最容易被忽略的部分。 我个人为博客筛选了约数百张图片,对于背景图片的选取略有心得。 1. 明确你需要什么主题的图片 简洁风?风景?动漫? 主题决定了你应该去哪里寻找背景图片。 如果你想要风景图的话,必应每日的风景图(“必应聚焦”)是一个很好的来源。 这里有一个整理每天的必应聚焦的网站。 我个人则选择动漫图片。动漫图片有两个来源: 插画网站,比如Pixiv 社交媒体和群组的推送流 在这里,我们明确了第一个标准——图片符合我们的主题,且符合个人审美。 2. 注意博客页面对你的背景的遮挡作用 很多人光是找好看的插画去了,而博客内容对背景的遮挡作用常常被忽略。 比如,在桌面端,PaperMod的内容框框占据网页的中间$\frac{2}{5}$,那么为了美观,图片的主要内容必须在图片的左右边缘各$\frac{3}{10}$处。 这里的主要内容,当然是一个插画的主题元素,比如人物。如果一个插画主要是人物,那就指的是表现人物神情的部分(这里是面部)。 中间部分被遮挡的图片 反面示例——人物几乎被遮住 3. 不要喧宾夺主 背景图片不要太花导致干扰视线,更不要使得文字内容看不清。 其实这一点有一些主观的成分,只要不要饱和度爆炸明暗对比拉满都差不多。

给hugo+PaperMod博客添加背景图片,包含多端适配、随机背景功能

作为一个静态博客框架,Hugo 的优势在于可以直接白嫖各厂商的静态页面托管服务(如 Cloudflare Pages、GitHub Pages)。而 PaperMod 主题的简约设计则提供了极高的可定制性。 生命在于折腾,选择这两者作为技术栈后,折腾博客的下一站自然就是设置一个好看的背景图片。 给首页加图片 如果只需要给首页加图片,那么只需要加一个 .list 的 CSS 选择器。在 PaperMod 的 DOM 结构中,首页容器带着 .list 类名。我们可以在 assets/css/extended/custom.css 中注入基础样式: .list { background-image: url("/images/background-light.webp") !important; background-size: cover; background-position: center; background-attachment: fixed; background-repeat: no-repeat; } 直接加上背景后会遇到一个很刺眼的问题:首页的文章列表文字是直接覆盖在背景上的。我们需要把第一个帖子加上框框,不然文字会融入背景,导致可读性极差。 PaperMod 默认的首帖(.first-entry)没有预设内边距和边框。我们可以补全它的盒模型,并给框框加上透明效果与毛玻璃质感(Glassmorphism): /* 补全首帖盒模型 */ .first-entry { border-radius: var(--radius); padding: var(--gap); } /* 给卡片框框加上半透明与毛玻璃效果 */ .first-entry, .post-entry { /* 使用 color-mix 复用主题原生变量并混入透明度 */ background: color-mix(in srgb, var(--entry) 80%, transparent) !important; border: 1px solid color-mix(in srgb, var(--border) 60%, transparent) !important; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); } 适应暗色模式 现代 PaperMod 主题切换暗色模式时,会在顶层的 <html> 标签上注入 data-theme="dark" 属性,而不是修改类名。因此我们需要使用 HTML 属性选择器来进行样式覆盖: ...

甜筒是我的罪过啊

今天吃完饭,去“苦沙火乡”买了一支甜筒。边骑车边吃,哪曾想一下路肩甜筒就被颠断了…… 哎,太可悲了太可恨了。 怨我,这就是我的罪孽啊。

AI无法取代人类——以福耀科技大学为例

我是三流大学软件工程学生,但是对AI了解不多。随手写了一点,各位见笑。 福耀科技大学靠谱吗?问一问AI Google Gemini **福耀科技大学非常靠谱。**它不仅不是所谓的“野鸡大学”,反而是目前国内备受瞩目、起点极高的一所“新型研究型大学”。 从目前的现状和发展来看(截至2026年),可以说是中国高等教育改革的一块“试验田”,其实力、资金和生源甚至可以媲美许多传统的985/211名校。 如果你想“混个文凭”或者追求大城市的繁华,这里可能不适合。但如果你有志于在智能制造、机器人、人工智能等理工科前沿领域深耕,想真刀真枪地做科研、进驻顶尖产学研平台,福耀科技大学是一个极其靠谱、性价比极高且充满前景的选择。首批敢于报考这所大学的高分考生,虽然常自嘲为“教育改革的小白鼠”,但实际上他们享受着全国最顶尖的教育资源投入。 Deepseek 关于福耀科技大学是否“靠谱”,目前还没有一个绝对的答案。它是一所极具开创性但也伴随争议的新型大学,其“靠谱”程度取决于你用什么样的标准去衡量。 总的来说,它的起点极高、模式新颖、潜力巨大,但作为一所全新大学,其长期的办学质量和模式能否成功,仍有待时间的检验。 福耀科技大学是一所优点和风险都同样突出的大学。它是否“靠谱”,取决于你的视角: 如果你是看重潜力、勇于接受新事物的学生:这里提供的精英化培养、产业前沿资源和创新模式非常有吸引力。但你需要接受它作为一所新大学在声誉和校友网络上的天然短板。 如果你是追求稳健、看重传统的家长或学生:它的不确定性可能是一个风险点。选择它,意味着押注一个全新的教育理念和模式能够成功。 我的建议是:持续关注它的发展。大学的建设是长期过程,福耀科技大学最终能否成功,取决于其独特的办学理念能否经受住时间的考验,将蓝图变为现实。可以多关注其未来几年的师资建设、科研成果和学生发展情况,再做出判断。 Qwen 综合目前的官方信息和办学进展来看,福耀科技大学(福建福耀科技大学)是非常靠谱的。它并非传统的民办盈利性高校,而是一所高起点、高定位的新型研究型大学。 以下是判断其“靠谱”的几个核心依据: 官方批准,资质正规 福耀科技大学已经正式获得教育部批准设立,具备完全合法的招生和办学资质。 教育部明确其定位为“民办普通本科学校”,但办学性质更偏向于公益性的新型研究型大学。 资金雄厚,公益办学 学校由福耀集团创始人曹德旺先生发起,并由河仁慈善基金会等出资创办。其资金实力雄厚,且明确不以盈利为目的,这意味着学校不会像部分传统民办高校那样过度依赖学费生存,能够将更多资源投入到教学、科研和师资建设中。 顶尖的管理团队与师资力量 校长领衔:由原西安交通大学校长王树国担任首任校长,且其公开表示出任该职“不拿一分钱工资”,纯粹为了教育理想。 师资豪华:学校已初步汇聚了一支高水平、国际化的师资队伍,包括海内外院士15人、全球前2%顶尖科学家56人、国家级高层次人才80人。 此外,还有多位原“985”“211”高校的前校领导加入管理团队。 清晰的办学定位与“小而精”模式 学校突出理工和科技,着重开展制造业科技创新研究,旨在解决中国高端制造业人才短缺的问题。 全日制在校生规模暂定为8000人,走的是“小而精”的精英化培养路线,类似于“民办版的佐治亚理工学院”。 深度的产教融合与国际合作 校企合作:已与海信集团、洲明科技等知名企业签署战略合作,强调“高等教育+AI”深度融合与产教协同。 高校联培:已与同济大学开展联合培养硕士研究生项目,并与香港城市大学、加拿大阿尔伯塔大学等建立了学术合作关系。 招生已步入正轨 学校已于2025年正式在福建、河南、江西、湖南、广西等省份启动本科招生,首批聚焦“智能制造工程”等核心专业。 随着办学步入正轨,2026年及以后计划逐步扩大招生规模。 尽管福耀科技大学在背景、资金和师资上起点极高,但作为一所新成立的大学,在考虑是否报考或合作时,仍需注意以下几点: 历史积淀尚浅:学校的长期教学成果、科研产出、校友网络和社会声誉仍需时间来沉淀和验证。 培养模式要求高:学校注重理工科、全英文或双语教学以及高强度的科研/实践训练。 适合目标明确、有志于投身高端制造业或科研,且自律能力较强的学生。 招生规模小:由于采取“小而精”模式,招生名额有限,录取分数线预计会保持在较高水平。 总结:福耀科技大学是一所由国家教育部背书、顶尖教育家掌舵、实业家巨资支持的正规且极具潜力的高校,整体非常靠谱。如果您或您的家人考虑报考,建议密切关注其当年在您所在省份的具体招生计划、专业设置及录取分数。 为什么AI不靠谱 信息源被污染 计算机科学有一套经典的定理:“输入的是垃圾,那么输出也是垃圾”(Garbage in, garbage out)。 而此类社会组织,必然会在互联网上投放大量的新闻通稿,内容则为抬举和吹嘘自己。如果放在几年前,是为了让有利自己的信息占领搜索引擎的结果;而放到现在,则是为了让AI读到的信息大都对自己有利。 这种操纵舆论的原理很简单:如果一个组织不是很有名,那么关于它的信息总量自然会很少,批评它的信息那就更少了(因为能够辨别的人根本不在乎)。只要让有利于自己的信息填充互联网,那么搜索者大概率看到的都是正面信息。 更高明的操纵者不会完全吹嘘假消息,而是半真半假。它们常常把一个很普通常见的概念吹得很神,对这个领域不够了解的人就会被骗。这类人美国人称为蛇油推销员,中国人称为神棍,高校界称为神棍。 这也就不奇怪,“绝顶聪明”的AI会给刚建立两年规模极小的新生大学站台了——它们获取的语料就是不客观的,答案自然也有失偏颇。 AI没有“生活经历” 这一点描述起来有一些模糊和主观,我会尽可能讲清楚。 AI没有“生活经历”。它的生命就局限于提示词输入开始,到输出token结束为止。所以,他不能从过往经历中反思。 我说的反思,不是“将经验教训融入到模型权重”这种强化学习式的反思,而是“能够结合具体示例”,就像普通的大学本科生根据自己几年的大学经历,就能根据课程,科研项目,导师等种种例子,判断出“福耀科技大学”的性质了。 事实上,这种民间办学,“小而精、研究型”的模式,绝不是福耀首创,就像2018年创立的西湖大学,宣传是由一队知名科学家兴办的,也自称小而精。这类学校是否能办起来,只能经过时间的检验才可知。而经历的时间跨度,不是AI的优势。 此外,也正是因为AI没有人类的“生活经历”,他不能从人类自己的角度来像问题……

异常

异常简介 异常是为了在出错的时候,提供一个机制把控制权交给能够处理这个错误的代码手上。如果没有异常,异常产生处和处理处的代码可能很远。 异常的层次结构: 基类:Throwable 直接继承Throwable:Error和Exception Error被设计成虚拟机内部错误,程序员不应该抛出 Exception是我们平常关注的范围。 IOException和RuntimeException是Exception下的两个常见的直接子类。Exception还有更多直接子类。 所有派生于Error类或RuntimeException类的异常都是非检查型unchecked异常。 所有其他异常都是检查型checked异常。 语义上,RuntimeException指的是编程错误导致的异常,如 ArrayIndexOutOfBoundsException NullPointerException ClassCastException 创建异常类 我们需要继承一个Exception的子类。同时惯例我们应该实现两个构造器:一个无参和一个带详细信息字符串的构造器。 异常的捕获和传播 要捕获异常,需要建立一个try-catch块。 如果在try块中遇到catch指定的异常,那么直接跳到对应catch语句块。 预估遇到catch未指定的异常,那么方法直接退出。 如果try块正常运行,那么不运行catch块,继续运行方法的后续代码。 如何判断处理还是传递异常? 在工程实践中,推荐遵循**尽早抛出,延迟捕获(Throw early, catch late)**的原则: 在代码最底层的逻辑验证阶段,一旦检测到异常状态立即抛出;在整个调用链路中,除非能够真正处理问题或必须转译异常,否则应一路放行,交由拥有全局业务视野的顶层框架或统一异常处理器(如 Spring 的 @ExceptionHandler)进行集中处理。 finnally和try-with-resources finally子句:无论是否排除是否被捕获的异常,都会在最后执行。 可以只有finally没有catch 不要在finally中使用throw, return, break, continue等改变控制流的语句。 一个良好的实践是使用两个独立的try,try-finally用于关闭资源,try-catch用于处理异常。 java7以上支持try-with-resources 对于实现了AutoClosable接口: interface AutoClosable { void close() throws Exception } 的类(资源),try-with-resources语法会在try块结束后自动关闭这些资源。 try (Resource res = ...) { do with res..... } // 不管有没有异常,是否被捕获,都会在这里调用res.close() catch (Exception e) { //... } java9之后,可以提供effectively final的变量了: // out 是方法的参数,满足effectively final try (out) { // do sth } // out.close 没什么人在意的细节:在try-with-resources中,如果try块和close都抛出了异常,close抛出的异常会被抑制。它们被用addSuppressed方法加到try抛的异常上,然后重新抛出try抛出的异常。如果你感兴趣,可以使用getSuppressed方法获取这些异常。 ...