分类目录归档:随笔

UniGetUI —— 可能是 Windows 下最好用的应用商店

UniGetUI 是一款为 Windows 提供图形界面的包管理器聚合工具。它整合了 Winget、Scoop、Chocolatey 等多个包管理器,能够集中管理软件的安装、更新和卸载。

该工具支持创建软件捆绑包,便于批量部署或恢复个人工作环境。它通过统一的界面简化了多包管理器环境下的软件管理流程。

和 macOS 一样,Windows 也提供了一个应用商店,但和 macOS 不同的是,很多 Windows 下的软件是不会选择通过应用商店来进行分发的,所以在过去很长一段时间里,我们需要使用各种各样的包管理器来管理我们的软件,比如 Scoop、Chocolatey ,或者是直接上软件的官网,下载安装。

因为这样的需求,我们看到在中国的市场上出现了各种各样的软件管家 —— 比如 360 软件管家、火绒软件管家、腾讯应用宝。但这些软件背后的商业公司的利益或者是本身只管理通过其自己安装的软件,导致使用的时候也不是很完美。

终于,让我发现了一个接近完美的应用商店 —— UniGetUI。

UniGet UI 是什么?

严格来说,UniGetUI 并不是一个应用商店,它其实是一个为 Windows 10 & Windows 11 的常用包管理器提供了 GUI 的软件工具。而得益于他支持的包管理器足够多,所以你几乎可以将它当作「应用商店」及软件管理软件来使用。

作为一个包管理器的 GUI 实现,他提供了 Windows 近年来正火的 WinGET、老牌包管理器 Scoop 和 Chocolaty,同时也针对 Windows 下的 Powershell 5 和 Powershell 7 提供了相关的包管理器;针对编程用户常用的 NPM、PIP、Cargo 和 VCPKG 也有涉猎;虽然能力不完全对其,但最基本的安装管理和卸载等能力都是有的。

image
图片来源:https://github.com/Devolutions/UniGetUI/#package-managers

这些包管理器的上游来源组合在一起,基本上可以覆盖你的所有日常软件使用了你电脑上的 90% 以上的软件应该都可以找到了。

如何使用 UniGetUI?

安装 UniGetUI

UniGet UI 安装的方式有多种,你可以选择直接在 Microsoft Store 中安装。但如果你的 Microsoft Store 和我的一样,时常抽风,也可以考虑使用 Winget 、Scoop 、Chocolatey 来安装。甚至是直接下载安装包,作为你的安装入口(就和我装 macOS 一定先装 Homebrew 一样)。

https://github.com/Devolutions/UniGetUI/#installation

安装软件

当你安装完成后,接下来就比较简单了,直接打开软件,进入发现软件包,搜索你要使用的软件即可;

image
image

搜索完软件后,你可以点击,并在弹出的窗口中,查看对应软件的描述信息,了解这个软件是否是你需要的,并进行安装。

image

不过,你可能会发现,诶,为什么我搜索到的软件不如你的多?这是因为 UniGet UI 毕竟是一个包管理器的 UI,他所能安装的软件的选项取决于你的电脑上有哪些包管理器。默认情况下,你的系统里会自带 WinGet ,所以你搜到的都是 WinGet 当中的软件包。如果你需要更多的软件,则需要你安装更多的包管理器,并开启相关支持。

image

更新软件

当你安装了一些软件后,接下来的每日日常就是更新软件和管理软件,在 UniGetUI 当中,这件事也变得非常简单,只需要点击左侧的菜单,软件会自动查询对应的软件版本和你已经安装的软件,并可以根据自己的需求,选择你需要的软件,对他们进行更新或者卸载。然后他们的进展会展示在底部的队列中,一个接着一个处理(当然,你也可以修改配置,来提升并发度)。

image
image

封装软件捆绑包

除了上面的安装、 更新、卸载软件之外,我觉得 UniGetUI 有一个不错的功能就是制作软件捆绑包 —— 顾名思义,这是一个帮助你将一批软件形成一个 Bundle 的能力。有了这个能力,就可以非常方便的创建出你自己的软件组合。

这样对于有自己习惯的人来说,可以维护一个简单的软件 Bundle,并不断更新这个 Bundle,这个 Bundle 将会在你下次 Setup 你的电脑的时候,作为一个非常方便的快速的包,来完成初始化。

当然,也可以是你根据需要,创建不同的 Bundle 组合,去给到他人来进行安装。

image

除了和 UniGetUI 强绑定的 软件 Bundle,UniGetUI 还支持导出一个 Powershell 脚本。

image

安装脚本还是完全和 UniGetUI 无关的,意味着你可以只交付这个 Powershell 脚本,来交付你的软件包组合,可以减少你交付时的门槛(用户不用再装 UniGetUI 了,不是么)。

image

总结

总体来说,我觉得 UniGetUI 是一个不错的包管理器,它提供的统一的更新UI,可以帮助你确保软件都是最新的;同时,聚合了多个包管理器后,可以让你得软件最大程度的集中在一起管理,而减少视野之外的软件。同时,其自带的软件捆绑包则给这个软件提供了更多的可能性,除了用于自己的管理,还可以是用于团队管理、业务交付、软件开发环境构建等等一系列需要批量配置一批软件的场景。

干的不错!

半年过去了,我和 AI Coding 的关系有什么变化?

作者回顾了半年来使用AI编程的发展,指出使用量显著增长。一个关键变化是发现并依赖VibeKanban进行多任务处理,其独特功能对高效并行工作至关重要。

作者认为AI正在改变软件工程行业,挤压初级程序员的溢价但提升了优秀工程师的价值。他建议从业者应注重培养判断力、品味和开放心态,主动适应技术变革浪潮。

在去年年底,我起心动念,开始写上一篇 AI Coding 文章,最终发表在 从“代码补全”到“全托管 Agent”:我的 2025 AI Coding 进化论

image

而半年后的现在,我重新开始写这篇文章的更新,聊聊半年过去,我和 AI Coding 之间的关系的变化。

