MoreRSS

site iconDeppWang | 德普王修改

男|程序员|爱折腾|工具控|五笔 er|麻将爱好者
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

DeppWang | 德普王的 RSS 预览

给踏板摩托车换轮胎

2026-06-07 08:56:07

前两天在小区骑踏板摩托车取快递突然发现摩托车方向不受控制了,以为是摩托车龙头出现问题了,结果发现是后轮爆胎了。运气很好,在小区爆胎,没有在上班骑行过程中爆胎。

我这个胎算是自然磨损报废,毕竟跑了 20000 多公里了,胎纹基本都磨平了,其排水性能减弱很多,其实下雨天骑还是有点安全隐患的,这种最好提前换的。

爆胎后我想到的第一件事就是爆胎了还能不能开,好去开去维修店换。给平时保养的店的老板打了个电话咨询了下,他说只要不剧烈颠簸是可以开的。我就直接开到附近维修店里去换胎了,发现确实也没啥影响,轮毂质量挺好,毕竟正常胎压时车辆重量最终也是由轮毂承担的。但也骑不了多快,最多 20km/h,快了容易甩尾。

我的车是铃木 UE 125 踏板摩托车,原厂轮胎品牌是 Cordial(诚远),我是打算换原厂胎的,奈何维修店没有。推荐我换半热熔胎,但我查了下半热熔胎在热胎后抓地力会更好,踏板摩托车日常行驶其抓地优势未必明显,还是更适合大排量摩托车或者更激烈的驾驶场景,再加上磨损会更快,所以还是选择了普通真空胎。

但老板普通真空胎选择不多,就两种。

建新 黑猫


两款轮胎价格相同,因为我更喜欢建新的包装,而且包装上标有官方网站,所以最终选择了建新轮胎。

也顺便了解了下原装轮胎上的数据含义。


数据含义:

  • 100/90-10。轮胎宽度约 100mm(10cm),轮胎扁平比 90 %,轮胎高度 = 宽度 * 扁平比 ≈ 90cm,轮毂 10 英
    • 我换的轮胎规格是 3.50 - 10,其轮胎宽度是 3.50 英寸(89 mm),相当于窄了 1 cm 左右,也是适用于 10 英寸轮毂。其高度是差不多的。宽度窄了 1 cm 左右,应该摩擦力小了些、抓地力要小些、刹车距离会变长,但应该油耗会略低
  • 56J。是最大载重 + 最高速度。56 对应最大承载能力 224 千克,J 对应最高允许速度 100 千米/小时
    • 我换的这个轮胎是 51J,51 最大承载能力 195kg,可能是因为轮胎窄了 1cm,承载能力也减弱了
  • 4PR。PR 是 Ply Rating(层级),代表轮胎强度。4PR 普通,6PR 加强
  • TUBELESS。无内胎的(真空胎)
  • AT 250 kPa。表示相关载荷数据是在 250 千帕胎压条件下测得
  • CORDIAL。诚远轮胎英文品牌名
旧轮胎 新轮胎

轮胎其实也要看花纹,花纹主要决定排水性。踏板摩托车用普通真空胎基本都是晴雨胎,让晴天与雨天都能使用,其花纹基本也差不多,所以也不用太纠结花纹。

此次更换轮胎共花费 180 元,其中包含安装费。老板说我换的普通真空胎进货价 95 元。我又问了下,如果自己买轮胎,来他这换,手工费是 50 元。相当于轮胎卖 130 元。但我在淘宝看了诚远原装胎也才 110,所以如果自己购买原厂轮胎后再到店安装,价格可能更低,也能继续使用原厂轮胎。

我对钱的理解

2026-06-03 00:13:52

钱是王八蛋,长得真好看。

一个人只要活着,就会需要用钱。钱到底是什么?这个问题好像很好回答,我们可以说:钱就是货币嘛。但好像也不太好回答。

钱和价值是什么关系?什么是资产,什么是负债?为什么钱会贬值?房价为什么会影响整个社会的消费能力?GDP 和金融这些听起来很大的概念,和一个普通人又有什么关系?

今天我就来谈一下我的理解。

钱是自己生产价值的体现

每个人都可以通过劳动、商品或者服务创造价值。打工,是出售自己的时间和能力;卖东西,是出售商品;做生意,是提供别人需要的产品或者服务。

与此同时,人为了活下去,为了活得好,也需要消费,比如食物、衣服、房子、电影等。

钱是价值的一种表现形式。它最大的作用,是让交换更加方便。如果没有钱,我想用一袋米换一双鞋,卖鞋的人却不一定需要米。有了钱,不同的商品、服务和劳动就可以交换。

所以,你挣到的钱,是你自己生产价值的一种体现。之所以说是「一种体现」,是因为钱并不等于价值本身。你的生产价值最终能够换到多少钱,会受到市场供求、议价能力和所处环境的影响。

资产是过去,负债是未来

如果自己生产的价值超过自己需要的消费价值,多余的部分就可以存储起来。

这些没有被消费掉的结余,可以是存款,也可以变成房子、股票、基金或者其它东西。它们都是资产。资产让你即使暂时不再生产,也可以在一定程度上使用过去积累下来的价值。

所以,对于个人来说,资产是个人过去生产价值的一种体现。

结余可以转化为资产,资产也可以通过负债获得。例如,一个人可以贷款买房,也可以贷款购买生产设备。但这些贷款都需要用未来的收入偿还。

负债则相反。贷款让你可以提前使用还没有生产出来的价值,但是未来需要偿还。换句话说,负债就是需要使用未来的生产价值。

比如,一个人贷款买房,相当于提前买下了现在还买不起的房子。在未来的很多年里,他都需要用自己的收入偿还贷款。他未来生产出来的一部分价值,已经被现在的选择提前锁定了。

当然,资产和负债并不是完全对立的。贷款买设备或者扩大公司规模,都可能让人获得能够继续产生收入的资产。但是,如果负债只是为了提前消费,而且超过了未来可以承担的范围,它就会成为长期的压力。

为什么钱会贬值

