-
Notifications
You must be signed in to change notification settings - Fork 0
Issue 21
Issue #21 · PR #26 · 实现方案与验收记录
2026-09-16 从 Issue 迁入的需求与方案快照,保留原始验收勾选状态;当前进度以关联 Issue / PR 为准。实现细节、验收证据和未验证项见上方记录。
当前 RemoteGit 提交区提供“提交摘要+可选描述”,提交信息需要手工填写。全局“设置”入口仅打开版本更新弹窗,布局设置位于另一个入口,尚无统一的 AI 服务商、模型和生成偏好配置。
希望参考 VS Code 提交输入框内的星光按钮,根据当前仓库的已暂存改动生成 commit message;同时参考 LobeHub 的服务商管理结构,重构设置中心并支持自定义配置。
- 减少手工编写提交信息的工作,生成后允许编辑、撤销,最终由用户主动提交。
- 提供统一、可扩展的独立设置页面,集中管理 AI 服务商、提交生成偏好、布局和版本更新。
- UI 线框及可交互视觉稿已于 2026-09-15 经用户确认。 后续开发以本 Issue 附图和原型为基准;功能尚未实现,以下功能验收保持未勾选。
- 保留现有摘要、描述及提交按钮,在摘要输入框右侧加入星光图标按钮,提供“AI 生成提交信息”的可访问名称和提示。
- 默认只分析当前仓库的已暂存改动。成功后将结果一次性填入摘要和描述,映射现有
message、description字段;不自动暂存、提交或推送。 - 生成后提供“撤销”,恢复本次生成前的完整草稿;允许再次生成。再次手工编辑后收起该撤销入口,避免覆盖新的输入。
- 提交区显示当前生成模型,提供进入“提交生成”设置的入口。默认使用中文 Conventional Commits,语言与格式可以调整。
- 未配置 AI 时,星光按钮引导进入 AI 设置;返回后保留原仓库及提交草稿。无暂存内容时提示先暂存。
- 生成中显示状态并支持取消;失败保留草稿,展示可读错误及手动重试入口。取消、离开工作区、切换仓库或草稿/暂存内容变化后,过期结果不得覆盖当前输入。
- 点击“设置”进入独立页面,顶部提供“返回工作区”,左侧设置分类替换仓库树;返回时恢复原工作区上下文。
- 分类固定为:AI 服务商、提交生成、布局、版本更新。
- AI 服务商页采用“分类导航+服务商列表+配置详情”三栏结构;沿用当前浅色界面的浅蓝侧栏、蓝色主操作及紧凑控件。
- 窄窗口通过分类选择、服务商列表与详情逐级进入,并提供返回入口,避免压缩成不可用的三栏。
- 将现有布局设置和版本更新纳入对应页面,保留布局偏好、恢复默认能力和后台更新流程。离开设置页不应中断更新下载;平台不支持版本更新时保留现有说明,不禁用其他设置分类。
- 预置 OpenAI、Anthropic、Gemini、DeepSeek,支持搜索服务商、选择详情、启用或停用。
- 支持创建多个自定义服务商。配置包括:名称、接口协议、API 地址、API Key、启用状态、测试连接及保存配置。
- 自定义协议支持 OpenAI、Anthropic、Gemini;其中 OpenAI 支持兼容接口。允许使用官方地址、代理或自建模型服务地址。
- 密钥输入支持显隐,已有密钥使用已配置/掩码状态表达。配置在本机持久化并应用于所有仓库;密钥使用受保护存储,配置读取接口及日志不返回明文密钥。
- 服务商详情内提供模型列表:获取模型、手动添加准确模型 ID 和可选显示名称、启用或停用模型。
- 模型列表获取失败或服务不提供该接口时,保留现有列表,反馈原因并允许手动添加。启用的模型可在提交生成设置中选择;默认提交模型在列表中标识。
- 可选择默认服务商和模型,未启用的服务商或模型不可用于生成。
- 输出语言提供“简体中文/English”;提交格式提供“Conventional Commits/自然语言”,默认分别为简体中文与 Conventional Commits。
- 提供可选补充提示词,用于团队提交约定或个人偏好。
- 展示提交格式预览和“仅已暂存改动”的范围说明;通过“保存设置”应用修改。
- 与 #8 的远端 AI 工具探测、CLI 调用和会话能力分别推进;本功能使用用户在设置中配置的模型服务,不依赖远端已安装 AI 工具。
- 主题切换由 #15 跟踪。本 Issue 沿用当前视觉风格,迁移设置内容时不同时扩展主题功能。
- 不包含 AI 修改代码、自动提交/推送、聊天会话或跨设备配置同步。
代码基线:6c1e6beb98b27218febaef6577585f83ff8477dc。
- ChangesView.tsx:接入提交输入框右侧按钮、生成状态及结果填充。
- Layout.tsx:将现有设置/布局弹窗入口整合为独立设置导航,复用现有更新状态和操作。
- commitDraftStore.ts:复用按仓库隔离的草稿语义,增加生成前快照及过期结果保护;现有草稿仅保留在当前页面会话内。
新增能力包括服务商配置管理、连接测试、模型列表获取以及按仓库生成提交信息。生成接口接收仓库与配置引用,由服务端读取对应暂存差异并调用所选服务,输出 message 和 description;实际提交继续使用现有提交接口。AI 服务调用与密钥处理放在本地服务/桌面受控层,避免直接把已保存的密钥交给页面调用外部 API。
- UI 按已确认设计实现:输入框内星光按钮、独立设置页、三栏服务商管理、自定义配置表单及提交生成设置均可使用。
- 对含暂存与未暂存改动的仓库生成信息,结果仅对应已暂存内容;摘要与描述可编辑,不会触发自动暂存、提交或推送。
- 正常生成、撤销恢复原草稿、重新生成及手动编辑后提交均可完成;生成文本中的引号、换行等按字面正确提交。
- 未配置 AI 可进入设置并返回原仓库,草稿保留;空暂存区有明确反馈。
- 认证失败、超时、取消及重试有准确反馈,失败不清空草稿;快速切换仓库、离开工作区、修改草稿或暂存内容时,不被过期响应覆盖。
- 四个预置服务商及三类自定义协议可配置、保存、测试连接;多个自定义配置互不混用。
- 获取模型、手动添加和启停模型正常;模型获取失败仍可手动配置,停用模型不继续被当作可用默认模型。
- 默认服务商/模型、语言、格式和补充提示词保存后生效;重启后恢复配置,密钥不出现在配置读取响应或日志中。
- 窄窗口、键盘操作、图标提示和焦点反馈可用;设置返回、仓库切换及提交草稿保留符合预期。
- 现有暂存/取消暂存、提交、布局恢复、更新检查/下载/取消/重启安装通过相关回归验证。
- 使用隔离临时仓库与模拟 AI 服务,覆盖正常响应、空结果、认证失败、网络超时、取消、乱序返回和草稿更新。
- 对预置服务及三类自定义协议分别验证请求适配、结果解析、模型列表与错误反馈;真实连通性验证使用专用测试配置,并记录实际验证的服务和平台。
- 验证服务商/模型偏好持久化、已有密钥的受保护存储与日志脱敏,以及配置变更后生成所用模型的一致性。
- 在桌面宽屏、普通窗口、窄窗口及键盘操作场景检查布局,提供实现后的对应截图;运行相关前端、服务端和桌面回归测试。
- 当前已完成的是 UI 原型验证:生成填入、撤销恢复、取消保留草稿、自定义服务商添加、手动添加模型及窄窗口布局。原型使用演示数据,未调用真实 AI、未执行 Git 操作,不能据此勾选上述功能验收。
UI 结构、生成后直接填入并可撤销、服务商范围和三类自定义协议均已确认,无待确认的产品方向。实现设计还需落实暂存差异的体积限制及二进制文件处理、请求取消机制、不同平台受保护存储方案与错误映射,并记录兼容性验证结果。
以下均为功能设计稿,示例仓库内容、密钥占位值和连接状态是演示数据。
AI 提交区:输入框内生成按钮、摘要/描述填入与撤销

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

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

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

窄窗口设计
解压后用浏览器打开 index.html。右上方“返回工作区”可体验生成与撤销,设置导航可切换各分类;附可编辑原始片段。原型仅使用页面内存中的演示数据。
已确认线框
提交区:
提交改动 3 个文件已暂存
┌────────────────────────────────────────┐
│ 摘要 · 描述这次改动 ✨ │
└────────────────────────────────────────┘
┌────────────────────────────────────────┐
│ 描述(可选) │
└────────────────────────────────────────┘
[ 提交已暂存内容 · 3 ]
独立设置页:
← 返回工作区 设置
AI 服务商 │ 搜索服务商 │ DeepSeek [启用]
提交生成 │ OpenAI │ API 地址 [ ]
布局 │ Anthropic │ API Key [•••••••• ]
版本更新 │ Gemini │ [测试连接] [保存配置]
│ DeepSeek ← │
│ │ 模型列表 [获取] [+ 添加]
│ + 自定义服务商 │ deepseek-chat [启用]
参考:
- VS Code:Staging and committing,提交输入框内的 AI 生成按钮
- LobeHub:服务商列表与详情布局
- LobeHub:自定义服务商配置表单
- 关联事项:#8(远端 AI 工具)、#15(主题切换)。