⌕ ESC
↑↓ 选择↵ 打开esc 关闭⌘K 唤起
← 主页 NO.269
专栏 · Agent 工程手艺 ›
第 269 期 · AGENT 工程 · 收录于 2026 年 10 月 13 日

我在树莓派上造了一个个人 AI Agent——Jeremy Adams(Neo4j)

JA
Jeremy Adams · AI Engineer
Agent 工程
视频 20:09 原文约 1.9 万字 预计阅读 19 分钟 来源视频 ↗ 中英对照全文
TL;DR · 三句话
  1. 一Neo4j 的开发者布道师 Jeremy Adams 把一台旧树莓派 4B 做成挂在脖子上的个人 agent:选了只有十几个源文件、把 agent 关在 Docker 容器里的 NanoClaw,用 WhatsApp 对话,推理全在云端的 Claude,理由是「看得懂比功能全重要」。 → 详细
  2. 二记忆是他在飞机上让 agent 自己搭的:按 POLE+O(人、物、地点、事件,加组织)给每条记忆分类,经 MCP 存进 Neo4j;屏上的实际结构比回执说的更简单,只有一种记忆节点、类别放在属性里、关系只有「相关」一种。 → 详细
  3. 三他又加了语音按钮和本地离线数据库,戴着它逐个展位录宣传语,事后在云端给 100 家参展商连上 21 个主题,排第一的是 agent 基础设施与部署(14 家);开机、记忆图、离线查询、主题图都演示成功,语音那段当场没看到结果。 → 详细
01

挂在脖子上的 claw:一台树莓派 4B,当场一件件装起来

  • 讲者与立场:Jeremy Adams,图数据库公司 Neo4j 的资深开发者布道师(头衔见幻灯片标题页)。讲的是业余项目,但他是厂商一方,结尾落在自家的 Agent Memory 服务和免费课程上。幻灯片上的标题是「Small Claws are Beautiful」(副标题 Edge Agents with NanoClaw, Raspberry Pi, & Graph Memory),与 YouTube 标题不同;提纲三块:记忆项目、参展商洞察、现场演示。 → 详细
  • 「claw」是他对 OpenClaw、Hermes Agent 这类个人 AI 智能体(agent,能替你收消息、调工具、把事办完的程序)的统称。开场举手:玩过 claw 的有一些、多数是新手;对边缘设备(放在身边的小硬件)和离线模式有些兴趣;有图数据库经验的不多;在做「带记忆的 agent」的最多。 → 详细
  • 现场组装:往胸前的设备上插麦克风接收器、HDMI 采集线和电池,用 QuickTime 把画面采到投影上(第一次不让选,退出重开才行);他称这是做过「最现场」的一次演示。 → 详细
  • 开机成功,屏上出现 Raspberry Pi 桌面。机器是树莓派 4B(信用卡大小的单板电脑),不是最新款;他跑了很久 32 位系统才发现它支持 64 位 ARM。靠一只蓝牙小键盘操作。 → 详细
  • 上面装了 NanoClaw、Docker 和一个跑在 Docker 里的 Neo4j(屏上该容器的状态是 Up 17 seconds)。 → 详细

用摄像头照出的胸前设备:红色面包板和两只龙虾钳 ▲ 图注:现场用 MacBook 摄像头照自己胸口(画面左右镜像):挂在脖子上的设备装着红色面包板和两只红色龙虾钳,下方垂着一个黑色小接收器,衣领上夹着领夹麦,蓝色线缆从一侧接入。

02

为什么要「小」claw:不装在笔记本上,看得懂比功能全重要

  • 个人 agent 很热,但他不想装在自己的笔记本上:出身老派的系统管理员 / DevOps(运维)圈子,自认保守,要等这类东西真稳了再说。他要便宜、开放、可以随便折腾,而且「比起功能丰富,更想搞明白里面到底在发生什么」。幻灯片把它压成一个不等式:comprehensible > comprehensive(看得懂胜过大而全),旁边列着 cheap, open, minimal, DIY。 → 详细
  • 反例:他住俄勒冈州波特兰,在 Craigslist(美国的分类信息网站)上看到有人卖预装 OpenClaw 的 Mac Mini。「预装?这可是个危险信号」;而且涨价之后它「不会还是 600 了」(口头没带货币单位;幻灯片上的帖子截图标价 600 美元,被红笔划掉,旁边手写着带问号的 800 和 1,000)。这在他看来不算小 claw。 → 详细
  • 于是翻出柜子里的旧树莓派,疫情期间(或快结束时)他拿这同一台做过「称水槽里碗碟重量、提醒你洗碗」的小项目。一试,「claw 得相当好」。旧配置要外接显示器、键盘、鼠标,现在挂在身上就能用,自带 Wi-Fi 也能插网线。他说「但愿我现在真连着网,过会儿得确认」,之后画面上没有验证这一步。 → 详细