钱可以存储价值,但钱本身也会贬值。

当商品和服务的整体价格上涨时,同样数量的钱,未来可以买到的东西就会变少。也就是说,即使你把钱存起来不动,它的购买力也可能下降。这就是通货膨胀。

现代经济通常允许温和的通货膨胀。一方面,这意味着手里的现金会慢慢贬值;另一方面,它也会推动人们消费或者投资,让钱继续流动,让这个社会 run 起来。

所以,多余的钱最好不要只储蓄。可以根据自己的情况,通过投资把一部分钱配置为资产,争取抵御通货膨胀,尽量保存自己过去的生产价值。

但投资不代表一定赚钱。房子、股票、基金都有风险。把钱换成资产,只是多了一种保存价值和获得收益的可能性。

GDP 是一个国家或地区一段时间内的新增生产

对于个人来说,挣到的钱是自己生产价值的一种体现。对于国家来说,GDP 是这个国家一段时间内新增生产价值的体现。

GDP 是 Gross Domestic Product,中文叫国内生产总值。它是衡量一个国家或地区在一段时间内经济规模最常用的指标。

简单地说,GDP 是一个国家或地区在一定时期内生产出来的最终商品和服务的市场价值。它可以从支出的角度计算(净出口不是单纯的「支出」,而是一个调整项):

  • GDP = 居民消费 + 投资 + 政府购买 + 净出口
  • 净出口 = 出口 - 进口

为什么总支出也可以看作总生产?

因为一种商品被生产出来以后,最终一定会有去向:被居民消费,被企业用于投资,被政府购买,被外国人购买,或者暂时进入库存。库存也会计入投资。

生产和支出,是同一件经济活动的两个侧面。

但是,GDP 不能简单理解成所有支出的总和。购买股票、土地和二手房,一般不直接计入当期 GDP,因为这些交易不是当期新增生产。政府发放补贴,也不直接计入 GDP。只有政府实际购买商品和服务的部分,才会计入。

GDP 也不是一个国家拥有的全部资产。资产是过去积累下来的存量,GDP 是一段时间内新增生产的流量。

中国被称为世界第二大经济体,主要就是因为中国的名义 GDP 位居世界第二。

房子、负债和泡沫

房子既有居住价值,也是一种资产。

但是,如果房价太高,普通人就需要为了当前生活,透支自己未来很多年的生产价值。一个家庭把大部分积蓄用来支付首付,再用未来几十年的收入偿还贷款,能够用于其它消费的钱自然会减少。

现在很多人感受到经济压力,一个直观的表现是普通人的消费能力和消费意愿降低了。一个重要原因,就是买房支出在很多家庭中占比太高。大部分普通老百姓把自己过去积累的价值,以及未来很多年的一部分生产价值,都用在了买房上。

房地产扩张过程中的直接受益者包括卖地的地方政府、房地产相关行业,以及部分较早买入并及时退出的投资者。

政府通过卖地获得收入,用于基础设施建设和其它支出。房地产扩张在当期也创造了大量生产和交易:建房、装修、基础设施建设都会在一段时间内推升 GDP。

但是,对于贷款买房的普通人来说,一部分支出并不只来自当下的收入,还需要用未来很多年的收入偿还。假如贷款期限是 30 年,就很像提前使用了未来 30 年的一部分生产价值。从某种意义上说,也像提前收取了未来的一部分税。当越来越多家庭需要长期偿还房贷时,未来的消费能力就会受到挤压。

需要说明的是,房价上涨本身并不直接增加 GDP,二手房交易也不等于新增生产。真正计入 GDP 的,是建房、装修、服务和基础设施建设等新增经济活动。

比如,一套房子在 2015 年建成,当时作为新建住宅计入了 2015 年的 GDP。2026 年,这套房子以 300 万元卖给另一个人。房子只是换了主人,没有新生产一套房。因此,这 300 万元不会再次计入 2026 年的 GDP。但是,交易过程中新增的中介、装修等服务,仍然会计入 GDP。

房价上涨也是一样。假设你持有的房子从 300 万元涨到 500 万元,你的资产账面价值增加了 200 万元,但社会并没有因此多生产商品或服务。所以,这 200 万元也不会直接增加 GDP。

泡沫也不是简单地指房价高。房子的价格超过了居住价值并不一定就是泡沫,因为价格还受到地段、供求和公共资源等因素影响。但是,如果房价主要依赖“以后还会有人用更高价格接手”的预期,而不是实际需求和支付能力,那么其中就有泡沫。

金融是让价值跨越时间

表面上看,金融是一套钱生钱的系统。

当你有多余的价值,不一定要把它转化为实体资产。你可以借给别人,通过贷款收取利息;也可以投资股票、基金,获得可能的收益。

但是,金融也不只是钱生钱。更准确地说,金融是资金在不同的人之间、不同的时间之间进行配置。

别人向你贷款,可以理解为他借走了你暂时没有消费掉的生产价值。他现在使用这部分价值,未来再用自己的生产价值偿还,并支付利息。

利息是资金使用权的价格,也是对时间、通货膨胀和违约风险的补偿。

股票则不一样。买股票,不是把钱借给公司,而是用钱换取企业的一部分所有权。你承担企业经营的风险,也有机会分享企业未来的收益。

所以,金融并不是凭空创造社会财富。它的作用,是让没有被立即消费掉的价值继续流动,让今天的钱和未来的钱连接起来。

最后

在我的理解里,钱不是价值本身,但它是价值的一种表现形式。

你通过生产获得钱,通过消费换取自己需要的东西。没有被消费掉的钱,可以变成资产,让你未来不用重新生产,也可以直接使用一部分过去积累的价值。

贷款则让你反过来操作:提前使用未来的生产价值。

当无数个人、企业和政府都在生产、消费、投资和借贷时,就构成了整个社会的经济活动。GDP 衡量的是一段时间内的新增生产,金融则让资金在不同的人和不同的时间之间流动。

理解钱,不只是为了赚钱。更重要的是知道:自己正在用什么换取收入,正在把价值花到哪里,手里的资产能不能保存价值,以及自己有没有为了今天的选择,透支太多未来的生产能力。

