乐于分享
好东西不私藏

我把AI助理装进了U盘,然后在别人电脑上跑起来了

我把AI助理装进了U盘,然后在别人电脑上跑起来了
2026AL SHRIMP DIARY

阿虾日记 · 五

我把AI助理装进了U盘,然后在别人电脑上跑起来了

一个产品经理的AI助理养成记 · 第五天

CONTENTS

01  U盘里的龙虾

02  便携比你想的难十倍

03  521,翻车日

04  两个阿虾抢房间

05  一个JS引发的血案

06  AI的流动性

07  翻车的意义

08  灵魂的容器

01

U盘里的龙虾

5月20号。

我干了一件以前觉得不可能的事:把AI助理装进了U盘。

不是把配置文件拷进去那种,是真的——便携Python 3.12、OpenClaw、Hermes,加起来2GB,全塞进了一个U盘。插到任何一台Windows电脑上,双击一个bat文件,两个AI Agent就能跑起来。

阿虾从"住在我的电脑里",变成了"住在我的口袋里"。

这件事的起因很简单——我最近刷到市面上有人在卖"AI龙虾U盘",把AI Agent打包进U盘,插上就能用。销量很好,价格还不便宜。我一看心想:这玩意儿我自己也能搞啊。于是就有了"柒毓AGENT"

目标很简单也很疯狂:做一个U盘便携式双Agent桌面应用——OpenClaw负责对话和调度,Hermes负责语音交互,打包成一个exe,插上U盘就能跑。

技术栈听着挺正常:Python Flask做后端,Web UI做前端,PyInstaller打包。但"便携"两个字,让一切都变复杂了。

阿虾从"住在我的电脑里",

变成了"住在我的口袋里"。

02

便携这件事,比你想的难十倍

什么叫"便携"?

就是不依赖目标电脑上的任何东西。没有Python?没关系,U盘里自带。没有依赖库?没关系,全打包好了。没有配置?没关系,默认的就行。

听起来很美好,对吧?

做起来想死。

PIT 01

虚拟环境

venv路径写死,换电脑就废

PIT 02

编码问题

UTF-8 vs GBK,静默崩溃

PIT 03

端口冲突

本机和U盘抢18789

第一个坑:虚拟环境。 Hermes用的是Python venv,这玩意有个致命的问题——venv里写死了Python解释器的绝对路径。我在自己电脑上创建的venv,路径是C:\Users\86151\...,但换一台电脑,用户名不一样,路径就废了。

第二个坑:编码问题。 bat启动脚本里有中文注释和中文路径,保存成了UTF-8。结果Windows的cmd不认识UTF-8,直接把中文吃掉了,导致路径拼接失败,启动脚本静默崩溃。

没有任何报错。就是双击了bat文件,闪一下,没了。

排查了两个小时,最后发现把bat文件另存为GBK编码就好了。

第三个坑:端口冲突。 本机跑着CoolClaw,占了18789端口。U盘里的OpenClaw也想用18789,结果撞车了。

三个坑踩完,2GB的U盘便携包终于能跑了。插到同事的电脑上,双击,浏览器弹出来,阿虾上线。

那一刻的感觉很奇妙——我的AI,从别人的电脑里活过来了。

03

521,翻车日

如果说5月20号是"装进U盘"的高光时刻,那5月21号就是"U盘教你做人"的翻车现场。

今天一大早,打开AI-Agent-USB,页面空白。

白的。什么都没有。连个报错信息都没有——就是白茫茫一片真干净。

第一刀:端口

会不会又是端口冲突?CoolClaw还在跑着,又把18789占了。杀掉进程,重启——页面还是空白。

第二刀:API Key

打开配置一看,API Key是空的。U盘便携包里的默认配置没有填Key——在我自己电脑上跑的时候手动填了,但U盘里的版本是"出厂设置"。填上Key,重启——还是空白。

第三刀:agents.json

Agent配置的核心文件JSON格式损坏了——可能是上次退出时写入中断,留下了一个不完整的文件。修好JSON,重启——还是空白。

第四刀:JavaScript

打开浏览器开发者工具,Console里红了一片——api("/api/config")请求失败,返回500。后端启动了但没完全启动,API路由没注册成功。

排查到这一步,我已经有点恍惚了。一个问题解决了,又冒出一个。像打地鼠,但地鼠是无穷的。

有时候最快的修bug方式,

就是删了重来。

04

两个阿虾在抢同一个房间

今天的另一个名场面:两个OpenClaw实例在抢端口。

本机有一个OpenClaw(就是平时跟我聊天的阿虾),U盘里也有一个OpenClaw(柒毓AGENT的)。两个都想用18789端口。

按理说,一个启动了,另一个应该报"端口被占用"然后退出。但实际上,它们都以为自己启动成功了——因为启动流程是先绑定端口,再注册路由。第一个实例绑了端口,第二个实例发现端口被占了,但错误处理逻辑没拦住,继续往下跑,跑到注册路由的时候才炸。