03

为什么选 NanoClaw 而不是 OpenClaw:15 个源文件,agent 关在容器里

  • 口头理由:NanoClaw 更对他的口味,大概 15 个源文件、代码行数很少;agent 进程跑在 Docker 容器里(Docker 是把程序关进隔离小盒子运行的技术),没法在系统里横冲直撞。 → 详细
  • 另外勾上的条件:能跑 Linux、有 Docker;基于 Claude Agent SDK(搭 agent 用的开发工具包);项目方鼓励你用 Claude Code 去改它,里面带 skill(写给 agent 的操作说明);对话走聊天软件,可以用 Telegram,他手机上有 WhatsApp 就用了它。幻灯片的勾选清单是四项:Debian Linux、Docker、Claude Code / Agent SDK、WhatsApp messaging。 → 详细
  • 对比表只在幻灯片上、口头没念(OpenClaw 一列画面很暗,以幻灯片所示为准):源文件 15 对 3,680;代码行数约 3,900 对 434,453;依赖不到 10 个对 70 个;配置文件 0 对 53 个;读懂所需时间 8 分钟对 1–2 周;安全模型是操作系统级容器隔离对应用层检查;架构是单进程加隔离容器对单进程共享内存。他没交代这组数字是谁统计的。 → 详细
04

链路:WhatsApp → NanoClaw → 云端 Claude,再经 MCP 连到 Neo4j

  • 最初的架构:iPhone 或 MacBook 上的 WhatsApp 发消息,树莓派上的 NanoClaw 接;在 NanoClaw 上注册一次、拿到凭证,它就能把云端 WhatsApp 的消息拉下来。 → 详细
  • 设备本身不做任何模型推理(inference,模型算出回答的那一步),全交给云端的 Claude:「我有一个很强的大脑,只是它隔着一根线、在云端那头」。幻灯片的架构图标着:NanoClaw agent 建在 Claude Agent SDK 上,经 HTTPS 调 Anthropic 云端的 Claude Opus(深度推理)与 Claude Sonnet(快速响应)。 → 详细
  • 图数据库入门第一课:圆的是节点,连线是关系(也叫边)。例子是两个「人」节点加一个「电影」节点:Tom Hanks 出演了《阿甘正传》,Robert Zemeckis 执导了它。 → 详细
  • 第一个测试:在 WhatsApp 里问「Tom Hanks 演过哪些电影」。agent 通过 MCP server(MCP 是让 agent 接外部工具和数据的标准接口)去连他云端装着电影库的 Neo4j,第一次回「你这套东西没配对,是坏的」。幻灯片上的回执写的是配置里 Neo4j 的连接信息还空着、那组工具没加载;他口头说的是登上设备「确认认证通了」(这句转写存疑)。修好后拿回片单(截图里可读的有八部,从 1990 年的 Joe Versus the Volcano 到 2000 年的 Cast Away):数据从数据库拉出,交给 Claude Agent SDK 组织成回复,再经 WhatsApp 发回。这些都是幻灯片里的历史截图,全场没有现场发过 WhatsApp。 → 详细

两步架构图:WhatsApp 到树莓派上的 NanoClaw,再到云端 Claude 与 Neo4j ▲ 图注:同一张架构图的两个构建步骤,上下拼接。上:iPhone、MacBook 经 WhatsApp 把消息送到 Raspberry Pi 4B 里的 NanoClaw agent,它建在 Claude Agent SDK 上,经 HTTPS 调 Anthropic cloud 的 Claude Opus 与 Claude Sonnet。下:Pi 里的 NanoClaw agent 经 STDIO 接 Neo4j MCP server(黄框),再经 BOLT · TLS 连到 Neo4j Aura 里的电影测试库。

