【Claude Code】我给 Claude Code 做了个桌面启动器 —— 内置道家呼吸引导的悬浮路径工具

我给 Claude Code 做了个桌面启动器 | 内置道家呼吸引导的悬浮路径工具

作者:Sebastilan & Claude(AI 协作)


问题背景

用 Claude Code 的人应该都有这个体验:

想对一个项目用 claude → 打开资源管理器 → 翻到项目文件夹 → 复制路径 → 打开终端 → cd 过去 → 敲 claude

项目一多,这套流程每天重复几十次。每次都不难,但每次都打断你的思路。

我受不了了,就写了个小工具解决这个问题。

思路

问题的本质是:高频操作的路径太长。从「想用 claude」到「claude 跑起来」中间隔了 5 个手动步骤。

解决思路很简单------把常用项目路径缓存在一个随时可达的地方,点一下就完成全部步骤。具体来说,做一个常驻桌面的悬浮小控件,存着你的项目列表,点击即启动。

实现

QuickPaths:两次点击,启动 claude

QuickPaths 是一个常驻桌面的悬浮小圆点。把你常用的项目路径存进去,需要的时候:

  1. 点一下圆点,展开路径列表
  2. 点一下项目名

终端自动打开,目录自动切好,claude 自动启动。完事。

关掉 Claude 模式就是普通的路径复制工具------点一下,路径就在剪贴板里了。

呼吸引导:不只是个启动器

做这个工具的时候,我想到一个问题:开发者桌面上常驻的东西,要么是任务栏图标,要么是系统托盘里的小图标。都是冷冰冰的、死的。

所以我给这个小圆点加了一条呼吸波形。

这条波形的节奏来自道家吐纳术:

  • 吸 4 秒闭 4 秒呼 8 秒静 2 秒
  • 18 秒一个完整周期

《庄子·刻意》云:「吹呴呼吸,吐故纳新」。核心要诀是呼长于吸------延长的呼气会激活迷走神经,把身体从交感兴奋(战或逃)切换到副交感主导(休息与恢复)。这不是玄学,现代神经科学对此有明确的机制解释。

写代码累了、debug 焦躁了、等 CI 跑的时候,看一眼桌面上这个安静呼吸的小圆点,跟着它的节奏深呼吸几轮。不需要打开冥想 App,不需要离开工位,几个呼吸周期就能把心率降下来。

一个开发工具,顺便照顾一下你的精神状态。

技术选型与关键设计

v1.0 用 PowerShell 5.1 + WPF 实现,但 PowerShell 做长驻桌面程序天生脆弱------GC 会回收 WPF 对象导致崩溃、渲染管线 DUCE+Channel.SyncFlush 会和 Dispatcher.Invoke 死锁、中文编码必须 UTF-8 BOM、JSON 序列化有各种怪癖。为了兜底这些问题,不得不加 VBS 崩溃恢复包裹、wrapper.lock 防双重进程、UTF-8 BOM 强制编码等一堆补丁,代码越来越脆弱。

v2.0 用 C# WPF 重写,消除了 PowerShell 层的所有怪癖。但 WPF 框架本身太重------一个悬浮小圆点就占 307MB 内存。

v3.0 进一步用 C# WinForms + GDI+ 自绘 替换 WPF,内存从 307MB 降到 23MB (Private Memory),降了 92%。依然用 Windows 自带的 csc.exe 编译,产物是一个 40KB 的 exe,不需要 Visual Studio 或任何 SDK。

几个关键设计点:

设计 实现方式
悬浮窗 FormBorderStyle.None + TopMostRegion 裁剪圆角
呼吸动画 Timer 50ms 刷新,GDI+ DrawLines + PathGradientBrush 径向光晕
多显示器 SystemInformation.VirtualScreen 处理负坐标,1500ms 防抖
数据安全 先写 .tmpFile.Delete + File.Move,防崩溃丢数据
三层保活 注册表自启动 + 崩溃自重启(5 次退避)+ 计划任务每 5 分钟守护
单实例 Named Mutex Global\QuickPaths_Singleton
安装/卸载 --install / --uninstall 参数,内置到 exe

