用 Avalonia 和 Claude Code Hook 做了一个桌宠 Claw Jump
用 Avalonia 和 Claude Code Hook 做了一个桌宠 Claw Jump
Claude Code 在后台跑任务、等待授权、输出结束时,如果终端不在前台,很容易错过关键状态。
为了解决这个小但真实的问题,我做了一个 Windows 桌面工具:Claw Jump。它会在桌面上显示一只可拖拽、可贴边隐藏的小爪子,并通过 Claude Code Hook 感知任务状态,在需要你关注时主动提醒。
如果你还没有安装 Claude Code,可以先看这篇教程:Claude Code 安装教程。里面把 Windows 环境准备、安装步骤和常见问题整理得比较清楚,适合第一次配置 Claude Code 的同学直接照着操作。
后面如果你想把 Claude、GPT、Gemini 等模型统一接进自己的脚本、工具或内部系统,也可以顺手了解一下 axisapi.cn 聚合 AI 平台。它提供统一的模型调用入口,适合需要多模型切换、统一管理接口和控制调用成本的开发场景。
为什么要做 Claw Jump
使用 Claude Code 这类 AI 编程工具时,我经常遇到这些情况:
- 提交一个需求后,Claude Code 在终端里跑了很久;
- 任务已经结束,但我切到浏览器、IDE 或文档里,没有注意到;
- 某些操作需要授权确认,却因为终端窗口不在前台被忽略;
- 想确认 Hook 有没有触发、事件有没有送达,但排查链路不够直观。
Claw Jump 的目标很简单:把 Claude Code 的状态变化从终端里带到桌面上。
它不是一个复杂的开发框架,而是一个专注于提醒体验的小工具。它让 AI 编程流程更可见,也减少错过关键节点的概率。
项目简介
Claw Jump 是一个面向 Windows 的 Claude Code 桌面提醒工具。
当前项目主要使用:
- .NET 10
- Avalonia 12
- Claude Code Hooks
- 本地回环 HTTP 服务
- Windows 系统托盘和桌面悬浮窗
程序启动后,会在桌面上显示一个小爪子窗口。窗口默认置顶,支持拖拽移动,也可以靠近屏幕左侧、右侧或顶部边缘后自动贴边隐藏。
当 Claude Code 触发 Hook 事件时,小爪子会根据事件类型切换状态,比如工作中、任务完成、需要审批、异常离线等。
先看几张项目里的小爪子素材。整体风格偏轻量、可爱,适合长期放在桌面角落里:




核心功能
桌面小爪子提醒窗口
Claw Jump 的核心是一个轻量级桌面提醒窗口。它支持:
- 默认置顶显示;
- 拖拽移动位置;
- 靠边自动隐藏;
- 根据事件切换不同状态图片。
目前支持的状态如下:
| 状态 | 含义 |
|---|---|
| Idle | 空闲状态 |
| Working | Claude Code 正在工作 |
| Ready | 任务完成或有提醒 |
| ApprovalRequired | 需要用户审批或授权 |
| ErrorOffline | 异常、离线或服务不可用 |
这样即使 Claude Code 不在当前窗口,也能通过桌面上的小爪子快速判断任务状态。
除了完整显示,Claw Jump 也支持贴边隐藏。贴边后只露出一部分小爪子,既有提醒存在感,又不容易遮挡桌面内容:



系统托盘菜单
长期驻留的桌面工具不能只靠一个悬浮窗,所以 Claw Jump 也集成了系统托盘菜单。
目前托盘菜单支持这些操作:
- 显示或隐藏小爪子;
- 测试提醒效果;
- 标记已查看;
- 检查 Hook 状态;
- 查看当前版本;
- 检查更新;
- 打开设置;
- 打开配置目录;
- 打开 Claude 配置目录;
- 生成 Claude Hook 脚本;
- 一键写入 Claude Hook 配置;
- 查看事件日志;
- 退出程序。
这些入口让它更接近一个完整的桌面助手,而不是只能展示状态的装饰窗口。
自动写入 Claude Code Hook 配置
Claw Jump 会自动生成 Hook 脚本,并可以把 Hook 配置写入 Claude Code 的 settings.json。
默认支持三个 Claude Code 事件:
StopNotificationUserPromptSubmit
首次写入配置时,如果本机已经存在 Claude Code 的 settings.json,程序会先创建备份文件,降低误改配置的风险。
本地 HTTP 服务接收事件
Claw Jump 内部会启动一个本地回环 HTTP 服务,默认监听:
127.0.0.1:47653
Claude Code Hook 触发后,生成的 PowerShell 脚本会向本地服务发送事件 JSON。
整体流程如下:
Claude Code Hook
↓
PowerShell Hook 脚本
↓
POST http://127.0.0.1:47653/event
↓
Claw Jump 本地服务
↓
更新桌面小爪子状态
这个设计比较朴素,但很适合这类本地提醒工具:
- 不依赖外部服务器;
- 事件只在本机回环地址传递;
- Hook 脚本只需要发送一次 HTTP 请求;
- 排查时可以直接看本地服务和日志。
后续如果想接入其他本地事件源,也可以沿用这条链路。
Hook 健康检查和日志窗口
Hook 链路一旦出问题,最终表现通常只有一个:小爪子没反应。
但问题可能出在不同位置:Claude Code 没触发 Hook、脚本没生成、配置没写入、本地服务没启动,或者事件没有成功送达。
为了方便排查,Claw Jump 提供了 Hook 健康检查能力,会检查:
- 本地服务是否正常;
- Hook 脚本是否已经生成;
- Claude Code
settings.json是否写入了对应配置。
程序也会记录收到的 Hook 事件,并提供事件日志窗口。对于这类“中间层提醒工具”来说,日志很关键。否则提醒没出现时,只能靠猜。
Hook 事件如何映射到提醒状态
Claw Jump 默认的事件行为很直接:
| Hook 事件 | 行为 |
|---|---|
UserPromptSubmit |
显示工作中状态 |
Stop |
显示完成或提醒状态 |
Notification |
显示提醒状态;如果通知内容表示需要审批,则显示审批提示状态 |
也就是说:
当你向 Claude Code 提交新的提示词后,小爪子会进入“工作中”;当 Claude Code 停止输出或发出通知后,小爪子会切换到提醒状态;当 Claude Code 需要授权或审批时,小爪子会切换到更明显的审批提示状态。
这比单纯依赖终端提示更醒目,也更适合多窗口、多任务的开发场景。
配置文件位置
Claw Jump 的应用数据默认保存在:
%APPDATA%\ClawJump
主要文件包括:
config.json
hooks\claw-jump-hook.ps1
claude-settings-snippet.json
logs\claw-jump.log
它们分别用于保存应用配置、生成的 Hook 脚本、Claude 配置片段和事件日志。
从源码运行
如果你想从源码运行项目,可以执行:
dotnet restore ClawJump.slnx
dotnet run --project src/ClawJump.Avalonia/ClawJump.Avalonia.csproj
构建解决方案:
dotnet build ClawJump.slnx
发布 Windows x64 自包含版本:
powershell -ExecutionPolicy Bypass -File ./build-avalonia-release.ps1
构建安装包:
powershell -ExecutionPolicy Bypass -File ./build-avalonia-installer.ps1
构建安装包需要本机安装 Inno Setup 6。
技术实现上的几个取舍
为什么选择 Avalonia
这个项目目前是 Windows 桌面工具,但我还是选择了 Avalonia。
原因主要有几个:
- 它适合做轻量桌面窗口;
- 支持托盘、窗口置顶、资源管理等桌面能力;
- XAML + C# 的组织方式比较清晰,适合快速迭代;
- 如果后续想扩展到更多平台,也有一定空间。
对 Claw Jump 这种小型桌面应用来说,Avalonia 的开发体验比较顺手,不需要引入太重的 UI 架构。
为什么用本地 HTTP 而不是直接调用程序
Claude Code Hook 的本质是执行命令。
如果 Hook 脚本直接和桌面进程通信,会引入更多进程间通信复杂度。相比之下,本地 HTTP 服务更简单:Hook 脚本只需要把 JSON POST 到本机端口即可。
这种方式的优点是清晰、可调试、耦合低。对一个只在本机运行的提醒工具来说,已经够用。
为什么要做 Hook 健康检查
Hook 链路涉及多个环节:
Claude Code 配置 → Hook 脚本 → 本地 HTTP 服务 → UI 状态更新
任何一个环节出问题,最终表现都可能只是“小爪子没反应”。
所以项目里加入了健康检查和日志窗口,让问题能被快速定位,而不是靠猜。
AI 编程工具的体验不只取决于模型
最近很多开发者已经开始把 AI 编程工具放进日常工作流。
真正用起来后会发现,模型能力只是其中一部分。长期体验还取决于很多细节:
- 工具链是否顺手;
- 状态反馈是否及时;
- 多模型切换是否方便;
- 成本和稳定性是否可控;
- 能不能把 AI 能力接进自己的自动化流程。
这也是我做 Claw Jump 时的一个感受:AI 工具不应该只停留在聊天窗口或终端里,它需要和开发环境、桌面环境、自动化脚本连接起来。
这里也重点推荐一下和工具链接入有关的服务:axisapi.cn 聚合 AI 平台。当使用场景从“偶尔问几句”变成“把 AI 接进开发流程”之后,单独维护不同模型的接口、额度、密钥和调用方式会越来越麻烦。axisapi.cn 的价值就在这里:它提供统一的 AI 模型调用入口,把 Claude、GPT、Gemini 等模型能力放到同一个接入层里,开发者可以更方便地做多模型切换、接口管理和成本控制。
如果你正在做脚本自动化、内部工具、AI 助手、代码生成工具,或者想把 Claude Code 这类开发工具和自己的系统串起来,聚合平台会比一个个单独接官方接口省心很多。对个人开发者来说,它降低了试用和切换模型的门槛;对团队来说,它更适合作为统一的 AI 能力网关,减少后续维护成本。
如果说 Claw Jump 解决的是 Claude Code 使用过程中的“桌面状态感知”,那么 axisapi.cn 更偏向解决“模型能力接入与管理”。两者关注点不同,但都属于 AI 开发工作流里容易被忽略、却很影响长期体验的基础设施。一个让你及时知道 Claude Code 在做什么,一个让你更稳定、更灵活地调用不同模型。
适合哪些人使用
Claw Jump 比较适合这些场景:
- 长时间使用 Claude Code 辅助开发;
- 经常同时打开 IDE、浏览器、终端和文档;
- 希望 Claude Code 完成任务后有桌面级提醒;
- 希望更直观地感知 Hook 是否正常触发;
- 喜欢轻量、有一点趣味性的桌面效率工具。
它不是为了替代 Claude Code,而是补齐 Claude Code 在桌面提醒体验上的一小块空白。
总结
Claw Jump 是一个很小的工具,但解决的是一个高频问题:不要错过 Claude Code 的关键状态变化。
它主要做了几件事:
- 用 Avalonia 实现桌面小爪子窗口;
- 用 Claude Code Hook 感知 AI 编程状态;
- 用本地 HTTP 服务连接 Hook 和桌面 UI;
- 用托盘菜单、健康检查和日志窗口完善日常使用体验。
当 AI 编程越来越常态化之后,这类围绕工作流的小工具会变得更有价值。模型负责生成和推理,桌面工具负责提醒和交互,统一接入平台负责模型能力管理。把这些部分串起来,才更接近真实可用的 AI 开发体验。
更多推荐



所有评论(0)