半年后的文章,我觉得不太需要重新写完整的架构,反倒是用问答的方式来撰写,其实是更好的选择。那么, Let‘s Go!

我还在使用 AI Coding 么?

是的,还在使用,而且用量与日俱增。我的 AI Coding 使用量和时间的关系大抵如此。

image

其中,这里面有一个曲线变陡和曲线向下,刚好对应了两件事:

  1. 第一件事是我发现了 VibeKanban 这个好用的工具 ,并开始大量使用它;
  2. 第二件事是 VibeKanban Sunset 之后,我没有找到平替软件来使用;

这里 VibeKanban 帮我解决了帮我做 Agent 横向拓展的能力;Sunset 实在可惜。在 VibeKanban 上,我可以一次性并行5-10个任务;

为什么是 Vibekanban,而不是 Slock(Raft)、Multica?

对于我来说,核心功能有几个:

  1. 对于 Worktree 的操作:多 Agent 在一个仓库下并行时,worktree 是必要的,不然没办法解决代码冲突的问题。
  2. Plan Mode 的支持:目前我在用 Raft、Multica 的时候,他们都没有 Plan Mode 的支持,而我敢于快速 Scale 的前提,就是 Plan Mode。在没有 Plan Mode 的产品当中,我并不能快速且放心的批量 Scale
  3. 多分支合并下的 Agent 冲突处理:当你开足够多的分支时,冲突是不可避免的,除非你人肉规划不同的任务,让他们尽可能的不要修改相同的文件,但显然,在意图清晰的情况下;让 Agent 来去合并分支是一个更好的选择。

没有这三个Feature 的产品,对于我来说和使用 Terminal 没有本质的区别。

为什么一定是 Plan mode?聊天怎么就不行了?

我觉得这个算是我对自己的一个身份定位 —— 工程师;

作为工程师,你不是和 Vibe Coder 一样,只要让 AI 无脑干活就行;你需要保障软件的整体质量;那么这个过程中,你需要有足够的时间和精力,让你操作 AI 产出符合你预期的产品和工具;这是你的工资对应事情。

食君之禄,忠君之事。

Plan 就是我控制 AI 的手段。通过 Plan ,确认 AI 在大方向上没有问题,细节上我可以后续再调整。但大方向不能错!

为什么一定是工程师,而不是 Vibe Coder?

从上一个问题延展一下,我觉得其实很多时候,大家没太想清楚自己的定位、企业的定位。

如果你的产品做给自己使用的,且没有预期给其他人使用。那么你可以随意 Vibe。不需要工程师,不需要 Care 所谓的工程师实践。

但如果你的产品是做给别人使用的,你要考虑,对方到底要的是什么?对方是否愿意为一个 Vibe 产品付费?

我不是说不能 Vibe,不能 AI Coding;而是,你的东西应该是有一些你自己的心血在里面(一句话Prompt 不叫心血),你为他所投入的时间、心血,使得它有了价值。

正是你为你的玫瑰付出的时间,使得你的玫瑰是如此的重要。

《小王子》安托万·德·圣埃克苏佩里

人类已经忘记这条真理,”狐狸说,“但你千万不要忘记。你要永远为你驯化的东西负责。你要为你的玫瑰负责……

《小王子》安托万·德·圣埃克苏佩里

这些心血可能是你和模型对话了数百轮,才把一个产品从一句话可以打造出来的产品,变成一个正经可用的产品;也可能是你对于某一处细节、某一处流程的深度优化(即使是通过 AI 实现的)。

不要 Just Vibe。你不应该把你的狗尾巴花当成玫瑰拿出去,并预期别人把它当成玫瑰;你的玫瑰别人可能看成狗尾巴花,也可能看成玫瑰。但别人很难把你的狗尾巴花当成玫瑰。努力的用你的心血浇筑,让你的狗尾巴花变成玫瑰,然后交给他人。

当然,还有一种可能性是 —— 别人没有判断力,他压根分不清狗尾巴草和玫瑰,那么这个时候,你可以大胆的选择 —— 先给他狗尾巴草,但请不要止步于此,因为你和他不是一锤子买卖,你需要持续迭代,你可以先 Fake it as 玫瑰花,但请持续 Make it until it real a 玫瑰花,让你的狗尾巴花变成玫瑰花不止是为了他人,也是为了你自己。

我在用什么模型?

如今的我,基本上主要是 GPT 5.5 XHigh;使用模型的最高智能来完成工作,而非使用一个更便宜的模型。得益于 GPT 5.5 本身比 Claude Sonnet 更便宜的定价,我可以爽用模型。

当然,Claude 也在用,不过 Claude 更多是我日常和他对齐一些技术架构,讨论一些技术设计。大的模型消耗还是 GPT5.5。

我如何看待 AI 对于软件工程师的职业影响?

很明显,程序员的溢价中的泡沫在被挤压,对于程序员来说,可能没那么舒服了。在过去的数年里,因为程序员的缺口极大,导致很多人涌入这个行业,并不是每个人都真正适合这个行业。因为稀缺,每个人都拥有了更高的溢价。

但今天,AI模型满足了很多初级需求,对于很多初级用户的用法来说, AI 已经满足了他们的需求了,对于程序员的需求量也在下降;

另一方面,AI 也给予了软件工程师更高的溢价:因为今天虽然人人都能 Vibe 了,但你相反,更难找到好的工程师。因为人人都是程序员,让其中的工程师显得更贵。而一个好的工程师,可以帮助你的产品更加稳健的走下去。对于软件工程师来说,可以有更高的溢价 —— 可以一个人带着 AI干过去十个人的事情,同时拿过去 2-3 个人的钱。

我对新人有什么建议?

大家常聊,AI 时代,什么样特质的人是更紧缺的?答案也比较明确 —— 有 Taste、有判断力、有想法的人更重要。

前两者其实是相同的 —— 你需要先看尽好与坏的差异,然后才能在遇到不好的产品的时候,快速分辨出来;你只有看过足够多的好东西,你自然就知道你不想要的东西。所以,在 AI 的时代,应该尽可能多的去做一些尝试;然后通过尝试,体验更多的好东西。

