给 OpenClaw 搞了只像素龙虾桌宠,居然有点可爱…

0 阅读8分钟

图片

哈喽,大家好

我是阿星👋

跟大家分享一下我最近二次开发 peon-pet的一个像素龙虾桌宠——图片

它会跟着我的 AI 工作状态动起来。

图片

开始任务就“醒来/打字”,完成就“庆祝”,报错就“警戒”。

图片

就蹲在你的屏幕边角,萌萌哒。

图片

已经开源到了github可以直接玩。
图片

原项目在这里

图片

我这次核心不是重写项目,而是改了 UI 素材和事件。下面的看不懂也行,直接把提示词发给AI就行了。

图片

素材怎么做的?

就像这样,我一次出整套像素资源:

待机、启动、打字、庆祝、警戒、报错,

我们做的 36 张是对应 6个状态动画,每个状态6帧。

图片

再给他的工作台来一套固定背景,

哪里不满意就用Touch Edit(AI绘图软件的精准编辑功能)。

图片

再比如工作台这里,

你可以直接给自己的龙虾小屋写一块招牌。

所有文字都可以随便改不用重新作图。

图片

可以看到,已经生成好了。而且因为我们提前对图像命名进行了规定,AI给我们命名的每一张都是符合要求的,素材替换起来就容易多了,

提示词我放这里了。大家可以根据自己的喜好去改成自己的style。

我们的所有图片里的桌子都要保持不变,龙虾的大小方向也不可以的。现在的桌子大小和龙虾大小都是有变化的。我们是用来做assets atlas的。请严格锁定同一角色与同一机位构图(体型/配色/线稿/光照一致,脚底与桌面锚点固定),侧视朝右, 固定机位, 固定缩放, 角色在画面中位置不变, 每组6帧仅做小幅连续动作(相邻帧位移≤3px、姿态平滑过渡),并输出透明背景RGBA PNG(alpha透明,无黑底无黑边)。需要生成的内容如下

公共前缀 P(每张都加):像素风, 16-bit, 可爱小龙虾桌宠, 坐在迷你办公桌前, 3/4 透明背景, 纯像素硬边, 无抗锯齿, 无文字, 无水印, 单帧动画素材,512x512,36 张对应提示词(每张= P + 变化描述)具体如下。

sleeping_01.pngP + 闭眼熟睡, 身体中立姿态, 微弱呼吸感
sleeping_02.pngP + 闭眼熟睡, 身体下沉2像素, 呼吸下压
sleeping_03.pngP + 闭眼熟睡, 身体回到中立, 轻微呼吸上抬
sleeping_04.pngP + 闭眼熟睡, 小气泡鼻息出现, 极轻摆动
sleeping_05.pngP + 闭眼熟睡, 小气泡变大一点
sleeping_06.pngP + 闭眼熟睡, 小气泡消失, 回到中立
waking_01.pngP + 从睡眠到苏醒过渡, 眼睛半睁, 轻微抬头
waking_02.pngP + 眼睛睁开70%, 背部挺直一点
waking_03.pngP + 眼睛完全睁开, 左钳微抬
waking_04.pngP + 伸懒腰开始, 双钳外展
waking_05.pngP + 伸懒腰最高点, 身体上抬2像素
waking_06.pngP + 苏醒完成, 回到清醒待命姿势
typing_01.pngP + 专注敲键盘, 左钳按键, 右钳抬起
typing_02.pngP + 专注敲键盘, 右钳按键, 左钳抬起
typing_03.pngP + 双钳快速交替中间态, 屏幕微亮
typing_04.pngP + 左钳重击键盘, 身体前倾1像素
typing_05.pngP + 右钳重击键盘, 身体前倾1像素
typing_06.pngP + 快速敲击回中立, 持续工作状态
alarmed_01.pngP + 受惊, 眼睛放大, 身体后仰1像素
alarmed_02.pngP + 受惊加强, 双钳抬起防御姿态
alarmed_03.pngP + 红色警报像素闪烁点出现在头顶
alarmed_04.pngP + 警报闪烁第二帧, 身体轻抖
alarmed_05.pngP + 警报闪烁第三帧, 双钳更紧张
alarmed_06.pngP + 警戒待命姿态, 紧张但稳定
celebrate_01.pngP + 开心开始, 嘴角上扬, 双钳上抬
celebrate_02.pngP + 双钳举高, 身体上跳1像素
celebrate_03.pngP + 欢呼最高点, 彩色像素纸屑少量出现
celebrate_04.pngP + 落回中间态, 纸屑下落
celebrate_05.pngP + 再次小幅欢呼, 双钳挥动
celebrate_06.pngP + 庆祝结束, 开心待命姿态
annoyed_01.pngP + 不耐烦, 皱眉, 眼神变窄
annoyed_02.pngP + 生气加强, 左钳叉腰右钳抬起
annoyed_03.pngP + 生气喷气, 头顶小蒸汽像素出现
annoyed_04.pngP + 蒸汽第二帧, 身体微抖
annoyed_05.pngP + 蒸汽第三帧, 怒视前方
annoyed_06.pngP + 生气结束回待命, 仍略不爽
可选三张的提示词
bg.png:像素风桌面地台背景, 柔和渐变与网格, 透明外围, 无角色, 3072x3072
borders.png:像素风发光边框与角标装饰, 透明底, 赛博蓝绿色, 3072x3072
dock-icon.png:像素风小龙虾头像图标, 居中构图, 高对比, 512x512, 透明背景

