2026-07-03 09:59:02
现在我订阅了两个 ChatGPT Plus 美区账号来使用 Codex,但现在 Codex 额度缩水严重,两个账号也不够用了。因此,我打算买一个 20 倍的 Pro 账号。
不过,我一个人又用不完,所以打算搭建一个中转站,来找几个搭子一起来用。
因为我也在使用家里 Mac mini 当服务器,所以我打算先安装在 Mac mini 上面测试一下,然后通过 Tailscale 来建立异地局域网,这样我在其他非家庭网络下也可以使用。
我是使用 Sub2API 这个工具来搭建的 API 中转站 。其功能还是很全,也很强大的。


脚本部署数据存储在「本地目录」,迁移更简单
因为我是通过 OrbStack 管理 Docker 容器,遇到一个镜像无法下载的问题。

解决方式:

核心配置 4 个点:1、账号;2、分组;3、订阅;4、API Key。其首次登录有「新手引导」可跟着完成首次配置。「新手引导」中没有创建订阅这一步。



解决方式:打开账号订阅


解决方式:给当前账号分配订阅

我是想继续在 Codex 中使用 OAuth 登录使用,在 Claude Code 使用 Sub2API Codex API。因为在 Codex 中直接使用 Sub2API API Key 时,会不可见原来的历史记录(Session),在 Claude Code 中配置使用不会有这个问题。Sub2API 也支持将 Codex API 转换一下,支持 Claude Code 调用使用,需要额外配置一下。
在 SubAPI 中没有配置时,Claude Code 是无法直接使用 API Key,会报找不到模型。

在「使用 API 密钥」也看不到「Claude Code」

需要在分组里面开启「OpenAI Messages 调度配置」,再配置模型映射。

再就可以在「使用 API 密钥」看到「Claude Code」了

可以复制配置,在 CC Switch 配置,CC Switch 中也要配置「API 格式」与「模型映射」

我现在 macOS 也是使用的 Shadowrocket。我家里电脑的 Tailscale IP 是 100.81.112.109,Sub2API 的端口是 8080,我遇到了开启 Shadowrocket 时,在浏览器中打不开 100.81.112.109:8080 的问题,关闭 Shadowrocket 时没有问题。因为基本上一直会开启代理,所以每次打开代理的时候就打不开 Sub2API,需要频繁开启关闭代理,体验感还是不是很好。

分析了一下原因。 因为 Chrome 它出入口流量是被 Shadowrocket 接管的,走了 Shadowrocket 代理。 使用 Shadownrocket 时,当我在 WiFi 里面设置 100.81.112.10(100.64.0.0/10) 跳过代理,但开启 Shadowrocket 时会 Shadowrocket 被覆盖掉,配置不能生效。


我在 Shadowrocket 里面配置了 100.81.112.109(100.64.0.0/10)走直连仍然有问题。

应该是在使用 Shadowrocket 时,100.81.112.109 即使走了直连,流量也可能没有进入 Tailscale 那条路。所以要开启代理时也得 Chrome 访问 Tailscale IP 就只能让 IP 不走代理,只能在 WiFi 层就配置跳过代理。
所以我的解决方式就是使用不会覆盖 WiFi 已配置跳过代理数据的其它代理,比如 ClashX Pro / ClashMac。




其实现在 ChatGPT 已经有一条薅羊毛的「产业链」,就是通过 OpenAPI 在某些国家的一些优惠政策,可以免费地去订阅 ChatGPT Plus 会员,再把这个成品 ChatGPT Plus 号低价卖出来,比如说 10 块钱、8 块钱之类的。 因为原来 ChatGPT Plus 量大管饱,其实我是没有去关注这方面的信息的。最近通过同事了解到这方面的东西。 我也去购买了一个,试用了一下。因为现在 ChatGPT Plus 偶尔会触发短信验证,买的这些成品号是不支持短信验证的,只能支持邮箱验证。所以一旦账号出现需要短信验证,这个号就相当于是废了,就不能用了。
我的运气比较差,我买了一个号,下午买的吧,晚上就不可用了。但是这个也要看你的运气,要看你的 IP 的纯净度。像运气好的话,一个号可能还是可以用个一周的吧。
另外我发现,通过 Claude Code 来使用 Sub2API Codex API 的方式还是会相比 Codex 慢不少。
2026-06-25 23:20:37