而后者,则要求你有足够多的输入,不要固步自封,也不要怨天尤人。AI 带来的变革是大势,我们无能为力。就像大浪袭来,我们可以选择站在岸边等浪扑到脸上,也可以选择拿上冲浪板,主动走上浪尖,做弄潮儿。

如果你有更多的问题想问我的,欢迎你在文档下方评论区留言,我会后续在评论区里持续回复大家的问题。

2026 欧洲之旅:坐大巴

欧洲游和美国旅行有一点不同的是,我的欧洲游跨越了国境线,一次性游览了两个国家。不同的国家使得自驾游欧洲这件事带来了更多的变数;而法国和欧洲对于中国驾照自驾的政策的不同,更是让我打消了自驾的冲动,再加上欧洲又是一个典型的路窄,开车不便的环境,所以,最终放弃了自驾。

原本是考虑以火车出行,但从法国到意大利坐火车也是颇为麻烦的,需要先从法国坐铁路到法意边境的小城文蒂米利亚(Ventimiglia)下车,换乘意大利的列车,才能完整入境;再加上从尼斯到佛罗伦萨无论如何都要中转一次列车(无论是米兰还是热那亚)。考虑到换乘的麻烦,所以最终选择了相对更加简单的坐大巴出行。

路线如何?

虽然是大巴,但依然需要换乘。不过,大巴得益于不需要涉及到意法边境的换乘,所以可以减少换乘次数,全程只需要一次换乘就 OK;我们的路线是从尼斯上车,然后坐车到热那亚,再由热那亚坐车前往佛罗伦萨。

image

体验如何?

从尼斯到佛罗伦萨可以选择不同运营公司的车,比较出名的是 FlixBus 和 BlaBlaCar Bus。我们最终选择的是 FlixBus。

FilxBus 的整体感受不错

  1. 可以提前预定座位,而且,你可以选择座位(就像国内的高铁一样)
  2. 上车后车况很好,位置是干净的;座椅看得出来也很新;同时座位之间的间距不算小。
  3. 车上每个位置都有前置可以打开的小桌板,就算你想办公,也是可以的;
  4. 大巴车上也提供了免费的 WIFI,对于用户来说,还蛮不错的。
Screenshot 2026 06 16 at 19.51.54@2x
预定座位和行前提醒

不仅如此,因为我们选择的路线刚好是自西向东,自南向北,因此在车上,也可以看到不错的海景。当然,如果是自驾,风景应该会更好。

img20260223100443890228775484741138
从尼斯坐车前往热那亚一景

流程

买票

想要坐车,第一步先买票。访问 https://global.flixbus.com/ ,输入你要前往的地址

image

在新的窗口中,会展示可选的线路和时间,以及对应的费用。

image

在上图中,需要注意,中心区域的 1 transfer 是指 一次换乘;右侧则是我点击 1 transfer看到的具体的信息;你可以看到这个整个行程的具体情况。

选择合适的班次后,就会进入到购买的页面,可以填写乘客信息、选择具体的座位、是否需要

image

然后付款后,稍后会把你的票通过邮件发给你,邮件里会有个 PDF,你可以把它下载到手机上,或者使用预定号和身份信息,在他们官方 App 中添加这张票,

image

坐车

当你买完票了,就简单了,在指定时间之前抵达指定地点,然后等车就行。需要注意,不要迟到,但也不用来太早,大概20~30 分钟前到就行,来早了也上不了车;

你到了候车地点可以找一下 FlixBus 的标志,比如下图站牌上就有个标志;

img 0941

此外,如果你下载了 App,app 中也会有个简单的说明

image

等车来了以后,排队放行李,检查护照,检查人,确保人、车票、护照三个都对上号,放好行李,就可以上车找自己的座位等着坐车了~

坐车中

坐上车后,发现 Flixbus 还提供了 WIFI,于是连上了 WIFI;发现免费的 WIFI 速度还行,不过就是有流量的限制,而且是按照设备来限制的,也不允许看视频。不过刷刷微信公众号文章之类的还是绰绰有余的。

img 0946
img 0947

不仅如此, FlixBus 的数字化基建做的也不错,车辆在行驶过程中,会有实时的信息上报,你会看到你的车的当前位置、预计到达的时间。对于坐车人或者是接车人来说,都还是蛮方便的。

img 0954

不过整体坐车下来,有一点觉得还是挺牛逼的。。。。 Flixbus 的司机在山路上。。。能开到 120 。。。牛逼。。。我都担心车掉下去。

img 0948

补充

img 0945
我们坐的 FlixBus,旁边还有个 Zou! 的车。
img202602231502298723654589416620037
在热那亚候车

2026 欧洲之旅:资产安全

作者在前往法国前,为防范盗窃准备了多种资产安全物品。这些物品包括用于固定行李的自行车锁、带TSA锁的行李加固带、防RFID的卡套和腰包,以及具有防割和隐藏拉链功能的背包。

作者还使用了平替版AirTag追踪行李,并用八字扣锁住背包拉链。虽然部分物品功能有所重叠,但整体上这些准备被认为有助于保障旅途中的财物安全。

在来欧洲之前,我和朋友聊了聊关于欧洲之行的建议,所以,资产安全成为了我再去之前非常担心的一件事。毕竟:

不偷不是意大利,不抢不是法兰西,又偷又抢英吉利。

网络俚语

所以,这次在去法国之前,我准备了一些好物,来帮我做好资产安全的管理;可能是运气好,也可能是最近治安好,也可能是我的准备起效果了,反正最终的结论是 —— 我的东西没有丢,很好。

接下来,我们一一看看我准备的东西:

自行车锁

image

第一个好物是自行车锁(带伸缩的那种)。

朋友和我说这个的时候,我还一脸懵,没明白这个是干嘛的。朋友解释说:欧洲这边坐火车投行李的人非常多,有了这个,你就可以把你的行李锁在高铁的行李架上,更安全,小偷没办法把你的行李给偷走。