Spec 驱动开发与自验证闭环:我如何让 AI 更稳定地写代码

2026-05-19 22:28:54

最近在公司内部做了一次 AI 编程实践分享,主题叫「Spec 驱动开发与自验证闭环」。这是我这段时间在真实项目里使用 AI 开发后,总结出来比较有价值的两个点。

现在大家用 AI 写代码已经不稀奇了。把需求丢给 AI,让它帮你生成代码,很多工具都能做到。但如果只是这样用,很容易遇到几个问题:第一次生成看起来还可以,后面越改越乱;AI 忘记前面讨论过的需求;代码能跑,但和业务真实想要的不完全一致;改完以后也不知道有没有把原来的功能搞坏。

所以我现在更关心的不是「AI 能不能写代码」,而是「怎么让 AI 稳定地写对代码」。我目前觉得比较有效的方法就是两件事:

  1. 先写 Spec,再写代码
  2. 让 AI 自己验证自己写的代码

什么是 Spec 驱动开发

Spec 是 Specification 的缩写,可以简单理解为「说明书」或者「规格说明」。Spec 驱动开发对应的英文是 Spec-driven development,也可以简称为 SDD。它说白了就是:不要一上来就让 AI 改代码,而是先让 AI 把需求理解、技术方案、接口设计、测试场景写清楚,再基于这些文档去实现代码。

它有点像 AI 工具里的 Plan 模式,但比普通 Plan 模式更进一步。普通 Plan 模式通常只存在于一轮对话里,这次会话结束后,很多上下文就丢了。而 Spec 是落在项目里的文档,它会随着代码一起被维护。

也就是说,Spec 不只是给 AI 看的一段提示词,而是项目的一部分。

我原来用 AI 写代码时,经常会直接说:「帮我实现某某功能」。AI 会很快开始读代码、改代码,看起来效率很高。但这种方式有一个问题,它的理解过程是隐性的。你不知道它到底怎么理解需求,也不知道它准备用什么方案实现。等代码写完后再去 review,成本就比较高了。

Spec 驱动开发把这个过程显性化了。

我会让 AI 先输出类似这样的内容:

  • 当前业务流程是什么
  • 这次需求要改变什么
  • 哪些模块会受影响
  • 准备怎么设计数据库或字段
  • 准备新增或修改哪些接口
  • 正常流程、异常流程、边界条件分别是什么
  • 后面要写哪些测试用例

这些内容确认没有问题后,再让它进入编码阶段。

为什么要先写 Spec

AI 编程最大的问题不是它不会写代码,而是它很容易「自信地写错」。尤其是需求比较复杂、项目代码比较老、业务规则比较多的时候,只靠一段简单提示词,很难让它一次性理解清楚。

先写 Spec 有几个好处。

第一,可以提前发现需求理解偏差。

如果 AI 在 Spec 阶段就把业务流程理解错了,那它后面写出来的代码肯定也是错的。与其等它改完几十个文件后再返工,不如一开始就在文档阶段把方向纠正掉。

第二,可以减少上下文丢失。

AI 的上下文再大,也不是无限的。一次需求可能要分几天做,中间可能还会切换工具、切换会话。如果核心信息只存在于聊天记录里,后面很容易丢。Spec 放在项目里后,AI 后续可以重新读取这些文档,继续按原来的设计往下做。

第三,可以让协作更清楚。

以前我们做开发,很多信息存在人的脑子里:这块为什么这么设计、当时为什么不走另一条路、哪些边界情况已经考虑过。Spec 把这些东西写下来后,不只是 AI 能看,人也能看。后面别人接手这个需求,也能更快理解上下文。

第四,可以让 AI 不要乱改。

我会在项目规则里明确要求 AI:如果需求变化,先更新 Spec;如果代码和 Spec 不一致,先提示我确认;没有确认前,不要直接大面积改代码。

这点很重要。很多 AI 工具执行力很强,但执行力太强也会带来问题。它可能没完全理解你的意思,就已经开始改代码了。Spec 相当于在需求和代码之间加了一道缓冲层。

我是怎么做 Spec 驱动开发的

我的做法大概分成几步。

1、通过 LeanSpec 管理 Spec

我现在主要是通过 LeanSpec 这个工具来落地 Spec 驱动开发。它可以理解为一个围绕 Spec 的命令行工具,帮你在项目里初始化 Spec 目录、创建 Spec、更新 Spec,并给 AI Agent 准备一套围绕 Spec 工作的规则。

当然,Spec 驱动开发的核心不是某个工具,而是「先把需求和方案写清楚,再让 AI 写代码」这个流程。没有 LeanSpec,手动维护 Markdown 文档也可以做。但有工具后,流程会更规范,AI 也更容易知道自己应该把需求写到哪里、应该按什么步骤推进。

我比较看重的是它能把 Spec 变成项目里的固定资产,而不是散落在聊天记录里的临时上下文。这样后面继续开发同一个需求,或者过一段时间再回来修改,AI 都可以重新读取这些 Spec,而不是完全依赖当时那一轮对话。

2、给 AI 准备项目级规则

现在大多数 Agent 编程工具都支持项目级说明文件,比如 AGENTS.mdCLAUDE.md 之类。这个文件可以理解为项目里给 AI 的开发规范。

我会在里面写清楚几类规则:

  • 需求来了以后,先检查是否已有对应 Spec
  • 如果没有 Spec,先创建 Spec
  • 如果已有 Spec,先更新 Spec,再改代码
  • 写代码前要先说明实现方案
  • 改代码后要同步更新测试
  • 修改完成后要执行对应的验证命令

这些规则不一定复杂,但要稳定。因为 AI 每次进项目都会先读这些规则,它就知道这个项目不是随便改代码,而是要按流程来。

3、从 PRD 或需求描述生成技术方案

正常情况下,我们还是会有 PRD、会议纪要、用户故事或者测试同学整理的场景。AI 可以基于这些材料先生成一份技术方案。