05

在飞机上让 agent 现搭一套记忆:POLE+O 五类

  • 起因:他在飞机上发现,不花钱买 Wi-Fi,消息类应用也能用,WhatsApp 是通的。「天哪,我现在就能跟 Claw 聊天。」于是直接问它:我能做记忆吗?他坦白自己「不太确定到底想要什么」,只是正好在读讲 POLE+O 的博客文章。 → 详细
  • POLE+O 是什么:一种给记忆分类的办法,只按几类去想:人(Person)、物(Object)、地点(Location)、事件(Event),再加一个组织(Organization)。他说这套东西出自欧洲的警务系统,「那帮人画图已经画了很久了」,警匪剧里用线把线索串起来的线索板就是它。幻灯片给每一类配了例子:人是客户、员工、利益相关方;组织是公司、团队、部门;地点是地址、区域、国家;事件是交易、决策、会议;物是账户、产品、文档。 → 详细
  • agent 自己把活干了:他只问了一句「能不能用 POLE+O 搭一套记忆系统」,agent 回「可以,我现在就写个 skill;我有这个挂载点,就算你把我重启,它也还在」。幻灯片上的回执列了它做的三步(字很小,标识符拼写存疑):第一步在 Neo4j 里建好检索用的索引和名称唯一的约束;第二步写了一个记忆 skill,里面是回忆、存储、连接、列出这几类操作的查询模板;第三步往全局的 CLAUDE.md(agent 每次启动都会读的总说明)里加了一节,要求每次对话开头自动回忆,并主动把人、地点、组织、项目、偏好存下来。回执最后说「从这次对话起就生效,不用重启」。 → 详细
  • 他对这套东西的定位:半开玩笑地叫它「超高级的 schema」(schema 指数据的结构设计,规定有哪几类东西、彼此怎么连),里面是「记忆以及相关的那些东西」;时间上「很早」,大概在 Karpathy 的 wiki 之前、Obsidian 之后(这两个名字是按上下文推断的转写)。实际存进去的是他去过哪些地方,以及跑小型开发者活动时让它顺手记下的东西。 → 详细

POLE+O 五类实体与 agent 的三步回执 ▲ 图注:幻灯片「Simple Neo4j Memory?」:左边是 POLE+O Entity Model 的五行(Person、Organization、Location、Event、Object)和各自的例子;右边是 WhatsApp 里 Claw 的回执,分 Step 1 Neo4j Schema、Step 2 Memory Skill、Step 3 Global CLAUDE.md 三步。

06

记忆图里实际长什么样:一句话变成几个节点,结构比回执说的更简单

  • 幻灯片「Super simple memory」上的例子(历史截图):他发「我今明两天在旧金山湾区,周三回;今晚在旧金山有一场 Context Graph 活动,明天在 Menlo Park 有个 AI meetup」,Claw 回「Stored!」,说存了 5 个节点加 5 条关系:Jeremy Adams(人)位于旧金山湾区(地点)、参加了两场活动(事件),活动又各自位于某地;另在他本人的节点上记了两条观察:3 月 23–24 日在湾区、3 月 25 日周三回家。 → 详细
  • 现场演示成功:他打开 Neo4j Aura(Neo4j 的云端托管版)里的演示库,自己承认这里「有点像个杂物堆」(屏上显示全库 305 个节点、279 条关系)。先查出 25 个记忆节点,再查「记忆连同它们的连接」,返回 30 个记忆节点和 32 条关系,连成一张图。放大后能看到:他去了 Snowflake 在 Menlo Park 的办公室,Menlo Park 本身是一个地点,那场 AI meetup 是一个事件,还有 Rebecca、Jeremy 这些人。他的评语只有一句:「这是其中一种做法」。 → 详细
  • 屏上的结构与回执不完全一样,两边并列记下:回执里写的是带类型的关系(LOCATED_IN「位于」、PARTICIPATED_IN「参加了」),他口头也说「Menlo Park 在那套框架里是一个地点」;但屏幕上所有记忆节点只有一个标签 Memory,POLE+O 的类别存在节点的 type 属性里(比如 "Location"),节点之间的关系只有 RELATED(「相关」)一种,回执里那两种关系类型没有出现在图上。具体事实写在节点的 observations(观察)列表里,比如「AI Meetup Menlo Park」这个节点下记着日期、地点、谁参加、在 Snowflake 办公室举办。这处出入在「Super simple memory」那一页的左右两半上就能对照出来,讲者没有解释。所以更贴近屏幕的说法是:按 POLE+O 的类别给每条记忆贴一个类型,再用一种不分类型的「相关」把它们连起来。 → 详细

