Skip to content

Issue 21

clean edited this page Sep 16, 2026 · 2 revisions

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

Issue #21 · PR #26 · 实现方案与验收记录

2026-09-16 从 Issue 迁入的需求与方案快照,保留原始验收勾选状态;当前进度以关联 Issue / PR 为准。实现细节、验收证据和未验证项见上方记录。

背景与问题

当前 RemoteGit 提交区提供“提交摘要+可选描述”,提交信息需要手工填写。全局“设置”入口仅打开版本更新弹窗,布局设置位于另一个入口,尚无统一的 AI 服务商、模型和生成偏好配置。

希望参考 VS Code 提交输入框内的星光按钮,根据当前仓库的已暂存改动生成 commit message;同时参考 LobeHub 的服务商管理结构,重构设置中心并支持自定义配置。

目标

  • 减少手工编写提交信息的工作,生成后允许编辑、撤销,最终由用户主动提交。
  • 提供统一、可扩展的独立设置页面,集中管理 AI 服务商、提交生成偏好、布局和版本更新。
  • UI 线框及可交互视觉稿已于 2026-09-15 经用户确认。 后续开发以本 Issue 附图和原型为基准;功能尚未实现,以下功能验收保持未勾选。

需求与范围

1. 提交区与生成流程

  • 保留现有摘要、描述及提交按钮,在摘要输入框右侧加入星光图标按钮,提供“AI 生成提交信息”的可访问名称和提示。
  • 默认只分析当前仓库的已暂存改动。成功后将结果一次性填入摘要和描述,映射现有 messagedescription 字段;不自动暂存、提交或推送。
  • 生成后提供“撤销”,恢复本次生成前的完整草稿;允许再次生成。再次手工编辑后收起该撤销入口,避免覆盖新的输入。
  • 提交区显示当前生成模型,提供进入“提交生成”设置的入口。默认使用中文 Conventional Commits,语言与格式可以调整。
  • 未配置 AI 时,星光按钮引导进入 AI 设置;返回后保留原仓库及提交草稿。无暂存内容时提示先暂存。
  • 生成中显示状态并支持取消;失败保留草稿,展示可读错误及手动重试入口。取消、离开工作区、切换仓库或草稿/暂存内容变化后,过期结果不得覆盖当前输入。

2. 独立设置中心

  • 点击“设置”进入独立页面,顶部提供“返回工作区”,左侧设置分类替换仓库树;返回时恢复原工作区上下文。
  • 分类固定为:AI 服务商、提交生成、布局、版本更新
  • AI 服务商页采用“分类导航+服务商列表+配置详情”三栏结构;沿用当前浅色界面的浅蓝侧栏、蓝色主操作及紧凑控件。
  • 窄窗口通过分类选择、服务商列表与详情逐级进入,并提供返回入口,避免压缩成不可用的三栏。
  • 将现有布局设置和版本更新纳入对应页面,保留布局偏好、恢复默认能力和后台更新流程。离开设置页不应中断更新下载;平台不支持版本更新时保留现有说明,不禁用其他设置分类。

3. AI 服务商与模型配置

  • 预置 OpenAI、Anthropic、Gemini、DeepSeek,支持搜索服务商、选择详情、启用或停用。
  • 支持创建多个自定义服务商。配置包括:名称、接口协议、API 地址、API Key、启用状态、测试连接及保存配置。
  • 自定义协议支持 OpenAI、Anthropic、Gemini;其中 OpenAI 支持兼容接口。允许使用官方地址、代理或自建模型服务地址。
  • 密钥输入支持显隐,已有密钥使用已配置/掩码状态表达。配置在本机持久化并应用于所有仓库;密钥使用受保护存储,配置读取接口及日志不返回明文密钥。
  • 服务商详情内提供模型列表:获取模型、手动添加准确模型 ID 和可选显示名称、启用或停用模型。
  • 模型列表获取失败或服务不提供该接口时,保留现有列表,反馈原因并允许手动添加。启用的模型可在提交生成设置中选择;默认提交模型在列表中标识。

4. 提交生成设置

  • 可选择默认服务商和模型,未启用的服务商或模型不可用于生成。
  • 输出语言提供“简体中文/English”;提交格式提供“Conventional Commits/自然语言”,默认分别为简体中文与 Conventional Commits。
  • 提供可选补充提示词,用于团队提交约定或个人偏好。
  • 展示提交格式预览和“仅已暂存改动”的范围说明;通过“保存设置”应用修改。

范围边界

  • 与 #8 的远端 AI 工具探测、CLI 调用和会话能力分别推进;本功能使用用户在设置中配置的模型服务,不依赖远端已安装 AI 工具。
  • 主题切换由 #15 跟踪。本 Issue 沿用当前视觉风格,迁移设置内容时不同时扩展主题功能。
  • 不包含 AI 修改代码、自动提交/推送、聊天会话或跨设备配置同步。

方案建议与代码线索