为什么不用 Electron / .NET 6+ / WinUI?

目标是零依赖、极致轻量。Electron 要装 Node(动辄 200MB+),.NET 6+ 要装 SDK,WinUI 要装 Windows App SDK。而 .NET Framework 4.x 和 csc.exe 是 Windows 10/11 自带的,用户电脑上 100% 已经有了。一个 40KB 的 exe 文件,运行只占 23MB 内存,不需要安装任何东西,双击就能跑。

踩过的坑

这个项目经历了 PowerShell v1.0 和 C# v2.0 两个版本,踩的坑也分两类。

v1.0(PowerShell 阶段):

  • PS 5.1 中文乱码.ps1 文件必须 UTF-8 BOM 编码,否则中文全乱
  • ConvertTo-Json 单元素数组 :PS 5.1 会丢掉数组的 [] 包裹,只剩一个元素时变成裸对象
  • Dispatcher.Invoke 死锁 :非 UI 线程回调中用同步 Invoke,渲染管线崩溃时直接死锁。改用 BeginInvoke 解决

v2.0 → v3.0(C# 重写阶段):

  • WPF 内存过重:一个悬浮小圆点 307MB,换 WinForms + GDI+ 自绘后降到 23MB
  • WinForms 不支持半透明 BackColor:需要预混合 alpha 颜色到背景色上
  • SetUnhandledExceptionMode 时序:必须在创建任何 Form 之前调用,否则抛异常且无法捕获
  • 对话框夺焦 :文件选择对话框会触发 Deactivate 事件导致面板收起,用 dialogOpen 标志位保护

总结 / 项目地址

QuickPaths 解决了 Claude Code 用户在多项目间切换的高频痛点,同时用道家吐纳呼吸引导给桌面注入了一点生命感。

三种安装方式,选最顺手的:

方式一:一行命令(推荐)

复制代码
irm https://raw.githubusercontent.com/Sebastilan/QuickPaths/master/setup.ps1 | iex

方式二 :从 GitHub Releases 下载 QuickPathsSetup.exe 双击运行

方式三git clone https://github.com/Sebastilan/QuickPaths.git 后双击 Install.cmd

项目已开源,MIT 协议:github.com/Sebastilan/QuickPaths

系统要求:Windows 10/11(.NET Framework 4.x 自带)。Claude 模式需已安装 Claude Code CLI。无需管理员权限。


一起交流

如果你觉得有帮助,欢迎:

  • 📌 订阅本专栏,跟进后续更新
  • 💬 评论区留言,交流你的想法
  • 点赞收藏,让更多朋友看到

--- Sebastilan & Claude

相关推荐
njsgcs1 天前
solidworks导出展开 c# ExportFlatPatternView方法
c#
格林威1 天前
工业相机图像高速存储(C#版):内存映射文件方法,附Basler相机C#实战代码!
开发语言·人工智能·数码相机·c#·机器视觉·工业相机·堡盟相机
缺点内向1 天前
C#实战:使用Spire.Doc for .NET 获取并替换Word文档中的字体
c#·自动化·word·.net
荔枝吻1 天前
【保姆级喂饭教程】Visual Studio 2026 中创建基于 c# 的 WinForms 入门教程
ide·c#·visual studio
bugcome_com1 天前
【C#进阶】索引器(Indexer)全解析:基础、实战、优化与多场景应用
c#
阿蒙Amon1 天前
C#常用类库-详解Autofac
开发语言·c#
格林威1 天前
工业相机图像高速存储(C#版):内存映射文件方法,附堡盟相机C#实战代码!
开发语言·人工智能·数码相机·计算机视觉·c#·工业相机·堡盟相机
格林威1 天前
工业相机图像高速存储(C#版):先存内存,后批量转存方法,附堡盟 (Baumer) 相机实战代码!
开发语言·人工智能·数码相机·opencv·计算机视觉·c#·halcon
baivfhpwxf20231 天前
WPF Binding 绑定 超详细详解
c#·wpf
时光追逐者1 天前
C#/.NET/.NET Core技术前沿周刊 | 第 68 期(2026年3.01-3.08)
c#·.net·.netcore