MoreRSS

site iconBestony | 白宦成修改

Logoly.pro作者,写了《EasyWordPressBook》、《给程序员的写作课》、《Remote OK – 远程工作手册》、《自我量化指南》等,常驻天津。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Bestony | 白宦成的 RSS 预览

使用 Docker 部署 Github Actions Self Hosted Runner

2026-06-20 20:28:57

近些年来,我的个人项目基本上也是托管在 Github 上的。主要的原因一方面是 Github 身边的 Git Repository 使用起来体感还不错,另一方面,也是很重要的便是 Github 的 Actions。

作为一套开箱即用的 CICD 系统,Github Actions 给所有的 Public repo 提供了免费的运行时长,而对于 Private Repo,则没有那么多;我虽然购买了 Github Pro,每个月有 3000 分钟的额度可以使用,但随着你的项目越来越多,在进行的 CICD 检查越来越多,导致 3000 分钟的额度捉襟见肘,经常月中就没有了。

所以,我就瞄上了 Github Actions 的 self-hosted runners。其实如果你有足够的主机,配置起来挺简单的。打开 Github 仓库页面,找到 设置 – Actions – Runner 页面,就可以新增 self-hosted Runner,在新的引导页面,选择你要使用的操作系统,然后跟随下面的指引安装即可,简单易行。

Screenshot 2026 06 20 at 20.00.48@2x

不过,这个方案也有个问题,一台主机只能安装一个 Runner,而一个 Runner 只能工作于一个仓库,对于项目比较多的人来说,还是不方便,所以就有了我研究使用 Docker 化部署的方案,在研究了前人的工作之后,我对这个方案进行了一定的优化,最终形成了你所看到的这个版本。

TL;DR

如果你不想看下面的细节描述,那比较简单粗暴,直接执行下面这个命令,就可以在你的 Docker 服务上启动一个容器作为 Github Actions 的 Self-hosted Runner。

docker run -d \
  --name actions-runner \
  --restart unless-stopped \
  -e RUNNER_URL=https://github.com/<owner>/<repo> \
  -e RUNNER_REGISTRATION_TOKEN=<token-from-config-sh-command> \
  -v /var/run/docker.sock:/var/run/docker.sock \
  bestony/actions-runner:latest

其中,第四行的 Runner URL 是指你自己的 Github 的仓库地址,直接配置上就行;

而第五行的 Token 则是你在 Runner 指引页面看到的 Config 的 Token

Screenshot 2026 06 20 at 20.05.44@2x

当你执行完成后,2-3 分钟,就可以在 Github Actions 设置页面的 Runner 看到刚刚启动的 Runner 了。

Screenshot 2026 06 20 at 20.05.18@2x

接下来,就是在你所有要使用 self-hosted runner 的 job 上,修改他对应的 run-on 配置即可

# Use this YAML in your workflow file for each job
runs-on: self-hosted

支持哪些平台

我在代码层面支持了 Linux 和 Windows ,并预打包了对应的 Docker 镜像。Linux 使用的是 Ubuntu 24.04;Windows 使用的是 Windows 2022;此外,支持了 Linux的 x64,arm x64 和 arm v7, 如果你是本地 NAS 使用,应该也可以跑。不过我自己还没测试 ARM 的环境,如果你遇到问题,也可以直接提 issue 来反馈。

打包好的 Docker 镜像放在 https://hub.docker.com/r/bestony/actions-runner ,你可以在 DockerHub 页面上看到。

原理是什么?

这个实现的原理本质上就是借助 VM 的 Container 机制,将 Github Actions 的 Runner 二进制文件放在 Docker 镜像中,并通过托管 Docker Socket,来实现让容器内的 Runner 文件可以管理 Docker 容器,从而在后续执行 Job 的时候,创建对应的容器。

代码在 https://github.com/bestony/actions-runner (欢迎来 Star)

配置缓存

Github Actions 提供了缓存能力,从而可以让不同的 job 和 不同的 run 可以使用相同的缓存,减少一部分缓存的时间和成本。 Self Runner 如果想要使用缓存,并让后续的 Runner 都可以使用缓存,你可以这样配置。关于缓存服务的自部署的更多信息,你可以参考 GHA Cache Server 的文档

创建一个网络

首先,你需要创建一个 Runner 专属的网络,从而让所有的 Runner 共享一个 Cache Server,方便后续使用。比如我们这里创建一个名为 Runner 的网络