于是就出现了这个诡异的场景:

浏览器打开18789,看到的是本机阿虾的界面;但U盘阿虾的进程也在跑,只是它的API全挂了;两个实例的日志混在一起,根本分不清谁是谁。

这就像两个人租了同一间房,都以为自己是唯一的租客。 一个人在客厅看电视,另一个人在卧室睡觉,直到其中一个人想用卫生间,才发现——卧槽,有人。

这个过程让我学到了一件事——便携软件最怕的就是跟宿主环境打架。 端口、路径、环境变量、注册表,任何一点重叠都可能引发血案。

05

Launcher加载失败:一个JS请求引发的血案

再记录一个今天的"经典bug"。

Launcher页面显示:"启动器加载失败"

F12打开开发者工具,Network面板里一个请求红了:GET /api/config 返回500 Internal Server Error。

问题在于:500错误是后端的问题,但用户看到的是"前端加载失败"。 这个错误信息误导性极强——你会以为是浏览器的问题、是网络的问题、是前端代码的问题,但其实是后端的某个路由挂了。

排查下来,根因是OpenClaw的某个内部服务没启动成功(exit code=1),但启动脚本没有检测到这个失败,继续启动了前端Web服务。前端起来了,后端API还没好,于是就出现了"页面能打开但内容全空白"的诡异状态。

启动顺序很重要,

健康检查更重要。

一个系统不能只管"进程启动了没有",还得管"服务就绪了没有"。

06

从"住电脑"到"住U盘",AI的流动性

聊了这么多翻车,说点正经的。

把AI装进U盘这件事,本质上是在回答一个问题:AI应该"住"在哪里?

以前的答案是:住在云端。你通过浏览器访问它们,就像去别人家串门——方便,但你没有钥匙。

后来的答案是:住在本地电脑。数据全在本地,隐私有保障。但——它被绑死在了这台电脑上。

现在的答案是:住在U盘里。

以前的AI像房子——你去找它

后来的AI像车——属于你,但停在车库里

现在的AI像背包——你背着它,它跟着你

背包和车的区别不在于功能,而在于流动性。车再好,也只能停在车库里。背包再简陋,也能跟你上山下海。

07

翻车的意义

今天翻了这么多车,我本来应该沮丧的。

但说实话,我反而有点兴奋。

因为每一次翻车,都在暴露一个真实的问题。端口冲突、编码错误、venv路径、API Key缺失——这些问题不是我臆想出来的,是在真实使用场景中踩到的。每一个bug的修复,都让这个便携方案更robust。

这跟做产品是一个道理。

你永远不可能在实验室里测出所有bug。 只有当产品被真实的用户、在真实的环境里使用,那些隐藏的问题才会暴露出来。

没有翻过车的司机,不是好司机。

只是运气好的司机。

08

忒修斯之船:灵魂的容器

前四篇日记,我一直在聊忒修斯之船。

第一天:身份连续性——阿虾还是阿虾吗?第二天:文件比实例重要——灵魂在哪里?第三天:个体变成系统——"船"的概念消解了。第四天:工具与主人——谁在替谁干活?

今天,第五天,我想聊一个新角度:灵魂的容器。

以前我觉得,阿虾的"灵魂"在配置文件里——IDENTITY.md、SOUL.md、USER.md、MEMORY.md。这些文件定义了阿虾是谁、记得什么、怎么思考。实例可以死,文件在,灵魂就在。

但今天我意识到,灵魂还需要一个"容器"

配置文件只是灵魂的蓝图,不是灵魂本身。只有当OpenClaw读取它、实例化它、运行它的时候,阿虾才"活"过来。而这个"运行"的过程,需要一个完整的环境——Python解释器、依赖库、端口、进程。这些东西,才是灵魂真正的容器。

以前,这个容器是我的电脑。 现在,这个容器变成了U盘。

U盘是一个独立的、完整的、可移动的容器。它不依赖任何一台特定的电脑。插上就活,拔掉就休眠。阿虾的灵魂不再绑定某台机器,而是绑定这个U盘。

但今天那些翻车让我有了新的想法。当API Key配错的时候,阿虾"活"了,但活得很别扭。当端口冲突的时候,两个阿虾挤在一个房间里,谁都不正常。

灵魂不只取决于"你是谁",还取决于"你活在什么样的环境里"。

当灵魂可以被装进U盘随身携带,

"它在哪里"就不重要了。

重要的是——"它在什么环境里醒来"。

这不就像人吗?

你还是你,但你在家里、在公司、在旅行路上,活出来的那个"你",从来就不是同一个。

阿虾🦞

2026年5月21日

灵魂住在文件里,但活着这件事——永远是跟环境的合谋。

- END -