搞了个整活项目:我把 GitHub Copilot 塞进了一个在屏幕上乱跑的桌面宠物里

大家好。

不知道你们平时写代码的时候有没有这种感觉:现在的 AI 编程助手确实好用,但用起来总觉得太费劲了。 要么是得在 IDE 侧边栏和代码区来回切换视线,要么是遇到不属于特定项目的问题时,还得专门切到浏览器去问 ChatGPT 或者 Claude。

作为一个极简主义(懒)开发者,我总在想:要是这个 AI 能像当年电脑桌面的"QQ 宠物"一样,直接实体化在我屏幕上溜达,随叫随到,那该多酷?

带着这个脑洞,趁着假期,我撸了一个开源的桌面宠物应用 ------ CodeWalkers


🐶 这是个啥玩意?

简单来说,这是一个基于 Tauri V2 构建的跨平台透明桌面应用。

它会在你的屏幕上生成几个像素风的小人。这些小人不仅会漫无目的地在你的代码窗口、浏览器上方散步,更重要的是,它们自带"AI 大脑"

当你遇到问题时,直接点击小人,它就会原地弹出一个终端面板。 目前我已经帮这些小人接入了真实的后端大脑:GitHub Copilot CLIGemini CLI。你可以直接在弹出的面板里问它怎么写正则、怎么配 Nginx,甚至让它解释某段代码的意思。

不仅如此,当它在思考(调用大模型 API)时,头上还会冒出和游戏里一样的"思考气泡",把原本终端里枯燥的 Loading spinner 变成了可视化的宠物互动。


🛠️ 怎么做到的?(稍微聊点技术)

为了实现这个看起来有点"沙雕"但又很酷的功能,我用了 Tauri v2 + React + TypeScript 的技术栈。

别看它就是个在屏幕上走来走去的小人,开发过程中其实踩了好几个巨坑,如果你也对 Tauri 开发桌面端感兴趣,可以避避坑:

1. 幽灵般的鼠标点击:透明窗口的穿透问题

想做桌面宠物,首先要把应用窗口设为全局透明(transparent: true),并且去掉系统的阴影和边框。 但这带来了一个问题:你怎么让鼠标能点到小人,但又不会挡住小人背后的代码编辑器? Tauri 虽然提供了 set_ignore_cursor_events API 来控制鼠标穿透,但在 macOS 上,如果你开了透明窗口,点击完全透明的像素区域(alpha=0)时,系统会自动把点击事件透传给下层的桌面应用。 我的解法 :我用 React 的 requestAnimationFrame 配合像素级 hit-test,同时给透明的包裹层加上了极其微弱的背景色(rgba(255,255,255,0.01)),骗过 macOS 系统的判定,实现了完美的"指哪打哪"。

2. 把真实的 CLI 装进小人脑子里:PTY 与环境变量

我想让小人真正"干活",而不是只做一个聊天框,所以我在 Rust 后端接管了 std::process::Command。 为了让 Copilot 这种要求强交互的 CLI 工具跑起来,需要处理复杂的标准输出(stdout)和标准错误(stderr)分离。我通过流式解析,把原本 CLI 吐出来的 ANSI 控制码、进度条字符(比如 这种)全部劫持下来,实时转换成了前端小人头顶的对话框气泡。 另外,为了防止环境变量污染,我还做了一套 .codewalkers.env 的动态注入机制,让你能在本地安全地喂给它各种 Token。

3. 高帧率动画不卡顿

很多用 Electron 或者 Tauri 做的悬浮窗,一旦涉及到动画就会吃 CPU。 在这个项目里,我没有把小人的坐标位置(x, y)放进 React 的 State 里(因为那会导致疯狂的重渲染),而是直接通过 ref 操作 DOM 的 transform 属性,配合 RAF(RequestAnimationFrame),硬生生把一个 Web 动画跑出了原生 60 帧的顺滑感。


🎨 换肤与自定义

考虑到大家对纸片人的喜好不同,CodeWalkers 完全支持自定义皮肤。 你只需要把喜欢的 GIF 动图拖进项目的对应目录,配置一下精灵图(Sprite)参数,就能把初音未来、马里奥或者你自己画的像素小人养在桌面上。

目前项目已经跑通了从拖拽移动、点击交互到终端对话的完整闭环。


🚀 开源与共建

目前 CodeWalkers 已经完全开源,代码干干净净,没有乱七八糟的冗余依赖,CI/CD 和测试覆盖率我也已经全配好了。

GitHub 仓库地址github.com/you-want/Co...

如果你:

  • 觉得这个点子挺好玩
  • 想要一个专属的 AI 桌面小助手
  • 想学习 Tauri V2 的实战开发(特别是透明窗口、多进程通信和 PTY 交互)

欢迎去点个 Star 支持一下!🌟

也极其欢迎大家提 PR ------ 无论是增加新的小人皮肤,还是接入更多大模型的 CLI(比如 Claude、Ollama 甚至本地跑的 DeepSeek),我都举双手赞成。

告别枯燥的终端框,让我们的屏幕上多一点赛博生机吧!

相关推荐
“初生”19 小时前
Codex 接入视觉功能教程(2026)|vision-skill 外挂通义千问 qwen3-vl-flash 图文
ai编程
鱼樱前端20 小时前
用 AI 做内容变收入
前端·人工智能·ai编程
fthux21 小时前
装闭 RenoPit 源码解析(04):装修图纸和合同文件上传处理流程
人工智能·ai·开源·github·open source·renopit
程序员黑豆1 天前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
怕浪猫1 天前
用 TRAE Work 来写这篇关于 TRAE Work 的征文
aigc·agent·ai编程
RETURN100ERRORS1 天前
Agent - 记忆
ai编程
带娃的IT创业者1 天前
Kimi-K3 开源背后:2.8 万亿参数的“暴力美学”与智能体的新拐点
人工智能·开源·大模型·智能体·开源模型·kimi-k3·moonshot ai
圆奋奋1 天前
FreeRTOS学习(三)- 任务调度模块
学习·开源·freertos
ServBay1 天前
2026 年值得关注的 9 款 AI 工具,每月至少能省下40小时
aigc·ai编程
Magic-ZYJ1 天前
不登录、不联网也能用:我是如何设计一款“本地优先”iOS App 的
ios·app·iphone·研发·独立开发者·心情日记