diff --git a/docs/hardware/zh/lichee/RV_Nano/7_picoclaw_board.md b/docs/hardware/zh/lichee/RV_Nano/7_picoclaw_board.md index ef922ded..cbded85f 100644 --- a/docs/hardware/zh/lichee/RV_Nano/7_picoclaw_board.md +++ b/docs/hardware/zh/lichee/RV_Nano/7_picoclaw_board.md @@ -8,6 +8,10 @@ update: - First version --- +[*模型文件于此下载*](https://dl.sipeed.com/shareURL/LICHEE/LicheeRV_Nano/08_RVClaw) +![rvclaw-kit-jpg](../../../zh/lichee/assets/RV_Nano/rvclaw/rvclaw-kit.jpg) + + ## PicoClaw 扩展板 PicoClaw 扩展板是一款为 **PicoClaw** 交互应用打造、基于 **LicheeRV Nano** 开发板的功能扩展板,面向语音交互与本地显示场景,集成显示、按键、指示灯、电池管理与音频外设接口,便于快速搭建完整的人机交互终端。 @@ -58,13 +62,13 @@ PicoClaw 扩展板定制镜像下载: - 镜像内扩展板功能代码基于 Python,位于 `/opt/app_picoclaw`(源码:[https://github.com/sipeed/rvclaw](https://github.com/sipeed/rvclaw)),便于按需二次开发和自定义。 -## 快速上手 +## 快速上手 Picoclaw -### 1. 选择应用 +### 选择应用 应用默认启动后进入应用选择界面,按下 `KEY1` 键选择 PicoClaw 应用,按下 `KEY2` 键选择 CC Buddy 应用。CC Buddy 自定义的虚拟宠物应用,提供了一个可爱的交互界面和简单的对话功能,适合初次使用者体验。 -### 2. 连接网络 +### 连接 Wi-Fi 首先需要进入设备控制台,推荐以下两种方式: @@ -76,9 +80,28 @@ PicoClaw 扩展板定制镜像下载: usb network -然后可以使用 SSH 工具或者串口工具登录设备,默认用户名和密码均为 `root`。登录进设备后可以按照[外设使用](https://wiki.sipeed.com/hardware/zh/lichee/RV_Nano/5_peripheral.html#WIFI)中的方法连接 Wi-Fi。 +然后可以使用 SSH 工具或者串口工具登录设备,默认用户名和密码均为 `root`。 -### 3. 配置 PicoClaw +**登录进设备后可以按照下述方法连接 Wi-Fi。** + +
+连接 Wi-Fi + +> ```bash +> # 在 sd 卡第一个分区创建 wifi.sta 文件启用 sta 模式: +> touch /boot/wifi.sta && rm -f /boot/wifi.ap /boot/wifi.mon +> +> # 然后将 AP 的 SSID 和密码写入文件: +> echo ssid > /boot/wifi.ssid +> echo pass > /boot/wifi.pass +> +> # 最后重启 Wifi 服务 +> /etc/init.d/S30wifi restart +> ``` + +
+ +### 配置 PicoClaw 第一次进入系统后,PicoClaw 还未完成初始化,需要先进行配置。可以使用 Web UI 或者 TUI 进行配置,以下以 Web UI 为例: @@ -139,6 +162,178 @@ PicoClaw 扩展板定制镜像下载: +## CC Buddy 应用 + +### CC Buddy 介绍 + +
+ 📷 cc buddy hero +
+ +**CC Buddy** 是 PicoClaw 扩展板镜像内置的另一款应用,定位为 **Claude Code 的桌面伙伴设备(Companion Device)**。它将 Claude Code 的交互过程“拟物化”为一只可爱的虚拟宠物(ASCII Pet),并把 Claude Code 在执行命令、调用工具时所产生的 **权限审批请求**(Permission Request)从电脑端直接转移到 LicheeRV Nano 这块小屏幕上:在屏幕上一键允许或拒绝,决策结果会回传给 Claude Code,从而无需切回电脑窗口即可控制 Agent 的行为。 + +CC Buddy 移植自 Felix Rieseberg 的 [claude-desktop-buddy](https://github.com/anthropics/claude-desktop-buddy) 项目,针对 LicheeRV Nano + PicoClaw 扩展板做了专门适配:使用 240×240 ST7789 显示、KEY1(A)/KEY2(B) 双按键、板载 LED 等外设。源码位于系统镜像的 `/opt/app_cc_buddy`。 + +CC Buddy 的核心设计理念: + +- **拟物化反馈**:把 Claude Code 的运行状态(空闲、忙碌、等待审批、完成任务等)映射成宠物的情绪与动作,让看不见的 Agent 行为变得直观。 +- **就近审批**:Claude Code 的权限请求被推送到设备屏幕,直接按键 A/B 即可批准或拒绝,省去电脑的窗口切换,优化体验。 +- **CLI 桥接**:通过 Claude Code 官方 Hook 机制 + 本地守护进程将事件桥接到设备 TCP 端口,无需修改 Claude Code 本体。 + +### 主要功能 + +- 240×240 LCD 上以 ASCII 像素风格显示宠物形象(默认提供 `capybara`、`cat`、`robot` 三种形象,可在设置中切换) +- 实时显示 Claude Code 会话状态:会话总数、运行中、等待中、Token 消耗、最近一行命令/输出 +- 权限审批弹窗:显示工具名称、提示信息、等待秒数,超过 10 秒会高亮提醒 +- 宠物养成系统:根据“审批速度、拒绝次数、Token 消耗”计算情绪值(mood)、饱食度(fed)和精力(energy),累计 Token 触发升级动画 +- 多种显示模式:HUD(脚本/转录)、INFO(设备/网络/统计信息)、PET(宠物状态页)、CLOCK(无 Claude 连接时切换为时钟) +- 可选 LED 状态闪烁、屏幕自动息屏(30 秒无操作)、声效反馈(可在设置中开关) +- 一键从应用菜单切换回 PicoClaw 应用(无需重启) + +
+ 📷 cc buddy hud mode + 📷 cc buddy info mode + 📷 cc buddy pet mode + 📷 cc buddy clock mode +
+ +
+Full Mode + +
+ 📷 cc buddy pet mode P1 + 📷 cc buddy pet mode P2 +
+ +
+ 📷 cc buddy info mode P1 + 📷 cc buddy info mode P2 + 📷 cc buddy info mode P3 +
+ +
+ 📷 cc buddy info mode P4 + 📷 cc buddy info mode P5 + 📷 cc buddy info mode P6 +
+
+ +### 连接方式 + +CC Buddy 通过 **Claude Code CLI(Hooks + Daemon)** 与设备通信。 + +适用于使用 `claude` 终端命令行的用户。需要在电脑上常驻一个守护进程(daemon),由它把 Claude Code 的 Hook 事件桥接到设备的 TCP 端口。 + +``` +Claude Code CLI (sessions) + │ HTTP hooks(自动注入到 ~/.claude/settings.json) + ▼ +cc_buddy_daemon.py (默认 :9876) + │ TCP + ▼ +RVClaw 设备 (:19000) +``` + +在电脑端启动 daemon([脚本于此下载](https://raw.githubusercontent.com/sipeed/rvclaw/refs/heads/main/app_cc_buddy/hooks/cc_buddy_daemon.py)): + +```bash +python3 cc_buddy_daemon.py --device +# 自定义端口 +python3 cc_buddy_daemon.py --device --port 9877 +``` + +启动后 daemon 会自动: + +- 将以下 Hook 写入 `~/.claude/settings.json`,退出(Ctrl+C / SIGTERM)时自动清理 +- 监听 `http://127.0.0.1:9876` 接收 Claude Code 的 Hook 事件 +- 通过 TCP 连接到 RVClaw 的 `19000` 端口推送心跳并接收按键决策 + +| Hook | 用途 | +| --- | --- | +| SessionStart / SessionEnd | 维护活跃会话计数 | +| PreToolUse | 标记“运行中”状态并构建命令转录 | +| PostToolUse | 清除“运行中”状态 | +| Stop | 标记会话生成完成 | +| **PermissionRequest** | **阻塞**等待设备按键决策(默认 30s 超时) | +| PermissionDenied | 清除“等待中”状态 | +| PreCompact | 同步 Token 计数 | + +随后正常使用 `claude` 即可:当 Claude 需要权限时,设备会切到审批界面,按 **A 批准 / B 拒绝**,决策通过 daemon 回传给 Claude Code。 + +
+ 📷 cc buddy approval +
+ +### 按键操作 + +CC Buddy 的两个按键复用为多种功能,行为根据当前界面变化: + +| 操作 | A(左侧) | B(右侧) | +| --- | --- | --- | +| 主界面短按 | 切换显示模式(NORMAL / PET / INFO) | 在 INFO/PET 页内翻页;HUD 模式下滚动转录 | +| 长按(≥ 600ms) | 弹出主菜单(settings / help / about / demo / to picoclaw / close) | — | +| 审批界面 | **批准**(once) | **拒绝**(deny) | +| 菜单/设置打开时 | 移动选择项 | 确认/触发当前项 | +| 屏幕息屏时 | 唤醒(首次按键不触发功能) | 唤醒(首次按键不触发功能) | + +> 在主菜单中选择 `to picoclaw` 即可在不重启系统的前提下切换回 PicoClaw 应用(CC Buddy 的服务停止,PicoClaw 的服务启动)。 + +### 设置项与持久化 + +
+ 📷 cc buddy menu + 📷 cc buddy settings +
+ +进入 `主菜单 → settings`,可配置以下项目: + +| 设置项 | 含义 | 取值 | +| --- | --- | --- | +| brightness | 显示亮度档位 | 0–4 | +| sound | 提示音开关 | on / off | +| led | 状态 LED 开关(等待审批时闪烁) | on / off | +| transcript | HUD 转录显示开关 | on / off | +| ascii pet | 宠物形象选择 | capybara / cat / robot | +| sleep | 自动息屏开关(30s 无操作) | on / off | +| reset stats | 清空养成数据并恢复出厂 | — | + +设备数据持久化到 `/root/.cc_buddy/`: + +- `stats.json`:等级、token 累计、approve/deny 计数、宠物形象索引、主人/宠物名等 +- `settings.json`:上述设置项 + +### 宠物养成规则 + +
+ 📷 cc buddy capybara + 📷 cc buddy cat + 📷 cc buddy robot +
+ +- **MOOD(情绪)**:审批越快情绪越高(< 5 秒会触发 `HEART` 一次性动画),频繁拒绝会降低情绪 +- **FED(饱食度)**:每累计约 50K tokens 升级一次,并播放 `CELEBRATE` 动画 +- **ENERGY(精力)**:设计上将屏幕朝下放置触发“小睡”回满精力(当前未支持) +- **状态映射**:连接断开 → IDLE,等待审批 → ATTENTION(伴随 LED 闪烁),同时运行 ≥ 3 个会话 → BUSY,最近完成 → CELEBRATE,深夜(1:00–7:00)且无 Claude 连接 → SLEEP(时钟模式) + +### 二次开发 + +开发仓库地址位于 [Github app_cc_buddy](https://github.com/sipeed/rvclaw/tree/main/app_cc_buddy)。 +CC Buddy 完全使用 Python 编写,目录结构清晰: + +| 文件 | 作用 | +| --- | --- | +| `main.py` | 主事件循环、按键调度、状态切换、显示刷新 | +| `config.py` | 引脚定义、SPI 参数、字体路径、UI 布局常量 | +| `ui.py` | 启动画面、HUD、审批页、Info/Pet/Clock/Menu/Settings 各界面绘制 | +| `buddy.py` + `buddies/*.py` | 宠物形象渲染器(已注册 capybara、cat、robot) | +| `state.py` | `TamaState`、`PersonaState`、`DisplayMode` 等数据结构 | +| `protocol.py` | JSON 心跳/命令解析与权限响应封装 | +| `transport.py` | TCP(19000)通信实现 | +| `hooks/cc_buddy_daemon.py` | 电脑端 Hook 桥接守护进程 | +| `S99cc_buddy_app` | 开机自启脚本 | + +可在 `buddies/` 下新增 species 文件并在 `buddies/__init__.py` 中 `register_species()` 注册即可扩展自定义宠物形象。 + ## FAQ - 对话过程中出现报错 diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_approval.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_approval.jpg new file mode 100644 index 00000000..6ee7d71c Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_approval.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_hero.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_hero.jpg new file mode 100644 index 00000000..d88752d0 Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_hero.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_menu.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_menu.jpg new file mode 100644 index 00000000..320b2e5c Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_menu.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_clock_species_capybara.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_clock_species_capybara.jpg new file mode 100644 index 00000000..6efbb3b3 Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_clock_species_capybara.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_clock_species_cat.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_clock_species_cat.jpg new file mode 100644 index 00000000..8812dcf9 Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_clock_species_cat.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_clock_species_robot.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_clock_species_robot.jpg new file mode 100644 index 00000000..28882bab Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_clock_species_robot.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_hud.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_hud.jpg new file mode 100644 index 00000000..fd50b8a6 Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_hud.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P1.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P1.jpg new file mode 100644 index 00000000..4dfdfa5b Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P1.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P2.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P2.jpg new file mode 100644 index 00000000..99980013 Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P2.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P3.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P3.jpg new file mode 100644 index 00000000..bb1fe493 Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P3.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P4.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P4.jpg new file mode 100644 index 00000000..ed592db2 Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P4.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P5.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P5.jpg new file mode 100644 index 00000000..289cfa71 Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P5.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P6.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P6.jpg new file mode 100644 index 00000000..87707c7b Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_info_P6.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_pet_P1.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_pet_P1.jpg new file mode 100644 index 00000000..05d26298 Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_pet_P1.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_pet_P2.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_pet_P2.jpg new file mode 100644 index 00000000..f40d2216 Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_mode_pet_P2.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_settings.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_settings.jpg new file mode 100644 index 00000000..8fc8a4c2 Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/cc_buddy_settings.jpg differ diff --git a/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/rvclaw-kit.jpg b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/rvclaw-kit.jpg new file mode 100644 index 00000000..a27938aa Binary files /dev/null and b/docs/hardware/zh/lichee/assets/RV_Nano/rvclaw/rvclaw-kit.jpg differ diff --git a/pages/index/zh/rvclaw.html b/pages/index/zh/rvclaw.html new file mode 100644 index 00000000..cc5f08b3 --- /dev/null +++ b/pages/index/zh/rvclaw.html @@ -0,0 +1,16 @@ + \ No newline at end of file