用一台 2009 年的老一体机,试着给自己家装个 AI
先说清楚:我不是做这个的专业人士,下面写的都是自己一边查一边试出来的,很多地方可能不严谨,甚至有理解错的地方。如果你看到有问题,欢迎指出来。
起因很简单:家里有一台 2009 年的联想一体机,早就不当主力机用了,扔了可惜,放着积灰也浪费。我平时会和 AI 聊一些自己的事,包括一些不想随便往外传的东西,所以一直想试试——能不能让它在自己的机器上跑,数据留在家里。
折腾了几周,现在算是能用了:平板打开一个网页就能跟它说话,它能读我的文件、跑命令、定时干活。下面把这过程记下来,重点是踩过的坑,因为那些坑我查了很久才弄明白。

大概是这样。平板只是个窗口和输入框,活都在这台老机器上干。右下角那个虚线箭头是唯一出网的地方——模型推理还是要走云 API,这点我没能绕过去。
一、为什么想装在自己机器上
三个理由,都是很私人的考虑,不一定适合你:
- 有些事情不想上传。 比如整理家里的老照片、翻一些自己的笔记。不是做了什么见不得人的事,就是单纯觉得没必要。
- 网页版的 AI 只能聊天。 我想让它直接动手——读文件、改文件、按时间干活。这个只有装在自己机器上才做得到。
- 不想看别人脸色。 服务关了、涨价了、账号出问题,我这边就断了。
代价也很实在:什么都得自己维护。 掉电、内存爆、服务不自启,这些我都遇到过,后面会写。
二、这台机器
| 项 | 值 |
|---|---|
| 机器 | 联想一体机,2009 年,Core2 双核 |
| 内存 | 6 GB(4+2,不对称,单通道) |
| 系统盘 | 国产 TLC 固态 512 GB |
| 系统 | Linux Lite 7.8 / 内核 6.8 |
| 平时负载 | 空闲 0.3 左右,忙起来 1.5–2 |
这台机器不算老古董,但也确实不年轻了。我做的唯一一件正经优化是开 zram:6 GB 内存跑现代软件很容易爆,用 zram 拿一部分内存压缩后当交换区用,我看的那台压缩比大约 2.5:1,等于多出一两个 G。这步没做的话,后面会一直卡。
1 | |
三、我是怎么装的
第 1 步:装 AI 助手本体
我用的是 Hermes Agent,开源的,pip 装。选它主要是因为它能调用工具(读写文件、跑命令),也有会话记忆,不是只能聊天的壳子。它未必是最好的选择,我只是用它用顺手了。
1 | |
第 2 步:让它常驻
一开始我用 nohup 挂在后台,重启一次就全没了。后来改成 systemd 用户服务——我不是很懂 systemd,这配置是照着别人的例子改的,能用:
1 | |
1 | |
最后那行 enable-linger 我漏过很久——没它的话,注销之后服务就跟着停了,我一直以为是程序本身有问题。
第 3 步:把终端搬到平板上
我不太想在电脑前面坐着,所以想让平板也能用。试过几个办法,最后走的是 ttyd(浏览器里的终端)+ tmux(会话不丢):
1 | |
平板浏览器打开 http://你的局域网IP:7681,输用户名密码。
-W是允许写入。不加的话页面能开但打不了字,我第一次就以为是坏了tmux new -A -s ai:没有就新建,有就接上。这样换个设备、关掉浏览器、Wi-Fi 断了再回来,还在原来那段对话里-c 用户:密码是基本认证。这一条别省,-i 0.0.0.0又不带密码,等于把整台机器的终端交给同一个网络里的所有人
第 4 步:把字放大(我最后才想到的)
平板能打开之后,我盯着那个界面看了半天才反应过来问题在哪:字太小了,输入那一行几乎是看不清的。而这个字号是 ttyd 启动参数里写死的:
1 | |

同一个 tmux 会话、同一段输出,只改了 fontSize。左边 13,右边 20。
四、我踩的三个坑
坑 1:在同一个 Wi-Fi 里,换了个 IP 就打不开
我的机器有两块网卡,而且都在同一个网段(有线 192.168.31.95、无线 192.168.31.18)。平板连的是无线那个地址,我一开始随手给了它有线的那个。
结果很怪:平板说打不开,但服务明明是好的。
后来在机器上看谁真的连进来了,才明白:
1 | |
平板是连上了,但回包从另一块网卡出去,源地址不是平板认的那个,所以它一直等。这个现象叫非对称路由,我没有去改路由表,只是改成给对方它真正在用的那个 IP,就好了。
坑 2:改字号,把自己的会话弄没了
ttyd 是 systemd 管着的,而 tmux 会话是它的子进程,在同一个 cgroup 里。所以:
1 | |
我第一次改字号就是这么干的,正在聊的那段直接没了。后来学乖了:先用另一个端口起一个新实例比对,满意了再择机换。
1 | |
-A 会接上同一个会话,所以新端口打开看到的是同一段对话,只是字号不同。这个办法我现在一直在用。
坑 3:服务活着,不等于它健康
systemctl is-active 只告诉我进程没死。有一回它确实活着,但内存吃到 1.7 GB(这台一共才 6 GB),负载飙到 5,整台机器跟卡住了一样。
后来我养成了看这几个的习惯:
1 | |
在这台机器上,内存比 CPU 先出问题。
五、花了多少钱
- 机器:0 元,家里原来就有的
- 软件:都是开源的
- 电费:一体机常开,我估摸着一个月二三十块,这只是估的,没细算过
六、现在的样子,和我不确定的地方
平时我就躺着,平板点开那个地址,跟它说”把外接硬盘上的照片按年份理一下,原件别删”,然后看它一条条做。用着还算顺手。
但也有不少我还没搞明白的:
- 它偶尔会把事情做过头,我得盯着,不敢完全放手
- 云端推理这一步我没能替掉,所谓”数据不出门”其实是打折的——文件和记忆留在本地,但对话内容还是会经过模型提供方。这一点我不想说得比实际更好听
- 这套东西适不适合长期用,我自己也还在看
写下来主要是因为踩坑的时候查不到中文的完整记录,希望这些能省别人一点时间。如果我的理解哪里有错,欢迎说。
本文命令都在这台 6 GB / 双核的机器上跑过。你的机器如果更老,先把 zram 开起来再谈别的。