BillAI Bass:基于Strands Agents的AI大嘴鱼
速览
BillAI Bass是对经典玩具大嘴比利巴斯的AI改造,采用Strands Agents框架赋予其对话与唱歌能力。该项目展示了将AI agent技术集成到实体玩具中的潜力,让传统互动玩具获得智能对话功能。它在Hacker News上作为展示项目发布,引发对AI+硬件结合的兴趣。
AI 深度解读
背景
传统上,将玩具改造为语音助手需要深厚的机器人学或焊接知识。然而,一个名为 BillAI Bass 的开源项目彻底改变了这一局面:它利用人工智能和现代云服务,将经典的挂墙玩具鱼 Big Mouth Billy Bass 在短短一个周末内变成一个能实时对话、头部转动、嘴巴对嘴型、尾巴摆动的语音助手。该项目基于 Strands Agents 双向流式架构(BidiAgent),运行在 Raspberry Pi 5 上,通过 Amazon Bedrock 的 Nova 2 Sonic 模型实现实时语音交互。项目发布在 Hacker News 上,受到此前 billy-b-assistant 项目启发,但完全用 Strands 重新构建。其核心创新在于:无需任何机器人经验,甚至无需焊接经验,任何人都能通过跟随 AI 助手的分步指导完成制作。
核心内容
BillAI Bass 项目的完整流程分为硬件准备、软件配置和安全设置三大部分,所有步骤都设计为可由 AI 助手(如 Claude)逐步指导完成。
1. 硬件准备与物料清单
核心硬件包括:
- 一个 Big Mouth Billy Bass 玩具(原版或翻新均可)
- 一台 Raspberry Pi 5(用于运行 Strands Agents 和音频流处理)
- 一个 microSD 卡(16GB 以上,用于烧录系统)
- 个人电脑(Mac/Windows/Linux)用于烧录 SD 卡
- 家用 WiFi(Pi 和电脑需在同一网络)
- 胶带(电工胶带最佳,透明胶带也可)、小号十字螺丝刀
- AWS 账户(个人账户,非工作账户)
若购买套件(~$240,按 2026 年 1 月价格),所有零件已包含;若从零采购,需参考原亚马逊订单清单。
2. 系统烧录与操作系统选择
- 使用 Raspberry Pi Imager 烧录 SD 卡
- 必须选择 Raspberry Pi OS Lite (64-bit)(位于“Raspberry Pi OS (other)”下),而非桌面版(Desktop edition)。桌面版包含 Wayfire 面板,会在每次登录时重写
~/.asoundrc导致音频配置反复失效。Lite 版无 GUI,无此问题。 - 操作系统版本要求:Python 3.12+(Nova Sonic 需要)。当前基于 Trixie 的 Raspberry Pi OS 自带 Python 3.13 ✅;旧的 Bookworm 镜像只带 3.11 ❌。
- 若已误装桌面版,可通过
sudo systemctl set-default multi-user.target && sudo systemctl disable lightdm.service && sudo reboot使其以类似 Lite 的方式启动,无需重刷。
3. AWS 账户与安全权限
项目强调最小权限原则:鱼只做一件事——与 Nova Sonic 对话。AWS 密钥将明文存储在鱼体内的 Pi 上,SD 卡可被拔出,因此必须限制其能力。
Step 1 — 启用模型访问:在 AWS 控制台切换至 us-east-1 区域(N. Virginia),进入 Amazon Bedrock → Model access,申请访问 amazon.nova-2-sonic-v1:0(注意是 v1:0,非原始 Nova Sonic v1,后者将于 2026 年 9 月停止服务)。通常即时批准。
Step 2 — 创建专用 IAM 用户:在 IAM 中创建用户(如 billy-bass),不勾选“提供用户访问 AWS 管理控制台”,权限步骤选择“直接附加策略”但不选择任何 AWS 托管策略(如 AmazonBedrockFullAccess 权限过大),直接创建零权限用户。
Step 3 — 附加仅允许 Nova Sonic 的内联策略:策略 JSON 如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BillyTalksToNovaSonicOnly",
"Effect": "Allow",
"Action": "bedrock:InvokeModelWithBidirectionalStream",
"Resource": "arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-2-sonic-v1:0"
}
]
}
策略名建议为 billy-nova-sonic-only。该策略仅允许一个操作(双向流调用)在单一区域对单一模型执行,无法访问 S3、EC2 或其他 Bedrock 模型。
Step 4 — 创建访问密钥:在用户安全凭证中创建访问密钥,类型选择“应用程序在 AWS 外部运行”。保存访问密钥 ID 和秘密密钥(只会显示一次),后续配置到 Pi 上。
Step 5 — (推荐)设置账单警报:在 Billing → Budgets 创建每月 $10 预算并设置邮件提醒。正常对话成本仅几美分,警报可防止持续监听或密钥泄露导致意外费用。
若密钥泄露或鱼丢失,只需在 IAM 中停用该访问密钥,一键使鱼失效,账户安全。
4. 项目构建策略:先软件后硬件
项目建议先让整个语音助手在裸 Pi 上运行(不拆鱼),再打开鱼壳安装硬件。这样软件问题和硬件问题不会相互干扰,更容易调试。
5. 常见代码粘贴问题及预防
当通过 SSH 粘贴代码到终端或 nano 时,容易出现:
- 额外缩进:每行前面多出空格。Python 会报
IndentationError: unexpected indent。可通过sed -i 's/^ //' yourfile.py修复,或仔细粘贴。 - 字符丢失/变形:遗漏逗号,或引号被转为“智能引号”。
建议:每次创建 Python 文件后,先运行 python -m py_compile yourfile.py && echo OK 检查语法,若未输出 OK 则将错误发给 AI 助手。
6. 其他注意事项
- 新 AWS 账户免费套餐覆盖该项目,另有 $100-$200 赠金。Nova Sonic 费用极低(约每分钟对话一美分),赠金可支持 100+ 小时对话。
- 免费套餐限制:新账户可能初始 Bedrock 调用配额为 0,若模型访问已批准但每次调用报
ValidationException: Operation not allowed,需提交免费 AWS 支持工单申请 Nova Sonic 按需配额,或升级为付费计划(剩余赠金可延续)。 - 免费账户 6 个月后自动关闭(或赠金用完时)。若希望鱼永久运行,请在此前升级为付费。
关键要点
- 项目名称:BillAI Bass,将 Big Mouth Billy Bass 玩具转化为 AI 实时语音助手
- 核心技术:Strands Agents 双向流式代理(BidiAgent) + Raspberry Pi 5 + Amazon Nova 2 Sonic(通过 Amazon Bedrock)
- 无需经验:零机器人学经验、零焊接经验要求,作者本人此前从未碰过 Raspberry Pi,一个周末完成
- 构建方式:将整个指南粘贴到 AI 助手(如 Claude)中,请求其“带我一步步完成,每一步等我确认”。AI 可协助调试错误、识别硬件、解释概念
- 操作系统关键:必须使用 Raspberry Pi OS Lite (64-bit) 且基于 Trixie(Python 3.13),避免桌面版 Wayfire 面板的音频配置冲突
- 最低权限 IAM 策略:仅允许
bedrock:InvokeModelWithBidirectionalStream对amazon.nova-2-sonic-v1:0模型在 us-east-1 区域执行,防止密钥泄露后账户被滥用 - 安全建议:设置每月 $10 账单警报;密钥泄露时一键停用访问密钥
- 先软件后硬件:先在裸 Pi 上完成语音助手功能,再拆鱼安装硬件,降低调试复杂度
- 代码粘贴防错:建议粘贴后运行
python -m py_compile检查语法,避免缩进/字符问题
意义与影响
BillAI Bass 项目展示了 AI 辅助硬件构建的新范式:**让非专业用户通过自然语言与 AI 协作,在极短时间内完成
