macOS 原生菜单栏应用,并行监控多个 AI 编程助手会话。
在日常开发中,你可能同时运行多个 Claude Code、Codex 或 Gemini CLI 会话处理不同项目。CCDock 常驻菜单栏,让你一眼看清所有会话状态,点击即跳转到对应终端窗口。
- 🔵 实时状态监控 — 工作中 / 等待输入 / 已完成,带颜色指示条和动态 Badge
- 🤖 多 Agent 支持 — Claude Code、OpenAI Codex、Google Gemini CLI
- 🖱️ 一键跳转终端 — 点击会话直达对应终端窗口(支持 Ghostty / iTerm2 / Terminal.app / tmux)
- 📌 悬浮面板 — 可固定到桌面任意位置,毛玻璃效果
- 🔔 原生通知 — 会话完成或需要输入时弹出通知
- 🎨 自定义布局 — 拖拽编辑器,自由排列显示模块
- 📊 丰富信息 — 时长、Token 用量、轮数、模型、Git 分支、最近 Prompt
brew install --cask YuHoYe/tap/ccdock从 Releases 下载最新 .zip,解压后将 CCDock.app 拖入 /Applications。
应用已通过 Apple Developer ID 签名并完成公证(Notarization),可直接运行。
git clone https://github.com/YuHoYe/CCDock.git
cd CCDock
./build-app.sh
open CCDock.app- macOS 14.0 (Sonoma) or later
- 以下 AI 编程助手至少安装一个:
CCDock 通过监听各 Agent 在本地创建的会话文件来发现和追踪会话状态,不需要任何额外配置。
| Agent | 会话数据 | 状态检测方式 |
|---|---|---|
| Claude Code | ~/.claude/sessions/ + ~/.claude/projects/ |
JSONL 日志解析 |
| Codex | ~/.codex/sessions/ |
JSONL 事件流解析 |
| Gemini CLI | ~/.gemini/tmp/ |
logs.json 修改时间检测 |
用户提交 Prompt
完成 ─────────────────────────► 工作中
▲ │
│ 响应完成 │ 响应完成
└────────────────────────────────┘
│
│ 通知 "waiting for input"
▼
等待输入
│
│ 用户提交 Prompt
└──────► 工作中
CCDock/
├── Models/ # 数据模型(Session, AppSettings)
├── Store/ # @Observable 状态管理
├── Services/ # 会话发现 + 状态轮询 + 终端跳转
└── Views/ # SwiftUI 视图 + NSPanel
技术栈:SwiftUI + AppKit 混合架构,使用 Swift Package Manager 构建。
NSPanel+.floating实现 Always-on-Top@Observable(Swift 5.9+) 驱动 UI 更新DispatchSource监听文件系统变化- AppleScript + Accessibility API 实现终端窗口跳转
欢迎贡献!请查看 CONTRIBUTING.md 了解详情。
无论是 Bug 报告、功能建议还是代码贡献,我们都非常欢迎:
MIT © YuHo
