开源的 Agent-first 桌面工作区 —— Agent、编辑器、Git、终端,一体成型。
本地优先、自带模型、完全可控,你的 AI 工作流由你自己做主。
Async IDE 是一款基于 Electron + React + Monaco 从零搭建的 AI 原生桌面 Shell。它不是 VS Code 分支——整个代码库刻意保持精简、透明、可随意改动。
核心理念很简单:Agent 才是中心,而不是编辑器侧边缝上去的聊天插件。工作区访问、工具执行、Diff 审阅、终端操作——所有一切都围绕一个透明的 思考 → 规划 → 执行 → 观察 闭环展开,每一步你都能看见、能干预、能随时叫停。
Read、Write、Edit、Glob、Grep、Shell 等)实时展示,敏感操作带审批门控。











@ 文件引用、多段消息和线程持久化。Ctrl/Cmd+P)和整体键盘优先的交互。除了桌面 Composer,Async 也可以作为外部聊天面上的 Agent 宿主。
main-src/bots/platforms/。botRuntime 驱动:普通会话走 agentLoop;Team 模式则与桌面端一致,走 teamOrchestrator(含子 Agent 流式增量与工具状态等)。agent / ask / plan / team)、工作区根目录(可多选)、可选会话/用户白名单,以及附加系统提示词(叠在项目规则之上)。SettingsBotsPanel.tsx)。更细的模块说明见维护者向文档 docs/llm-wiki/。
┌─────────────────────────────────────────────────────────┐
│ 渲染进程 │
│ React + Vite │ Monaco 编辑器 │ xterm.js 终端 │
│ Composer / Chat / Plan / Agent UI │
└──────────────────────────┬──────────────────────────────┘
│ contextBridge(IPC)
┌──────────────────────────▼──────────────────────────────┐
│ 主进程 │
│ agentLoop.ts │ toolExecutor.ts │ LLM 适配器 │
│ gitService │ threadStore │ settingsStore │
│ workspace │ LSP 会话 │ PTY 终端 │
└─────────────────────────────────────────────────────────┘
| 技术 | 版本 | 用途 |
|---|---|---|
| React | ^19.2.4 | UI 框架 |
| Electron | 41.1.0 | 桌面应用外壳 |
| Vite | ^6.0.3 | 构建工具与开发服务器 |
| TypeScript | ^5.9.3 | 类型安全开发 |
| Monaco Editor | ^0.52.0 | 代码编辑器组件 |
| xterm.js | ^5.5.0 | 终端模拟器 |
| OpenAI SDK | ^4.96.0 | OpenAI API 客户端 |
| Anthropic SDK | ^0.39.0 | Claude API 客户端 |
| Google Generative AI | ^0.21.0 | Gemini API 客户端 |
| MCP SDK | ^1.29.0 | Model Context Protocol |
| node-pty | ^1.1.0 | PTY 终端支持 |
agentLoop.ts 负责多轮工具调用、流式 JSON 片段、工具修复和中止控制。gitService 提供 UI 用到的 Git 操作层。Async/
├── main-src/ # 主进程源码,最终打包到 electron/main.bundle.cjs
│ ├── index.ts # 应用入口:窗口、userData、IPC 注册
│ ├── agent/ # agentLoop.ts、toolExecutor.ts、agentTools.ts 等
│ ├── llm/ # OpenAI / Anthropic / Gemini 适配器与流式处理
│ ├── lsp/ # TypeScript LSP 会话
│ ├── mcp/ # Model Context Protocol 集成
│ ├── memdir/ # 记忆目录管理
│ ├── bots/ # IM 机器人:控制器、运行时、连通性检测、各平台适配器
│ ├── ipc/register.ts # 核心 IPC 处理(聊天、线程、Agent、Plan)
│ ├── ipc/handlers/ # 分域 IPC 处理(Git、文件系统、MCP、设置等)
│ ├── shell/ # Shell 命令执行
│ ├── threadStore.ts # 线程与消息持久化
│ ├── settingsStore.ts # settings.json 管理
│ ├── gitService.ts # Git 状态、Diff、提交、推送
│ ├── workspace.ts # 工作区根目录与安全路径解析
│ ├── workspaceFileIndex.ts # 工作区文件索引
│ ├── workspaceSymbolIndex.ts # 符号索引
│ └── workspaceUsageStats.ts # 工作区使用统计
├── src/ # 渲染进程(Vite + React)
│ ├── App.tsx # 主界面、聊天、Composer 模式、Git / 文件树
│ ├── AgentChatPanel.tsx # Agent 聊天界面
│ ├── AgentLeftSidebar.tsx # Agent 活动侧边栏
│ ├── AgentRightSidebar.tsx # Agent 工具和结果
│ ├── ChatComposer.tsx # 消息编辑器组件
│ ├── EditorMainPanel.tsx # Monaco 编辑器面板
│ ├── SettingsPage.tsx # 设置界面
│ ├── SettingsBotsPanel.tsx # IM 机器人集成(Telegram / Slack / Discord / 飞书)
│ ├── WorkspaceExplorer.tsx # 文件浏览器
│ ├── hooks/ # 自定义 React hooks
│ ├── i18n/ # 中英文文案
│ └── ... # Agent UI、Plan 审阅、Monaco、终端等组件
├── electron/
│ ├── main.bundle.cjs # esbuild 产物,不建议手改
│ └── preload.cjs # 预加载脚本 -> window.asyncShell
├── docs/assets/ # Logo、截图
├── scripts/
│ └── export-app-icon.mjs # SVG -> PNG 图标导出
├── esbuild.main.mjs # 主进程构建脚本
├── vite.config.ts # 渲染进程构建配置
└── package.json
默认位于 Electron 的 userData 目录下:
async/threads.json:线程和聊天消息。async/settings.json:模型配置、密钥、布局、Agent 选项,以及机器人集成配置。.async/plans/:Plan 模式生成的 Markdown 计划文件。渲染进程可能会用 localStorage 存一些轻量 UI 状态,但对话的权威数据源还是 threads.json。
git clone https://github.com/ZYKJShadow/Async.git
cd Async
npm install
npm run desktop
如果你更习惯 Gitee:
git clone https://gitee.com/shadowsocks_z/Async.git
cd Async
npm install
npm run desktop
npm run dev # 带热重载的开发服务器
npm run dev:debug # 同上,并打开 DevTools
npm run icons # 从 SVG 生成应用图标
感谢开源社区以及 Claude Code 等项目对 Agent 驱动开发的推动——Async IDE 在此基础上探索了属于自己的透明化、本地优先的 AI 工作流。
有问题、有想法,或者就是想和一群搞开发的人聊聊?
本项目基于 Apache License 2.0 协议开源。
$ claude mcp add Async \
-- python -m otcore.mcp_server <graph>