Files
QuiCommit/RAODMAP.md
SidneyZhang c2f914307d feat(ginit): 新增一键初始化本地 Git 仓库命令
`quicommit ginit`(别名 `gi`)离线完成仓库起步:用 git2 建库并确立初始分支、
写最简 README.md、按根目录标志文件装配 .gitignore、按 --add 添加远程,
`--profile` 可选套用已有 Git 配置。在已有仓库上重复执行只补齐缺失项:绝不覆盖
既有的 README.md/.gitignore、绝不改动已有 remote 的地址、不提供 --force、
不创建首个提交。边界取舍见 ADR 0006,命令命名见 ADR 0005。

实现落在新的 src/git/init.rs(9 个 git 层函数)与 src/commands/ginit.rs,
命令层不直接引用 git2,GitRepo 公开接口未改动,其余命令行为不变。
测试:src/git/init.rs 11 条单元测试、tests/ginit_tests.rs 18 条集成测试;
新增 35 个 ginit_* 消息覆盖 7 种语言。

另将 CONTEXT.md 与 docs/adr/ 纳入版本跟踪(.gitignore 放开 adr/ 与
CONTEXT.md 两条忽略规则);RAODMAP.md 除 ginit 条目外还包含此前未提交的
规划条目更新。
2026-10-09 09:36:04 +08:00

9.6 KiB
Raw Blame History

QuiCommit Roadmap

本路线图按「已完成 / 进行中 / 计划中 / 长远规划」四档跟踪功能演进,并为"计划中"条目标注优先级(P0 = 核心必做,P1 = 重要增强,P2 = 探索性方向)。 更新约定:条目完成后请及时勾选并移入"已完成",避免已完成事项长期滞留在"计划中"栏目;新增条目请附带动机说明与优先级。

已完成 ✅

  • 基础 Git 操作(commit、tag、changelog)
  • AI 驱动提交信息生成(Conventional Commits / commitlint 格式)
  • 多 LLM 提供商支持:Ollama、OpenAI、Anthropic、Kimi、DeepSeek、OpenRouter
  • 多 Git Profile 管理(SSH 密钥 + GPG 签名)
  • 语义化版本自动升级与 AI 发布说明
  • Keep a Changelog 格式自动生成
  • 系统密钥环安全存储 API Key
  • 敏感数据加密存储(AES-GCM + Argon2)
  • 交互式 CLI 预览与确认
  • 7 种语言国际化支持
  • 配置导出/导入(支持加密保护)
  • Profile Token 管理(PAT 等)
  • Git 凭证管理器(Credential Helper 协议、Windows/macOS/Linux 跨平台密钥环对接、PAT scope/有效期与过期提醒)
  • DeepSeek 最新模型支持(deepseek-chat / deepseek-reasoner / deepseek-v4)
  • 流式生成的 SSE(Server-Sent Events)基础接入

