# 智能提交代码 **Repository Path**: elarbor/smart-commit ## Basic Information - **Project Name**: 智能提交代码 - **Description**: 面向 macOS 和 Windows 的 Git 桌面客户端。当前版本覆盖首个完整工作流:查看改动、暂存文件、使用 AI 生成提交信息、提交并推送。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-31 - **Last Updated**: 2026-08-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: Git, GUI, AI智能 ## README # 易达软件 易达软件是一款面向 macOS 和 Windows 的 AI 辅助 Git 桌面客户端。它把仓库管理、变更审阅、提交、分支操作、远端同步和定时自动提交集中在一个工作台中,适合个人开发和日常项目维护。 ## 功能亮点 ### 🗂️ 多仓库工作台 - 同时打开多个本地 Git 仓库,以页签方式切换项目。 - 记住已打开的仓库,支持关闭、排序、滚动查看和自定义项目别名。 - 支持选择本地仓库,或填写远端地址克隆到指定目录。 - 一键打开仓库文件夹、打开文件所在位置,并刷新单个或全部仓库状态。 - 显示当前分支、远端地址、工作区改动数,以及本地提交领先/落后远端的数量。 ### 🔍 变更查看与暂存 - 将文件分为“已暂存”和“未暂存”两组,展示新增、修改、删除、重命名、复制、冲突和未跟踪状态。 - 查看单文件 Diff,支持已暂存 Diff、工作区 Diff 和未跟踪文件 Diff。 - 按文件或按分组暂存、取消暂存;支持一键暂存全部或取消全部暂存。 - 可从文件菜单打开文件位置,或在确认后还原单个文件、全部未暂存文件。 - 大型变更列表按批次渲染,Diff 和未跟踪文件读取设有大小与数量上限,超限会明确提示截断。 ### ✍️ AI 提交助手 - 根据 Git 改动生成可编辑的提交信息,支持自定义语言、提交格式和系统提示词。 - 有已暂存改动时优先使用暂存区 Diff;没有已暂存改动时再读取工作区和未跟踪文件。 - 支持多个 OpenAI-compatible 模型服务商,包括内置服务和自定义 API 地址、模型名称及 API Key。 - 同一时间只启用一个模型配置,避免提交请求使用错服务。 - 对疑似 API Key、Token、密码、私钥等敏感变更行进行隐藏,并限制发送给模型的 Diff 大小。 - Git 异常提醒看不懂时,可以点击 🤖 使用 AI 解读,帮助定位常见的分支、同步和提交问题。 ### 🌿 分支管理 - 查看本地分支和远程分支,支持切换本地分支或从远程分支创建本地跟踪分支。 - 支持创建并切换分支、重命名当前分支、合并分支。 - 支持删除本地分支和远程分支;未合并的本地分支会由 Git 拒绝删除。 - 合并发生冲突时,显示冲突状态,支持在解决并暂存冲突后继续合并,或直接中止合并。 - 选择两个分支进行 AI 差异分析,生成变更概览、主要文件变化、潜在风险和测试建议。 - 分支分析结果可导出为 Markdown 报表。 ### 📚 提交历史 - 分页查看所有分支引用范围内的提交记录。 - 展开查看提交正文、作者、提交者、时间和引用信息。 - 支持按提交人、提交信息和日期范围筛选。 - 支持下载提交日志、分支差异分析等 Markdown 报表,当前筛选结果也可完整导出。 ### 🔄 提交与远端同步 - 手动编辑或使用 AI 生成提交信息后提交。 - 提交前检查当前仓库的 Git 用户名和邮箱,支持按仓库配置提交者身份。 - 支持推送、拉取和刷新远端状态。 - 推送前自动获取远端信息;发现远端有新提交时会阻止推送,避免覆盖协作者更新。 - 当前分支没有 upstream 时,推送会自动关联 `origin`;拉取使用 rebase 和 autostash。 - 支持撤回最近一次未推送的提交,并将改动和原提交信息保留在暂存区,便于修改后重新提交。 ### ⏰ 定时自动提交 - 为已打开的仓库配置定时任务,绑定具体分支、执行时间和星期。 - 可选择“仅已暂存文件”或“所有工作区变更”,并设置提交后是否自动推送。 - 支持立即运行、启用/停用、删除任务,并显示下次执行时间、最近结果和执行信息。 - 每个仓库最多配置一个任务,最多保存 20 个任务,避免同一仓库重复执行。 - 任务执行前检查分支和冲突状态;分支不匹配、存在冲突或没有符合范围的变更时会跳过或报错。 - 应用关闭主窗口后会隐藏到系统托盘,后台调度器继续运行;可从托盘重新打开窗口或退出应用。 ## 安全与性能 - API Key 使用 macOS Keychain 或 Windows Credential Manager 保存,不写入普通配置文件。 - Git 命令由 Rust 原生层使用固定参数调用,前端不执行 Shell 字符串。 - 同一仓库的 Git 操作使用并发锁串行化,减少刷新、提交、同步和自动任务之间的相互干扰。 - Git 操作放入后台线程执行,避免阻塞界面;提交信息长度、单文件 Diff、AI Diff、未跟踪文件数量和 Diff 缓存均有明确上限。 ## 界面预览 ![工作台](docs/images/Snipaste_2026-08-30_10-24-55.png) ![仓库与变更](docs/images/Snipaste_2026-08-30_10-25-38.png) ![分支操作](docs/images/Snipaste_2026-08-30_10-26-30.png) ![提交日志](docs/images/Snipaste_2026-08-30_10-26-48.png) ![模型配置](docs/images/Snipaste_2026-08-30_10-27-13.png) ![自动化任务](docs/images/Snipaste_2026-08-30_10-27-30.png) ![分支分析](docs/images/Snipaste_2026-08-30_10-28-23.png) ![异常分析](docs/images/Snipaste_2026-08-30_10-28-38.png) ![更多设置](docs/images/Snipaste_2026-08-30_10-28-53.png) ## 快速开始 1. 打开本地 Git 仓库,或从远端克隆项目。 2. 在未暂存列表中选择文件,按需暂存改动。 3. 点击 AI 生成提交信息,或直接编辑提交文本。 4. 确认提交者身份后提交。 5. 点击分支状态中的待推送数量,完成推送。 浏览器演示模式可用于查看界面和交互: ```bash npm install npm run dev ``` 然后打开 `http://127.0.0.1:1420/?demo=1`。真实 Git 操作需要运行桌面应用。 ## 本地开发 需要 Node.js 20+、Rust stable、Git 2.23+ 和系统 WebView。 ```bash npm install npm run tauri dev ``` ## 检查与构建 ```bash npm test # 运行前端测试 npm run lint # TypeScript 类型检查 npm run build # 构建 Web 资源 npm run tauri build # 构建当前平台安装包 ``` 修改 Rust 后还应执行: ```bash cargo fmt --check cargo test --manifest-path src-tauri/Cargo.toml ``` 按系统和芯片架构构建安装包。构建完成后,安装包固定命名为 `【易达软件】{系统}_{架构}.{扩展名}`: ```bash # 在 macOS 构建机上生成 DMG npm run package:macos:arm64 # 【易达软件】macos_arm64.dmg npm run package:macos:x64 # 【易达软件】macos_x64.dmg # 在 Windows 构建机上生成 MSI npm run package:windows:arm64 # 【易达软件】windows_arm64.msi npm run package:windows:x64 # 【易达软件】windows_x64.msi ``` 安装包位于 `src-tauri/target/<目标架构>/release/bundle/`。macOS 安装包不能在 Windows 上构建,Windows 安装包也不能在 macOS 上构建。构建非当前架构前,需要安装对应的 Rust 目标;使用 rustup 时可执行 `rustup target add <目标架构>`。正式发布还需要对应平台的代码签名证书。 ## 模型配置 在右上角“设置”中选择内置模型服务,或添加自定义 OpenAI-compatible 服务。自定义服务需要填写 API 地址、模型名称和 API Key,接口地址需支持 `POST /chat/completions`。 模型请求会遵循当前 AI 功能的输入范围和长度限制。提交信息生成使用仓库改动,分支分析使用两个分支的 Diff,异常分析使用 Git 错误文本;疑似敏感变更行会先被隐藏。 ## 下载软件 🔗 [Gitee Releases](https://gitee.com/elarbor/smart-commit/releases) ## 问题反馈 🔗 [提交 Issue](https://gitee.com/elarbor/smart-commit/issues)