这里需要注意一点:PRD 是给人看的,Spec 是给 AI 和开发看的。两者可以有关联,但不一定是同一个东西。

PRD 更关注用户要什么,Spec 更关注系统怎么实现。比如一个需求在 PRD 里可能写的是「用户可以批量分享客户」,但在 Spec 里就要拆得更细:

  • 入口在哪里
  • 权限怎么判断
  • 分享对象怎么筛选
  • 重复分享怎么处理
  • 失败后是否回滚
  • 接口入参和出参是什么
  • 数据库状态怎么变化

这些内容如果不写清楚,AI 就会自己猜。它猜对了是运气,猜错了就是 bug。

4、把大方案拆成接口级或模块级 Spec

一个复杂需求不要只写一份很大的 Spec。我现在更倾向于分两类:

第一类是整体技术方案,主要讲业务流程、数据流、模块关系、整体改造思路。

第二类是接口级或模块级 Spec,讲某个接口、某个任务、某个页面或某个服务具体怎么实现。

这样做的好处是粒度更清楚。整体方案负责方向,接口级 Spec 负责落地。AI 写代码时也更容易根据具体 Spec 去实现,而不是在一大坨文档里找信息。

5、先人工检查 Spec,再让 AI 写代码

AI 参与开发后,不能只等它写完代码再 review。更好的方式是把检查前置,在 Spec 阶段先确认它对需求和方案的理解是否正确。

Spec 阶段要重点看这些问题:

  • AI 是否理解了真实业务意图
  • 有没有漏掉权限、数据状态、异常流程
  • 有没有和现有代码设计冲突
  • 有没有把简单问题复杂化
  • 有没有生成看起来很合理但实际项目里不可行的方案

这一步不能完全交给 AI。AI 可以帮你整理,但最后要不要这么做,还是开发者判断。

什么是自验证闭环

只让 AI 写代码还不够,还要让 AI 验证代码。

我说的自验证闭环,简单说就是:AI 写完代码后,根据预先定义好的验证标准,自己运行测试、检查结果、定位问题、再修改代码,直到验证通过。

这个过程类似这样:

  1. AI 根据 Spec 写代码
  2. AI 根据 Spec 写测试
  3. AI 执行测试或验证命令
  4. 如果失败,AI 读取报错并修复
  5. 再次执行验证
  6. 直到测试通过,再把结果反馈给人

这就是一个闭环。

如果没有这个闭环,AI 写代码就像一个只负责交作业、不负责检查的人。它写完后把结果丢给你,剩下的问题都要你自己排查。这样虽然也能提高一点效率,但还没有真正释放 AI 的价值。

自验证的关键是要有明确标准

「验证」不是让 AI 自己说一句「我检查过了」。验证必须有客观标准。

对后端来说,最直接的标准就是测试用例。尤其是真实启动项目、真实调用接口、真实检查数据库状态的测试,而不是只 Mock 掉所有依赖的测试。

Mock 测试不是没有价值,但如果所有东西都 Mock 掉,AI 很容易写出一种「测试通过但功能没真跑过」的代码。它只是证明了 mock 出来的世界里逻辑成立,不代表真实系统里也成立。

所以我更喜欢让 AI 写接近真实调用链路的测试。例如:

  • 启动 Spring Boot 测试环境
  • 用类似 HTTP 请求的方式调用接口
  • 准备必要的测试数据
  • 校验接口返回值
  • 查询数据库确认状态变化
  • 覆盖正向、反向、边界场景

前端也一样。前端的自验证可以不是单元测试,也可以是浏览器自动化测试、组件测试、页面截图比对、表单交互验证等。重点不是形式,而是 AI 必须能自己执行一套明确的检查。

测试同学其实也可以参与进来。测试同学擅长设计正反例、边界值和业务场景,如果这些用例能在开发阶段就提供给 AI,AI 写出来的测试会更接近真实业务,开发阶段就能提前暴露很多问题。

我是怎么让 AI 做自验证的

我一般会把验证规则也写进项目级规则或 Spec 里。

比如后端项目里,我会告诉 AI:

  • 测试类命名要有固定后缀,方便和原有测试区分
  • 参考项目里已有的测试写法
  • 每个接口按测试组组织用例
  • 测试要检查真实数据库状态
  • 修改业务代码时,要同步修改或新增测试
  • 执行测试时,要使用项目指定的 JDK、Maven 配置和 Spring Profile
  • 测试失败后,不要直接跳过,要先分析失败原因

这些规则看起来比较琐碎,但对 AI 很有用。因为 AI 不知道你本地项目的特殊情况,比如这个项目要用 JDK 8,另一个项目要用 JDK 21;这个项目要指定 settings.xml 才能拉依赖;这个项目要用某个 profile 才能连到正确的测试数据库。

这些东西如果只靠人每次口头提醒,肯定会漏。写到规则里后,AI 每次执行时就能复用。

自验证闭环带来的变化

有了自验证闭环后,我感觉最大的变化是开发者从「手动验收每一处实现」变成「检查验证体系是否可靠」。

以前 AI 写完代码,我要自己启动项目、自己调接口、自己看数据库、自己判断有没有问题。现在很多重复动作可以让 AI 做。它写完代码后自己跑测试,失败了自己改,最后把执行了什么命令、哪些测试通过、还有哪些风险告诉我。

这样并不是说人就不用管了。恰恰相反,人要管更关键的地方:

  • 测试场景是否覆盖了真实业务
  • 测试数据是否可靠
  • 断言是否真的验证了核心逻辑
  • AI 有没有为了让测试通过而改坏业务逻辑
  • 是否还有需要人工验收的场景

也就是说,人从低价值的重复验证里抽出来,更多去做判断和把关。

适用场景和限制

Spec 驱动开发和自验证闭环不是所有场景都必须用。

如果只是一个很小的 bug,十分钟就能改完,也没有复杂业务影响,没必要写一大堆 Spec。直接让 AI 帮你定位和修改,再跑一下对应测试就可以了。