我买 DJI Mic Mini 2,最开始不是为了语音输入,是为了拍视频录音。
拍视频时,自带麦克风的问题很明显。人离远一点,声音就会变小;环境里有一点噪音,也会一起被收进去。如果是手机、运动相机或者相机拍摄,声音这块经常比画面更容易出问题。
所以当时买 DJI Mic Mini 2,主要看中的就是两个点:降噪和长距离录音。人可以离设备远一点,声音还能收得比较稳;环境没那么安静的时候,也能少收一点杂音。对拍视频来说,这两个点就够实用了。
后来用了一段时间,我发现它在另一个场景里也很有用:语音输入。
说到底,DJI Mic Mini 2 对语音输入的作用,就是提升输入质量。当语音转文字输入时,不是只看软件识别能力,前面声音收得怎么样也很关键。声音太小、背景音太多,后面的识别就更容易出错。麦克风输入质量越高,识别出来的文字自然会更稳定。
这个点放到 Vibe Coding 里,会更明显。
现在用 AI 写代码,都不是自己一行行敲代码,而是把需求、问题、限制条件说清楚。尤其是 Vibe Coding,输入给 AI 的内容经常是一大段自然语言。语音输入的优势就在这里:输入得快,输入得多。
输入得多不一定每一句都完美,甚至里面会有重复。但对 AI 来说,只要上下文足够,它可以从里面提取出比较核心的要点。反而是你输入太少、太碎的时候,AI 只能靠猜。
Vibe Coding 里输入质量越高,输出质量才会越高。键盘输入当然更精确,但速度慢一点,有时候输入速度跟不上思路。脑子里已经想清楚了一个接口要怎么改、一个 bug 大概在哪里、一个页面交互应该怎么调整,但真要一字一句敲出来,就会慢半拍。
语音输入适合解决这个问题。先把想法说出来,再回头改。变量名、命令行参数、代码符号这些,还是键盘更靠谱;但描述需求、解释问题、补充上下文,语音会更顺。
DJI Mic Mini 2 用在 Vibe Coding 的语音输入里,也有几个实际优势。
一个是声音小也能用。比如在公司,不可能一直很大声地对着电脑说话。这个时候如果只靠电脑麦克风,声音小了以后识别就容易不稳。无线麦克风离嘴更近,即使说话声音不大,也能收得清楚一点。
另一个是降噪。办公室、咖啡店、家里有风扇或者键盘声的时候,降噪会影响语音识别的稳定性。它不一定能把所有噪音都处理干净,但至少能让声音更集中。
语音输入也不只适合 Vibe Coding。
写文章也适合。很多时候文章最难的是第一版,想法在脑子里,但是一开始打字就容易卡。用语音先说一版,不管粗不粗糙,至少先把内容落下来,后面再调结构、删废话、补细节。
IM 也适合。比如微信、飞书、Teams 里要回一段比较长的话,语音输入比手打轻松很多。尤其是那种需要解释背景、说明原因、补充几个点的消息,直接说出来会更快。
再说回 DJI Mic Mini 2 本身。
我买的是手机版 1 拖 2。2 代手机版 1 拖 2 的多了无线充电盒,好收纳,综合续航也更久;充电盒是就是相机版的 1 拖 2 充电盒,空余地方放防风毛套正好。

2 代发射器的背夹改成了磁吸式的。领夹可调整麦克风方向,领夹可拆卸,也可以拆下来「采访」别人。Mini2 没有领夹、直接磁吸时会更美观一点。
![]() |
![]() |
|---|
音色方面,它可以设置 3 种音色。饱满音色能听出区别,明亮音色区别不大。颜值还是有提升的,这个就比较主观。
还有一个充电口的小细节。
手机版接收器上这个充电口,原来是给手机充电使用的,设计得挺好。但它只能给手机充电,如果插在电脑上,它不能再当一个可以连接外接显示器的 Type-C 口,也无法充电,可能是充电功率太高导致的。另外直接插在电脑上时其它另外接口会被挡住,可以加个转接头。
![]() |
![]() |
![]() |
|---|
缺点也有。Mic Mini 2 不防水,户外、雨天要注意。
软件这边,我现在用的是 Wispr Flow。

Wispr Flow 是什么?我理解它是一个类似开源 Whisper 的商业版本,一个 AI 语音输入工具。macOS 可全局使用,有输入框的地方就能用。iOS 要多一步,需要先跳 Wispr Flow APP,再切换回来,所以体验没有 macOS 上那么顺。
它最基础的功能就是语音输入法:语音转文字,iOS / macOS 都可以用。大模型加持后,准确率更好,长句、口语、边想边说的内容,整体比系统自带听写更可用。

它还可以设置 Transforms(类似 Code Agent 的 Command),通过指定快捷键触发,macOS 上可以用来翻译、文字润色等。

Command Mode(命令行模式)- 语音命令,也是 macOS 上比较好用的一个功能。它可以针对当前选中文字直接语音下达指令,比如改写、翻译。没有选中的文字的时候,会跳转到 Perplexity Web,用当前的语音输入内容作为问题直接开一个对话。

但 Wispr Flow 也不是完美的。如果你说的话很短或者中英文一起输入的时候,它可能对你的话识别不是很好。所以我不会把它当成「说完就直接发」的工具,而是先用它把大段内容说出来,再自己扫一遍。
你可以通过我的 Wispr Flow 邀请链接注册,你可以获得一个月的会员。
最后说下要不要买线麦克风。
如果电脑本来就有麦克风,只是偶尔语音输入,其实不用专门买无线麦克风。先用 Wispr Flow 这类语音输入工具试试看,确认自己能不能接受这种输入方式。
如果还有拍视频的场景,我会更建议买。因为它不只是给 Vibe Coding 用,也能用在拍视频、录音、开会这些场景里。一个设备能覆盖多个需求,买起来就合理很多。
如果你用的是 Mac mini 这类没有内置麦克风的设备,也不一定一开始就上无线麦克风,可以先用这种迷你麦克风。成本低一点,先把语音输入跑起来,再看自己是不是真的需要无线麦克风。