必备!

行李加固带

image

行李加固带主要是为了防止行李被别人偷偷塞东西,你如果自己要买一定要买带海关 TSA 锁的那种,包括你的行李箱也要是带 TSA 锁的。这样才能确保海关可以简单打开,而不是破坏你的箱子。

有了这个,就能进一步保证你的行李箱没办法被轻松的打开。

防消磁卡套

image

主要是防止信用卡的 RFID 卡片被阅读盗刷,毕竟海外的信用卡盗刷还是很多的。不过实际上我没怎么用到,因为我的背包带了防刷的功能。

腰包

image

腰包是一个很重要的东西,我们平时在城市里出门逛的话,就会带上这个腰包,放在内衬里;后面我去美国也用的是这个腰包。这个腰包很薄,所以可以放在衣服下面不太明显。

而且这个腰包还带了 RFID 防刷的能力,很好。

背包

image

这个背包是我这次欧洲之旅我觉得非常好的选择!因为这个背包外层是防割的,而拉链呢,又是隐藏的,就可以避免很轻易的被小偷拉开拉链。

image

Air Tag

这次我还买了一些华强北的 airtag 平替,十几块一个,每个箱子、背包都丢了一个进去。方便用手机查看他们的位置(特别是在机场中转的时候),更有安全感。

image

八字扣

image

八字扣是和背包一起用的,这个我觉得欧洲游必买。主要的作用是把你的背包的两个拉链锁在一起,没那么容易快速拉开偷东西;当然,我的背包因为提供了隐藏拉链,导致收益有限。不过在我太太的小背包上起了作用。

如果你去欧洲,强烈建议你购买。

总结

其实总的来说,我稍微有点买重了,比如防消磁卡套和我的背包、腰包稍微有点冲突;八字口买多了;不过我觉得还是要介绍给大家。如果大家没有像我一样,为了欧洲游专门买了个防盗背包,说不定其他的配置你真的需要~

2026 欧洲之旅:在佛罗伦萨坐公交

佛罗伦萨公交车按时间收费,而非国内按里程计费。司机不提醒购票,有随机抽查,无票将被重罚。

票可在App或售票机购买,实体票需上车打标,电子票在App激活后使用。建议用Google Map查路线,注意公交站与车次匹配。

上次去美国的时候,我们是以开车 + 打车为主的;这次欧洲之旅中,在法国我也是以 Uber 打车为主;但到了意大利,因为坐长途车抵达时间较晚,导致我们在佛罗伦萨的时候打车十分不方便,所以就尝试了一把公共交通,刚好,也给大家分享一下坐公交的经验。

收费策略不同

国内的公交车策略一般是按照站点的里程来进行计费;对于特别长的链路;还会提供分段计费的策略;而且,国内的公交车公司往往会要求司机/售票员进行买票的提醒;

佛罗伦萨的公交车的策略不同,而是按照时间来售卖,你买的票往往有一个固定的时间范围,在这个时间范围内,你可以任意坐公交车(其实和国内的按里程计费没有本质区别,因为公交车的车速是固定的)。只要你的票还有效,你就可以上车;同时,公交车司机也不会再提醒你购票,你自己评估你的票是否还有效;取而代之的是随机的车票检查,如果在抽查的时候,你没有票,就会直接罚一笔远超车票钱的罚款。

如何买票?

佛罗伦萨的公交票有两种购买的方式:一种是电子票,你可以下载 At Bus App;直接在 App 上购买;也可以选择在车站附近的烟草店或者有轨电车点附近的自助购票机购买。

可能会有人兜售便宜的票,我胆小,没敢买,自己老老实实的在机器上买。

实体票的话,你会拿到一个这样的实体票,你在上车的时候,需要把这个实体票插到检票机上,去打个标,表示这个票从这个时刻开始使用。

img 0955
实体票
img 0969
这个就是检票机,把票插进去,就会自动给你打个时间到票上,

而电子票就简单许多,你直接在 App 中购买票,多个人可以直接买多个票;买完之后,可以在 App 中点击票来激活,这样就可以直接上车了;不仅如此,你在 App 上买票的话,有个好处是,你可以非常方便的看到车票什么时候过期,省得时间过了自己没注意;

img 0958
手机端的效果
购买多人车票
购买多人车票
手机上可以看到票的可用时间和过期时间
手机上可以看到票的可用时间和过期时间

如何选择我要去哪坐哪班公交车?

最简单的办法是直接用 Google Map 来看;在使用 Google Map 时要注意,佛罗伦萨这边是小站多,所以你要看你自己坐的公交车和具体的公交站是否匹配一致;很有可能你会发现,你虽然站在公交站,但你要坐的车就从你眼前径直开走了。

img 0961

2026 欧洲之旅:坐高铁

忙了一段时间,终于有空把之前挖的坑给填了。。。

如果你在欧洲旅行,除了租车自驾/坐大巴以外,坐公共交通中的高铁也是一个不错的选择,而且因为你大概率有中国高铁的经历,那么体验一下欧洲的高铁,也是一个不错的选择。

IMG20260219163424
oplus_3145730

如何找自己如何坐什么车?

我们这一次的跨城旅行主要是依赖高铁,比如从巴黎到里昂、从里昂到尼斯、从佛罗伦萨到里昂;和国内可以 12306 走天下不同;欧洲,特别是跨国的列车,会存在同一个线路有多家不同的公司在运营;

找路线最方便的工具是 Google Maps,打开 Google Maps,选择你的出发地和目的地,并切换「铁路」Tab,就可以看到不同的时间段的从出发地到目的地的高铁路线。

Screenshot 2026 05 09 at 17.21.41@2x

这里需要注意,同一条线路可能是有多个铁路公司在运营,这意味着同一个线路,你看到的票价可能是有高有低的。比如,图上的路线就包括意大利国家列车(图上左边标注 FR 的,是意大利高速列车 Frecciarossa 的缩写)和法国国家铁路公司(SNCF)家的 TGV INOUI(SNCF 的旗舰级高速列车服务,他们家还有廉价列车品牌 OUIGO)。

