Clawd on Desk:让 AI 编程代理的状态在桌面上可见
项目速览:一个像素桌面宠物,可以监视 Claude Code、Codex、Cursor 和其他 AI 编码代理,因此您无需这样做。
秒懂
- 它是什么?
- Clawd on Desk 是一个像素桌面宠物,通过读取 Claude Code、Codex CLI、Cursor Agent 等编程代理的钩子事件,实时展示代理的工作状态。本文基于仓库文档与发布记录,分析其工作机制、安装方式、局限性与适用场景。
- 适合谁用?
- Clawd on Desk 适合那些经常启动长时间 AI 编程任务、希望离开屏幕后能通过一眼扫过桌面宠物来判断代理是否仍在工作的开发者。它尤其适合 Claude Code 和 Codex CLI 用户,因为这两个代理的集成最完整,支持权限气泡交互。
- 能商用吗?
- 可以,但条件严格。AGPL-3.0 是网络 copyleft 许可证:如果别人通过网络使用你修改过的版本(例如作为托管服务),你必须以同一许可证向他们提供源代码。
- 还在维护吗?
- 在维护。仓库最近一次提交在 1 天前。
- 用什么语言写的?
- 主要是 JavaScript(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决的是注意力问题,不是效率问题
Clawd on Desk 解决的问题很具体:当 AI 编程代理在后台运行长任务时,开发者很难判断它是在思考、在调用工具、还是在等待权限确认。反复切换窗口查看终端输出会打断心流。这个项目用一个像素宠物(默认是一只螃蟹)常驻桌面,通过动画状态反映代理的实时行为。文档列出的动画包括思考、打字、为子代理打杂、审查权限、庆祝任务完成、以及离开时睡觉。目标用户是那些同时使用多个 AI 编程代理、并且希望减少无谓上下文切换的开发者。它不是性能监控工具,不报告 token 消耗或耗时,它解决的是感知问题。
状态来源:命令钩子与 HTTP 权限钩子
Clawd 的机制依赖各代理的钩子系统。对于 Claude Code,它使用命令钩子和 HTTP 权限钩子。命令钩子会在代理生命周期事件(如任务开始、工具调用)时触发,Clawd 通过解析这些事件来更新宠物动画。HTTP 权限钩子则允许 Clawd 弹出权限气泡,让用户直接在桌面宠物上批准或拒绝代理的请求。对于 Codex CLI,文档提到使用官方钩子,并有一个 JSONL 回退方案,读取 `~/.codex/sessions/` 下的会话文件。这意味着 Clawd 不是通过屏幕抓取或日志轮询,而是通过代理主动推送事件。这种设计的优点是低延迟和准确,缺点是每个代理的钩子机制不同,集成工作量巨大。
多代理支持:完整集成与状态有限之分
README 列出了二十多个支持的代理,但集成深度并不一致。Claude Code、Codex CLI、Qwen Code、ZCode 等支持权限气泡,即 Clawd 可以参与权限决策。而 Antigravity CLI (agy) 明确标注为 state-only,Clawd 永远不会为 agy 弹出权限气泡,所有 Allow/Deny 决策都留在 agy 自己的终端菜单里。WorkBuddy 也是状态加通知,权限在原生沙箱中处理。opencode 和 MiMo Code 通过插件集成,事件流零延迟,但子会话(task 工具生成的)是 headless 的,不参与可见的多会话动画。这种差异意味着用户不能假设所有代理都有相同的体验。文档对每个代理的集成方式都给出了具体路径,例如 Kiro CLI 会注入钩子到 `~/.kiro/agents/` 并自动创建 `clawd` 代理。
安装与配置:从 release 包到源码构建
项目提供 Windows、macOS 和 Ubuntu/Linux 的安装包,Windows 有 x64 和 ARM64 两种。源码构建需要 Node.js。安装代理集成的方式有两种:通过应用内的 Settings → Agents 界面,或者运行 npm 脚本。例如 Gemini CLI 可以运行 `npm run install:gemini-hooks`,Cursor 用 `npm run install:cursor-hooks`,Qwen 用 `npm run install:qwen-hooks`。每个代理的配置文件路径都写在 README 里,比如 Gemini 的 `~/.gemini/settings.json`,Cursor 的 `~/.cursor/hooks.json`。对于自定义 HTTP 代理,文档说明用户可以在 Settings 中注册本地可执行文件,然后向 Clawd 的动态 `/state` 端点 POST 生命周期事件。注意,注册不会自动安装钩子,也不会让任意应用自动上报,v1 版本仅支持状态。
一个明显的局限:权限控制的边界
Clawd 的权限气泡功能只对部分代理生效。对于 state-only 的代理(如 agy、Pi、OpenClaw),Clawd 只能显示状态,不能拦截或批准权限请求。这意味着如果你主要使用这些代理,Clawd 就退化为一个花哨的通知灯,而不是一个交互式控制台。另一个限制是钩子覆盖问题。ZCode 的集成文档特别提到,Clawd 会保留显式的 `enabled:false` 设置,并且不会覆盖外部的 `PermissionRequest` 钩子。这说明钩子冲突是真实存在的风险。如果用户已经配置了自定义钩子,安装 Clawd 的集成脚本可能会覆盖或合并它们。文档没有提供回滚机制,用户需要手动备份配置文件。
与替代方案的差异:像素宠物 vs. 终端 UI
一个自然的替代方案是使用代理自带的终端界面,比如 Claude Code 的交互式 TUI 或 Codex 的 CLI 输出。这些工具本身就显示状态和权限提示,不需要额外安装桌面应用。Clawd 的差异在于它把状态从终端里抽离出来,变成一个常驻桌面的视觉对象。另一个替代方案是通用的桌面通知工具,例如通过脚本监听代理日志并发送系统通知。这类工具更轻量,但没有动画反馈,也无法处理权限气泡。Clawd 的定位介于两者之间:它既不是完整的终端替代品,也不是简单的日志通知器。它试图用游戏化的方式降低监控成本,但代价是引入一个常驻进程和多个配置文件依赖。
维护与许可:AGPL-3.0 的约束
项目采用 AGPL-3.0 许可,这意味着如果你修改代码并部署为网络服务,需要开源你的修改版本。对于桌面应用,AGPL 主要影响分发和二次开发。如果你只是个人使用,没有额外义务。仓库最近一次推送是 2026 年 8 月 23 日,版本 v0.16.0,说明项目仍在活跃开发。发布记录中有一个 `diag-813` 诊断构建,表明作者在通过 issue 驱动的调试流程。维护成本方面,由于每个代理的钩子机制都可能随上游版本变化,用户需要定期更新 Clawd 以保持集成有效。文档没有提供自动更新机制,因此升级需要手动下载新 release。
编辑结论
Clawd on Desk 适合那些经常启动长时间 AI 编程任务、希望离开屏幕后能通过一眼扫过桌面宠物来判断代理是否仍在工作的开发者。它尤其适合 Claude Code 和 Codex CLI 用户,因为这两个代理的集成最完整,支持权限气泡交互。不适合需要精确控制每个代理内部状态、或者不希望桌面应用读取配置文件的人。对于 Cursor、Copilot 等集成,文档明确标注为可选或状态有限,使用前应先确认自己的代理版本是否支持对应钩子。首次部署时,建议从官方 release 页面下载对应平台的安装包,或者用 Node.js 从源码构建,然后逐个运行各代理的安装脚本,例如 `npm run install:gemini-hooks`。在正式使用前,先检查每个钩子是否被正确写入配置文件,例如 `~/.gemini/settings.json` 或 `~/.cursor/hooks.json`,并确认 Clawd 不会覆盖你已经存在的自定义钩子。
社区笔记