shifu
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 12 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Shifu (师父): a macOS workbench for running many coding agents at once — Claude Code, Codex, Kimi, CodeBuddy in tmux, with a sidebar that shows who is working and who is waiting for you.
![]()
Shifu
同时开十几个编程 agent,一眼看出谁在干活、谁在等你。
给同时跑 Claude Code、Codex、Kimi、CodeBuddy 的人用的 macOS 桌面工作台。
agent 一多,终端标签就开始一个个翻:这个跑完了没有,那个是不是卡在等我批准。Shifu 把它们都放进同一个窗口,左边一栏直接写着「运行中」「等你批准」「在问你」「做完了」,点一下就跳过去。
每个 agent 用它自己原本的界面 · 关掉窗口 agent 照跑 · 状态来自 agent 自己的 hooks,不靠猜屏幕
是什么
Shifu 是一个跑在 tmux 上的 agent 工作台,分两层:
shifu命令行:在一个专用的 tmux 服务里开 agent,接收各家 agent 的 hooks,把状态写进~/.shifu。单独用它也行,tmux 里自带一列侧栏。- Shifu 桌面版(
app/,Tauri 2):每个 agent 是一个终端标签,可以分屏、拖动,按「任务」分组;左边栏显示状态、在等你的排在最上面;左下角显示各家的额度用了多少。
agent 进程归 tmux 管,桌面版只是挂上去看。关掉、重启桌面版都不会打断正在跑的 agent。设计细节见 架构说明。
早期版本。 目前只在作者自己的 Mac(Apple Silicon、Homebrew tmux)上天天用过,没有现成的安装包,需要自己编译。Shifu 默认用免确认模式启动 agent(Claude 的
--dangerously-skip-permissions、Codex 的--dangerously-bypass-approvals-and-sandbox、Kimi 的--yolo),它们改文件、跑命令都不会先问你。不想这样,请先改src/launch.rs再编译。还没解决的问题见已知问题。