法国国家高铁除了 TGV INOUI 和 OUI GO 以外,还有 TER(Transport Express Régional),省级普通列车,速度更慢一些。

你在选择不同的列车的时候,需要关注一下具体要乘坐的公司。

如何买票?

根据你买票的铁路公司,可以选择不同的平台来买票;

如果你要购买的是 SNCF 旗下的车票,可以选择下载 SNCF Connect App,直接在 App 上购买;或者访问 https://www.sncf-connect.com/ 来购买。

以 SNCF 为例,访问网站,搜索你的出发地到目的地的路径后,找到合适的车次,就可以选择不同的席位了,SNCF 也区分 二等座、一等座;

9579ebd1 3d2e 4ac5 9469 9616dcf1a9aa

你可以根据需要选择不同的席位。需要注意,对于 OUIGO,默认只包含一个手包和一个小的行李箱,如果你选择了 OUIGO,且行李更多,则需要额外加。

Screenshot 2026 05 09 at 17.34.41@2x

确认要购买的座位后,一步步走完流程即可;

如果你要坐的是意大利列车,则更加简单,可以直接选择在微信小程序上搜索「红箭高铁」或者「Frecciarossa」来直接在微信小程序上购买高铁票。同样的是搜索目的地;然后选择对应的席位,输入购买人的信息,即可完成购买。

我的票在哪?

对于 SNCF ,你购买好的票会给你发一封邮件,来确认你的购买。

Screenshot 2026 05 09 at 17.40.24@2x

然后,你只需要下载 SNCF Connect 的 App 在 App 的 Ticket 中加入你的票即可;如果没有看到,也可以使用你邮件里收到的 Reference Code 来把对应的票加入到你的手机 App 中。

Screenshot 2026 05 09 at 17.46.03@2x

如果你做的是意大利红箭高铁,则需要在小程序中找到你的订单,在你的订单中是有二维码或者 PDF;你可以把 PDF 提前下载下来,存在手机里,以便于在使用的时候找到,不用现场下载(特别是高铁上查票的时候,有可能网络不好)。

如何上车 & 使用你的票?

在欧洲坐高铁并不使用「身份证」,因为各个国家并不同,而是更多使用「二维码」。所以,你进入到车站后,找到你的二维码,直接刷码就可以进站;

IMG20260221175534
列车站台上的车次列车信息展示。

需要注意的是,你在坐车的时候,要关注你自己坐的车厢和座位号是否是对的,因为不同的车厢可能在中间会拆开,如果你坐错了,可能会被带到完全不同的城市。

f8949758 03c0 4d66 b670 de6a75c7c1be
车座的座位提醒

车厢内环境

我坐的是 TGV INOUI 的高速列车普通二等座,我觉得整体坐起来的体感还不错,空间的环境也很大;而且隔几个座位都会有放大行李的位置,还不错。同时,每个人的桌子都可以放平,变成桌台;

IMG20260219164730

此外,列车上还会有免费的 WiFi 可以使用,体验不错。

一个有趣的发现

我这次旅行的时候,发现欧洲很多车站是「断头车站」,也就是你到车站后会发现,你所在的车站是中断的,而不是像国内的很多车站,一般都是做成贯穿式的。我猜测可能是因为这些城市往往是有比较多的历史建筑,实在没办法把车站修成这个样子的,所以就只能做成断头的(北京北站也算断头了)。

当然,欧洲的车站也不都全是「断头」的,比如尼斯车站就是贯穿式的。

Screenshot 2026 05 09 at 17.49.54@2x

2026 欧洲之旅 Day 4:就是凡尔赛!

前 4 天的行程

2026 法国之旅:Day 0

2026 法国之旅 Day 1:落地巴黎 & 油封鸭

2026 法国之旅 Day 2:逛吃巴黎 & 领悟

2026 法国之旅 Day 3:艺术,还 TMD 是艺术

凡尔赛宫

凡尔赛宫因为在远郊,所以我们一早打车出发,前往凡尔赛宫,赶在最早一波进了凡尔赛宫,享受了没啥人的凡尔赛宫。提醒想来逛凡尔赛宫的人,一定要早点出发,要来逛凡尔赛宫的人特别多。

IMG20260218111012
凡尔赛宫门口的路易十四雕像。
IMG20260218085853
卢浮宫的排队人群;左侧是自由行 / 散客的渠道入口(A),你可以在你的 PDF 中找到具体哪个入口。

凡尔赛宫的面积很大,里面有大量的路易十四的痕迹,各种各样的画像(毕竟是皇上)。当然,在游览过程中,还是看到和听到了不少的奇闻轶事 —— 比如,为了避免狸猫换太子,皇后的分娩过程是允许被贵族围观的。。。。

不过,凡尔赛也是真的雍容华贵。和紫禁城的庄严肃穆不同,凡尔赛宫真的是把「我有钱」这件事放在了任何位置,随处可见的金箔物品、巨幅天顶壁画,非常震撼。法国的许多老式的建筑也是喜欢这种繁复的设计,可能也是从皇室传下来的。

IMG20260218104154
凡尔赛宫背面,这张照片背后就是凡尔赛宫的花园。

不过很可惜的是,可能因为是淡季,凡尔赛宫后花园的各种雕像都被包了起来,看不到雕像。

IMG20260218104316
凡尔赛花园

早餐

因为今天要一早出发去凡尔赛,所以早餐吃的是楼下的餐厅的法式早餐,不过因为来到的太早,所以没有煎蛋,这里就不贴图了。

午餐

午餐我们吃的就很好了。今天午餐我们一共吃了两轮;法餐 + 中国餐;

在逛完凡尔赛宫后,我们去吃了一家小红书上推荐的 Le Royal Brasserie,这家店在小红书上饱受好评,于是我们便也去尝了尝他们家的特色。这家店的老板娘是中国人,看到你是中国人且会说中文,会直接帮你拿中文的简易菜单,还会给你一些简单的建议。

