Skip to content

feat(ai): 支持 AI 生成提交信息并重构设置中心 - #26

Merged
ShaoClean merged 1 commit into
developmentfrom
codex/issue-21-ai-commit-settings
Sep 16, 2026
Merged

ShaoClean merged 1 commit into
developmentfrom
codex/issue-21-ai-commit-settings

Conversation

@ShaoClean

@ShaoClean ShaoClean commented Sep 16, 2026

Copy link
Copy Markdown
Owner

背景与结果

原先提交信息需手工填写,“设置”仅打开版本更新弹窗。现在可在摘要输入框点击星光按钮,根据当前仓库的已暂存改动生成摘要和描述,支持编辑、撤销、取消与重试,再由用户主动提交。独立设置中心统一管理 AI 服务商、提交生成偏好、布局与版本更新。

变更类型

  • 新功能(feature)
  • Bug 修复(fix)
  • 优化 / 重构(improvement / refactor)
  • 文档 / 测试 / 工具(docs / test / chore)

关联 Issue

Closes #21

变更内容

  • 提交生成只读取已暂存差异,限制为 96 KiB;二进制只发送变更元数据。配置、草稿、暂存内容或工作区变化会使旧请求失效,失败保留草稿。
  • 预置 OpenAI、Anthropic、Gemini、DeepSeek,支持三类协议的多个自定义服务商、手动输入 API Key、指定模型测试连接、获取/添加/编辑/删除/启停模型,以及默认模型、语言、格式和补充提示词。
  • 服务端调用模型并保存配置;桌面使用 Electron safeStorage,独立服务使用自动生成的本机密钥与 AES-256-GCM。页面读取接口不返回已保存密钥。
  • 设置中心支持三栏布局及窄窗口逐级导航,返回后恢复工作区;布局偏好与后台更新下载继续生效。
  • Git 提交使用参数转义并保留引号、Shell 表达式和真正换行;差异预览统一使用平台参数编码及 SFTP 文件检查,补充 Windows 专用覆盖。
  • 新增隔离模拟服务、自动化回归、使用说明及 17 张验收截图。
界面前后对比

原设置入口:版本更新弹窗(复用仓库内 Issue #13 的历史验收截图)。

原设置弹窗

当前设置中心:

AI 服务商管理

提交生成与撤销:

提交生成

提交生成偏好:

提交生成设置

模型编辑与窄窗口:

模型编辑
窄窗口模型列表

验证

2026-09-16 在 macOS arm64、Node.js 25.5.0、Electron 44.2.0 上重新执行:

检查 / 场景 环境 结果
npm run desktop:build 本机完整桌面 staging 5 个任务全部通过;既有 Vite 大 chunk 提示
npm test -w web Node.js 44 项通过
npm test -w server -- --runInBand --testPathPatterns='ai|git.service|new-file-deletion|repository|app.controller|connection.service' Jest / 模拟服务 9 个套件、61 项通过
npm test -w @remote-git/ssh-client 临时真实 Git 仓库 / SSH fixture 49 项通过,2 项 Windows 专用测试在 macOS 跳过
AI 密钥、更新器、外链、工作区偏好桌面单元测试 Node.js 28 项通过
cd apps/desktop && node scripts/smoke.mjs 真实 Electron,两次独立启动 通过;系统密钥存储可用,AI 配置和密钥跨进程恢复;窄窗口、差异预览、布局、更新下载和重启安装按钮正常
git diff --cached --check 提交前 通过

完整验证记录与桌面单元测试命令 包含既有浏览器验收、模型编辑/删除场景和截图;本次 PR 准备复用了这些浏览器记录。

已知验证限制:完整服务端 Jest 的 4 个未改动脚手架测试此前因缺少依赖注入 mock 失败;完整桌面单元测试中的既有 macOS 原生 DMG 安装集成测试此前超时。本次未重跑上述已知失败项,不将完整套件或真实 DMG 升级记为通过。未验证真实商业模型账号、Windows/Linux 原生密钥存储与安装包、Windows 远程实际提交;模型协议由隔离模拟服务覆盖。

兼容性与风险

  • 新增本机 ai-settings.json;独立服务另存 ai-master-key。无数据库迁移,配置损坏不会阻止 Git 工作区启动。独立服务密钥保护依赖本机账户和文件权限;备份时需同时保管配置与密钥文件。
  • Linux 桌面要求系统 secret store,不接受 basic_text 回退;Windows/Linux 原生保护仍需对应平台验证。
  • 启用 AI 后,会将用户主动请求生成时的已暂存差异发送至所配置服务商。请求最多 60 秒,取消只关闭对应 SSH 命令及模型请求;最终提交仍由用户操作。
  • 桌面最小宽度调整至 320 px;设置与工作区上下文保留,离开设置不停止下载。无需升级数据即可回退代码,新增 AI 配置文件可保留。

使用方式见 AI 设置文档

提交前检查

  • 已自查差异,变更范围与关联 Issue 一致。
  • 已记录必要验证的实际结果及未验证项。
  • 已更新相关文档;不适用时已注明。
  • 代码、日志与截图不包含密码、私钥或访问令牌(测试夹具仅含隔离演示值)。

设计文档(Wiki)

设计与方案 · 实现与验收

设计、历史验收记录及配套截图/附件已归档至 Wiki(迁移清单,Issue #25)。历史测试结果与未验证项保持原记录,后续文档在 Wiki 维护。

新增服务商与模型管理、受保护的本机密钥存储、生成偏好及草稿撤销和过期结果保护。整合布局与版本更新设置,补充暂存差异、提交字面值和桌面回归验证。

Closes #21
@ShaoClean
ShaoClean merged commit 6ea6296 into development Sep 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[功能] AI 生成提交信息并重构设置中心

1 participant