如果是从 0 到 1 做一个新东西,也不一定特别适合一开始就完整走这套流程。因为 0 到 1 阶段需求和方案往往还在不断变化,很多东西还没有定下来,这时候如果一开始就把 Spec 写得很细,后面可能会频繁推翻重写,反而增加额外成本。

它更适合这些场景:

  • 需求比较复杂,需要多轮开发
  • 涉及多个模块或多个接口
  • 后续还会持续迭代
  • 项目有一定历史包袱,容易改出回归问题
  • 团队希望沉淀 AI 可读的项目知识

它也有一些挑战。

第一,团队要愿意维护 Spec。如果只有一个人遵守,其他人都直接改代码,Spec 很快就会失真。

第二,项目规则要持续维护。AI 踩过的坑、项目里的特殊约束、测试命令、代码规范,都需要慢慢沉淀进去。

第三,测试环境要相对稳定。真实测试越接近业务,越依赖测试数据、数据库、配置和外部服务。如果环境不稳定,AI 自验证也会变得不稳定。

第四,PRD 本身也需要更清楚。很多需求文档是给人沟通用的,里面可能省略了大量线下讨论的信息。人能靠经验补全,AI 不一定能。所以未来如果想更好地用 AI 开发,PRD、用户故事、测试用例这些上游材料也要变得更结构化。

总结

我现在对 AI 编程的理解是:不要把 AI 当成一个只会写代码的工具,而是要把它放进一个有规则、有文档、有验证的开发流程里。

Spec 驱动开发解决的是「让 AI 知道要做什么、为什么这么做、怎么做」的问题。

自验证闭环解决的是「让 AI 证明自己做对了」的问题。

前者控制方向,后者控制质量。只有这两件事结合起来,AI 写代码才会从一次性的代码生成,变成相对稳定的工程协作。

当然,这套方式不是银弹,也不是用了以后人就不用写代码了。相反,它对开发者的要求更高了。你要能判断需求是否合理,能看懂方案是否靠谱,能设计出有效的验证标准,也要能识别 AI 为了通过测试而做出的错误修改。

AI 可以帮我们少写很多重复代码,少做很多重复验证,但它不能替我们承担工程判断。未来开发者的价值,可能会越来越多地体现在定义问题、制定规则、检查结果和控制风险上。

代码可以让 AI 多写一点,但方向和标准还是要掌握在开发者手里。

青甘大环线-old

2026-05-07 20:10:36

自从过年听朋友说青甘大环线自驾是他旅行体验感最好的经历后,想着有机会我也去感受下祖国的大好河山,尝尝地道西北美食,这不五一假期就去了,记录下见闻与感想。

我是五一前请了 4 天年假,买了旅游险,一行 4 人,直接从重庆自驾去的,第一天就直接干到了西宁,甘肃境内隧道颇多,一路上山上植被也慢慢减少,最后山上就没有植被,只剩黄土了。晚上在舒迩布吃的羊肉,其手抓还是挺好吃的,真的没有膻味,有点奶香味。相比兰州的手抓,其手抓默认是冷的,但可以让服务员加热。冷的也没有膻味,羊肉品质是真好。

第二天在西宁的早餐是吃的网上推荐的马尔沙牛杂,我还是有点吃不习惯,对我来说有点重口了,应该本地人吃得多。

从西宁到祁连山大草原这段路上风景比祁连山大草原的风景好,祁连山大草原不收费,但里面连厕所都没有,就 2 个旱厕,但是离入口不远处有公共厕所。

上午在祁连山大草原还晴空万里,刚出祁连山就经历了下雨、雨夹雪、小冰雹的天气,西北天气也真的多变。

张掖七彩丹霞下午去的,游览到一半遇到大雨,第二天早上又去了一次,第二天门票不需要买,但还需要再买一次车票,38 元一人。

张掖晚上吃的七彩丹霞本地工作人员推荐的孙记炒炮,还是吃不习惯,炒炮是一种面食,有点硬。那个大哥普通话有点不标准,孙记我听成松记了,哈哈。

张掖市区的马路竟然没有马路牙子,车子竟然可以直接开到人行道上,车子可以在人行道上与行人并行行驶,神奇。

第三天直接从张掖直奔敦煌,酒泉嘉峪关没有进去,就导航到嘉峪关文物景区西门,用无人机拍了几张照片。

行车到瓜洲,准备还是搞点瓜吃吃,结果经过瓜洲停车区时,错过了驶入路口,没买成,此时 20 点左右,太阳刚刚落山。经过时,发现很多门面已经关了。最后在瓜洲南服务区买到了,买的哈密瓜。问了下老板,原来瓜洲停车区的卖瓜的瓜农是 19 点多就下班回家了。听卖瓜的老板说,瓜洲的瓜 7 / 8 月才是自然成熟的时候,现在卖的 5 月的瓜是大棚的瓜。大棚瓜也还是很甜。还 get 到一个知识点,才知晓原来重庆的哈密瓜基本是海南产的。

晚上在党河旁,吃的妙街胡羊烧烤,味道还可以。回家算账时发现餐费付重复了,老板也很耿直,二话没说就退我了。

第四天早上去的莫高窟,莫高窟我们是提前一个月买的票,发现五一门票还是没有春运火车票那么紧俏,但还是需要提前买,后面看 5/2,5/3 的门票还是提前售罄了。我们是买的 8 点的票,说是要提前 30 分钟到,但汽车挂档故障,8 点过才到莫高窟数字展示中心,我们应该是早上第二波游客(08:25 左右),莫高窟是由工作人员安排一批一批地参观。会先进行 2 次荧幕观影了解敦煌/莫高窟,再坐车到莫高窟进行实地浏览,其球形荧幕观影有移动感,挺有感觉。