docker network create runner

启动一个 Runner

当你已经有了提前创建好的 Repo 后,就可以根据需要来创建 Runner 了。你可以直接复制我下面的这段配置,存储成为 DockerCompose.yml ,修改环境变量配置,并使用 docker compose up -d 命令来启动,从而创建一个 Runner ,并启动相应的缓存服务器,来实现启动一个带缓存的 Runner。

services:
  runner:
    image: bestony/actions-runner:latest
    restart: unless-stopped
    env_file:
      - path: .env
        required: false
    networks:
      - runner
    environment:
      RUNNER_URL: ${RUNNER_URL:-}
      RUNNER_REGISTRATION_TOKEN: ${RUNNER_REGISTRATION_TOKEN:-}
      REPO: ${REPO:-}
      TOKEN: ${TOKEN:-}
      ACTIONS_RESULTS_URL: ${ACTIONS_RESULTS_URL:-http://cache:3000/}
      RUNNER_NAME: ${RUNNER_NAME:-}
      RUNNER_LABELS: ${RUNNER_LABELS:-}
      RUNNER_WORKDIR: ${RUNNER_WORKDIR:-_work}
      RUNNER_EPHEMERAL: ${RUNNER_EPHEMERAL:-false}
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    deploy:
      mode: replicated
      replicas: ${RUNNER_REPLICAS:-4}
      resources:
        reservations:
          cpus: "${RUNNER_RESERVED_CPUS:-0.5}"
          memory: ${RUNNER_RESERVED_MEMORY:-1024M}
        limits:
          cpus: "${RUNNER_LIMIT_CPUS:-2.0}"
          memory: ${RUNNER_LIMIT_MEMORY:-4096M}

  cache:
    container_name: cache
    image: ghcr.io/falcondev-oss/github-actions-cache-server:latest
    restart: unless-stopped
    networks:
      - runner
    ports:
      - "3000:3000"
    environment:
      API_BASE_URL: http://cache:3000
    volumes:
      - cache:/app/.data

volumes:
  cache:

networks:
  runner:
    external: true

上面这段配置主要有几个核心配置需要关注:

  1. deploy 段:这部分主要是你会跑多少个 Runner,如果你的项目需要更多的 Runner 来执行 Job ,这里就可以调整的大一些;包括每个 runner 预约多少资源,能实际使用多少资源,都可以配置。
  2. networks 段:这部分核心是要使用之前创建好的 Runner 的网络,从而让后续的所有的 Runner 都统一使用一个网络。

启动一个新的 Runner

当你完成上述的配置,但发现你需要一个新的 Self-hosted Runner 的时候,就可以复制下面不包含 Cache Server 相关的配置,直接使用了。非常的方便


services:
  runner:
    image: bestony/actions-runner:latest
    restart: unless-stopped
    env_file:
      - path: .env
        required: false
    networks:
      - runner
    environment:
      RUNNER_URL: ${RUNNER_URL:-}
      RUNNER_REGISTRATION_TOKEN: ${RUNNER_REGISTRATION_TOKEN:-}
      REPO: ${REPO:-}
      TOKEN: ${TOKEN:-}
      ACTIONS_RESULTS_URL: ${ACTIONS_RESULTS_URL:-http://cache:3000/}
      RUNNER_NAME: ${RUNNER_NAME:-}
      RUNNER_LABELS: ${RUNNER_LABELS:-}
      RUNNER_WORKDIR: ${RUNNER_WORKDIR:-_work}
      RUNNER_EPHEMERAL: ${RUNNER_EPHEMERAL:-false}
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    deploy:
      mode: replicated
      replicas: ${RUNNER_REPLICAS:-4}
      resources:
        reservations:
          cpus: "${RUNNER_RESERVED_CPUS:-0.5}"
          memory: ${RUNNER_RESERVED_MEMORY:-1024M}
        limits:
          cpus: "${RUNNER_LIMIT_CPUS:-2.0}"
          memory: ${RUNNER_LIMIT_MEMORY:-4096M}

networks:
  runner:
    external: true

总结

如果你和我一样,喜欢用 Github,但又没有足够多的 Github Actions 运行时长可用,或者你需要依赖一些你自己的内网环境,那么这个 self-hosted runner,就是为你准备的。

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

2026-06-17 08:58:52

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 的关系有什么变化?

2026-06-16 23:30:22

作者回顾了半年来使用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 欧洲之旅:坐大巴

2026-06-16 20:44:15

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

原本是考虑以火车出行,但从法国到意大利坐火车也是颇为麻烦的,需要先从法国坐铁路到法意边境的小城文蒂米利亚(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 欧洲之旅:资产安全

2026-06-15 03:49:25

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

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

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

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

网络俚语

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

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

自行车锁

image

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

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

必备!

行李加固带

image

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

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

防消磁卡套

image

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

腰包

image

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

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

背包

image

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

image

Air Tag

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

image

八字扣

image

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

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

总结

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

加更:体验 Waymo 无人驾驶汽车

2026-06-02 23:10:32

作者在旧金山硅谷期间体验了Waymo的自动驾驶服务。行程从预约、上车到抵达的整个过程都由车辆自主完成。

体验感觉新奇,自动驾驶技术运作流畅。不过,Waymo的费用明显高于同类出行服务。

上次去美国的时候,我就想体验自动驾驶;但因为上次在旧金山玩的时候,光顾着看景点了,没顾得上去体验 Waymo,这次刚好有事来硅谷,刚好要在旧金山办事,有空体验 Waymo,就趁着这个机会体验了一把 Waymo 的自动驾驶。

为什么要体验 Waymo?

在我印象中, Waymo 是最早做自动驾驶的公司,作为一个科技爱好者,自然希望能够有机会来体验 Waymo。特别是当下国内的各种辅助驾驶大行其道;美国这边,Tesla 的 Robotaxi 也即将上线。在国内体验完全意义上的自动驾驶可能还需要时间,这次既然刚好临时来了硅谷,就体验一把。

Waymo 车长什么样子?

Waymo 的车和普通的汽车长相差异巨大,你能看到各种奇怪的传感器;这些传感器能让你一眼就看出来 —— 哦,这个就是 Waymo。

image
Waymo 官网的截图

如何约 Waymo

Waymo是有服务范围的,你需要在服务范围内使用 Waymo;你可以直接访问 Waymo 的官网,确认她的服务范围。如果你是到旧金山湾区,那就没问题了,Just 体验 it。

image

如果你所在地区是支持 Waymo 的话,接下来只需要打开你的 App Store 下载一个 Waymo 的 App,使用你的 Google Account 登录上去;就可以约车了;单纯约车的界面,Waymo 和 Uber 没有什么特别大的区别,选择上车点和下车点;

上车!

约车以后,Waymo 会给你调度附近的 Waymo 车来接你;你可以根据 App 上的提示,提前到上车点等候;在你的 App 中,会展示你要乘坐的车牌号,如果你刚好碰到了多个不同的 Waymo 汽车,就可以参考应用截图中的车牌号来上车(比如下图中我的车牌号就是 83659A4)。

img 1752

除此之外,Waymo 还支持上车点导航,你点击上图中上车点,Waymo 会给你展示一个指向的标记,帮助你更好的找到上车点。

需要注意的是,如果你上车的时候,刚好有别人要下车,一定要等对方下车完了,结算完了。你再上车!不然会出现你上车了,但其实前一个人的订单还没结束。我就遭遇了这个尴尬的事情。

等车到了上车点后, App 中就会展示如下图的提示,点击开锁,让车辆弹出开门把手后,你就可以打开把手,上车了。

img 1753

出发

上车以后,系好安全带,点击后排座椅前方的控制面板的按钮就出发了。接下来你就可以坐在车上,体验无人驾驶了。

img 1754

除了体验自动驾驶之外,你还可以切换到【我的车辆】中,根据你的需要,切换车辆的各项配置属性,比如温度、风扇、后排空间等各种属性;还可以设置要播放的音乐,绑定你自己的 Youtube 或者 Spotify 之类的。

img 1864

下车

当你到达目的地后,车停稳后,就可以下车了;在下车后,下完、拿完东西后,在 App 里点击【锁车门】,你的这趟行程就走完了;接下来你所乘坐的这辆 Waymo 车,就会自己去处理下一个任务了。

img 1759

Waymo 体验后感

Waymo 的体验整体比较新奇,毕竟是自动驾驶。而且作为最早坐自动驾驶的公司,整体体验还不错。不过 —— Waymo 好贵。。。。

同样的路程,去程用的 Waymo,29刀;回程打的 Uber,只需要 10 刀。。。。Waymo 只适合体验尝鲜了。。。更多的时候还是继续用 Uber 吧~。