中文 | English
一个 macOS 桌面应用:把你的终端、AI 编排 agent、论文/笔记集中在一个窗口里管理。基于 Tauri v2 + Rust + React 构建。
每个工作区一套隔离终端,一个特权 orchestrator 标签页自动拉起
claude作为编排 agent,插件以独立进程(MCP sidecar)运行,所有对外写操作都经过确认弹窗。
macOS,克隆下来后直接:
./scripts/setup.sh --with-claude --run这一条命令会自动做完所有事:装依赖 → 编译 → 装 claude CLI → 登录 → 启动 app。
脚本是幂等的,重复跑也没问题。
⚠️ 在你自己的终端里跑:登录那步(claude auth login)会弹出浏览器让你授权,需要真实终端环境。
跑完窗口就打开了。想分步来,看下面的参数。
./scripts/setup.sh # 只装依赖 + 编译
./scripts/setup.sh --with-claude # 顺便装 Claude Code CLI
./scripts/setup.sh --skip-login # 不自动触发 claude 登录
./scripts/setup.sh --run # 编译完直接启动 app(开发模式)
./scripts/setup.sh --help # 查看全部说明日常开发还有更细的命令:./build.sh help(dev / web / build / app / test / clippy / clean …)。
脚本能装的都会帮你装,装不了的会提示你:
| 依赖 | 说明 |
|---|---|
| Xcode Command Line Tools | 必需(C 工具链)。缺了脚本会提示你装。 |
| Node.js 20+ / npm | 必需。缺了用 brew install node。 |
| Rust (stable) | 缺 cargo 时脚本用 rustup 自动装。 |
Claude Code CLI (claude) |
app 的核心 agent。加 --with-claude 自动装并登录。 |
- 登录 claude:首次启动前脚本会引导你
claude auth login(浏览器授权)。 也可以设ANTHROPIC_API_KEY用 API key 免登录。用claude auth status查看状态。 - orchestrator 标签页(左上角,唯一):自动拉起
claude,是你和 agent 对话、 下达任务的地方。没登录 / 没装 claude 时这里会显示引导卡片。 - Terminal Mesh:每个工作区一组隔离的终端(PTY)。
- Papers:Zotero + arXiv 论文管理。Notes:笔记。
- 工作区:真实目录,位于
~/AgentPlatform/workspaces/<名字>/,可以用 Cursor / VS Code 打开做代码审查。 - 在 IDE 里打开:默认用 Cursor,可在应用内改成 VS Code(
code)、Zed(zed) 或任意命令——一个都没装也不影响 app 运行,只是这个按钮用不了。 - 写操作确认:agent 经插件发起的每次写入,都会弹确认框由你放行。
cargo/claude找不到? 新开一个终端(让~/.cargo/bin、$(npm prefix -g)/bin进 PATH),或直接重跑./scripts/setup.sh。npm install报安装脚本被拦(npm 11+)? esbuild / fsevents 的白名单已写进package.json的allowScripts,正常npm install即可;装 claude 时脚本用了--allow-scripts=@anthropic-ai/claude-code。- 编译报 "C compiler cannot create executables"(libsodium)? 并行编译偶发竞态,
重跑一次即可——
setup.sh已内置自动清理 + 重试。 - orchestrator 是空的 / 提示找不到 claude? 说明没装或没登录:
./scripts/setup.sh --with-claude然后claude auth login,重启 app。
不想用脚本、想一步步来:
# 1. Rust 工具链(缺 cargo 时)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
# 2. 前端依赖(esbuild/fsevents 白名单已在 package.json 里)
npm install
# 3. Rust 代码生成 + 插件 sidecar + 前端打包 / 启动
npm run build # tsc + vite build(prebuild 会跑 codegen 和 sidecar)
npm run tauri dev # 或编译并启动 app
# 4. Claude Code CLI(核心 agent)+ 登录
npm install -g --allow-scripts=@anthropic-ai/claude-code @anthropic-ai/claude-code
claude auth login # 浏览器 OAuth;或设 ANTHROPIC_API_KEY 用 API key架构设计与开发文档见
docs/。
中文 | English
A macOS desktop app that brings your terminals, AI orchestrator agent, and papers/notes together in one window. Built with Tauri v2 + Rust + React.
Each workspace gets its own isolated terminals; a single privileged orchestrator tab auto-launches
claudeas the orchestrator agent; plugins run as isolated processes (MCP sidecars); every outbound write goes through a confirmation dialog.
On macOS, straight from a fresh clone:
./scripts/setup.sh --with-claude --runThis single command does everything: install dependencies → build → install the claude CLI → log in → launch the app.
It's idempotent, so re-running is safe.
⚠️ Run it from your own terminal: the login step (claude auth login) opens a browser for you to authorize, so it needs a real terminal.
The window opens when it's done. To go step by step, see the flags below.
./scripts/setup.sh # install deps + build only
./scripts/setup.sh --with-claude # also install the Claude Code CLI
./scripts/setup.sh --skip-login # don't auto-trigger claude login
./scripts/setup.sh --run # build, then launch the app (dev mode)
./scripts/setup.sh --help # show all optionsFor day-to-day development there are finer-grained commands: ./build.sh help (dev / web / build / app / test / clippy / clean …).
The script installs what it can and prompts you for the rest:
| Dependency | Notes |
|---|---|
| Xcode Command Line Tools | Required (C toolchain). The script prompts you to install it if missing. |
| Node.js 20+ / npm | Required. Install with brew install node if missing. |
| Rust (stable) | The script installs it via rustup if cargo is missing. |
Claude Code CLI (claude) |
The app's core agent. --with-claude installs and logs it in. |
- Log in to claude: on first launch the script guides you through
claude auth login(browser auth). You can also setANTHROPIC_API_KEYto skip login. Check state withclaude auth status. - Orchestrator tab (top-left, single instance): auto-launches
claude; this is where you talk to the agent and hand it tasks. Shows an onboarding card when claude isn't installed / logged in. - Terminal Mesh: a set of isolated terminals (PTYs) per workspace.
- Papers: Zotero + arXiv paper management. Notes: notes.
- Workspaces: real directories under
~/AgentPlatform/workspaces/<name>/, openable in Cursor / VS Code for code review. - Open in IDE: defaults to Cursor; changeable in-app to VS Code (
code), Zed (zed), or any command — the app runs fine with none installed, only this button is unavailable. - Write confirmation: every write the agent makes through a plugin pops a confirmation dialog for you to approve.
cargo/claudenot found? Open a new terminal (so~/.cargo/binand$(npm prefix -g)/binare on PATH), or just re-run./scripts/setup.sh.npm installreports blocked install scripts (npm 11+)? The esbuild / fsevents allowlist is committed inpackage.json'sallowScripts, so a plainnpm installworks; the claude install uses--allow-scripts=@anthropic-ai/claude-code.- Build fails with "C compiler cannot create executables" (libsodium)? An occasional
parallel-build race — just re-run;
setup.shalready cleans up and retries automatically. - Orchestrator is empty / says claude not found? It's not installed or not logged in:
./scripts/setup.sh --with-claude, thenclaude auth login, and restart the app.
If you'd rather not use the script and do it step by step:
# 1. Rust toolchain (if cargo is missing)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
# 2. Frontend deps (esbuild/fsevents allowlist already in package.json)
npm install
# 3. Rust codegen + plugin sidecars + frontend bundle / launch
npm run build # tsc + vite build (prebuild runs codegen and sidecars)
npm run tauri dev # or build and launch the app
# 4. Claude Code CLI (core agent) + login
npm install -g --allow-scripts=@anthropic-ai/claude-code @anthropic-ai/claude-code
claude auth login # browser OAuth; or set ANTHROPIC_API_KEY for API-key authArchitecture & developer docs live in
docs/.