2026-06-16 22:41:18

因为 AI,最近纳指涨了不少,国内跟踪纳指的 QDII 基金也越来越热门。我在京东金融、腾讯腾安等平台看了一圈,发现一些基金已经暂停申购,另一些单日只能买 200 元甚至更少,想买还不一定买得到。
这类基金名字里大多都有「纳斯达克 100」,但不能只看名字就直接买。虽然它们跟踪的是同一个指数,但管理费、跟踪误差、A 类与 C 类收费、是否限购都有区别。场内 ETF 还多了一个很容易踩的坑:溢价。
另外还有一个最基础的问题:对于只有境内人民币和境内证券账户的大多数中国人来说,不能像买 A 股一样直接买 QQQ / QQQM。 QQQ 和 QQQM 是在美国上市的 ETF,需要美股证券账户。所以,对大多数中国人来说,用人民币买 QDII 纳指基金,才是更现实的选择。
先说我的结论:QDII 纳指基金本身没有什么隐藏的大坑,正规公募基金也不用担心基金公司拿钱跑路。真正需要注意的是长期费率、汇率、跟踪误差、限购、场内溢价,以及发起式基金的规模。普通人长期定投,我会优先看场外 A 类基金,再比较费率、规模和是否能持续申购。
QDII 全称是 Qualified Domestic Institutional Investor,中文叫「合格境内机构投资者」。简单理解,就是普通人把人民币交给取得资格和境外投资额度的国内基金公司,再由基金公司换汇,去境外购买股票、ETF 等资产。
以纳指 QDII 基金为例,我们买入的是一只国内公募基金,但它最终持有的是纳斯达克 100 指数成分股,或者跟踪纳斯达克 100 的 ETF。我们不用自己开境外证券账户、换美元和汇款,也可以用人民币参与美股市场。
QDII 基金经常限购,主要不是因为基金公司故意不让买,而是基金公司的境外投资额度有限。申购进来的人民币需要换成外币后才能投资,额度快用完时,基金公司只能限制申购,避免新资金进来后无法及时建仓。所以同一只基金在京东金融限购,通常也不能简单靠换到腾讯腾安解决;平台只是销售渠道,真正决定限购的是基金公司。
至于会不会跑路,正规的公募 QDII 基金和普通公募基金一样,基金财产独立于基金公司的自有财产,并由托管银行托管。基金公司负责投资管理,不能直接把基金资产当成自己的钱拿走。即使销售平台停止运营,平台也不直接持有基金资产,自己的基金份额仍然登记在基金登记系统里。
但「不会跑路」不等于「不会亏钱」。QDII 纳指基金至少有这些风险:
所以它是有监管、有托管的投资产品,不是会随便跑路的平台理财,但同样不是保本产品。
很多人把「投资纳指」等同于买 QQQ。QQQ 是美国市场上很有名的纳斯达克 100 ETF,流动性非常好。
截至 2026 年 6 月,QQQ 的总费用率是 0.18%。国内纳指 QDII 产品的管理费加托管费大多在 0.60% 到 1.00% 左右,另外还可能有销售服务费、申购费和赎回费。只看产品内部成本,QDII 每年大概会比直接持有 QQQ 多损失 0.42% 到 0.82%,再加上现金仓位、换汇和交易产生的跟踪偏差。
这个数字一年看起来不大,时间长了还是会积累。假设投入 10 万元,底层资产每年收益都是 10%,QQQ 费用率按 0.18% 计算。如果 QDII 年成本是 0.65%,10 年后的差距约 1.1 万,20 年后约 5.4 万;如果 QDII 年成本是 1.00%,10 年后的差距约 1.8 万,20 年后约 9.1 万。这还没有算申购费、赎回费、跟踪误差和汇率兑换等额外影响。
另外,比较收益时要注意汇率。QQQ 用美元计价,国内 QDII 的人民币份额用人民币计价。如果某年纳指涨了 10%,同时美元相对人民币又涨了 5%,人民币 QDII 的涨幅可能接近 15%;反过来,人民币升值会吃掉一部分纳指收益。这不是基金经理赚多了或亏多了,而是持有海外资产自然会受到汇率影响。
看 QDII 纳指基金时,最容易被名字绕晕。比如「南方纳斯达克 100 指数发起」「招商纳斯达克 100 ETF 发起式联接」「建信纳斯达克 100 指数」,几个词叠在一起,看起来都差不多,但含义不一样。
首先是 ETF。 ETF 是交易型开放式指数基金,可以在证券交易所像股票一样买卖。真正的场内 ETF,需要用证券账户交易,价格实时变化。优点是买卖方便,缺点是价格可能偏离基金净值,尤其是 QDII ETF 在额度紧张时可能出现较高溢价。
其次是发起式。 发起式说的是基金怎么成立。基金公司、基金公司股东、高管或基金经理等发起人,会拿自己的钱参与认购,发起资金通常不少于 1000 万元,并持有不少于 3 年。它的作用是让新基金更容易成立,也表示基金公司自己投了一部分钱。但发起式不代表收益更高,也不代表更安全。成立满三年后,如果规模不足 2 亿元,通常会触发自动终止,所以发起式基金要特别看规模。
第三是联接基金。 联接说的是基金的钱主要投到哪里。ETF 联接基金不是直接主要买纳指成分股,而是主要买对应的目标 ETF。结构大概是:投资者 → ETF 联接基金 → 目标 ETF → 纳斯达克 100 成分股
联接基金适合在京东金融、腾讯腾安等场外平台定投,按基金净值申购,不会像场内 ETF 一样产生场内溢价。但它需要保留一部分现金应对赎回,跟踪误差通常会比目标 ETF 略大。
第四是场内。 场内就是在证券交易所交易。场内 ETF 的价格由买卖双方决定,可能高于基金净值,也可能低于基金净值。比如一只 ETF 实际净值是 1 元,但场内被炒到 1.10 元,就是 10% 溢价。QDII ETF 因为外汇额度和跨市场交易时间差,更容易出现这种情况。
第五是场外。 场外就是在基金公司、银行、京东金融、腾讯腾安等平台申购赎回。场外基金每天按净值成交,不存在场内溢价问题,但不能盘中实时买卖,赎回到账也慢一些。对长期定投来说,场外通常更省心。
所以名字可以这样拆:
| 名称里的词 | 说明 |
|---|---|
| 指数 | 目标是跟踪某个指数 |
| ETF | 可以在交易所盘中交易的基金 |
| ETF 联接 | 场外基金,主要投资目标 ETF |
| 发起式 | 基金成立方式,发起人拿钱认购并持有一段时间 |
| QDII | 用境内资金投资境外市场 |
比如南方纳斯达克 100 指数发起(QDII),是发起式 QDII 指数基金,不是 ETF 联接基金;招商纳斯达克 100 ETF 发起式联接(QDII),既是发起式,也是 ETF 联接基金。
同一只场外基金经常同时有 A 类和 C 类,它们投资的是同一套资产,主要区别是收费方式。
现在很多基金销售平台会把 A 类申购费打一折,原本 1.2% 的申购费可能只收 0.12%。而纳指 QDII 的 C 类销售服务费常见为每年 0.10% 到 0.40%,持有时间越长,累计费用越高。
以申购费打折后 0.12%、C 类销售服务费每年 0.20% 为例,持有不到一年时 C 类可能便宜一些;持有超过一年后,A 类通常更划算。如果本来就是准备定投 10 年,当养老钱使用,我会优先选 A 类。
但也不能只看 A 或 C 这个字母。不同基金的费率和赎回规则并不完全相同,购买前还是要点开「交易规则」和「费率详情」确认。特别是准备短期卖出时,要注意持有不足 7 天通常会有较高赎回费。
国内有不少基金公司都推出了纳指 QDII 产品。它们名字看起来差不多,但并不是完全一样。以下是我根据 2026 年 3 月 31 日披露规模和 2026 年 6 月公开费率整理的几只代表性产品,费率会调整,购买前应以最新基金公告为准。
| 基金公司与代表产品 | 类型 | 成立时间 | A/C 代码 | A+C 规模 | 管理费+托管费 | C 类销售服务费 |
|---|---|---|---|---|---|---|
| 南方纳斯达克 100 指数发起 | 直接指数基金,发起式 | 2022-11-29 | 016452 / 016453 | 约 63.61 亿 | 0.65% | 0.10% |
| 招商纳斯达克 100 ETF 发起式联接 | ETF 联接,发起式 | 2023-11-29 | 019547 / 019548 | 约 29.25 亿 | 0.65% | 0.40% |
| 建信纳斯达克 100 指数 | 直接指数基金 | 2010-09-14 | 539001 / 012752 | 约 25.72 亿 | 1.00% | 0.30% |
| 汇添富纳斯达克 100 ETF 发起式联接 | ETF 联接,发起式 | 2023-08-02 | 018966 / 018967 | 约 19.16 亿 | 0.65% | 0.40% |
| 大成纳斯达克 100 ETF 联接 | ETF 联接 | 2014-11-13 | 000834 / 008971 | 约 41.38 亿 | 1.00% | 0.30% |
只看这张表,南方的特点比较明显:规模大,管理费加托管费是 0.65%,C 类销售服务费也只有 0.10%,而且它不是 ETF 联接基金,路径更直接。招商和汇添富的费率也不高,但它们是发起式 ETF 联接基金,C 类销售服务费是 0.40%,长期持有更应该优先看 A 类。建信和大成成立时间更早,规模也不小,但管理费加托管费是 1.00%,长期成本更高。
不过,不能只靠费率选。还要看这几个点。
首先,确认它跟踪的真是纳斯达克 100 指数。「纳斯达克精选」「纳斯达克科技」「纳斯达克 100 增强」虽然名字也有纳斯达克,但投资策略和持仓可能不一样,不能直接当作同一种产品比较。
其次,看长期跟踪效果,不要只看最近收益排名。 同样跟踪纳指 100,最近涨得更多的基金,可能只是因为汇率折算时间、仓位或短期偏差不同。判断指数基金做得好不好,更应该看它长期是否紧贴指数、跟踪误差是否稳定。
第三,看基金规模和成立时间。 发起式基金满三年时,如果规模不足 2 亿元,通常存在自动终止风险。南方这只规模已经超过 60 亿,这个风险不大;但一些新发起式产品,如果规模只有几千万,就要谨慎。
第四,看是否限购。 对准备定投的人来说,能否持续申购很重要。一只费率很低但长期暂停申购的基金,实际也很难定投。
第五,场外基金和场内 ETF 不要混在一起买。 场外基金每天按净值成交,不存在盘中溢价问题,但到账较慢。场内 ETF 可以像股票一样实时买卖,不过当 QDII 额度紧张、场外申购受限时,场内价格可能明显高于基金实际净值。假如一只 ETF 溢价 5%,相当于纳指还没有开始跌,买入时就先多付了 5%。所以买场内 ETF 前,一定要看实时溢价率;不了解溢价的人,买场外基金更省心。
综合下来,如果几只基金都能正常申购,我会优先在跟踪误差稳定、规模不太小的产品中选综合费率低的 A 类,而不是因为某只基金当天涨得更多就买哪只。
QDII 场外基金可以在基金公司官方渠道、银行以及第三方基金销售平台购买。我现在接触到的是京东金融和腾讯腾安,这两个平台都可以设置自动定投,也能比较直观地查看基金费率、持仓和申购状态。
平台之间最大的区别主要是使用体验、支持的基金数量和申购费折扣,基金本身的涨跌不会因为购买平台不同而变化。限购通常也是基金层面的限制,换个平台不一定能绕过去。选一个自己长期会使用、方便查看和管理的平台即可,没有必要为了同一只基金把资产分散到很多 APP。
支付宝这边我没有找到南方纳斯达克 100 指数发起(QDII)A 类的定投入口,所以不适合作为这只基金的主定投平台。实际操作上,如果要定投南方 A 类,我会优先看京东金融或腾讯腾安,哪个能正常申购、申购费率低、定投设置顺手,就用哪个。
我的定投思路也比较简单:用未来很多年都不需要的钱,按月持续买入,不因为最近大涨就一次性追高,也不因为短期下跌就停止。QDII 基金的优势不是帮我预测高点和低点,而是让我能用人民币、以比较低的操作成本长期参与纳指公司的增长。
最后再总结一下:中国境内普通投资者不能方便地直接买 QQQ / QQQM,所以 QDII 纳指基金有现实意义。 选的时候不要只看近一年涨幅,更要看基金类型、费率、规模、限购状态和是否存在场内溢价。对长期定投来说,场外 A 类、低费率、规模合适、能持续申购,通常比名字里有没有 ETF 更重要。
本文只是我做功课后的个人理解,不构成投资建议。纳指过去涨得好,不代表未来也会一直涨,投入的钱仍然应该是即使长期下跌,也不会影响日常生活的钱。
2026-06-07 08:56:07
前两天在小区骑踏板摩托车取快递突然发现摩托车方向不受控制了,以为是摩托车龙头出现问题了,结果发现是后轮爆胎了。运气很好,在小区爆胎,没有在上班骑行过程中爆胎。

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