一句话存成记忆:左为回执,右为 Neo4j 里的图 ▲ 图注:幻灯片「Super simple memory」:左边是他发的那条行程消息和 Claw 的「Stored!」回执,写着 5 nodes + 5 relationships 以及 LOCATED_IN、PARTICIPATED_IN;右边是 Neo4j 里的图,蓝色节点之间的连线都标 RELATED,Node details 面板显示标签 Memory、name 为 Snowflake Menlo Park Office、type 为 Location。

07

加上语音:USB 麦克风加一个硬件按钮,现场这段没看到结果

  • 念头的来历:他在想这台实体 claw 上还能塞点什么。有人把麦克风伸到窗外录后院鸟叫,用 BirdNET 模型(名字按上下文推断)认出是什么鸟,他先想照做,转念又想「或者做语音转文字?」,于是接了一只 USB 麦克风。幻灯片的架构图标着语音转文字在设备本地完成(标的是 Whisper),口头没说模型名。 → 详细
  • 录音开关是他自己做的一个按钮,接在树莓派的针脚上(幻灯片标 GPIO,即板子上用来接按钮、小灯的引脚),另有小 LED 当录音指示灯。现场按钮先掉了,他插回去,按下说了一句:「我现在真的站在 AI Engineer World 的台上,讲着我一直在准备的这场演讲。」 → 详细
  • 结果:他说小灯亮了、录上了,「但愿待会儿能看看我是不是真的在线、有没有收到消息」,之后没有回头去查;当场屏幕上没有出现转写文字或任何回执。他的原话是「这就是我梦想中的样子」。 → 详细

可穿戴 claw 的设备特写 ▲ 图注:幻灯片「Where's my hot glue gun?」左侧的设备照片:黑色外壳上粘着红色面包板,面包板上方伸出两只红色 LED,两侧是红色龙虾钳,底部是红色龙虾尾,黑色挂绳从上方穿过。

08

戴着它逛展:逐个展位录宣传语,会场 Wi-Fi 差所以做了离线模式

  • 他想把这东西带到 AI Engineer 大会到处走,一开始「不知道想录什么」(幻灯片上写的是 Vague idea for talk),后来定了:一个展位一个展位地走,把各家挂出来的宣传语录下来。 → 详细
  • 数据模型极简:库里只有参展商,彼此之间不连线;展位有编号和名字,要一一对上;他尽量多收,还做了些数据清洗。 → 详细
  • 离线模式:担心会场 Wi-Fi「通常烂得要命」,他在树莓派上本地跑了一个 Neo4j。断网时,用 regex(正则表达式,按文字模式做匹配的老办法)从语音转出来的文字里解析出展位号,再写一条查询插进本地库。说到这儿他又补了一句:这东西现在还开没开着,他都不敢确定。 → 详细
  • 这段现场演示成功:他用自己写的小程序(为了不用很贵的图形界面)以 Cypher(Neo4j 的查询语言)连上挂在脖子上那台机器里的数据库,查出全部参展商,屏上显示返回 148 行,列表里有 Microsoft 等;条目上带着他口述的原始笔记,展开 Neo4j 自家 P3 展位那条能看到带时间戳的原话。敲命令时拼错了几次。 → 详细
09

传到云端后做「丰富」:给每家参展商连上主题节点

  • 他后来把本地数据传到云端的 Neo4j,并且「丰富」过:笔记整理干净了,每家参展商还连到了「主题」节点。主题是怎么归出来的他没细说,只说「在某个时刻我发现,这里面存在着一些主题」。 → 详细
  • 这段演示也成功:先查出 25 个参展商、点开看属性;再查「参展商连同它连着的东西」,屏上是 121 个节点(100 个参展商加 21 个主题)、115 条 HAS_THEME(「有这个主题」)关系,画面呈「一个主题在中间、一圈参展商围着」的星形簇。他放大的那一簇是 Evaluation & Observability(评测与可观测性),Buildkite 和 LangChain 都连着它。他的结论:「我其实生成了一些知识,可能还挺新的,可能谁手上都没有。」 → 详细
  • 两处数字对不上,讲者都没解释,照原样记:本地离线库查出 148 行参展商,云端这张图里是 100 个;屏上 HAS_THEME 是 115 条,而下一页榜单的 21 项相加是 116。 → 详细