代码基线:6c1e6beb98b27218febaef6577585f83ff8477dc

  • ChangesView.tsx:接入提交输入框右侧按钮、生成状态及结果填充。
  • Layout.tsx:将现有设置/布局弹窗入口整合为独立设置导航,复用现有更新状态和操作。
  • commitDraftStore.ts:复用按仓库隔离的草稿语义,增加生成前快照及过期结果保护;现有草稿仅保留在当前页面会话内。

新增能力包括服务商配置管理、连接测试、模型列表获取以及按仓库生成提交信息。生成接口接收仓库与配置引用,由服务端读取对应暂存差异并调用所选服务,输出 messagedescription;实际提交继续使用现有提交接口。AI 服务调用与密钥处理放在本地服务/桌面受控层,避免直接把已保存的密钥交给页面调用外部 API。

验收标准

  • UI 按已确认设计实现:输入框内星光按钮、独立设置页、三栏服务商管理、自定义配置表单及提交生成设置均可使用。
  • 对含暂存与未暂存改动的仓库生成信息,结果仅对应已暂存内容;摘要与描述可编辑,不会触发自动暂存、提交或推送。
  • 正常生成、撤销恢复原草稿、重新生成及手动编辑后提交均可完成;生成文本中的引号、换行等按字面正确提交。
  • 未配置 AI 可进入设置并返回原仓库,草稿保留;空暂存区有明确反馈。
  • 认证失败、超时、取消及重试有准确反馈,失败不清空草稿;快速切换仓库、离开工作区、修改草稿或暂存内容时,不被过期响应覆盖。
  • 四个预置服务商及三类自定义协议可配置、保存、测试连接;多个自定义配置互不混用。
  • 获取模型、手动添加和启停模型正常;模型获取失败仍可手动配置,停用模型不继续被当作可用默认模型。
  • 默认服务商/模型、语言、格式和补充提示词保存后生效;重启后恢复配置,密钥不出现在配置读取响应或日志中。
  • 窄窗口、键盘操作、图标提示和焦点反馈可用;设置返回、仓库切换及提交草稿保留符合预期。
  • 现有暂存/取消暂存、提交、布局恢复、更新检查/下载/取消/重启安装通过相关回归验证。

验证方案

  • 使用隔离临时仓库与模拟 AI 服务,覆盖正常响应、空结果、认证失败、网络超时、取消、乱序返回和草稿更新。
  • 对预置服务及三类自定义协议分别验证请求适配、结果解析、模型列表与错误反馈;真实连通性验证使用专用测试配置,并记录实际验证的服务和平台。
  • 验证服务商/模型偏好持久化、已有密钥的受保护存储与日志脱敏,以及配置变更后生成所用模型的一致性。
  • 在桌面宽屏、普通窗口、窄窗口及键盘操作场景检查布局,提供实现后的对应截图;运行相关前端、服务端和桌面回归测试。
  • 当前已完成的是 UI 原型验证:生成填入、撤销恢复、取消保留草稿、自定义服务商添加、手动添加模型及窄窗口布局。原型使用演示数据,未调用真实 AI、未执行 Git 操作,不能据此勾选上述功能验收。

风险与待确认

UI 结构、生成后直接填入并可撤销、服务商范围和三类自定义协议均已确认,无待确认的产品方向。实现设计还需落实暂存差异的体积限制及二进制文件处理、请求取消机制、不同平台受保护存储方案与错误映射,并记录兼容性验证结果。

补充资料

已确认的视觉设计稿

以下均为功能设计稿,示例仓库内容、密钥占位值和连接状态是演示数据。

AI 提交区:输入框内生成按钮、摘要/描述填入与撤销

AI 提交区设计稿

设置中心:AI 服务商列表与配置详情

AI 服务商设置设计稿

提交生成:模型、语言、格式与补充提示词

提交生成设置设计稿

自定义服务商:名称、三类协议、地址和密钥

自定义服务商设计稿

窄窗口设计 窄窗口设置设计稿

下载可交互 UI 设计稿及源文件(ZIP)

解压后用浏览器打开 index.html。右上方“返回工作区”可体验生成与撤销,设置导航可切换各分类;附可编辑原始片段。原型仅使用页面内存中的演示数据。

已确认线框

提交区:

提交改动                         3 个文件已暂存
┌────────────────────────────────────────┐
│ 摘要 · 描述这次改动                 ✨ │
└────────────────────────────────────────┘
┌────────────────────────────────────────┐
│ 描述(可选)                           │
└────────────────────────────────────────┘
[          提交已暂存内容 · 3             ]

独立设置页:

← 返回工作区                    设置

AI 服务商   │ 搜索服务商     │ DeepSeek           [启用]
提交生成    │ OpenAI         │ API 地址  [             ]
布局        │ Anthropic      │ API Key   [••••••••     ]
版本更新    │ Gemini         │ [测试连接]  [保存配置]
            │ DeepSeek  ←    │
            │                │ 模型列表  [获取] [+ 添加]
            │ + 自定义服务商 │ deepseek-chat        [启用]

参考:

Clone this wiki locally