反 Vibe Coding 范式

首先明确本文所使用的 Vibe Coding 概念的定义。本文中,它指开发者主要通过自然语言向 AI 描述需求、提出修改意见和反馈结果,以驱动 AI Agent 编程;开发者主要负责需求表达和结果评估,注意力从代码转向与 AI 的自然语言交互,具体实现更多交由 AI 自主完成。随着概念流行,出现了将所有 AI 辅助编程都归入 Vibe Coding 的倾向,这会模糊不同 AI 编程模式的边界,也易混淆性质不同的实践。因此,下文所称 Vibe Coding 仅指此义。

……

Fournoas 评论《如何评价UP主峰哥最新的马驹桥视频?》:

马驹桥也要喜迎守桥员了吗?这是好事儿啊

mise 的幺蛾子还在继续飞

前文《mise 升级又出幺蛾子》中记录了 mise 在 Windows 平台上安装 PHP 的坑,这次又发现了一个 mise 在 Windows 上安装 Python 的坑。主要问题是 mise 内置的 Python 插件在 Windows 平台上返回了错误的安装路径。

……

低保不是施舍,而是权利

前几天,一则《低保户女生到香港看演唱会》的新闻引发网络讨论。本以为这类事件早就已经达成了社会共识,没想到新闻底下的评论一边倒地支持取消女生家庭的低保。而支持取消低保的人中,绝大多数核心观点可以概括为:

我都没看过演唱会,你家拿低保的凭啥?

……

一直被错误设计的 HTTP API 参数校验模式

传统 Web framework 或者 HTTP API framework 对于接口参数校验的模式通常如下:

  1. 为每个参数绑定一个 Validator 定义
  2. 调用 Validation 对所有参数进行校验
  3. 如果验证失败则返回客户端一个错误列表,包含每一个验证失败的参数以及失败原因

但上述模式是一种错误的设计,是一种职责错位。接口调用本身隐含着契约,应该由调用者负责遵守契约,被调用者负责拒绝违反契约的调用。而不是被调用者逐项校验参数、聚合结果并返回一份错误列表。对于违反调用契约的参数,接口应当尽早失败(fail-fast),直接拒绝调用并返回 ContractViolation 错误。换句话说,接口不负责用户表单验证。如有类似需求,应该另外设计一个专用的用户表单验证接口。

以网页应用为例,在调用后端接口前,前端代码应该保证调用参数符合契约定义,而不应该依赖后端返回的错误消息列表来纠正请求参数。这种错误消息列表本质上是面向人类用户阅读的,仅在验证用户输入时才有意义。因此,应该将验证用户输入的功能从业务接口中剥离。用户输入的验证逻辑可以完全集成在前端代码里,也可以单独设计一个针对用户输入内容的验证接口。

当然,这一切的前提是接口契约必须有明确、规范且可供调用方遵循的文档定义。