我们在这家店里吃了油封鸭、鹅肝酱、香煎海鲈鱼、法式洋葱汤,都非常的好吃!油封鸭一点都不干,汁水丰润,洋葱汤非常的香!

吃完这家,在小红书上我看到旁边还有一家 Panda Noodles,说是有好吃的牛肉面;在法国这也是有四天了,还没吃过面,就跑去吃一碗面。可惜不是兰州牛肉面,更多是接近于四川的牛肉面的做法,不过也是很好吃啦。如果你来凡尔赛,也可以试试这两家店。

晚餐

由于今天逛凡尔赛宫有点累,所以我们干脆就不跑远路了,在附近的一家中餐馆 —— Resto des amis 友滋友味 吃了。这家店的老板是个东北人,有非常明显的东北口音,整体还不错,不过店不大,也就 7 张桌子,如果你要吃的话,最好是提前订座。我们俩去的比较早,但已经只剩两张桌子了。

IMG20260218194411
炒鸡
IMG20260218192431
土豆牛腩煲

总结

今天的行程很空,主要是凡尔赛宫,去好好「凡尔赛」了一把!其他的部分,偏日常,就不在日记中提及,后续见专题篇~

从“代码补全”到“全托管 Agent”:我的 2025 AI Coding 进化论

本文有一个 Online 的 Sample 版本。如果你对于「我具体是怎么做的」感兴趣,可以直接看这个 Twitter Threads

2025 年,我的工作习惯彻底被 Claude Code / Cursor / Codex 改变了;这一年给我带来的改变,不亚于当年我用易语言写出第一个应用程序的时候。这句话不仅适用于我的产品经理身份,同样适用于我的工程师身份。这不仅是软件开发效率的提升,更是软件开发方式的重构。

AI Coding?到底是什么?

talking past each other

在社交媒体上讨论 AI 编程的时候,很多时候大家其实没有对齐在讨论的 AI 编程的范畴和适用领域,使得大部分时候,大家在鸡同鸭讲,公说公有理,婆说婆有理。所以,在我们真正讨论 AI 编程之前,我们需要先澄清一下,我们到底在讨论什么「AI Coding」?

different levels

目前来说, AI Coding 有几种不同的产品形态和用户交互形态,他们包括:

  1. L1:古典的直接问 ChatGPT:有问题直接问 ChatGPT、Gemini、Claude 等 AI 助手,借助 AI 助手给出的信息,自行 Debug 和修改代码。
  2. L2:使用 IDE / 插件中提供的补全功能:直接写函数名,然后 AI 会帮你补全函数的细节,你再自己微调或者不微调。这种能力其实过去也有,只是没有这么强悍。大家使用 IDE 来开发,很大程度上就是 IDE 提供了极好的补全能力。
  3. L3:使用本地的 AI Coding 工具的 Agent 模式,全托管或半托管式的编程:你只描述需要做什么,具体做动作由 AI 来完成;这里还有几个细分的方式,包括完全托管(比如 claude code 开 –dangerously-skip-permissions ; codex 开 –dangerously-bypass-approvals-and-sandbox)和半托管(用户手动确认行为,只是由 AI 来完成具体修改的动作)。L3 操作的是你的本地环境,有破坏的风险,但也有无限的可能。
  4. L4:使用网页端的 AI Coding 工具,直接出 Demo:你不需要在本地有任何开发环境的配置,直接在网页端使用一个应用,来完成 Coding,你只需要描述你想要的东西,剩下的完全交给 AI(虽然这往往意味着难以与复杂的本地业务流集成)。

大家在社交媒体上和别人讨论 AI Coding 的时候,需要注意,很有可能你在聊的是 L3 ,但别人在聊的是 L4 ;你们看似聊的都是一个东西,但实际上是完全不同的东西。我们这篇文章讨论的,则主要是 L3 —— 即使用本地的 AI Coding 工具的 Agent 模式,全托管或半托管式的编程。

到底谁在用 AI Coding 工具的 Agent 模式?为什么是 Agent 模式?

说完了大家眼中不同的 AI Coding 工具,我也必须再强调一下,即使大家聊的都是【AI Coding 工具的 Agent 模式】,因为身份的不同,每个人的用法也会有很大差异,大家对他的预期也完全不同。因此,不同的人对其的评价也千差地别:其中大体也可以拆分为三个大类:

different groups of people
  1. 传统的软件工程师:使用 AI Coding 工具完成自己工作过程中的一些辅助性工作,对于自身的能力和工作的要求有较高的要求。
  2. 有一定研发概念的产品工程师(称之为产品工程师是因为他们有一些基础的软件工程概念):使用 AI Coding 工具拓展自己的能力圈,去做一些之前必须依赖软件工程师才能做完的事情(比如做个小 Demo,或是上线一个软件产品)。
  3. 被媒体上的文章忽悠进来的小白(他们基本上没有太多的软件工程经验和基础):跟着网络上的信息了解到了 Coding Agent,然后尝试在不同的软件上使用(不局限于 Claude Code,Cursor 的 Agent 模式也算),经常会卡在一些软件工程的基础问题上。(我特别推荐这类人去看《计算机教育中缺失的一课》,看完以后,会让你很快理解你所遇到的问题,并能够快速处理 AI Agent 所给你的信息,进行下一步操作)。

这三类人因为工作的要求、对于软件工程的理解的不同,会导致他们使用 AI Coding 工具的 Agent 产出完全不同的体验,从而有不同的评价。

而之所以是 Agent 模式,是因为相比于补全模式需要你现有一段代码;Chat 模式往往不指引你完成所有的工作或需要你现有互联网软件的基础才能完成工作;Agent 模式自带的环境操作能力,使得你即使完全不懂 AI 和 Coding,也可以做一个像模像样的小应用出来。这打破了过去需要软件工程师才能做出一个 Demo 的限制,同时也极大的鼓励了新手小白,试着去做一些有意思的事情。