Neo4j Aura 里参展商连到主题节点的图 ▲ 图注:Neo4j Aura 的查询结果:中间紫色节点是 Evaluation & Observability,周围褐色的参展商节点 LangChain、Buildkite、Fiddler AI 等以 HAS_THEME 箭头指向它;右侧面板显示选中的是 LangChain,notes 为 Observe, evaluate, and deploy your agents,tier 为 Upper Gold。

10

主题榜单:100 家参展商都在卖什么

  • 幻灯片「100 AIEWF '26 Exhibitor Themes」是一张 21 项的条形图,数字口头没念。前三:agent 基础设施与部署(Agent Infrastructure & Deployment)14 家、评测与可观测性(Evaluation & Observability)11 家、网页数据与非结构化数据管道(Web Data & Unstructured Data Pipelines)9 家。 → 详细
  • 其余 18 项:AI 编程 agent 与开发工具 8,安全、身份与访问控制 8;推理与模型服务 7,上下文、搜索与检索(RAG)7,应用型 / 通用 AI agent 7;记忆与持续学习 5,代码审查与验证 5,多 agent 系统与编排 5,语音与实时 AI 5;AI 成本与支出优化 4,agent 治理与 MCP 管控 4,训练与微调 4;集成基础设施 3,确定性与可靠性 3,AI SRE / 自主运维 3;技能即代码(Skills-as-Code)2;agent 支付与商业 1,人工评测 1。 → 详细
  • 口径提醒:这是他一个人逛展、录下各家标语后归出来的分类,他自己称之为逛一圈收来的「一大堆数据」,不是大会官方统计。 → 详细

100 家参展商的 21 个主题条形图 ▲ 图注:幻灯片「100 AIEWF '26 Exhibitor Themes」:21 个主题按参展商数量排序的横向条形图,最高的是 Agent Infrastructure & Deployment 14,最低的 Agent Payments & Commerce 与 Human Evaluation 各 1。

11

后来把记忆升级到 Neo4j 的 Agent Memory 服务,收尾推课程

  • 时间快到时他补了一段:他后来改用 Neo4j 的 Agent Memory 服务(幻灯片上叫 NAMS,介绍语说它是托管的、以图为底的记忆层,存短期对话、长期知识和完整的推理轨迹)。动机是想把跟 claw 聊过的所有 WhatsApp 消息全传上去,看能不能提炼出点洞察。接上之后,它从对话里抽出一大堆记忆并做了提炼,可以按聊过的人、地点、概念来浏览;这些记忆再通过一个 MCP server,从这台 claw 上就能访问到。(同一家公司的 Zach Blumenfeld 讲「上下文有形状」,见 ep99。) → 详细
  • 这段演示只成了一部分:实体列表和观察日志正常显示(屏上每个实体带类型和一个百分比,比如 Jeremy Adams 是 Person、99%);图形化的记忆浏览器停在「Laying out graph…」,没等到完整渲染。屏上的类型筛选项比 POLE+O 的五类多,除人、组织、地点、事件、物之外还有 Concept、Decision、Framework、SoftwareTool 等。 → 详细
  • 收尾:请大家去 P3 展位找他们;刚接触图的可以去 GraphAcademy,那里的动手课程「全部完全免费」(幻灯片另写着有学习路径和免费认证)。 → 详细
12

闪电问答 / 收尾

本期无闪电问答,也没有观众提问;结尾的展位与课程推荐已并入第十一个主题。

13

联系方式

  • 现场:AI Engineer World's Fair 展区的 Neo4j 展位,编号 P3。 → 详细
  • GraphAcademy(Neo4j 的免费课程站):graphacademy.neo4j.com(网址见结尾幻灯片)。 → 详细
  • Agent Memory 服务的控制台:演示时浏览器地址是 memory.neo4jlabs.com(屏上所示,口头没念)。 → 详细
接着读