爆胎后我想到的第一件事就是爆胎了还能不能开,好去开去维修店换。给平时保养的店的老板打了个电话咨询了下,他说只要不剧烈颠簸是可以开的。我就直接开到附近维修店里去换胎了,发现确实也没啥影响,轮毂质量挺好,毕竟正常胎压时车辆重量最终也是由轮毂承担的。但也骑不了多快,最多 20km/h,快了容易甩尾。
我的车是铃木 UE 125 踏板摩托车,原厂轮胎品牌是 Cordial(诚远),我是打算换原厂胎的,奈何维修店没有。推荐我换半热熔胎,但我查了下半热熔胎在热胎后抓地力会更好,踏板摩托车日常行驶其抓地优势未必明显,还是更适合大排量摩托车或者更激烈的驾驶场景,再加上磨损会更快,所以还是选择了普通真空胎。
但老板普通真空胎选择不多,就两种。
| 建新 | 黑猫 |
|---|---|
![]() |
![]() |
两款轮胎价格相同,因为我更喜欢建新的包装,而且包装上标有官方网站,所以最终选择了建新轮胎。
也顺便了解了下原装轮胎上的数据含义。
![]() |
![]() |
|---|---|
![]() |
![]() |
数据含义:
| 旧轮胎 | 新轮胎 |
|---|---|
![]() |
![]() |
轮胎其实也要看花纹,花纹主要决定排水性。踏板摩托车用普通真空胎基本都是晴雨胎,让晴天与雨天都能使用,其花纹基本也差不多,所以也不用太纠结花纹。
此次更换轮胎共花费 180 元,其中包含安装费。老板说我换的普通真空胎进货价 95 元。我又问了下,如果自己买轮胎,来他这换,手工费是 50 元。相当于轮胎卖 130 元。但我在淘宝看了诚远原装胎也才 110,所以如果自己购买原厂轮胎后再到店安装,价格可能更低,也能继续使用原厂轮胎。
2026-06-03 00:13:52