Agent 模式也是 AI Coding 最出圈的一个 Feature;

我和 AI Coding 工具的 Agent 模式的缘分

在这条上,我提到,我其实经历过三种不同的状态,这源自于我过去一年的体验。

在过去这一年里,我从一个「以补全为主,抗拒 AI Coding Agent」的工程师,转变为了一个「好好利用 AI Coding Agent」的工程师。这其中,离不开我身边的朋友们和小伙伴们,和他们的协作,让我真的意识到了 AI Coding Agent 的价值。

这里要感谢刘超、杨鼎睿、岳增五,和你们的协作让我极大的改变了自己对于 AI Coding 的认知和看法。

作为一个写了十数年代码的工程师,我拥有一些自己平时写代码的脚手架,可以帮助我快速完成一个项目,而同时,作为工程师的自我要求,我希望我自己写的代码能够拥有不错的代码质量和性能,从而可以提供一个稳定的软件质量。所以在一开始,我对于 AI Coding Agent 的能力是持怀疑态度的,虽然依然会使用,但整体信任度没有那么高,往往只让它处理细枝末节,基本上是让 AI 去写一个完整的功能的细节,或者是让 AI Coding Agent 去进行 Code Review,而不是让他去动业务代码;直到 Claude Sonnet 3.7 的时候,我才发现 Claude Code 已经能完成不少的工作,甚至很多小的 Feature,不再需要我先行规划,再让他自己去做细节,我可以非常坦然的交给他一些功能,让他自己去完成我只做关键验收。

而从这个时刻开始,我对于 AI Coding Agent 的使用开始与日俱增,我开始使用 AI Coding 去完成越来越多的功能和效果,然后,我开始对 AI Coding 放权;开启了 --dangerously-skip-permissions ,让 Claude Code 自己去写代码,去实现效果;

也和所有的使用 AI Coding Agent 的人一样,我也经历过 AI Coding 工具将代码整的一团糟,然后放弃的时刻。不得不说,Claude 有些时候的过度设计,真的让人觉得无语。或许这是最佳实践,但最佳实践不仅仅要配合着实践用,也要配合着项目的时间节点和周期,以更好的完成项目的目标 —— 你要记得,Coding 只是完成目标的手段,而不是目的。

不过,随着对于 AI Coding Agent 的逐步使用的深入,我对于 AI Coding Agent 的使用越来越了解也越来越多的在不同的场景下去使用 AI Coding Agent ,去完成自己的工作。

如今的我对于 AI Coding Agent 模式的观点

首先,我旗帜鲜明的说所有的软件工程师都应该试着使用 AI Coding Agent,放弃、逃避、蒙头装鸵鸟都是没有意义的,熟练掌握 AI Coding Agent 已不再是加分项,而是生存技能。 AI Coding Agent 正在切实的改变着我们的行业。诚然,AI Coding Agent 不会影响我们这些「老」工程师的工作,但这个问题如同被熊追着我们一样 —— 淘汰你的从来不是熊,而是比你跑得更快的人。 AI 不会淘汰工程师,但会淘汰那些拒绝进化的“手动操作员”。优秀的工程师不会消失,我们的职责正从“手写逻辑”转变为“选择方案、设计架构、验收质量”。

其次,我依然相信大家的软件工程经验是有价值的,就像上面我提到,最佳实践本身没有问题,但每个人所面对的项目的节奏是完全不同的。软件工程师的价值从手写代码,变为了选择 AI 提供的解决方案,Review AI 提供的解决方案,可以帮助我们更好的完成自己的工作。优秀的软件工程师只是工作职责变了,但他们不会消失,甚至会获得更多的加成

我现在怎么用这些 Coding Agent?

我目前自己同时在使用的包括 Claude Code、OpenAI Codex、和 Gemini Cli;其中前两者是我自己花钱买的,后者是 GDG 赠送的。

我强烈建议大家自己花钱购买。如果公司买了最好,如果公司没买,自己买也是划算的。 Claude Code 5X 已经满足日常使用了,如果你用量大,再升级 Claude Code 20X 即可;$100 其实就是大家聚餐吃一顿价格,并不贵,但给你带来的提升是远超这个价格的。

我对于 Coding Agent 的使用会包含两块:

  1. 本地使用
  2. 云端使用

以及,一些质量守卫。

本地使用

本地使用时,我会使用 Claude Code 的 Plan Mode 来设计一些需求,通过和 Coding Agent 的几轮交互,约束需求的范围,并让 Claude Code 去完成相关的功能;

同时,我会使用 Codex 来为我的项目补全测试 —— 过去我自己很多时候懒得写测试,现在有了 AI 来帮助我们完成测试的基础覆盖,大大提升了我的效率。或许 AI 无法保证测试的如一个专业的测试同学,但却可以让我先完成从 0 到 1 的建设,让我自己可以变的更好。

Gemini Cli 则会在一些时候,我会让其作为项目的补充,主要也是 GDG 赠送的 Plan 额度有限,所以用的不多。

之所以会同时使用三个不同的 Coding Agent,主要还是考虑到模型本身的能力是有差异的;不同的模型可以给我提供不同的视角,从而可以确保对于一个问题有更全面的思考,规避可能的思维漏洞。

云端使用

除了本地的使用,我还会在云端使用 AI Coding Agent,但并不是使用网页端的 Coding 工具,而是在 CI 工具链中集成 AI Coding Agent,使用 AI Coding Agent 对于我的每一次提交、每一次 PR 进行 Code Review ,通过这样的方式,帮助我更好的发现代码中的问题,既可以确保自己对于问题的思考没有漏洞,同时可以进一步的发现自己的经验不足,补全对于问题的思考维度。

特别是,集成多个 Coding Agent 可以明显看到不同 Coding Agent 对于问题的思考角度和深度不同,对于自我提升非常有帮助。

质量守卫