代码实现

原项目是 peon-pet它不是为龙虾服务的,所以我把角色素材换成像素龙虾风格,

并且把关联事件替换成我们本地openclaw相关的代码

总的来说,就是在 OpenClaw 外围加了一层事件:实时监听会话事件( agents//sessions/.jsonl ),把它们映射成项目状态机并输出( 通过/state )。

比如你现在先git clone这个项目到自己本地

然后对他进行改造前先把下面这个提示词发给他,就可以直接进入状态

你现在在 `peon-pet` 仓库里工作,目标是把它改造成一个可现场演示的 OpenClaw 桌宠。

【目标】
把默认 peon-pet 改成 OpenClaw 生态演示版:
1. 视觉上替换成我提供的小龙虾/桌面组件素材
2. 状态上接到 OpenClaw,会随着工作流状态切换动画
3. 本地能直接启动、看到效果、验证状态联动
4. 不改 OpenClaw 本体代码,只改 peon-pet

【硬约束】
- 这是 OpenClaw 演示项目,不是网页广告项目
- 不要改事件协议设计
- 事件名必须继续沿用:
  `SessionStart`
  `Stop`
  `UserPromptSubmit`
  `PermissionRequest`
  `PostToolUseFailure`
  `PreCompact`
- `renderer/app.js` 的动画语义保持:
  `sleeping / waking / typing / alarmed / celebrate / annoyed`
- 如果素材表的行顺序和语义不一致,可以在素材构建阶段重排行,不要改协议含义
- 不要删除已有角色(`orc` / `capybara` / `hello-kitty` 等)
- 不要改 OpenClaw 仓库代码;如果需要 bridge,就只在 peon-pet 内实现

【状态接入要求】
- peon-pet 要接到 OpenClaw 状态
- 优先方案:在 peon-pet 内实现本地 bridge,并暴露 `remoteUrl/state`
- `/state` 返回的数据格式必须符合 `main.js` 里 `syncRemoteSessionsToTracker` 需要的格式:
  `sessions: { sid: { timestamp, cwd, event } }`
- `timestamp` 用秒
- 如果 OpenClaw 没有现成 HTTP 接口,可以在 peon-pet 内自己轮询/转换,但不要改 OpenClaw 本身

【素材要求】
- 新增一个角色,例如 `openclaw-demo`
- 在 `main.js` 的 `BUNDLED_CHARS` 里加映射
- 素材最终落到 `renderer/assets/`,至少包括:
  `openclaw-demo-sprite-atlas.png`
  `openclaw-demo-borders.png`
  `openclaw-demo-dock-icon.png`
  `openclaw-demo-bg.png`
- 如果我把新素材放到项目根目录或者 `素材包/` 目录,你要自动识别并用它们生成最终资产
- 你选定了哪些素材,必须同步回 `素材包` 的固定文件名,避免“实际显示内容”和“素材包里的文件”不一致
- 如果素材已经有透明背景,就保留透明
- 如果素材是白底/灰底/黑底预览图,就在构建时安全去底,但不要把主体抠坏
- 边框必须完整显示,不能因为裁切只剩碎片
- 台灯/键盘这类组件如果需要,可以单独作为背景组件摆放,但不能和龙虾主体打架

【动画语义】
按下面语义驱动:
1. `sleeping`:空闲/待机
2. `waking`:新会话开始
3. `typing`:用户发起任务/工作中
4. `alarmed`:需要授权或 compact 前提醒
5. `celebrate`:任务成功结束
6. `annoyed`:失败/报错

【工作方式】
- 先检查并确认入口与映射:
  `renderer/app.js`
  `main.js`
  `renderer/assets/*`
- 然后直接修改,不要只给方案
- 如果你发现我放进来的素材名字不规范,不要停下,直接适配
- 如果当前已有窗口在跑,替换后帮我重启到最新版本
- 除非真有阻塞,否则不要反复问我确认

【必须执行的验证】
1. 依赖:
   `npm install`(如果已装就说明已装)
2. 测试:
   `npm test`
3. 启动:
   `npm run dev -- --character openclaw-demo --spawn-test`
   如果是 remote 模式,按你接入后的实际命令启动
4. 状态联动验证:
   至少验证 3 类事件触发后的动画变化
5. 如果 bridge 或状态拉取失败,要继续修到能演示为止

【输出格式】
最后只按下面格式给我结果:
- 本轮改动
- 素材替换映射(旧 -> 新)
- OpenClaw 状态联动验证结果
- 启动命令
- 未完成项(如果有)

直接开始做,不要停在分析。

然后把星流AI刚生成的这些新素材替换进项目资源。

图片

然后启动程序,你就会看到openclaw 一开工龙虾就打字,

任务完成就庆祝,

图片

工具报错或权限请求/拦截就告警,

图片

高颜值桌宠从装饰

变成了实时工作状态面板。

图片

如果你还想给你的小龙虾做几套皮肤,

只用让星流AI给它更换不同版本的提示词。

百变龙虾就来啦~

总之先出一版像素 UI,再接现有项目逻辑,

就可以让自己的龙虾安家啦。

ok我是阿星,更多AI应用,我们下期再见!

图片