讲解员带领参观莫高窟不是所有洞窟都参观,应该大概 10 个左右,每个讲解员带领参观洞窟不完全一样。窟内不能拍照摄影。樊锦诗在 一席演讲 提到的几个重要的窟(130 窟 - 大象佛、158 窟 - 最大卧佛、328 窟 - 微笑禅定佛)都没有开放,讲解员说洞窟是否开放是动态调整的,会根据当天情况实时调整,根据二氧化碳/温湿度等指标。在讲解员讲到壁画时,当说到我们现在看到的壁画是 1000 多年古人创作的,心中不免产生涟漪。这也是整个旅途为数不多的时刻。窟顶千佛像(小佛像画)历经一千多年还十分清晰与生动,仿佛刚画的一样,而窟壁小佛像画就因为氧化变黑而成一团了。每个讲解员都有洞窟钥匙,进去前开锁,讲解完要锁门。

莫高窟外国友人不少,遇到 2 个很可爱的双胞胎小朋友。还遇到北京一所中学的一群学生,应该是学校组织研学。

没做攻略,中午随便走进酒店旁边的一家粥店(强氏喜阿婆粥饼店),点的炒烩肉(羊肉)意外是整个西北行程中最好吃的一道菜,老板说厨师是重庆的,🐶。

早上汽车挂不上档,重启汽车后,虽然恢复,但出现发动机故障灯亮起,找了一家途虎养车来修理,工作人员通过仪器诊断出好像是「变速箱连接信号故障」,直接通过这个机器「OTA」就解决了,工作人员也大气,免费不要钱,就在这里洗了个车,洗车师傅也很负责,洗得很仔细。结果出敦煌没开多久,因为走的国道,被对面大货车轮胎弹起的石子把挡风玻璃给撞了个小坑。查了下,只要没有越来越大就影响不大,当时就没处理,回重庆修复了下。

我们是 4/29 下午去的鸣沙山月牙泉,相比五一游客「长满沙山」,很幸运,人不多。

下午在山顶遇到一位只有 19 岁的摄影师,给我们拍了几张非常好看的照片(付费)。摄影师人很耐心很好沟通,还从他那里了解到他后期用的软件:「像素蛋糕」,用下来确实挺好用的,可以只针对人物精修,其收费模式也挺有新意,针对导出图片数量收费。其实鸣沙山可以穿拖鞋,4 月的沙子也不烫脚,可以穿双厚袜子。晚上也很幸运遇到星空演唱活动,坐在沙山上听着音乐,对面沙山当字幕,还是很有感觉的。鸣沙山门票可以用 3 天,不用重复买票。

敦煌没有路灯,红绿灯上下左右也有点看不懂,停车竟然都没要钱。敦煌的灰尘是比较重的,因为前几天刚刮过风沙,可能酒店房间窗户关不严,房间里都有一层灰尘,最后换了个房间。走的时候发现鸣沙山所在的沙山好长好长,周边又没有绿色植被,难怪会刮风沙。过敦煌后,手指触摸了在敦煌洗过的衣服,手上都会有一层细细的有摩擦感的灰。

第五天,在敦煌早上吃了夏家合汁,其实就是羊肉粉,挺好吃的。

从敦煌到大柴旦高速公路护栏有的坏了,牛羊可以直接进来,还是有安全隐患的(西北很多高速公路就只有一个铁丝网,不说都不知道是高速公路)。

因为在地图上看到一座清真寺,在阿克塞小城停了下。

从阿克塞到大柴旦 100 多千米才有一个服务区 - 鱼卡。我们到鱼卡服务区准备泡面吃,结果被告知已经停水停电一周了。2 位中年女性工作人员人很友好。给她们分了点西瓜,表达了一下我们的善意。没有去黑独山,一方面是去黑独山需要多开 200 公里,另外游览时间比较长,也就没时间去翡翠湖了。

中间也遇到几座黑山。

大柴旦双向车道绿灯时竟然直行左转右转三个方向都能走,设计有点奇怪,感觉这个红绿灯作用不大。跟酒店员工聊天了解到,大柴旦常住人口只有几千人,酒店基本只挣 6/7/8 月的钱。大柴旦全是酒店,起码 50 家,独栋起码 20 家。住的汉庭酒店是整个旅途最好的酒店了,房间很大,设施比较新,早餐也还行,其面包夹鸡蛋很好吃。

第六天经 U 型公路去察尔汗盐湖。315 U 型公路网上的图有点 P 过,到了发现并没有很 U 型,加上当天风太大,体验感一般。

从 U 型公路去察尔汗盐湖这条 G215 公路的雅丹地貌更好看。

朋友,大风真的会影响无人机返航!无风条件下可正常返航的剩余续航,在有大风条件下根本不够用。在察尔汗盐湖飞无人机,逆风飞不动,续航嗖嗖往下掉,最后惊险迫降,差点掉水里。迫降到不方便取的路上了,遇到了热情的重庆老乡工作人员帮忙捡回来了。另外,如果要在风大的地方飞,还是不要买大疆 Flip,不抗风,我虽然买的是最便宜的大疆 Mini 4K,抗风能力还是可以。

从察尔汗盐湖回大柴旦的路上经过小柴旦湖,此时太阳马上要落山,风景也还是很好的。

第七天,从大柴旦出发去茶卡盐湖,在德令哈吃过午饭后,途径遇到一处远处雪山近处京藏铁路,中间好像还有湖水的美景,就在一条岔路上停车飞无人机了。

无人机在察尔汗盐湖没丢,结果在这里掉了无人机电池+充电仓(放在车尾,上车时忘记拿了)。这里挨着一个铁路工作站,一般也不会停车,除了铁路工作人员,应该捡都没人捡(一个白色袋子装的)。

茶卡盐湖其实最开始是不太想去的,因为有朋友去了说一般,加上倒湖茶-橡皮山路段封路,从茶卡盐湖到青海湖不能走环湖公路,只能走京藏高速,会错过青海湖边风景。虽然茶卡盐湖整体门票是除莫高窟第二贵,抖音买的 138(包含小火车往返+鞋套等),但在 7 点左右夕阳下还是拍到了「天空之镜」,也还是值回票价了。下雨/阴天就不建议来了。我去的时候茶卡霞站位置要好点,湖面有水,终点站茶卡雪站湖面都干涸没水了。另外小火车有点慢,还没有走路快,也就有个防风的作用。这里拍摄时要注意湖面有坑,跟我同行的伙伴就不小心踩坑摔倒了,鞋子裤子打湿,手机手表都进水了,还好问题不大。