钱是王八蛋,长得真好看。
一个人只要活着,就会需要用钱。钱到底是什么?这个问题好像很好回答,我们可以说:钱就是货币嘛。但好像也不太好回答。
钱和价值是什么关系?什么是资产,什么是负债?为什么钱会贬值?房价为什么会影响整个社会的消费能力?GDP 和金融这些听起来很大的概念,和一个普通人又有什么关系?
今天我就来谈一下我的理解。
每个人都可以通过劳动、商品或者服务创造价值。打工,是出售自己的时间和能力;卖东西,是出售商品;做生意,是提供别人需要的产品或者服务。
与此同时,人为了活下去,为了活得好,也需要消费,比如食物、衣服、房子、电影等。
钱是价值的一种表现形式。它最大的作用,是让交换更加方便。如果没有钱,我想用一袋米换一双鞋,卖鞋的人却不一定需要米。有了钱,不同的商品、服务和劳动就可以交换。
所以,你挣到的钱,是你自己生产价值的一种体现。之所以说是「一种体现」,是因为钱并不等于价值本身。你的生产价值最终能够换到多少钱,会受到市场供求、议价能力和所处环境的影响。
如果自己生产的价值超过自己需要的消费价值,多余的部分就可以存储起来。
这些没有被消费掉的结余,可以是存款,也可以变成房子、股票、基金或者其它东西。它们都是资产。资产让你即使暂时不再生产,也可以在一定程度上使用过去积累下来的价值。
所以,对于个人来说,资产是个人过去生产价值的一种体现。
结余可以转化为资产,资产也可以通过负债获得。例如,一个人可以贷款买房,也可以贷款购买生产设备。但这些贷款都需要用未来的收入偿还。
负债则相反。贷款让你可以提前使用还没有生产出来的价值,但是未来需要偿还。换句话说,负债就是需要使用未来的生产价值。
比如,一个人贷款买房,相当于提前买下了现在还买不起的房子。在未来的很多年里,他都需要用自己的收入偿还贷款。他未来生产出来的一部分价值,已经被现在的选择提前锁定了。
当然,资产和负债并不是完全对立的。贷款买设备或者扩大公司规模,都可能让人获得能够继续产生收入的资产。但是,如果负债只是为了提前消费,而且超过了未来可以承担的范围,它就会成为长期的压力。
钱可以存储价值,但钱本身也会贬值。
当商品和服务的整体价格上涨时,同样数量的钱,未来可以买到的东西就会变少。也就是说,即使你把钱存起来不动,它的购买力也可能下降。这就是通货膨胀。
现代经济通常允许温和的通货膨胀。一方面,这意味着手里的现金会慢慢贬值;另一方面,它也会推动人们消费或者投资,让钱继续流动,让这个社会 run 起来。
所以,多余的钱最好不要只储蓄。可以根据自己的情况,通过投资把一部分钱配置为资产,争取抵御通货膨胀,尽量保存自己过去的生产价值。
但投资不代表一定赚钱。房子、股票、基金都有风险。把钱换成资产,只是多了一种保存价值和获得收益的可能性。
对于个人来说,挣到的钱是自己生产价值的一种体现。对于国家来说,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 衡量的是一段时间内的新增生产,金融则让资金在不同的人和不同的时间之间流动。
理解钱,不只是为了赚钱。更重要的是知道:自己正在用什么换取收入,正在把价值花到哪里,手里的资产能不能保存价值,以及自己有没有为了今天的选择,透支太多未来的生产能力。
2026-05-19 22:28:54

