giligili-device
GitHub用于操控giligili硬件设备,支持BLE/TCP配网、密钥管理、控制台命令执行及语音/手势交互调试。适用于设备初始化、远程运维、故障排查及功能验证场景。
Trigger Scenarios
Install
npx skills add miantiao-me/giligili --skill giligili-device -g -y
SKILL.md
Frontmatter
{
"name": "giligili-device",
"description": "操控叽哩叽哩 (giligili) 设备——WiFi\/API 密钥配网(BLE\/TCP)、控制台命令、应用与手势、豆包 S2S 语音会话调试。当需要给设备写入凭证、远程执行命令、排查语音\/相机问题或解释交互时使用。"
}
giligili 设备操控
设备身份
- BLE 名
Giligili,service0x5A10,地址为 efuse MAC 派生的 固定随机静态地址(每次 boot 不变)。 - TCP 控制台:设备同网段
nc <ip> 23,提示符giligili>,单客户端。 - USB 串口监视:
esp_idf_monitor/idf.py monitor。 - 设备 IP:通过串口日志、路由器客户端列表或 BLE 0x5A12 状态特征读取。
- 自动化冒烟: TCP 控制台命令即冒烟面 —
health/capabilities/cam on|off/tap/swipe/uistats/uimode/vtstats/uptime; 设备负载过高时 console 慢 >30s 属正常, 超时重试; 命令语义见 docs/系统交互与日志.md。
配网与密钥(BLE 0x5A13 或 TCP 同一套命令)
| 命令 | 说明 |
|---|---|
ssid\npassword(写 0x5A11) |
WiFi 配网,存 NVS |
key doubao_key <key> |
豆包 S2S X-Api-Key(新版控制台唯一鉴权因子,无 appid) |
key ark_key <key> |
方舟大模型 Bearer(识图) |
key search_key <key> |
融合信息搜索 API key(联网搜索) |
keys |
查询各密钥是否已写(不回显内容) |
keydel <name> |
擦除任意 NVS 键(清历史残留用,不受白名单限制) |
密钥持久化在 NVS keys 命名空间,应用层不读取密钥明文——session JSON 里的
{{key_name}} 占位符由固件在发送前替换。
控制台命令全集
查询: status · capabilities · health · uptime · servo(回读角度/温度/动) ·
imu · mag · power · touch · environment · audio · nfc · s2s · keys ·
uistats(帧数/帧错误/耗时,JS 兼容字段为零) · uimode(当前界面) · logs [n](日志环)
操作: servo <yaw> <pitch> <ms>(0.1°) · torque 0|1 · led r g b ·
pixel i r g b · led clear · ir <addr> <cmd> · beep <freq> <ms> ·
vol <0-100> · bright <0-255> · cam on|off|freeze ·
tap <x> <y> / swipe <x0> <y0> <x1> <y1>(虚拟触摸注入, 测试用) ·
wifi <ssid> <pass> · key <名> <值> · keydel <名> · reboot
完整对照表见 docs/系统交互与日志.md。
交互手势
缘区 = 四边条带(上 y<48 / 下 y>184 / 左 x<52 / 右 x>268), 位移 >35px 且主轴占优。 会话/相机/扫码内禁用左右缘(防误杀), 只保留下缘上滑退出 + 上缘下滑控制中心(会话中整屏大幅上滑亦可退出)。
- 上缘下滑:控制中心(四宫格: 左列音量+/−, 右列亮度+/−, 格内显示当前值; 点格外关闭; 覆盖层不切 mode, 会话中可调)。
- 下缘上滑:回主屏——会话/相机/扫码=退出, 设置/屏保=回主屏。
- 左缘右滑:进屏保(主屏/设置/自检/NFC 屏生效)。
- 右缘左滑:进设置(主屏/屏保生效; 设置内右滑=回主屏, 自检/NFC 内=回设置)。
- 桌面横滑 = 应用分页(指示点跟随), 点按图标 = 进入应用。
- 相机应用内点按 = 拍照识图; 其他屏左下角有返回按钮(左缘竖条底部)。
- 屏保:点按 = 回主屏; 进屏保 1 分钟后隐藏日期, 时间全屏漂移。
- 设置里"运行自检" → 自检页: capabilities() 能力位 + 网络/key 状态, "动一动" 实体测试 + "舵机归零"(当前位置存 NVS 零位); 返回按钮回设置。
- 摸头手势 (Si12T 三段): 轻拍→开心表情+beep; 前后抚摸→开心+点头/摇头。
- NFC 刷卡: NTAG 卡写
giligili:<appid>文本记录 → 直接进应用; 设置页"NFC 写卡"可自己烧卡。 - WiFi 二维码配网:桌面没联网时显示离线页 → 点"扫码连 WiFi"进相机扫码
(quirc 片上解码
WIFI:S:ssid;P:psk;;标准格式)→ 写 NVS 重连。 原生接口见native/src/dev.rs的扫码与配网函数;下缘上滑退出扫码。
应用与豆包 S2S
- 全部 9 个应用 = 各自一条 S2S WSS 会话(Seeduplex 全双工,纯 JSON 文本帧)。
- 进应用才连 WSS;退出
session.close+ 断连,上下文不保留。 - 会话配置在
native/src/agent.rs的build_session():{session, extension}同级字段;{{search_key}}占位符固件替换,只在dev::has_key("search_key")时才开搜索。 - 每应用独立音色
APPS[].voice;dialect走extension.tts.extra.explicit_dialect(仅 vivi/小何/云舟/小天四音色支持方言);music→dialog.extra.enable_music。 - FC schema 在
native/src/apps.rs::tool_def,执行在native/src/tools.rs::run:express复合表达(表情+动作+灯+声, 情绪表演优先) /dance/take_photo→Ark 识图 /nod/shake_head/look(方向枚举) /look_at(归一化坐标) /tilt_head/servo/light/led_pixel/beep/battery/power/environment/volume/brightness/emote/blink/close_mouth/ir_send/head_status(舵机回读);应用按人设挂子集 (APPS[].tools)。 - 音频:上行 16kHz PCM(板载 24k 重采样),下行 24kHz PCM 直通 AW88298。
- 进应用 ready 后
ai.speak(greet)打招呼(speech_text_buffer.commit,不经模型);ai.say注入用户文本;表情见native/src/face.rs(移植自 puterjam/muspi 表情系统)。
排障速查
caps里a=音频c=相机;keys查密钥;health查内存(internal 需 >16K 连续)。- S2S 连不上:先
keys确认 doubao_key;串口看s2s:日志(ws closed/error 都有 logid)。 - 相机:
cam on报 open /dev/video2 = GC0308 未探测(排线/电源)。 - 上行音频节奏由
board_audio_mic16k阻塞驱动 = 天然 20ms 节拍,不要另加定时器。
Version History
- c767c4e Current 2026-11-02 08:43