进行中 🚧

  • quicommit ginit(下方计划中条目 #1):规格与取舍已定稿于 .scratch/ginit/spec.md,并记录 ADR 0005(init 与 ginit 并存)与 ADR 0006(ginit 的产出边界);代码已落到 main,随下一个版本发布后移入「已完成」。

计划中 📋

1. quicommit ginit:一键初始化本地 Git 仓库 P0(🚧 规格已定稿)

动机:目前 QuiCommit 只覆盖"已有仓库"之后的提交、打标签、生成变更日志等场景,缺少"仓库起步"环节——用户需要先手动 git init、准备 README.md 与 .gitignore、创建分支、添加远程,才能开始使用 quicommit commit。ginit 目标是用一条命令完成这套初始化流程。

规格详见 .scratch/ginit/spec.md;边界取舍见 ADR 0006,命令命名见 ADR 0005。

  • 仓库初始化:把当前目录初始化为 Git 仓库,实现走 git2::Repository::init_opts(不 shell out git init,因此不必把 README 承诺的 Git 2.0+ 下限抬高到 2.28)
    • 当前目录已是仓库时跳过建库,但继续补齐下面各项——ginit 是可重复执行的补齐工具
    • 当前目录位于某个外层仓库之内时直接拒绝并报出该外层仓库路径,避免造出嵌套仓库、也避免把远程加到不相干的仓库上
    • 裸仓库跳过建库与文件生成(无工作目录),但仍允许添加远程
    • 不新增 --force:git init 对已存在仓库本就幂等,--force 唯一可能的语义是删 .git 重建,那是销毁用户历史
  • 自动生成 README.md
    • 已存在则逐字节不动
    • 不存在则只写一行 # <目录名>(LF、UTF-8 无 BOM、单个结尾换行、不加"由工具生成"署名,也不放占位段落)
    • 目录名取不到有意义取值(盘根、UNC、.)时跳过并说明
  • 自动生成 .gitignore
    • 已存在则完全跳过,绝不追加(判断"条目是否已覆盖"要匹配 /target、**/target/ 等多种写法,判错就是往用户手工维护的文件里写噪音)
    • 不存在则写入"通用基线 + 命中的 Ecosystem 段"
    • 基线(无条件):build/、dist/、*.log、tmp/、.env、.env.*
    • Ecosystem 段按根目录标志文件命中,多生态取并集,跨段条目去重(保留首次出现)、去重后为空的段整段省略:Rust / Node / Python / Go / Maven / Gradle / Ruby / PHP / Flutter / C/C++
    • 不包含 OS 专属(.DS_Store、Thumbs.db)与 IDE 专属(.vscode/、*.swp)条目;也不照抄本仓库根目录的 .gitignore——它含 # OS、# IDE 两段,并把 Cargo.lock、config.toml、CONTEXT.md、adr/、.claude/ 这类 QuiCommit 开发私货忽略了,只可参考其分节风格
    • Rust 段不忽略 Cargo.lock:新生成的仓库默认应可复现构建
  • Initial branch
    • 优先级:-b / --branch <name> > 全局 init.defaultBranch > main
    • 只在尚不存在任何分支时确立;已有提交的仓库传 -b 时忽略并说明原因(重命名分支归 git branch -m)
  • 添加远程仓库
    • --add <url>(远程名默认 origin)与 --add <name>=<url> 两种形态,--add 可重复传入以一次配好多个远程
    • 远程名已存在时该条添加失败,且不改动现有远程的 URL(覆盖远程地址难以逆转,改地址应由用户显式用 git remote set-url)
    • URL 只校验非空、无空白、含 / 或 :,形态合法性交给 libgit2——严格 URL 校验会误杀 git@host:user/repo.git 这类 scp-like 地址
    • 不调托管平台 API 创建远端仓库、不验证远程可达性、不设置 upstream 跟踪分支:ginit 全程离线
  • 可选的身份配置:--profile <name> 时才把该 GitProfile 应用到新仓库(GitProfile::apply_to_repo)并记录目录→profile 映射;不带该参数时不碰身份、也不创建或改动 config.toml
  • 不创建首个提交:结束后打印逐步汇总与下一步提示(quicommit commit),并在仓库与全局都取不到 user.name / user.email 时明确提示如何补
  • 交互与输出:一个预览块 + 一次确认;--yes 只跳过确认、不改变产出(ADR 0004),--dry-run 磁盘上什么都不发生;输出遵循 ADR 0003 的通道约定;终端文案全部进 7 语言 i18n,生成文件的内容不翻译
  • 失败处理:建库或嵌套仓库冲突立即报错终止;后续单步失败(文件写入、某条远程、profile)记录后继续执行,末尾汇总并以非零码退出,不回滚已写入的文件

2. Agent Skills 技能包完善 P0(新增)

动机:.claude/skills、skills/ 目录下现有内容零散,需要系统化沉淀为可复用的 QuiCommit Agent 技能,让编码助手(Claude、Qoder 等)能够开箱用地安装、调用 QuiCommit。

  • 安装类技能:install-quicommit
    • 指导用户 / Agent 在 Windows / macOS / Linux 上安装 QuiCommit:Cargo 安装、预编译二进制、源码构建等途径
    • 覆盖首次运行前的环境依赖检查(Git、系统密钥环服务等)
  • 使用指导类技能:use-quicommit
    • 面向 Agent 的命令速查与调用范式:commit / tag / changelog / config / profile / credential,以及新增的 ginit
    • 说明各命令的输入前提(如需要先 quicommit init 配置 LLM Provider)、典型输出与常见失败排查
  • 技能内容规范
    • 统一采用 SKILL.md 结构(触发场景 / 使用方式 / 注意事项),与 .claude/skills 现有约定保持一致
    • 技能内示例命令、参数需要与 src/commands/ 的实际实现保持同步,避免文档漂移
  • 发布与复用
    • 评估随 crate 发布(打包进 skills/)还是通过独立仓库 / 技能市场分发

3. 新增模型支持 P1

扩展 LLM 提供商和模型覆盖范围,满足更多场景和偏好。

  • 新增国内模型提供商
    • 通义千问 (Qwen) — 阿里云 DashScope API
    • 文心一言 (ERNIE) — 百度千帆 API
    • 智谱 GLM — ChatGLM API
    • 百川 (Baichuan) — Baichuan API
  • 新增国际模型提供商
    • Google Gemini API
    • Mistral AI API
    • Cohere API
    • Groq (LPU 推理加速)
  • 本地模型扩展
    • 支持 llama.cpp 服务端(兼容 OpenAI API 格式)
    • 支持 vLLM 部署的模型
    • 本地模型推荐列表与一键配置向导
  • 模型能力适配
    • 不同模型的 token 限制自适应
    • 模型特定的 prompt 模板优化
    • 支持 function calling / tool use(用于复杂生成场景)

4. 生成体验优化 P1

提升 AI 生成提交信息、标签说明和变更日志时的用户体验。

  • 流式输出与实时反馈
    • 终端打字机效果实时显示生成内容
    • 流式生成过程中支持 Ctrl+C 中断
  • 生成质量提升
    • 基于 commitlint 规则的后校验与自动修正
    • 支持 Few-shot 示例引导(用户可自定义示例库)
    • 生成结果的置信度评分与多候选方案
  • Diff 上下文增强
    • 智能 diff 摘要(大改动时自动压缩关键信息)
    • 支持 .gitattributes 排除 / 包含规则
    • 按文件类型分组生成更精准的提交描述
  • 交互式编辑增强
    • 生成后支持内联编辑(类似 git rebase -i 体验)
    • 支持重新生成指定部分(如 scope、description)
    • 历史提交信息学习与风格适配
  • 批量操作支持
    • 批量生成多个 commit(分组暂存区变更)
    • --dry-run 预览模式(只生成本地查看,不写 Git)
  • 性能优化
    • API 请求并发优化(多个模型同时生成候选)
    • 本地缓存常用 prompt 模板
    • 减少不必要的 diff 计算

长远规划 🌟

  • VS Code 扩展 — 在 IDE 内直接使用 QuiCommit
  • GitHub Action / GitLab CI 集成 — 自动化 PR 标题和描述生成
  • 团队协作 — 共享 commit 风格配置、prompt 模板库
  • Web Dashboard — 可视化管理多仓库的 Git 活动与 AI 生成统计
  • 插件系统 — 允许社区贡献自定义 LLM 提供商和生成策略