最近在公司内部做了一次 AI 编程实践分享,主题叫「Spec 驱动开发与自验证闭环」。这是我这段时间在真实项目里使用 AI 开发后,总结出来比较有价值的两个点。
现在大家用 AI 写代码已经不稀奇了。把需求丢给 AI,让它帮你生成代码,很多工具都能做到。但如果只是这样用,很容易遇到几个问题:第一次生成看起来还可以,后面越改越乱;AI 忘记前面讨论过的需求;代码能跑,但和业务真实想要的不完全一致;改完以后也不知道有没有把原来的功能搞坏。
所以我现在更关心的不是「AI 能不能写代码」,而是「怎么让 AI 稳定地写对代码」。我目前觉得比较有效的方法就是两件事:
Spec 是 Specification 的缩写,可以简单理解为「说明书」或者「规格说明」。Spec 驱动开发对应的英文是 Spec-driven development,也可以简称为 SDD。它说白了就是:不要一上来就让 AI 改代码,而是先让 AI 把需求理解、技术方案、接口设计、测试场景写清楚,再基于这些文档去实现代码。
它有点像 AI 工具里的 Plan 模式,但比普通 Plan 模式更进一步。普通 Plan 模式通常只存在于一轮对话里,这次会话结束后,很多上下文就丢了。而 Spec 是落在项目里的文档,它会随着代码一起被维护。
也就是说,Spec 不只是给 AI 看的一段提示词,而是项目的一部分。
我原来用 AI 写代码时,经常会直接说:「帮我实现某某功能」。AI 会很快开始读代码、改代码,看起来效率很高。但这种方式有一个问题,它的理解过程是隐性的。你不知道它到底怎么理解需求,也不知道它准备用什么方案实现。等代码写完后再去 review,成本就比较高了。
Spec 驱动开发把这个过程显性化了。
我会让 AI 先输出类似这样的内容:
这些内容确认没有问题后,再让它进入编码阶段。
AI 编程最大的问题不是它不会写代码,而是它很容易「自信地写错」。尤其是需求比较复杂、项目代码比较老、业务规则比较多的时候,只靠一段简单提示词,很难让它一次性理解清楚。
先写 Spec 有几个好处。
第一,可以提前发现需求理解偏差。
如果 AI 在 Spec 阶段就把业务流程理解错了,那它后面写出来的代码肯定也是错的。与其等它改完几十个文件后再返工,不如一开始就在文档阶段把方向纠正掉。
第二,可以减少上下文丢失。
AI 的上下文再大,也不是无限的。一次需求可能要分几天做,中间可能还会切换工具、切换会话。如果核心信息只存在于聊天记录里,后面很容易丢。Spec 放在项目里后,AI 后续可以重新读取这些文档,继续按原来的设计往下做。
第三,可以让协作更清楚。
以前我们做开发,很多信息存在人的脑子里:这块为什么这么设计、当时为什么不走另一条路、哪些边界情况已经考虑过。Spec 把这些东西写下来后,不只是 AI 能看,人也能看。后面别人接手这个需求,也能更快理解上下文。
第四,可以让 AI 不要乱改。
我会在项目规则里明确要求 AI:如果需求变化,先更新 Spec;如果代码和 Spec 不一致,先提示我确认;没有确认前,不要直接大面积改代码。
这点很重要。很多 AI 工具执行力很强,但执行力太强也会带来问题。它可能没完全理解你的意思,就已经开始改代码了。Spec 相当于在需求和代码之间加了一道缓冲层。
我的做法大概分成几步。
我现在主要是通过 LeanSpec 这个工具来落地 Spec 驱动开发。它可以理解为一个围绕 Spec 的命令行工具,帮你在项目里初始化 Spec 目录、创建 Spec、更新 Spec,并给 AI Agent 准备一套围绕 Spec 工作的规则。
当然,Spec 驱动开发的核心不是某个工具,而是「先把需求和方案写清楚,再让 AI 写代码」这个流程。没有 LeanSpec,手动维护 Markdown 文档也可以做。但有工具后,流程会更规范,AI 也更容易知道自己应该把需求写到哪里、应该按什么步骤推进。
我比较看重的是它能把 Spec 变成项目里的固定资产,而不是散落在聊天记录里的临时上下文。这样后面继续开发同一个需求,或者过一段时间再回来修改,AI 都可以重新读取这些 Spec,而不是完全依赖当时那一轮对话。
现在大多数 Agent 编程工具都支持项目级说明文件,比如 AGENTS.md、CLAUDE.md 之类。这个文件可以理解为项目里给 AI 的开发规范。
我会在里面写清楚几类规则:
这些规则不一定复杂,但要稳定。因为 AI 每次进项目都会先读这些规则,它就知道这个项目不是随便改代码,而是要按流程来。
正常情况下,我们还是会有 PRD、会议纪要、用户故事或者测试同学整理的场景。AI 可以基于这些材料先生成一份技术方案。
这里需要注意一点:PRD 是给人看的,Spec 是给 AI 和开发看的。两者可以有关联,但不一定是同一个东西。
PRD 更关注用户要什么,Spec 更关注系统怎么实现。比如一个需求在 PRD 里可能写的是「用户可以批量分享客户」,但在 Spec 里就要拆得更细:
这些内容如果不写清楚,AI 就会自己猜。它猜对了是运气,猜错了就是 bug。
一个复杂需求不要只写一份很大的 Spec。我现在更倾向于分两类:
第一类是整体技术方案,主要讲业务流程、数据流、模块关系、整体改造思路。
第二类是接口级或模块级 Spec,讲某个接口、某个任务、某个页面或某个服务具体怎么实现。
这样做的好处是粒度更清楚。整体方案负责方向,接口级 Spec 负责落地。AI 写代码时也更容易根据具体 Spec 去实现,而不是在一大坨文档里找信息。
AI 参与开发后,不能只等它写完代码再 review。更好的方式是把检查前置,在 Spec 阶段先确认它对需求和方案的理解是否正确。
Spec 阶段要重点看这些问题:
这一步不能完全交给 AI。AI 可以帮你整理,但最后要不要这么做,还是开发者判断。
只让 AI 写代码还不够,还要让 AI 验证代码。
我说的自验证闭环,简单说就是:AI 写完代码后,根据预先定义好的验证标准,自己运行测试、检查结果、定位问题、再修改代码,直到验证通过。
这个过程类似这样:
这就是一个闭环。
如果没有这个闭环,AI 写代码就像一个只负责交作业、不负责检查的人。它写完后把结果丢给你,剩下的问题都要你自己排查。这样虽然也能提高一点效率,但还没有真正释放 AI 的价值。
「验证」不是让 AI 自己说一句「我检查过了」。验证必须有客观标准。
对后端来说,最直接的标准就是测试用例。尤其是真实启动项目、真实调用接口、真实检查数据库状态的测试,而不是只 Mock 掉所有依赖的测试。
Mock 测试不是没有价值,但如果所有东西都 Mock 掉,AI 很容易写出一种「测试通过但功能没真跑过」的代码。它只是证明了 mock 出来的世界里逻辑成立,不代表真实系统里也成立。
所以我更喜欢让 AI 写接近真实调用链路的测试。例如:
前端也一样。前端的自验证可以不是单元测试,也可以是浏览器自动化测试、组件测试、页面截图比对、表单交互验证等。重点不是形式,而是 AI 必须能自己执行一套明确的检查。
测试同学其实也可以参与进来。测试同学擅长设计正反例、边界值和业务场景,如果这些用例能在开发阶段就提供给 AI,AI 写出来的测试会更接近真实业务,开发阶段就能提前暴露很多问题。
我一般会把验证规则也写进项目级规则或 Spec 里。
比如后端项目里,我会告诉 AI:
这些规则看起来比较琐碎,但对 AI 很有用。因为 AI 不知道你本地项目的特殊情况,比如这个项目要用 JDK 8,另一个项目要用 JDK 21;这个项目要指定 settings.xml 才能拉依赖;这个项目要用某个 profile 才能连到正确的测试数据库。
这些东西如果只靠人每次口头提醒,肯定会漏。写到规则里后,AI 每次执行时就能复用。
有了自验证闭环后,我感觉最大的变化是开发者从「手动验收每一处实现」变成「检查验证体系是否可靠」。
以前 AI 写完代码,我要自己启动项目、自己调接口、自己看数据库、自己判断有没有问题。现在很多重复动作可以让 AI 做。它写完代码后自己跑测试,失败了自己改,最后把执行了什么命令、哪些测试通过、还有哪些风险告诉我。
这样并不是说人就不用管了。恰恰相反,人要管更关键的地方:
也就是说,人从低价值的重复验证里抽出来,更多去做判断和把关。
Spec 驱动开发和自验证闭环不是所有场景都必须用。
如果只是一个很小的 bug,十分钟就能改完,也没有复杂业务影响,没必要写一大堆 Spec。直接让 AI 帮你定位和修改,再跑一下对应测试就可以了。
如果是从 0 到 1 做一个新东西,也不一定特别适合一开始就完整走这套流程。因为 0 到 1 阶段需求和方案往往还在不断变化,很多东西还没有定下来,这时候如果一开始就把 Spec 写得很细,后面可能会频繁推翻重写,反而增加额外成本。
它更适合这些场景:
它也有一些挑战。
第一,团队要愿意维护 Spec。如果只有一个人遵守,其他人都直接改代码,Spec 很快就会失真。
第二,项目规则要持续维护。AI 踩过的坑、项目里的特殊约束、测试命令、代码规范,都需要慢慢沉淀进去。
第三,测试环境要相对稳定。真实测试越接近业务,越依赖测试数据、数据库、配置和外部服务。如果环境不稳定,AI 自验证也会变得不稳定。
第四,PRD 本身也需要更清楚。很多需求文档是给人沟通用的,里面可能省略了大量线下讨论的信息。人能靠经验补全,AI 不一定能。所以未来如果想更好地用 AI 开发,PRD、用户故事、测试用例这些上游材料也要变得更结构化。
我现在对 AI 编程的理解是:不要把 AI 当成一个只会写代码的工具,而是要把它放进一个有规则、有文档、有验证的开发流程里。
Spec 驱动开发解决的是「让 AI 知道要做什么、为什么这么做、怎么做」的问题。
自验证闭环解决的是「让 AI 证明自己做对了」的问题。
前者控制方向,后者控制质量。只有这两件事结合起来,AI 写代码才会从一次性的代码生成,变成相对稳定的工程协作。
当然,这套方式不是银弹,也不是用了以后人就不用写代码了。相反,它对开发者的要求更高了。你要能判断需求是否合理,能看懂方案是否靠谱,能设计出有效的验证标准,也要能识别 AI 为了通过测试而做出的错误修改。
AI 可以帮我们少写很多重复代码,少做很多重复验证,但它不能替我们承担工程判断。未来开发者的价值,可能会越来越多地体现在定义问题、制定规则、检查结果和控制风险上。
代码可以让 AI 多写一点,但方向和标准还是要掌握在开发者手里。