仓库聊天
有些问题,问一句比翻半天更快。令牌刷新到底发生在哪里?这个提交一句话说改了什么? 这个文件为什么存在? 仓库聊天基于当前打开的仓库作答,并给出它所依据的代码行。
它与详情共用右侧栏:顶部的标签在两者之间切换,所以提问时提交图不会丢掉选中项。

它读什么
每个回答分两轮生成。第一轮从仓库自己的已跟踪文件清单里挑出少量路径和字面搜索词。 第二轮只用这些片段作答,并且只能引用这些片段:凭空捏造的文件或行号是校验错误, 而不是听起来合理的答案。
再看一眼。 第一遍只能凭文件名猜哪些文件重要,而“这是从哪里调用的”恰恰是这种 猜测最容易落空的地方。所以一次回答可以反过来提要求,而不是硬猜:它可以再点名一些路径、 再给出一些字面搜索,或指定最近历史里的提交哈希,然后带着这些结果重新提问。这最多发生 两次——每一轮都是一次你要等待的模型调用——最后一轮必须用手头的材料作答。你看到的只是 稍长一点的等待和一个更好的答案。
| 包含 | 不包含 |
|---|---|
| 已跟踪文件,按工作区中的样子 | 未跟踪文件 |
| 已跟踪文件的暂存与未暂存差异 | 命中忽略规则的一切,即便仍被跟踪 |
| 分支、领先/落后、以及变更路径清单 | 疑似机密的文件、二进制文件、生成路径 |
读取工作区意味着你可以讨论尚未提交的修改;同时也意味着提问时这些修改会离开本机, 接收方是你在 AI 功能中配置的提供方。
有一处细节:启用操作提议(见下文“从聊天中运行操作”)后,未跟踪文件的文件名 会包含在仓库状态里——“暂存那个新文件”需要它们——但其内容依旧永不读取。
固定上下文
读什么由模型决定。固定就是推翻这个决定的办法:被固定的内容优先读取,并占据 上下文预算中更大的一份。
四种固定方式,都会进入输入框上方的同一排标签:
| 这样做 | 得到 |
|---|---|
| 点击建议标签 | 查看器中打开的文件,或提交图中选中的提交 |
| 从文件标签页拖一行过来 | 该文件 |
| 从提交图拖一行过来 | 该提交——提交信息,以及按块拆分的差异 |
| + →“选择文件…”,或从访达/资源管理器拖入 | 磁盘上的任意文件,包括仓库之外的 |
标签会为后续提问保持固定;× 移除单个,清空对话则全部移除。上限为八个。
被固定的提交会贡献提交信息和至多十二个差异块。触及被排除路径的块会从该差异中剔除, 而不是丢掉整个提交。
设置
设置 → AI → 仓库聊天:
| 设置 | 作用 |
|---|---|
| 就仓库提问 | 关闭后标签页、工具栏按钮与快捷键目标都会消失,其余 AI 功能照常 |
| 聊天模型 | 只用于聊天的模型。留空则沿用配置档的模型——提问比审查便宜,较小的模型通常够用 |
| 仅已提交的内容 | 基于最后一次提交而非工作区作答,未提交的修改绝不离开本机 |
| 在聊天中提议文件和 Git 操作 | 关闭后聊天回到纯只读:没有操作卡片,也没有批准下拉菜单 |
| 文件只读模式 | 开启后禁止创建、编辑、替换或删除文件,但 Git 操作仍然可用。默认开启 |
| 提议的操作如何运行 | 批准模式——见下文“批准模式”。破坏性操作无论选哪种都会先确认 |
| 允许聊天提议远程操作 | 默认关闭。开启后会加入获取、拉取、推送、创建拉取请求和提交堆栈 |
如果整个 AI 都关闭,聊天也随之消失:不会留下一个无人能应答却仍在邀请提问的面板。
聊天模型也可以在面板顶部提供方名称旁边直接切换——同一个设置,不必打开设置页。
面板标题旁的魔法棒按钮会打开 AI 配置向导——一个引导式流程,为当前仓库生成 助手配置文件(指令、代理、钩子)。见 AI 功能。

处理消息
消息就是普通文本。选中任意部分即可复制,也可以右键点击气泡:复制复制选中 内容,复制消息复制整条消息(回答会以其 Markdown 源文本复制),如果点击落在 链接上,复制链接复制其地址。
链接始终在默认浏览器中打开,绝不会在 Gitcito 内部打开——回答中的 Markdown
链接和你消息里的 https:// 地址都一样。
当消息提到图片时——比如 docs/logo.png 这样的仓库路径,或以图片扩展名结尾的
URL——把鼠标悬停在该处会显示一个小预览。仓库路径从工作树读取;无法解析为可读
图片的提及不会显示任何内容。

从聊天中运行操作
不问事实、改提要求——暂存那些 Markdown 文件,把这个作为修复提交,把构建产物 加进忽略列表——回复就会附带一张操作卡片。空白对话会在开场介绍下方给出几个 示例请求标签;点击其一会填入输入框,发送前还可以编辑。卡片列出助手想执行的具体 步骤,一行一个操作,配有运行与忽略按钮。卡片里的一切都尚未发生;模型只能提议,而且 每个提议在你看到之前都会先对照工作区检查——提到不存在的文件的操作会被直接拒绝, 根本不会显示。