界面截图,agent 和额度都是模拟数据,终端内容为空。
它怎么工作
| 你…… | 它会…… |
|---|---|
| 新建一个任务,选 Claude / Codex / Kimi / CodeBuddy、目录和模型 | 在专用 tmux 服务里起这个 agent,hooks 只挂在这次启动上 |
| 让 agent 去干活 | 左边那行变成转圈的「运行中」 |
| agent 停下来要你批准 | 变成闪烁的琥珀色点,同时进入顶部「在等你」 |
| agent 回了一句话、等你回复 | 变成蓝色环「在问你」;窗口不在前台时发系统通知,点通知直接跳到它 |
| 按 Cmd+J | 跳到等你最久的那个 agent |
| 把标签或左边的行拖到另一个任务上 | 这个 agent 改归那个任务,标签跟着过去 |
| 点终端里的路径或网址 | 网址用浏览器打开;路径可以在 Shifu 里预览、用默认程序打开或在 Finder 中显示 |
| 关掉 Shifu 再打开 | agent 都还在,每个任务的分屏布局原样恢复 |
可以试试这些
| 试试 | 会看到 |
|---|---|
| 开一个 Claude,让它写个文件,再切去别的标签 | 左边那行从「运行中」变成「在问你」,顶部「在等你」多一行 |
| 一个任务里点右上角「+」,再加一个 Codex | 那个任务从一行展开成标题加两行,两个 agent 可以并排 |
| 把一个标签拖到右边缘 | 分成左右两屏 |
| 把截图拖进终端 | 截图存一份副本,路径自动打进输入框 |
| Cmd+, | 外观设置:几套配色,也可以自己调颜色 |
快速开始
方式 A:让你的 AI 帮你装
把下面这段贴进 Claude Code 或 Codex:
帮我装 Shifu(https://github.com/Longado/shifu)。先读它的 README 和 docs/ARCHITECTURE.md。
1. 检查 macOS 上有没有 Homebrew 的 tmux、Rust(cargo)、Node 20.19 或 22.12 以上,缺的告诉我怎么装。
2. 克隆仓库,在根目录 cargo install --path . 装 shifu 命令行(桌面版的 hooks 调用的就是 ~/.cargo/bin/shifu)。
3. 进 app/,npm install,再 npm run tauri build -- --debug。
4. 告诉我 Shifu.app 生成在哪,提醒我:它没有签名公证,第一次要右键「打开」;它默认用免确认模式启动 agent。
5. 第一次在 Shifu 里开 Codex 时,Codex 会问 hooks 要不要信任,提醒我选 Trust all。
方式 B:自己装
brew install tmux
git clone https://github.com/Longado/shifu && cd shifu
cargo install --path . # shifu 命令行,装到 ~/.cargo/bin
cd app && npm install
npm run tauri build -- --debug # 生成 src-tauri/target/debug/bundle/macos/Shifu.app
open src-tauri/target/debug/bundle/macos/Shifu.app
- 应用是临时签名(ad-hoc)的,没有公证。第一次打开如果被拦,在 Finder 里右键「打开」。
- 第一次在 Shifu 里开 Codex,它会显示「Hooks need review」,选 Trust all and continue。只要
shifu的安装路径不变,以后不再问。 - 只想用命令行版:
shifu打开工作台,shifu new claude ~/proj开一个 agent,shifu ls列出全部,shifu jump跳到等你最久的那个。
快捷键
| 键 | 作用 |
|---|---|
| Cmd+N | 新建任务 |
| Cmd+T | 在当前任务里加一个 agent |
| Cmd+W | 关闭当前面板(agent 不停) |
| Cmd+J | 跳到等你最久的 agent |
| Cmd+, | 外观 |
| 双击标签 | 给这个 agent 改名,留空就用回话题名 |
| 点标签上的 × | 结束这个 agent;还在干活的会先问一次 |
隐私
- Shifu 没有服务器,也不收集任何数据。状态、任务、布局都存在本机
~/.shifu/app(命令行版在~/.shifu)。 - Claude Code、Codex、CodeBuddy 的 hooks 通过启动参数挂在 Shifu 开的那个进程上,不改你的
~/.claude/settings.json、~/.codex/config.toml。 - Kimi 例外:Kimi 只认自己的配置文件,Shifu 会把 7 条 hook 写进
~/.kimi/config.toml,你自己的 hook 原样保留,第一次写之前备份成config.toml.before-shifu。在 Shifu 外面开的 Kimi 也会调用这些 hook,但它们发现不是 Shifu 开的就什么都不做。 - 额度显示:Claude 的额度从它交给 statusLine 的数据里取(你自己的 statusLine 照常显示);Codex 和 CodeBuddy 的额度读本机会话记录;Kimi 的额度用 Kimi 自己的登录状态向 Kimi 服务器查询。Shifu 不读、也不存任何令牌。
- Shifu 用自己的 tmux socket(
shifu-app,命令行版是shifu),不碰你原来的 tmux。
已知问题
- 只在 macOS(Apple Silicon)上用过。Linux 和 Windows 没试过,通知、拖放这些用的是 macOS 的接口。
- 某个项目目录里的
git命令卡住时(比如在等 macOS 的「访问桌面文件夹」授权),整个窗口会跟着卡住,直到 git 返回。原因已经找到:读分支名时拿着锁跑 git;还没修。 - 终端里折成三行以上的长路径,点后面几行打不开。原因没查清。
- 用了 Kimi 内部的登录模块来查额度。Kimi 换代或改名后,左下角的 Kimi 额度可能停在「没在做事」。
- 另外接了两个可选的本机数据源:进度页读各项目的
GOALS.md和 WorkBuddy 的本地任务;新回复通知前会读一个叫 Jev 的本机判断日志。没有这些文件时自动跳过。
一起做
多个 agent 同时干活时,人怎么才能只在真正需要自己的时候被叫到?
| 你喜欢…… | 可以贡献 |
|---|---|
| Rust、并发 | 把读分支名的 git 挪出锁外、加超时,修好上面那个整窗卡住的问题 |
| 终端、xterm.js | 修长路径折行后点不开;终端里的搜索 |
| 接新的 agent | Gemini CLI、Cursor CLI 等:写 hooks 适配,把状态接进侧栏 |
| 跨平台 | Linux 上的通知、拖放和打包 |
| 交互设计 | 「在等你」怎么排、什么时候该发通知、什么时候不该打扰 |
欢迎提 issue 或 pull request。
开发
cargo test && cargo clippy -- -D warnings # 命令行和 hooks
cargo build --release && bash scripts/smoke.sh # 冒烟:专用 socket、临时目录、假 agent
cd app && npm test && npm run build # 前端单测和类型检查
cd app/src-tauri && cargo test # 桌面版后端
cd app && npm run tauri dev # 开发模式
开发时设 SHIFU_APP_HOME、SHIFU_APP_SOCKET,测试数据就不会和正在用的混在一起。
关于这个仓库
这个仓库以前放的是 SHIFU 流程插件(按任务风险调整 AI 编程 agent 的流程深度)。那一版保存在 tag process-plugin-final,从这次提交开始,仓库换成了这个工作台。
许可证
MIT © Yutai Lin。底部 Claude 小人的像素画法来自 Anthropic 的 claude-desktop-buddy(MIT),见 THIRD_PARTY_NOTICES.md。
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found