由于AI Coding Agent 本身存在的问题,往往会在大规模编辑代码的时候,存在一些编辑错误、无用代码、不符合规范的问题,因此我在深度使用 AI Coding Agent 的项目中,都会引入大量的质量守卫,来确保不符合规范的代码无法提交到云上。我们应当保持对 AI 的信任,但必须坚守 「信任,但要核实 (Trust, but Verify)」 的原则,确保 AI 提交的代码每一行都可信、可控。

flowchart

具体包括:

  1. 引入静态检查的准入机制,扼杀低级错误:借助 git hook,在提交前进行 code format
  2. 引入质量红线,控制确保逻辑不出错,没有改错之前的代码:借助 git hook 和单元测试围栏,要求提交到代码库中的代码必须测试覆盖率满足要求(强 AI Coding Agent 介入的项目会要求测试覆盖率到 100%;并包含集成测试和端到端测试)。
  3. 引入 AI Agent 的自愈能力,闭环问题的修复:借助 git hook 和一些 linter 工具,发现代码中的问题,并让 AI Coding Agent 自己去修复他。
  4. 引入代码复杂度分析工具,让 AI 写出人和 AI 都易于维护的代码:常见的编程语言基本上都提供了圈复杂度检查工具,你可以在你的项目中引入圈复杂度检查工具,让 AI 提交之前确保所有代码的复杂度不会太高,从而既可以借助 AI 的能力快速迭代,同时又保留自己随时介入的可能性。

当你有充足的围栏检查的时候,你就可以放心让你的 AI 去完成工作,并要求他自行提交 commit,这样可以让其自动执行 git hook ,并修复 git hook 中所配置的工具检查出来的问题,从而确保提交到代码库中的代码不会有一些基础问题。

如果你还没有开始使用 AI Coding Agent ,你要怎么开始(工程师篇)

如果你是一个工程师,想要试试 AI Coding Agent ,但不知道怎么做?

  • 我能理解你对于代码质量的要求和你的工作对于你的要求;
  • 我也知道你担心引入 AI 导致你的项目复杂度快速提升,无法维护,最后导致项目彻底崩盘,你反而被干掉;

所以,我推荐你这么干:

  1. 在现有的 CI 工具链中加入 AI Coding Agent 进行 Review,从而让 AI 先从 Review 代码开始,给你提供更多的建议,帮助你先变成一个更好的工程师;
  2. 在习惯让 AI Coding Agent 参与到你的工作流里后,可以先让 AI 帮助你补全测试,建立起单元测试围栏,从而让你放心的使用 AI Coding Agent 参与到你的项目里;
  3. 使用 AI Coding Agent 完成你的工作(记得加入各种围栏),让你自己获得进一步的解放。

当你完成了上述三步后,你已经熟悉了 AI Coding Agent,就可以除了做一些你熟悉的工作,还可以让他带着你,去做一些你所不熟悉的事情,比如你是前端,让他带着你搞后端;或者你是后端,让他带着你搞 iOS。

总结

到了 2026 年,你依然可以 Happy Coding,不过你要学会意识到,我们除了做体力劳动的 Coding,我们更应该用好 AI Coding 工具,将体力劳动托管给 AI Coding Agent,让自己的工作越来越具有「创造性」,做一个「创造者」。

AI 来了,你还要写 Blog 么?

最近在 V2ex 上看到一个帖子,AI 是不是基本杀死了 blog,我在帖子里回了一嘴:「blog 是自己写给自己的。不是写给别人的」,基本表达了我的观点。今天我来详细的阐述一下我的观点。

image

Blog 到底是什么?

贴中原贴主提到的是 CSDN 等 Blog,所以在他的观点当中, Blog 主要是以 CSDN 这样的技术 Blog 为主。但实际上,Blog 是一个极大的分类,Blog 是 Web Log 的缩写,你约等于可以理解为这是一个「个人网络日记」,与之对应的是本地的、线下的、纸质的日记。

Blog 真的会被杀死么?

Blog 的杀死与不被杀死,其实只由「Blog 主」来决策;AI 所能提供的,是帮助 Blogger 更快的识别出这个问题。

在过去的很多年里,CSDN 上充斥着大量的低质量的技术文章,基本上都是 Copy & Paste 某些技术条目(坦诚的讲,我也写过类似的内容,你在这个 Blog 上也能看到一些),然后就结束了,不加任何的思考和想法。如果将 Blog 的领域缩小到这个范围,我认为,这个答案可能是基本上是的。我们确实不太需要那么多 Copy & Paste 的技术文章,因为这些内容 AI 其实已经都学习了,他的记忆中已经有相关的内容,能够提供给你。

但,技术类型文章,是无法被杀死的,也是需要更多的 Blogger 来去创作的。AI 大模型的原理决定了,他只能做「训练数据中有的部分」,没办法去做「训练数据中没有的部分」。而技术领域的信息不是停滞不前的,我们每时每刻都有新的开源代码被提交(当前,里面可能有一部分是 AI 生成的,但如果这个生产过程中有人在其中辅助,你都不应该视为这部分信息是模型天然已知的内容,因为人在其中加入了额外的变量)。这些内容从他们出现在技术领域中,到被大模型学习到再到被大家使用,中间的周期可能长达数月。我们不可能在这数月期间,不对这个领域做任何的学习、改造和迭代。

所以,Copy & Paste 的 Blog 是会消失,但更多的新的、原创的内容,会越来越多。唯一的问题是:你是否是那个原创 Blog 的作者?

回归本心写 Blog

除了从数据的层面去分析来看,我一贯的观点是 —— Blog 是写给自己的。写作是我若干年来非常重要的一个技能,这个技能帮助你理清自己纷乱的思绪,让你脑海中的无需信息变成了有序的知识,所以,我热衷于记录、热衷于写 Blog,本质上是我在不断的通过写 Blog 来优化我的大脑,优化我脑海中的信息。

如果你认可这个假设,那么这件事,就不言自明 —— 你会因为 AI 的到来就停止思考么?如果是的,那么你确实不需要 Blog;但如果不是,Blog 依然要写,还要持续写。可能是写到生命的尽头。