1. 给 AI 编程助手配个桌宠到底图什么第一次看到有人给 Claude Code 和 Codex 这类 AI Coding Agent 挂上桌宠的时候我第一反应是花里胡哨。命令行里跑得好好的代码该生成生成、该补全补全屏幕上多一只会动的小东西除了占地方还能干嘛但真正自己折腾了一遍 Petdex CLI 和 Clawd 这套组合之后我改主意了——这东西解决的不是好不好看的问题而是你根本不知道 AI 在后台干什么的问题。先说清楚这个项目是什么。简单讲就是给你的 AI 编程助手Claude Code、Codex CLI 这类跑在终端里的 Agent配一个桌面宠物这个宠物会实时反映 Agent 的工作状态它在思考的时候宠物在转圈它在读写文件的时候宠物在敲键盘它任务完成的时候宠物会给你一个反馈动作它卡住或者报错的时候宠物会表现出异常。Petdex CLI 是负责管理这些桌宠的框架Clawd 则是其中一个专门为 Claude Code 设计的宠物形象。它能解决什么问题核心是状态可视化。你让 Claude Code 去重构一个模块它可能要跑三五分钟这期间终端里滚动的日志你未必一直盯着。有了桌宠你余光扫一眼就知道它是在正常工作还是已经挂了。另一个隐性价值是心理陪伴——长时间和 AI 结对编程有个会动的小东西在旁边体验上确实不一样尤其是深夜赶工的时候。适合谁看三类人。第一类是已经在用 Claude Code 或 Codex 做日常开发的想让工作流更顺手第二类是刚接触 AI Coding Agent 的新手桌宠能帮你直观理解 Agent 的工作节奏第三类是喜欢折腾终端环境、对 CLI 工具链有洁癖的老玩家。不管你是哪种下面的内容都能直接抄作业。2. 整体设计思路为什么是外挂式而不是内置式2.1 桌宠和 Agent 的通信机制拆解要理解 Petdex CLI 的设计得先搞明白一个前提Claude Code 和 Codex 这类工具本质上都是长驻进程 事件流的架构。它们在工作时会不断产生事件——开始思考、调用工具、读取文件、执行命令、返回结果、遇到错误。这些事件有的会打印到终端有的藏在内部日志里。Petdex CLI 的思路很聪明它不去改 Agent 的源码也不去 hook 它的内部函数而是监听 Agent 的输出流和状态文件把这些信号翻译成桌宠的动作指令。这就像给一个黑盒系统装了个状态指示灯你不需要拆开盒子只要在盒子外面接一根线就行。为什么选这种外挂式方案我总结了三个理由。第一是兼容性Claude Code 和 Codex 都在快速迭代版本更新频繁如果你把桌宠逻辑写进 Agent 内部每次升级都得重新适配维护成本爆炸。外挂式只依赖稳定的输出格式Agent 小版本更新基本不受影响。第二是解耦桌宠挂了不影响 Agent 干活Agent 崩了桌宠也只是显示异常状态两者互不拖累。第三是可替换今天你想用 Clawd明天想换个别的宠物形象只改 Petdex 的配置就行Agent 那边完全无感。2.2 状态映射表Agent 在干什么宠物就演什么这套方案的核心是一张状态映射表。Petdex CLI 会把 Agent 的运行状态归类成若干种每种对应宠物的一套动作。我实测下来比较合理的一套映射是这样的Agent 状态触发信号宠物动作实际意义空闲待命无任务等待输入原地待机、偶尔眨眼可以派活了思考中收到 prompt开始推理转圈或头顶冒问号别催它在想工具调用正在读写文件、执行命令敲键盘或搬东西正在动手长任务运行单步耗时超过阈值打瞌睡或看表耐心等任务完成返回最终结果举手或跳跃可以验收了异常报错捕获到错误输出摔倒或冒冷汗赶紧去看日志这张表的价值在于它把一堆你懒得看的终端日志压缩成了一个一眼可读的视觉信号。你不用去分辨日志里哪行是thinking哪行是tool_use看宠物在干嘛就知道了。2.3 为什么选 Petdex CLI 而不是自己写脚本有人可能会想监听输出流这事我自己写个 Python 脚本不就完了确实能实现但 Petdex CLI 帮你省了三件事。一是跨平台适配Windows、macOS、Linux 下终端输出流的读取方式、窗口置顶的实现、透明背景的处理都不一样Petdex 已经踩过这些坑了。二是宠物资源管理Clawd 这类宠物形象有完整的动作帧序列自己画或者自己找素材很费劲Petdex 提供了现成的资源包和加载机制。三是配置化状态映射、触发阈值、宠物大小位置这些都能通过配置文件调不用改代码。提示如果你只是想快速体验直接用 Petdex CLI 的默认配置就行。等用顺手了再考虑自定义映射规则和宠物形象别一上来就折腾配置容易劝退。3. 核心细节解析从安装到跑通的关键环节3.1 环境准备先确认你的 Agent 能正常跑装桌宠之前有个前置条件必须满足你的 Claude Code 或 Codex 本身得能正常工作。桌宠是寄生在 Agent 之上的Agent 都跑不起来桌宠自然也没状态可显示。Claude Code 的安装官方推荐的方式是通过 npm 全局安装命令大致是npm install -g anthropic-ai/claude-code装完之后在终端敲claude能进入交互界面就算成功。Codex 这边类似也是 npm 包装完用codex命令启动。Windows 用户如果遇到权限问题记得用管理员权限的终端或者配置好 npm 的全局路径。这里有个新手常踩的坑Node.js 版本。Claude Code 和 Codex 对 Node 版本有要求太老的版本会报各种奇怪的错。我建议直接用 Node 18 以上的 LTS 版本用node -v确认一下。如果版本不对用 nvm 或者直接去官网下新版装上别在这上面省事。3.2 Petdex CLI 的安装与初始化Agent 跑通之后装 Petdex CLI。它本身也是个 npm 包安装命令是npm install -g petdex-cli。装完之后第一次运行petdex init它会引导你做初始化配置选择你要监听的 Agent 类型Claude Code 还是 Codex、选择宠物形象这里选 Clawd、设置宠物在屏幕上的位置和大小。初始化过程中有个选项值得注意监听模式。Petdex 支持两种模式一种是进程附着直接挂到 Agent 进程上读它的标准输出另一种是日志轮询定期去读 Agent 写的日志文件。前者实时性更好后者兼容性更强。我实测下来如果你用的是标准安装的 Claude Code进程附着模式完全够用延迟基本感觉不到。如果 Agent 是通过某些包装脚本启动的进程附着可能抓不到那就切日志轮询。3.3 Clawd 宠物资源的加载与自定义Clawd 这个形象是 Petdex 官方资源包里带的初始化时选它就会自动下载。资源包本质是一堆 PNG 帧序列加一个 JSON 描述文件描述文件里定义了每个动作对应哪些帧、帧率多少、是否循环。如果你想自定义比如把 Clawd 换成自己画的形象需要准备一套动作帧然后照着官方 JSON 的格式写描述文件。这里的关键是动作命名要和状态映射表对上比如 idle、thinking、working、done、error 这几个动作名不能乱改否则 Petdex 找不到对应资源就会显示空白。注意自定义宠物时帧序列的尺寸要统一透明背景要用真正的 alpha 通道别用白色填充假装透明否则宠物边缘会有一圈白边很难看。3.4 状态触发的阈值调优Petdex 默认的状态切换阈值比较保守比如思考中状态要等 2 秒才触发长任务要等 30 秒。实际用下来这个默认值对快速任务偏迟钝——你发个简单问题Agent 一秒就答完了宠物还没来得及从待机切到思考就结束了看起来像没反应。我的调优建议是把思考中的触发阈值降到 500 毫秒左右这样只要 Agent 开始推理宠物立刻有反应反馈感强很多。长任务阈值可以保持 30 秒或者调到 20 秒看你平时任务的耗时分布。这些阈值都在 Petdex 的配置文件里改完重启 Petdex 生效。4. 实操过程一步步把桌宠跑起来4.1 完整安装流程与验证我把整个流程按顺序列一遍你照着做就行。第一步确认 Node 环境。终端执行node -v输出应该是 v18.x 或更高。如果低于这个版本先去升级。第二步安装 Claude Code。执行npm install -g anthropic-ai/claude-code装完执行claude --version验证。如果这一步报错多半是网络或者权限问题检查 npm 源和终端权限。第三步安装 Petdex CLI。执行npm install -g petdex-cli装完执行petdex --version验证。第四步初始化配置。执行petdex init按提示选择 Agent 类型为 Claude Code宠物选 Clawd位置建议先放屏幕右下角大小选中等。第五步启动验证。先在一个终端启动 Claude Code 并随便问个问题再在另一个终端执行petdex start。如果一切正常你应该能看到 Clawd 出现在屏幕角落并且随着 Claude Code 的工作状态变化动作。4.2 配置文件详解与关键参数Petdex 的配置文件默认在用户目录下的.petdex/config.json。我挑几个关键字段说明一下。{ agent: { type: claude-code, listenMode: attach, pollInterval: 200 }, pet: { name: clawd, position: bottom-right, scale: 1.0, alwaysOnTop: true }, stateMapping: { thinkingThresholdMs: 500, longTaskThresholdMs: 30000, errorPatterns: [Error:, Failed:, Exception] } }listenMode选 attach 是进程附着选 poll 是日志轮询。pollInterval只在 poll 模式下生效单位毫秒200 是比较平衡的值再低会吃 CPU。alwaysOnTop控制宠物是否置顶建议开否则切窗口就看不见了。errorPatterns是错误识别的关键词列表Agent 输出里匹配到这些词就触发 error 状态你可以根据实际遇到的报错信息往里加。4.3 多 Agent 同时运行的场景处理如果你同时用 Claude Code 和 Codex想让桌宠同时反映两个 Agent 的状态Petdex 支持多实例。做法是复制一份配置文件改一下agent.type和宠物位置然后用petdex start --config 配置文件名启动第二个实例。不过这里有个现实问题两个宠物在屏幕上容易打架尤其是都放右下角的时候。我的做法是一个放右下角一个放左下角或者干脆只给主力 Agent 配桌宠另一个不配。毕竟桌宠是辅助工具别让它变成新的干扰源。4.4 开机自启与后台运行每次手动敲petdex start太麻烦可以配置开机自启。macOS 下用 launchdLinux 下用 systemdWindows 下用任务计划程序。核心就是把petdex start命令注册成登录时自动执行的任务。后台运行方面Petdex 本身支持--daemon参数加上之后会以守护进程方式跑不占用终端。日志会写到.petdex/logs/目录下出问题的时候去那里翻。提示如果你用的是笔记本注意 Petdex 的 CPU 占用。正常情况下它应该低于 1%如果发现占用偏高多半是 pollInterval 设太小或者宠物动画帧率太高调一下就好。5. 常见问题与排查技巧实录5.1 桌宠不显示或显示异常最常见的问题是启动 Petdex 后宠物不出现。排查顺序是这样的先确认 Agent 是否在运行Agent 没跑 Petdex 就没状态可监听有些版本会直接不显示宠物再确认 Petdex 进程是否真的起来了用petdex status看然后检查配置文件里的宠物资源路径是否正确资源包没下载完整也会导致不显示。如果宠物显示了但是动作不对比如一直卡在待机状态不切换多半是状态监听没生效。这时候把listenMode从 attach 改成 poll 试试或者反过来。还不行就去看 Petdex 的日志里面会打印它捕获到的 Agent 输出对比一下就知道是没捕获到还是捕获到了但没匹配上。5.2 状态切换延迟或不准确状态切换慢通常是阈值设太大了。前面说过把thinkingThresholdMs降到 500 左右。如果切换过于频繁宠物动作闪来闪去那是阈值太小了适当调大。状态识别错误比如 Agent 明明在正常工作宠物却显示 error那是errorPatterns匹配太宽泛了。比如你代码里本来就有 Error 这个词Agent 输出里带出来就被误判了。解决办法是把匹配模式写得更具体比如用 Error: 带冒号空格或者干脆匹配完整的报错前缀。5.3 性能占用与资源消耗Petdex 本身很轻量但如果你的宠物资源包特别大比如高分辨率多帧动画内存占用会上去。我建议宠物尺寸别超过 200x200 像素帧率控制在 12fps 左右这个规格下视觉效果够用资源消耗也低。另一个吃资源的地方是日志轮询模式下的文件读取。如果 Agent 日志文件很大每次轮询都全量读会很浪费。Petdex 较新版本支持增量读取确认你的版本是不是最新的不是就升级。5.4 常见问题速查表现象可能原因解决方法宠物完全不显示Agent 未运行 / Petdex 未启动先启动 Agent再petdex start宠物显示但不动状态监听未生效切换 listenMode检查日志状态切换迟钝阈值设置过大调小 thinkingThresholdMs误报 error 状态errorPatterns 太宽泛改用更具体的匹配串CPU 占用偏高轮询过频 / 动画帧率过高调大 pollInterval降低帧率宠物边缘有白边透明通道处理不当重新导出带 alpha 的 PNG多实例互相干扰位置重叠错开位置或只保留一个5.5 几个我踩过的坑第一个坑是终端编码问题。Windows 下如果终端编码不是 UTF-8Petdex 读取 Agent 输出时可能乱码导致状态匹配失败。解决办法是把终端编码切成 UTF-8或者用 Windows Terminal 代替老式 cmd。第二个坑是宠物置顶和全屏应用的冲突。有些全屏游戏或者演示软件会把置顶窗口盖住或者反过来宠物盖住了不该盖的内容。Petdex 有个智能隐藏选项检测到全屏应用时自动隐藏宠物建议开启。第三个坑是Agent 版本升级后状态失配。Claude Code 更新后如果改了输出格式Petdex 的状态匹配可能失效。这时候别慌去看 Petdex 的 GitHub issue 区通常很快就有人反馈并修复等新版本或者手动改一下匹配规则就行。6. 进阶玩法让桌宠真正融入你的工作流6.1 用桌宠做任务提醒桌宠的任务完成状态其实是个很好的提醒信号。你可以把 Petdex 配置成任务完成时宠物做一个明显的动作比如跳一下或者举手这样你切去做别的事情时余光扫到宠物动了就知道 Agent 干完活了可以回来验收。更进一步可以配合系统的通知机制让 Petdex 在任务完成时同时弹一个系统通知。这样即使宠物被其他窗口挡住你也能收到提醒。具体做法是在 Petdex 的配置里加一个 hook任务完成时调用系统的通知命令。6.2 自定义状态映射适配你的习惯默认的状态映射是通用的但每个人的工作习惯不一样。比如你经常让 Agent 跑长时间的重构任务那长任务状态的阈值可以调大避免宠物频繁在工作中和长任务之间切换。反过来如果你主要用 Agent 做快速问答那所有阈值都该调小让反馈更灵敏。还有一种玩法是给不同项目配不同宠物。比如前端项目用一只后端项目用另一只这样你一眼就知道当前桌宠对应的是哪个项目的 Agent。Petdex 支持通过配置文件切换宠物配合项目目录的启动脚本就能实现自动切换。6.3 桌宠与终端工作流的整合如果你用 tmux 或者类似的终端复用工具可以把 Petdex 的启动和 Agent 的启动绑在一起。比如写个脚本先开一个 tmux 窗口跑 Claude Code再开一个窗口跑 Petdex一条命令搞定。这样每次开始工作的时候不用分别启动两个东西。对于 VS Code 用户可以在 tasks.json 里配置一个任务一键启动 Agent 和 Petdex。虽然 VS Code 里已经有 Claude Code 的插件但桌宠是独立于编辑器的两者不冲突可以同时用。6.4 资源包的二次创作Clawd 的默认形象用久了会腻自己动手改一改其实不难。最省事的方式是拿官方资源包做底改改颜色或者加点配饰。稍微进阶一点可以用 Aseprite 或者 Piskel 这类像素画工具重新画一套动作帧只要尺寸和命名规范对上直接替换就行。我自己的做法是给 Clawd 加了个加班模式——当 Agent 连续工作超过一定时间宠物会戴上一副眼镜看起来更疲惫。这个是通过在配置里加一个基于时间的状态触发的实现起来不复杂但仪式感拉满。提示二次创作的时候注意资源包的授权协议官方资源包一般是允许个人修改使用的但商用或者再分发要看具体条款别踩线。6.5 桌宠状态的日志记录与复盘Petdex 可以把 Agent 的状态变化记录成日志这个功能很多人不知道。开启之后你每天的工作结束后可以看看日志了解自己让 Agent 干了多少活、哪些任务耗时最长、哪些任务频繁报错。这其实是一种轻量的工作效率复盘。比如你发现某类任务总是触发 error 状态那可能是你的 prompt 写得有问题或者 Agent 对这类任务本身就不擅长下次可以换个方式描述需求。这种基于数据的复盘比凭感觉调整要靠谱得多。7. 一些实际使用中的体会折腾这套东西大概花了我一个周末中间踩的坑不算少但跑通之后确实回不去了。最大的感受是AI Coding Agent 的黑盒感被削弱了很多。以前让 Claude Code 跑个任务我要么一直盯着终端要么过一会儿回来看看好了没中间这段时间心里没底。现在有了桌宠余光扫一眼就知道状态该干嘛干嘛效率反而高了。另一个体会是桌宠这东西的价值不在功能在情绪。和 AI 结对编程时间长了会有一种对着空气说话的孤独感尤其是深夜一个人写代码的时候。有个会动的小东西在旁边哪怕它只是机械地反映 Agent 状态心理上也会舒服一些。这可能就是为什么这么多人愿意花时间折腾桌宠的原因。最后分享一个小技巧如果你觉得默认的宠物动作太频繁、太闹腾可以在配置里加一个静默时段比如你专注写代码的时候宠物只做最小幅度的动作不打扰你。等 Agent 任务完成或者报错的时候再恢复正常动作幅度。这个平衡点需要自己调调好了体验会好很多。