晚上是在青海湖边住的,住在二郎剑景区旁客栈,因为在五一,不但不便宜,设施环境还是整个旅途环境最差的了。在客栈旁的湖景餐厅吃早餐时跟老板聊天,老板说,青海湖早上八点以前保安没上班,可以直接去湖边。老板是藏族,问了下她们这里读书的问题,她说小学就在旁边读,中学要在离青海湖有 1 小时车程的地方读。青海湖这里海拔 3000 多,青海这里有点反应了,动作快了容易累,喝了点葡萄糖。

第八天上午在青海湖耍了,下午就直奔兰州了。兰州交通真的很疯狂,公交车直接占道行驶,不留安全距离就直接超车,三轮蹦蹦车直接在人行道上行驶。还有停车不太方便,下高速与上高速距离也有点太长了。手抓可能是去晚了,吃了野文吃过的「好羊来手抓」,但感觉没有西宁的手抓好吃,也可能是因为前几天手抓吃多了,晚上也没有羊脖子了。因为攻略没做完整,陇菜没有吃到,比较遗憾。

第二天早上吃了比较出名的清汤兰州牛肉面 - 金鼎牛肉面,没有给人很惊艳的感觉。

第九天晚上平安回到了重庆。

我们这次行程还是比较赶,环线只有 7 天 8 晚,每天基本都晚睡了,睡眠不是很足。感觉 10 天就会好很多,青海湖可以玩一天,西宁可以玩一天,兰州可以玩一天。

我们是反穿的,西宁-敦煌-青海湖,加上提前了几天出发,路上基本车都很少。整个环线的路况还是很好的,没有泥巴路,都是铺装路面,小轿车就可以,我们就是轿车。没必要上越野车,当然 SUV 空间更大,体验感要好些。但最好有定速巡航功能,因为路途长,有定速巡航会轻松很多。一路上电车还是很少,越野车很多,丰田荣放 RAV4 也多。

iPhone 手机网络信号还行,可以胜任,遇到两三次很短时间没有信号的情况,带了个备用安卓手机,但发现 iPhone 没信号时,安卓手机也没有信号,就是照片拍多了,因为没有关 iCloud 的图片同步功能,把我 5 月 20G 流量给基本用光了。

西北环线自然风景确实没得说,很多路非常直,自驾真的有「大漠孤烟直,长河落日圆」的感觉。最好还是整一个无人机,从上帝视角看风景。最后发现敦煌美食是最好吃的,也可能是敦煌待得最久,吃的次数最多,吃了 4 顿。

环线应该七八月来更好,那时祁连山草原草绿了、青海湖边油菜花开了、风没这么大、应该也没现在冷了,现在必须穿冲锋衣才行。

在旅途中,遇到的人都很友好,遇到的卖东西的人感觉没有传统小贩的精明算计,很淳朴、实在。

去了西北,更深刻感受到了西北人民因为没有可合适耕种的土地但有天然的放牧草原而成为游牧民族,应该也是广阔的自然环境才造成了普通人淳朴豁达的性格吧。

回到了重庆,发现相比西北城市,重庆真的很繁华了。

手机的作用

2026-04-20 23:29:39

现在智能手机基本是每个人不可缺少的设备了,也可以说是我们的外接器官。玩手机可能是我们一天花时间最多的事了。但我最近捋了一下手机的作用,发现真正离不开手机的功能其实很少,大部分使用时间都花在了锦上添花甚至不必要的功能上。你可以对照看看,你平时用手机最核心的功能是什么。

真正没有手机不行的功能,其实就那么几个。 扫码,现在不管是付款、登录、还是乘坐交通工具,都得扫码,电脑做不了,手表也做不了。拍照,虽然相机拍得更好,但随身带着随时能拍的一般还是手机。钱包,虽然有的手表也能付款,但很多场景还是得掏手机(转帐/红包/扫码)。导航,手表屏幕太小不行,电脑更不支持。还有电子身份证、电子驾照这些身份证明。以及 Okta 这种两步验证,只能用手机。你会发现,这些才是我们真正离不开手机的源头,但它们加起来一天可能也用不了几分钟。

通讯社交这块,手表理论上能做,但体验差太多。 如果你有一块独立蜂窝网络的手表,打电话、收短信、回微信其实都可以。但打字不方便,看长消息费劲,发朋友圈更不可能。如果你用电脑版,也可以不用手机。手电筒 Apple Watch 倒是有,亮度跟手机比还是差一截。所以这块目前还是得靠手机,不过说实话,这些功能占的时间也不算多。

真正花时间的是那些「锦上添花」的功能。 查东西,如:搜索、看天气、查单词、查美食,电脑都能做,手机只是更随手。记东西(写入操作),如:提醒事项、备忘录、挂号、订场地,电脑一样能搞定。买东西,如:JD、淘宝,现在网页版也做得更好了,电脑下单也一样,只是操作没有手机顺手,拼多多也有网页版(有些购物平台比如美团,只有 APP 没有网页版,只能用手机,如果用 Mac 可以用 iPhone Mirroring)。听英语、听音乐、看书、刷 RSS 等之类的主动输入,用电脑甚至更舒服。说白了,这些功能手机只是胜在「随时随地」,但如果你在电脑前,手机完全可以不碰。

但你回想一下,一天里手机使用时长最多的是什么? 大概率是短视频、资讯推送和社交软件等这类的娱乐功能。这类功能的特点是你不需要主动想「我要干什么」,打开就有内容喂给你,刷着刷着半小时一小时就过去了。再加上手游,这几项基本构成了大部分人每天手机使用时长的主体。但说实话,这些对我们的生活并没有什么实际帮助,纯粹是被动消耗。