……

    Fournoas 评论《男直播主围堵偶像公司 女粉丝护驾遇袭》:

    虽然中国女性权利上限不高,但是下限的确提升了些许:底层女性对男性的依附程度下降、择偶范围向上扩大、可退出性增强。说人话就是,底层女性不再被禁锢于农村以及家庭,可以独立地工作和生活,不再像以前那样必须找个男人结婚过日子。对应的,底层男性的感受就是一种强烈的被剥夺感。这也是很多底层男性所说的“我也是男性之一,我怎么没感受到特权”的原因。

    男性非自愿单身数量远高于女性,经济下行期底层看不到希望。两者又形成正反馈回路,相互影响。由于中国的政治高压,不满没有发泄出口,而两性对立恰好是个安全的替代发泄对象。造成的结果就是,底层男性在亲密关系上的相对剥夺感和挫败感,会在特定经济和社会环境下转化成针对整个女性群体的敌意。我姑且将这一现象称作“INCEL踢猫效应”。

    Fournoas 评论《购物车实验—为什么说婴儿在18个月之后才具有自我意识?》:

    心理学中著名的“购物车实验”(Shopping Cart Study)是发展心理学中用来测试婴儿自我意识(Self-awareness)与身体自我概念(Bodily self-concept)的经典实验。

    实验过程与原理

    • 实验设置:研究人员让14到18个月大的婴儿站在一块毯子上,毯子上连着一辆小型购物车。实验要求婴儿把购物车推给妈妈。
    • 核心阻碍:毯子上有一条固定的或连接着车子行进的物理阻碍——即婴儿自己正踩在这块毯子上,导致车子无法向前推动。
    • 14个月婴儿的反应:年幼的婴儿会用力推车,或者拉车,但他们不理解为什么车子纹丝不动,也意识不到是自己正踩在毯子上阻碍了车子,无法解决问题。
    • 18个月婴儿的反应:稍大的婴儿会停下来观察,很快意识到“我踩在毯子上”这个物理关系,然后主动走下毯子或把毯子卷起来,再顺利推动车子。

    心理学结论

    • 自我认知分水岭:该实验证明人类婴儿在大约 18个月 时,开始真正建立起“区分自己与外部环境”的自我意识。
    • 协同能力:它表明孩子不仅能感知物体间的因果关系,还能把“自己的身体”当做一个独立的外在物理实体去进行空间思考。

    有没有可能是某头巨婴早就意识到自己才是车子无法前进的障碍,但它就是赖在毯子上不肯下来?🤔

    如何在 Coding Agent 中使用 agent-browser
    本文涉及的问题是因为我的环境非主流引起的。按照官方文档安装使用不存在以下问题。

    关于 agent-browser 工具,可以先看看 AI 是如何介绍的:

    agent-browser 是一个面向 AI Agent 的浏览器自动化 CLI 工具,让大模型能够像人一样操作网页:打开页面、读取内容、点击按钮、填写表单、截图、处理登录状态等。

    不像传统 Playwright/Selenium 经常需要解析庞大的 DOM,它通过 snapshot 输出精简的无障碍树,并给元素分配引用,例如 @e1、@e2,Agent 可以直接操作这些引用,减少上下文消耗。

    简单地说,就是一个操作浏览器访问网站的工具,最大的特点是节省 Token。

    ……

    VirtualBox VBoxUSBMon 和 usbipd-win 冲突

    今日通过 WinGet 升级 VirtualBox 7.2.14,安装失败。退回安装老版本 7.2.12,依旧安装失败。查看安装日志,发现问题出在启动 VBoxUSBMon 服务失败:

    VBoxInstallHelper: *** Error: Starting service 'VBoxUSBMon' failed: VERR_UNRESOLVED_ERROR (1058 / 0x422)
    MSI (s) (D4!70) [09:54:46:712]: Closing MSIHANDLE (1754) of type 790531 for thread 8304
    VBoxInstallHelper: ServiceControl: Handling done (rc=VERR_UNRESOLVED_ERROR)
    MSI (s) (D4:8C) [09:54:46:713]: Closing MSIHANDLE (1744) of type 790536 for thread 19532
    CustomAction ca_VBoxUSBMonDrvStart returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)

    联想到前几天安装 usbipd-win,当 VirtualBox 虚拟机正在运行时,会安装失败,必须关闭虚拟机才能安装。我就怀疑这俩家伙有冲突。果然,在卸载 usbipd-win 后,重新安装 VirtualBox 成功。

    ……

    mise 升级又出幺蛾子
    原来是 mise 官方不再支持第三方编译的二进制文件。这种 Breaking Change 应该在升级时有明确提示,这也太粗糙了。

    使用 mise 管理 Windows 平台的开发工具已经有一阵子了。这几天突然发现 mise 管理的 PHP 失效了。现象是找不到 php 命令、重新安装 PHP 失败。疑为某次 mise 版本升级导致的问题。

    ……