747 字
4 分钟
【CaPilot】我做了一个开源 Agent 终端工作台

日常写代码,Claude Code、Codex、OpenCode 经常要同时开着。每个 harness 自己的 CLI、自己的会话、自己的一套习惯。切来切去烦。想把一个 Todo 丢给某个会话,也只能复制粘贴。

现成的 Agent IDE 大多是 Electron,体积大,还常常绑死一家模型或一套协议。我不想再造一个 agent,只想要一张本地工作台:已经装在机器上的 CLI 原样接进来,用真实 PTY 跑,界面只负责编排、对照和持久化。

于是做了 CaPilot,基于 Tauri + Rust。我当时给它写过一句英文:

A light agentic desk for 30+ harnesses

项目在 GitHub:

hachi7574
/
CaPilot-IDE
Waiting for api.github.com...
00K
0K
0K
Waiting...

官网:https://capilot.pages.dev(请用非微信浏览器打开)。

接进来的 harness#

一等公民适配器覆盖 Bash / 系统 shell、Claude Code、Codex、OpenCode、Pi,还有实验性的 DeepSeek dsh。这些可以恢复会话、管权限、换模型、挂 hooks。

其余走 v1:二进制在 PATH 上,CaPilot 就按 spawn + 真实 PTY 接进来。Gemini、Cursor、Copilot、Aider、Goose、Qwen Code 等三十多种都在这个名单里。Agent 还是本机那份 CLI,工作台不重新实现它们。

会话都走本地 PTY,前端用 xterm.js 渲染。输出是真终端,不是假聊天气泡。

把 Todo 拖进会话#

任务先做成 Todo 标签,再拖进某个会话。派工就是一次拖放,不用把需求再打一遍。

几个 harness 同时开着、不同任务分给不同会话的时候,这个最省事。工作台只负责把任务送到对应的 PTY,提示词还是我自己写。

画布#

每个 worktree 有一块画布。终端块、agent 控制台、文件卡片都能拖上去,文档、代码、图片也能并排放。

终端之间可以连成 DAG:边不能自环、不能成环。跑图时会冻结一份计划,按退出码或 TCP / 输出门控往下走。图存在 Rust 侧的 canvas_graph / canvas_run 里。

我没打算做无限画布笔记。要的是一次多步骤本地任务能被看见,也能再跑一遍。

Git、编辑器、会话#

能力做什么
编辑器CodeMirror 6,改代码、看 diff
Git仓库状态、提交、对照都在应用内
会话SQLite 持久化,关掉再开还在
主题自带 9 套皮肤,Theme Lab 可改 50 多个 CSS 变量,静图或循环视频壁纸
快捷键可重映射
界面语言中 / 英;PTY 里的输出不翻译

Linux 上视频壁纸走过一段弯路:WebKitGTK 把 <video> 交给 GStreamer,自定义协议解不出帧。排查过程写在 Linux 打包后视频壁纸零帧 里。

现在能装在哪,下一步想做什么#

目前提供 Windows x64(NSIS,需要 WebView2)和 Linux x64(.deb / AppImage)。macOS 暂不支持。Agent CLI 需要自己装好,放到 PATH

路线图下一件是 Agent 编排:MCP + Remote。本地已经能把三十多种 harness 摊在一张桌子上。下一步是让它们能被编排,也能连到远端。

【CaPilot】我做了一个开源 Agent 终端工作台
https://fuwari.vercel.app/posts/capilot-ide/
作者
Hachi
发布于
2026-08-25
许可协议
CC BY-NC-SA 4.0
我怎么使用 Paseo
如何用第一性原理和对抗性审查指挥 Agent Debug