仓库聊天可以提议精确编辑、创建或整体替换文件以及删除文件,随后是 Git 操作:忽略规则、 暂存、取消暂存、提交、贮藏、丢弃、分支、切换、标签,以及——因为分支列表和最近的提交都会 展示给它——merge、rebase、revert 和 cherry-pick。可展开的 diff 由 Gitcito 在本地计算。 现有文件必须来自读过的证据;不安全、含机密、被忽略、生成、二进制、已过期、过大或经符号 链接访问的目标都会被拒绝。reset、重写历史、删除分支以及任何强制操作仍然只留在各自的 专用界面里。
merge 或 rebase 可能停在冲突上。一旦如此,本次执行就停在那里,卡片把该行标记为失败并 保留已执行的计数,冲突横幅接管——与从工具栏发起同一操作时完全一样。
整批文件会在第一次写入前重新验证;任一步失败都会回滚。提交前,Gitcito 还会确认有 已暂存的更改。卡片会标记每项已完成、失败或跳过的操作并保留部分结果。随后,另一次 禁止操作的模型调用只负责总结实际结果。
它也能写 .gitcito.json。 聊天会拿到仓库自己的配置文件的结构,
所以“为 JIRA-1234 这类工单加链接”或“保护 release 分支”会变成一次按真实模式书写的文件
操作,而不是加载器会拒绝的、看起来像那么回事的键。这需要开启文件操作——就是文件只读
模式那个开关。
需要图的行就有图。 一行摘要足以说明“暂存两个文件”,却远远说不清“在一个堆栈上开 四个拉取请求”。因此描述形状的行会把形状画出来:推送要发布的分支以及领先多少、merge 或 rebase 涉及的两个引用、revert 或 cherry-pick 会重放的提交及其标题、拉取请求将有的样子, 以及把堆栈画成一架梯子——标明每一层的基底,以及提交会创建它、改基它,还是原样不动。
会离开本机的操作
获取、拉取、推送、创建拉取请求和提交堆栈 默认关闭,位于 允许聊天提议远程操作 之后。发布工作值得一次明确的选择;开关关闭时,模型甚至不会被告知这些操作的存在——它无法 提议一个再被拒绝,而那正是教人不读说明就打开开关的失败方式。
开启后:
| 操作 | 作用 |
|---|---|
| 获取 / 拉取 | 与工具栏相同的 fetch 与 pull;拉取方式(合并、仅快进、变基)是提议的一部分 |
| 推送 | 把一个分支发布到一个远程。绝不使用 force:强制推送不在提议的词汇表里,因此根本无法被提议 |
| 创建 PR | 针对仓库自己的 origin 创建一个拉取请求,可为草稿。卡片随后保留其链接 |
| 提交堆栈 | 完整的堆栈 PR 提交:推送每一层,为每层创建或改基一个拉取请求,写入导航小节,并注册 GitHub 堆栈 |

被提议的推送会先通过与工具栏推送相同的护栏:受保护分支确认、发布 疑似凭据文件的警告,以及仓库自己的推送前检查清单。它们是对话框,所以在 计划开始之前回答,而不是从计划内部回答。
撤销一个计划
计划是整批批准的,所以也整批撤销。在第一个可能改变什么的操作之前,Gitcito 会记录分支的 位置并给工作区拍一张快照;完成后的卡片随即提供 撤销此计划。它把分支移回那个提交并 恢复工作区,这会丢弃计划产生的一切,因此先确认,并说明要回到哪个提交。它创建的拉取请求 仍然保持打开——本地快照收不回一个远程。
批准模式
输入框下方的盾牌下拉菜单(也在设置 → AI → 仓库聊天中)决定卡片如何运行:
| 模式 | 运行方式 |
|---|---|
| 每次都询问 | 在你按下卡片上的运行之前什么都不做 |
| 自动运行安全操作 | 只由可逆的日常整理组成的提议——暂存、取消暂存、忽略、建分支、打标签——到达即运行;其余仍等按钮 |
| 自动运行所有操作 | 每个提议到达即运行,破坏性操作除外 |
会放弃未提交修改的提议在任何模式下都会先询问,且确认框会列出将丢失的文件。 卡片会汇报实际发生了什么——运行了多少项操作,或是让它们停下的错误——助手也会 得知结果,因此后续提问知道它的计划究竟是执行了还是被忽略了。
让助手修复错误
当某个 Git 操作失败且 AI 聊天可用时,错误提示上会多出一个星光按钮:点击它会打开 聊天,并把失败信息粘贴进输入框,于是“为什么失败、我该怎么办”只需一次点击。草稿 可以编辑——在你按下发送之前什么都不会发出。
它拒绝什么
- 疑似机密的文件永不读取,固定与否都一样:对应标签会带着原因作为“已跳过”返回。 固定不是绕开机密遮蔽的办法。
- 二进制文件与超过 512 KB 的文件来自仓库之外时同样被跳过。仓库之内则适用常规规则。
- 它从不自行写入。模型没有工具,只有文本:改动以提议卡片的形式出现,只在你的 批准规则(见上文“批准模式”)之下运行,破坏性步骤总会先确认。关闭在聊天中提议 Git 操作后,它连提议都不会给出。
- **对话只存在于内存中。**每个仓库各有独立会话;退出 Gitcito 即丢弃。
如何打开
| 按键 | 作用 |
|---|---|
| 工具栏上的对话气泡按钮 | 切换“聊天”标签 |
| ⌘⌥B / Ctrl+Alt+B | 切换整个右侧面板 |
| Enter | 发送消息 |
| Shift+Enter | 插入新行 |
其余内容(包括如何重新绑定面板开关)见键盘与快捷键。