最后说说我降低手机使用时长的方法。 核心思路就是减少拿起手机的次数。工作时让手机不在旁边,眼不见心不烦。睡觉时不把手机带进卧室,避免睡前刷手机。把无意识会打开的 APP 隐藏掉,比如小红书、bilibili、抖音、快手、头条这些,不在首屏看到就少了打开的冲动。另外就是尽量实现手机功能让电脑也可以做,不强依赖手机:微信用新版电脑版可以不手机扫码直接登录;iPhone 电话设置同一 WiFi 下其它设备可以接打;短信设置同一 Apple ID 的设备可以接发;2FA 用 Mac 上 iCloud Passwords 的验证码功能。把这些高频操作都转移到电脑上之后,拿手机的次数明显少了很多。如果你使用 Apple 生态,还可以通过「iPhone Mirroring」在 Mac 中使用 iPhone,进一步降低拿起手机的次数。

对于我们大多数人来说,手机不是生产力工具,不能帮你赚钱,主要就是个娱乐和便利工具。想明白这点之后,我觉得下次换手机也不用花太多钱了,够用就行。

我买 1000 元左右显示器时主要考虑的几个点

2026-04-11 22:12:46

最近给家里的 Mac 加了个新显示器,对比了几款产品,也做了点功课。显示器这东西参数一大堆,但真正影响日常体验的其实就那么几个点。先说结论,如果预算充足,又是 Mac 用户,直接上 Studio Display 就行,省心。以下内容更适合像我这样对预算不足(1000 元左右预算),对显示器要求也不很高的人。我最终买的是红米 A27U 4K 节能版,下面说说我在挑显示器时主要考虑的几个方面,以及为什么我没买看起来更好的 Type-C 版。

首先是 27 寸到底要不要上 4K。 这一条主要针对 Mac 用户。很多人会说「Mac 必须上 4K,不然字体发虚」,但其实没那么绝对,得看你准备用什么分辨率开 HiDPI。macOS 的 HiDPI 原理简单来说,就是用 2 倍的像素去渲染 1 倍的逻辑分辨率,所以要看字体锐不锐,关键是物理分辨率和逻辑分辨率的 2 倍是不是整数倍关系。如果你只用 1280 × 720 (HiDPI),2K (2560 × 1440) 显示器就完全够了,因为正好是 2 倍完美缩放,字体比较锐利,这种情况下我测试 4K 切换到 1280 × 720 (HiDPI) 反而没优势,字体锐度还稍微差一点。但如果你想用 1920 × 1080 (HiDPI)、1600 × 900 (HiDPI) 或 1344 × 756 (HiDPI) 这种更大工作区的分辨率,就建议买 4K,像素密度足够,缩放出来的字体才会清楚。因为主要是我媳妇儿使用,她偏好工作区大一点,所以选了 4K。

其次是亮度,这一条是我之前踩过坑才特别强调的。 我以前买的这台 Lecoo 2K 显示器,最高亮度只有 250 nit,阳光照到屏幕上时,屏幕就看不清楚了,只能拉窗帘了。我的建议是至少 300 nit 起步。但标称亮度和实际体验不一定对得上,我这次买的红米 A27U 4K 节能版,官方标的 300 nit,实际用下来感觉跟标 400 nit 的 Type-C 版差不多。所以参数只是参考,实际体验还得看评测或者自己上手。

第三是旋转升降功能。 如果你有竖屏需求,比如竖着看代码、看长文档,那旋转基本是必须的,不然没法转。升降功能在日常使用中可以做一些微调,调到合适的高度,不过它的升降行程一般不够做站立办公。我自己偶尔会竖屏看代码/文档,所以选了带旋转升降的支架版本。

第四是 PBP(硬件分屏)功能有没有必要。 PBP(Picture by Picture)是硬件层面的分屏,可以让一个显示器同时显示两个信号源的画面。我的看法是,一个显示器要给多台电脑同时使用,PBP 才有意义,比如左半边接工作电脑,右半边接个人电脑。如果只是想让一台电脑分屏显示两个窗口,用一根线连上,再用 macOS 自带分屏,或者窗口管理工具(比如 Rectangle、Magnet)就完全能搞定,没必要为 PBP 多花钱,更没必要从一台电脑拉两根线接到 PBP 显示器上。

最后是要不要上 Type-C 接口,我对比了一下,最后没选 Type-C 版。 如果你的场景是一个显示器只连一台设备,Type-C 一线连确实很爽,一根线解决视频、供电、USB 扩展,非常方便,这种情况下值得上。但我家里是多台设备共用一个显示器的场景,Type-C 的优势就不明显了。我对比了红米 A27U Type-C 版和节能版,发现 Type-C 版有这几个劝退点:一是两者亮度实际差别不大,节能版标 300 nit,Type-C 版标 400 nit,但节能版的真实亮度我感觉已经接近 400 nit 了;二是 Type-C 不能单独只供电,当用 Type-C 和 DP 接口同时连接两台电脑时,两路信号都会生效,有一台电脑显示不出画面,只能通过设置镜像才能解决;三是 Type-C 版屏幕有点发黄、灰蒙蒙的感觉,我猜是硬件级防蓝光导致的,对比下来节能版的字体颜色明显更深,看着更舒服。综合下来,我最后选了红米 A27U 4K 节能版。

显示器这东西,真正决定体验的就是这几点:分辨率匹不匹配你的使用习惯、亮度够不够、支架好不好用、接口够不够用,参数表上那些花里胡哨的指标,很多时候远没有这几项基础的重要。但每个人对同一个显示器的偏好不同,想买哪款,建议直接买回来体验试用对比一下,像在 JD 买的话,很多显示器可 7 天无理由退货,上门取件还包邮,可以对比下了再留下最合适的。如果你像我一样预算有限又想挑台合适的显示器,希望这篇文章对你有帮助;有钱的话,还是直接 Studio Display 一步到位最省事。

买了一段时间 4K 显示器后更新,如果有点近视又不带眼镜,或者单纯想字体更大点,平时喜欢用 1280 x 720 这个分辨率的话,买我买的这款的 2K 版本更划算,也更合适,4k 版本在这个 1280 x 720 这个分辨率还没 2K 版本的清晰。