jsgrrchg/Comando

GitHub: jsgrrchg/Comando

面向开源维护者的轻量级 agentic 代码编辑器,在多面板界面中统一 AI 协作、代码编辑、终端、Git 和 GitHub 工作流,强调代码始终可见且 agent 变更可审查。

Stars: 7 | Forks: 0

# Comando Captura de pantalla 2026-07-04 a las 9 44 25 Comando 是一款本地优先的桌面工作空间,专为使用多个 AI agent 编写代码而设计。它是一个轻量级的 agentic 代码编辑器,旨在将聊天、文件、终端、Git、GitHub 和变更审查保持在一个多面板界面中可见,而并非试图成为一个完整的 IDE。如今许多工具正转向以聊天为中心的工作流,使得用户阅读和编写代码变得困难;Comando 则采取了相反的立场,在与 agent 进行无缝协作的同时,不牺牲与代码的紧密接触。 目前该代码库结合了以下内容: - 一个带有 Rust 原生后端的 Electron 桌面应用,负责持久化、文件系统访问、项目索引、Git、终端、密钥和 AI 会话。 - 一个面向代码的工作空间,具备分割面板、持久化标签页、Monaco 编辑、快速打开、项目搜索、Git gutter 和原生终端标签页。 - 一个基于 ACP 的 AI 层,支持 Codex、Claude、Grok、Kilo 和 OpenCode runtime。 - 一个 AI 变更审查 pipeline,包含文件内嵌审查、聊天级别的 diff 卡片,以及专门用于保留/拒绝工作流的“审查”标签页。 - 一流的 Git 和 GitHub 界面,支持状态、diff、暂存、提交、分支、worktree、issue、pull request、check、Actions 日志、release 和通知。 - 用于 macOS、Windows 和 Linux 发布产物的跨平台打包脚本。 ## Comando 目前的定位 当前产品已经包含: - 本地项目打开、代码库克隆、路径重定位、项目应用数据清理,以及感知 worktree 的项目状态 - 具备可调整大小面板、可拖拽标签页、标签页固定、最近关闭的标签页、独立项目窗口以及持久化布局恢复的桌面工作空间 - 带有文件系统监视、延迟加载、外部拖放、上下文操作以及按名称或路径快速打开的文件树导航 - 基于 Monaco 的文本/代码编辑,支持自动保存、Vim 模式、相对行号、minimap 和建议设置、TextMate tokenization、文件图标以及编辑器缩放控件 - 由 Rust sidecar 和 `portable-pty` 驱动的原生终端标签页,包括工作空间范围的终端状态 - AI 聊天标签页,支持排队的 prompt、图像附件、文件/文件夹/选区提及、提交提及、GitHub issue 和 pull request 提及,以及特定于 runtime 的模型/模式/配置控件 - AI 会话历史记录,支持对话分页、置顶对话、重命名/删除流程,以及项目/worktree 范围限定 - 显式的 agent 权限、用户输入路由、实时的工具活动、生成的图像预览以及 Codex 子 agent 会话投射 - 针对受支持文件更改的内嵌 AI 审查、hunk 级别的保留/拒绝操作、冲突状态,以及由 Rust/WASM diff 逻辑提供支持的专门“审查”标签页 - Git 状态、历史记录、提交详情、已暂存/未暂存的 diff、暂存、取消暂存、丢弃、提交、拉取、推送、分支创建/检出/删除,以及 worktree 创建/移除/diff - GitHub issue、pull request、评论、标签、里程碑、check、工作流运行、作业日志、产物、注释、失败作业重运行、运行取消、通知、release 说明以及 release 发布 - 用于 AI 提供商、主题预设、浅色/深色/系统外观、应用缩放、文件树缩放、agent 侧边栏缩放、编辑器排版、聊天排版、终端 shell 和更新行为的应用设置 AI 对话和工作空间状态本地存储在由原生后端管理的应用数据区域中。密钥通过操作系统支持的密钥存储进行保存,而不是明文设置文件。 ## 为什么它与众不同 许多工具正转向以聊天为中心的工作流,这拉远了用户与直接阅读和编写代码的距离。Comando 采取了相反的立场:代码始终保持可见、可编辑和可审查,并且 agent 发出的工具活动不会隐藏在二级菜单之后。一切对用户都是可检查的,设计上每个窗口对应一个项目分支。 - Agent 不会被当作单一的聊天侧边栏对待。Comando 的设计围绕许多并发的 agent 会话,在同一个工作界面中提供分割面板、终端、diff 和文件。 - Agent 编辑保持可审查。Comando 通过操作日志、内嵌装饰、hunk 控件和专门的审查界面来追踪建议的更改,然后它们才会成为已接受的工作空间状态。 - 该应用具备项目和工作树感知能力。AI 会话、Git 状态、GitHub 上下文、终端标签页和历史记录都被限定在你实际工作的代码库范围内。 - GitHub 是工作流的一部分。Issue、pull request、check、Actions 日志和 release 流程可以作为工作空间标签页打开,并直接附加到 prompt 中。你可以将 issue 和 pull request 拖拽到 agent 的编辑器中。 - Comando 有意设计得比完整的代码编辑器或 IDE 更轻量。它并不试图吸收语言服务器、调试器堆栈、重构引擎、扩展市场、任务运行器,或者来自 VS Code、JetBrains、Zed 或类似工具的每一个深度编辑器功能。 - 该架构是本地优先的。Electron 主要作为 UI 和编排层;Rust sidecar 负责持久化和敏感的工作。 ## 当前功能 ### 项目和工作空间 - 打开本地文件夹并将代码库克隆到项目目录中。 - 跟踪最近的项目、活动项目、活动的 worktree 以及特定于项目的设置。 - 打开多个项目窗口,并保持窗口和工作空间状态的持久化。 - 水平或垂直分割面板,在面板之间拖拽标签页,固定标签页,重新排序标签页,以及重新打开最近关闭的标签页。 - 打开文件、聊天、聊天历史、审查、Git、Git 提交、Git worktree diff、GitHub issue、GitHub pull request、GitHub 列表和终端标签页。 - 使用针对文件、终端、Git 视图、聊天历史和新建 agent 会话的快速创建和快速打开流程。 - 通过原生索引和模糊文件排名搜索项目条目。 ### 编辑和导航 - 通过 Monaco 编辑文本和代码文件。 - 使用自动保存、可配置的字体族、字号、行高、minimap、建议、相对行号和 Vim 模式。 - 通过 Catppuccin 风格的类型图标渲染文件图标。 - 将选定的编辑器行作为结构化上下文附加到聊天中。 - 编辑时查看实时的 Git gutter 更改。 - 从对话、审查、工具、Git 和 GitHub 引用中打开特定行范围的文件。 - 创建、复制、重命名、删除、移至废纸篓、在文件夹中显示以及在外部打开项目条目。 ### AI 和变更控制 - 运行 Codex、Claude、Grok、Kilo 和 OpenCode 的 ACP 会话(未来会支持更多)。 - 从设置中配置 runtime 身份验证方法、自定义二进制路径、网关 URL、API key 和诊断。 - 在支持的情况下,从应用启动 runtime 身份验证流程。 - 发送带有文件提及、文件夹提及、选区提及、外部文件引用、Git 提交、GitHub issue、GitHub pull request 和图像附件的 prompt。 - 在对话回合处于活动状态时排队 prompt,编辑排队的 prompt,暂停队列处理,并手动恢复。 - 流式传输消息、工具活动、计划、状态事件、用户输入请求、权限提示和生成的图像。 - 将 AI 会话历史记录保存在本地,支持对话分页、置顶会话、标题编辑和删除。 - 在编辑器内嵌、聊天工具卡片内或“审查”标签页中审查 agent 编辑。 - 保留或拒绝完整文件、选定的 hunk 或所有待处理的已跟踪文件。 - 在实时快照和持久化对话记录之间保留未解决的审查状态。 ### Git 和 GitHub - 从活动项目或 worktree 解析代码库状态。 - 查看 Git 状态、同步状态、远程仓库、分支、worktree、历史记录、提交详情、diff 和原始文件内容。 - 暂存、取消暂存、丢弃、提交、检出、创建分支、删除本地/远程分支、创建/移除 worktree、拉取、推送、克隆和初始化代码库。 - 从远程仓库解析 GitHub 代码库,并使用保存的 token 或可用的 `gh` CLI token 进行身份验证。 - 列出、打开、创建、更新、评论、关闭和重新打开 issue。 - 列出、打开、创建、更新、评论、标记为就绪、转换为草稿以及在 pull request 上请求审查者。 - 检查 check、工作流运行、作业、日志、产物和 check-run 注释。 - 当 token 具有权限时,重新运行失败的工作流作业并取消工作流运行。 - 列出通知、release、标签和里程碑。 - 生成 release 说明,创建 release,并发布草稿 release。 ### 原生后端 - 带有协议协商和类型化 IPC 适配器的 JSONL stdio sidecar。 - 基于 SQLite 的应用持久化、项目注册表、工作空间快照、设置和应用数据记录。 - 操作系统支持的 keyring/安全存储与 AI 的集成 - 用于读取、写入、修改、复制操作、树状列表和监视失效的文件系统服务。 - 带有取消功能的增量项目索引和内容/路径搜索。 - Git 命令执行、解析、状态快照、diff、worktree 和修改结果。 - 通过 `portable-pty` 进行终端生命周期管理和输出流式传输。 - AI runtime 设置、会话生命周期、历史记录、对话记录存储、权限、用户输入和审查磁盘修改。 - 用于审查 hunk 和操作日志对账的 Rust/WASM diff 引擎。 ## 代码库布局 ``` apps/ native-backend/ Rust stdio sidecar entrypoint crates/ comando-ai/ ACP runtime management, sessions, history, permissions, review bridge comando-diff/ Rust diff and review engine plus WASM bindings comando-fs/ Project filesystem access, mutations, watchers, tree reads comando-git/ Git status, diffs, history, branches, worktrees, mutations comando-index/ Project indexing, ranking, path/content search comando-persistence/ SQLite store, metadata, health, migrations comando-projects/ Project registry and project path metadata comando-settings/ Runtime setup state and secret storage comando-terminal/ PTY sessions and terminal output comando-types/ Shared native protocol and domain DTOs src/ main/ Electron main process, IPC handlers, windows, services preload/ Typed renderer bridge renderer/ React app, stores, workspace, settings, Git/GitHub UI shared/ Shared TypeScript contracts, settings, review helpers, native adapters test/ Shared test helpers resources/ ai/ Staged AI runtime payloads used by dev/build/package flows icons/ Platform icon sources and generated icon assets scripts/ ai/ AI runtime staging and validation native/ Native backend build/stage/verify scripts package-*.mjs macOS, Windows, and Linux packaging workflows vendor/ codex-acp/ Vendored Codex ACP runtime source Claude-agent-acp-upstream/ Vendored Claude ACP runtime project ``` ## 技术栈 - **桌面 shell**:Electron 42, electron-vite 5, electron-builder 26, electron-updater - **前端**:React 19, TypeScript 6, Vite 8, Tailwind CSS 4, Zustand 5 - **编辑器和终端**:Monaco Editor, vscode-textmate, vscode-oniguruma, xterm.js, Monaco Vim - **原生后端**:Rust 2024, `rusqlite`, `keyring`, `notify`, `portable-pty`, `agent-client-protocol`, `imara-diff` - **AI runtime**:通过暂存/捆绑的 sidecar 和外部 runtime 命令实现的 ACP - **测试**:用于 TypeScript 的 Vitest,用于 Rust crate 的 Cargo 测试,用于原生协议 payload 的 fixture 一致性测试 ## 开发 环境要求: - Node.js `^20.19.0` 或 `>=22.12.0` - pnpm `10.33.0` - Rust 和 Cargo - 仅在使用 `pnpm native:wasm` 重新构建审查 WASM bundle 时需要 `wasm-bindgen` 安装并运行: ``` pnpm install pnpm dev ``` `pnpm dev` 会在 `Comando Dev` 频道中启动 Electron 应用。`predev` 钩子会以 debug 模式构建并暂存 Rust 原生后端,然后暂存 AI runtime。 有用的开发命令: ``` pnpm build pnpm typecheck pnpm lint pnpm test pnpm check ``` 原生后端命令: ``` pnpm native:build pnpm native:test pnpm native:stage pnpm native:check pnpm native:wasm ``` AI runtime 命令: ``` pnpm stage:ai pnpm stage:codex-runtime pnpm verify:ai-runtimes ``` ## 验证 完整应用验证: ``` pnpm check ``` 这会运行 TypeScript 检查、ESLint、Vitest 以及 Electron 生产构建。 Rust 工作空间测试: ``` cargo test --workspace ``` 原生协议和持久化检查: ``` pnpm native:protocol:check pnpm native:persistence:check ``` 该代码库包含针对渲染器存储/组件、主进程服务、IPC 适配器、Git/GitHub 行为、原生后端桥接、审查逻辑和打包助手的广泛 Vitest 覆盖,以及跨原生 crate 的 Rust 测试。 ## 打包 打包必须在目标平台上运行。 macOS: ``` pnpm package:mac pnpm release:mac ``` Windows: ``` pnpm package:win pnpm package:win:x64 pnpm package:win:arm64 pnpm release:win:x64 pnpm release:win:arm64 ``` Linux: ``` pnpm package:linux pnpm package:linux:appimage pnpm package:linux:deb pnpm package:linux:rpm pnpm release:linux ``` 生成的产物会被写入特定于平台的构建输出目录: - macOS:`build/macos-package/project/dist/` - Windows 和 Linux:`dist/` 打包过程会将原生后端 sidecar 和 AI runtime payload 暂存在 `build/package-resources/` 下。macOS 构建会生成通用的 `.dmg` 和 `.zip` 产物。Windows 构建会生成适用于 `x64` 和 `arm64` 的 NSIS 安装程序。Linux 构建以 AppImage、deb 和 rpm 为目标。 ## AI Runtime 说明 Comando 目前连接了五个 ACP runtime: - `codex` - `claude` - `grok` - `kilo` - `opencode` 当前暂存状态: - Codex 作为原生 sidecar 二进制文件从 `vendor/codex-acp` 暂存,或者在提供了预构建的 bundle 二进制文件时,从 `COMANDO_CODEX_ACP_BUNDLE_BIN` 暂存。 - Claude 从 `vendor/Claude-agent-acp-upstream` 暂存,并带有嵌入式 Node runtime。 - Grok、Kilo 和 OpenCode 作为可配置的外部 runtime 集成,需要相应的 CLI/验证设置或 API key 配置。 开发期间的 runtime 二进制覆盖: - `COMANDO_CODEX_ACP_BIN` - `COMANDO_CLAUDE_ACP_BIN` - `COMANDO_GROK_ACP_BIN` - `COMANDO_KILO_ACP_BIN` - `COMANDO_OPENCODE_ACP_BIN` Bundle/暂存覆盖: - `COMANDO_CODEX_ACP_BUNDLE_BIN` - `COMANDO_EMBEDDED_NODE_BIN` 诊断可识别的凭证环境变量包括: - `OPENAI_API_KEY` - `CODEX_API_KEY` - `ANTHROPIC_API_KEY` - `ANTHROPIC_AUTH_TOKEN` - `ANTHROPIC_BASE_URL` - `ANTHROPIC_BEDROCK_BASE_URL` - `ANTHROPIC_CUSTOM_HEADERS` - `XAI_API_KEY` - `KILO_API_KEY` - `OPENCODE_API_KEY` 通过设置 UI 保存的密钥会通过原生密钥存储进行安全存储。外部 CLI 登录仍然由它们各自的 runtime 所拥有。 ## 项目状态 Comando 目前正处于完善和强化阶段。核心系统已经存在:工作空间、编辑器、AI 会话、审查流程、Git、GitHub、终端、原生持久化和打包。该项目目前仍处于 `1.0` 版本之前,现在最重要的工作是稳定性、性能、UI 完善和发布强化。目前请勿将 Comando 作为你唯一的 IDE 使用。 目前产品敏感度最高的领域是: - AI 审查和变更控制 - 内嵌审查和 hunk 级别的保留/拒绝行为 - 会话历史记录、对话恢复和长对话性能 - 多面板和多窗口工作空间恢复 - Git worktree 流程和 GitHub Actions 诊断 - 跨 macOS、Windows 和 Linux 的打包 runtime 暂存 ## 已知的不足之处 - 带有待处理的 agent 审查更改的文件在待处理的 AI 审查状态得到解决之前无法编辑。目前这是有意为之。 - 当 agent 编辑基于模糊的代码片段,或者当 agent 在不使用编辑工具的情况下进行更改时,某些待处理的审查 diff 可能不够精确。 - 在内嵌审查和可编辑文件视图之间切换时,滚动恢复可能不够完美。 - 亚克力透明度在 Windows 10 上无法可靠渲染;作为变通方法,Windows 10 用户可以在“设置”>“外观”中禁用窗口透明度。 ## 许可证 Comando 采用 GNU General Public License v3.0 进行分发。 ``` Copyright 2026 Comando contributors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ```
标签:AI编程助手, Git客户端, Rust, 代码审查, 可视化界面, 桌面应用, 网络流量审计, 自动化攻击, 集成开发环境