From 32e5ab138c0fb7e9ca43399aff3b3d2b6d385b5c Mon Sep 17 00:00:00 2001
From: ThreeFish
Date: Fri, 10 Jul 2026 22:43:02 +0800
Subject: [PATCH 1/2] =?UTF-8?q?feat(ClaudeCode):=20=E6=96=B0=E5=A2=9E=20Cl?=
=?UTF-8?q?aude=20Code=20=E5=8F=AF=E6=89=A7=E8=A1=8C=E8=B7=AF=E5=BE=84?=
=?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=8E=E8=AE=BE=E7=BD=AE=E6=96=87=E4=BB=B6?=
=?UTF-8?q?=E5=BF=AB=E6=8D=B7=E5=85=A5=E5=8F=A3(Agentic=20Git=20=E9=A2=84?=
=?UTF-8?q?=E7=BD=AE);?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
为 M5 AI 接缝铺路,新增两项 Claude Code 相关配置,仅承载「配置 + 快捷入口」,
agent/ 五接缝与 hyperGit.ai.enabled 行为不变、零破坏:
- 设置项 hyperGit.claudeCode.executablePath:Claude Code CLI 可执行路径,
留空=从 PATH 自动探测 claude;markdownDescription 内嵌 command: 链接就地
提供「浏览 / 打开 Claude 设置」。
- 命令 hyperGit.setClaudeCodePath:QuickPick(Browse 文件选择器写回 /
Use system Claude Code 清空覆盖)。
- 命令 hyperGit.openClaudeSettings:打开 ~/.claude/settings.json,缺失时经
用户确认后创建 {}。
采用原生设置 + 命令承载(零新增 Webview 面板);路径解析下沉纯函数
engine/agent/claude-path.ts(Vitest 可测),命令实现复用 misc-commands 范式。
check-types / lint / 372 单元测试全绿。
🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang
---
package.json | 17 +++++++
src/adapter/claude-commands.ts | 85 +++++++++++++++++++++++++++++++++
src/engine/agent/claude-path.ts | 12 +++++
src/extension.ts | 2 +
tests/unit/claude-path.test.ts | 20 ++++++++
5 files changed, 136 insertions(+)
create mode 100644 src/adapter/claude-commands.ts
create mode 100644 src/engine/agent/claude-path.ts
create mode 100644 tests/unit/claude-path.test.ts
diff --git a/package.json b/package.json
index de2f90a..0bc0767 100644
--- a/package.json
+++ b/package.json
@@ -467,6 +467,18 @@
"category": "Hyper Git",
"icon": "$(output)"
},
+ {
+ "command": "hyperGit.setClaudeCodePath",
+ "title": "Set Claude Code Executable Path…",
+ "category": "Hyper Git",
+ "icon": "$(folder-opened)"
+ },
+ {
+ "command": "hyperGit.openClaudeSettings",
+ "title": "Open Claude Settings",
+ "category": "Hyper Git",
+ "icon": "$(gear)"
+ },
{
"command": "hyperGit.partialStage",
"title": "Stage Hunk…",
@@ -1215,6 +1227,11 @@
"default": false,
"markdownDescription": "Enable AI agent capabilities (currently reserved as an architectural seam; not yet active)."
},
+ "hyperGit.claudeCode.executablePath": {
+ "type": "string",
+ "default": "",
+ "markdownDescription": "Path to the Claude Code CLI executable used by Hyper Git's Agentic Git features. Leave empty to auto-detect the `claude` binary from your `PATH` (recommended).\n\n[Browse for executable…](command:hyperGit.setClaudeCodePath) · [Open Claude settings (`~/.claude/settings.json`)](command:hyperGit.openClaudeSettings)"
+ },
"hyperGit.log.ci.enabled": {
"type": "boolean",
"default": true,
diff --git a/src/adapter/claude-commands.ts b/src/adapter/claude-commands.ts
new file mode 100644
index 0000000..73a542a
--- /dev/null
+++ b/src/adapter/claude-commands.ts
@@ -0,0 +1,85 @@
+import * as fs from 'fs';
+import * as os from 'os';
+import * as path from 'path';
+import * as vscode from 'vscode';
+import { defaultClaudeSettingsPath } from '../engine/agent/claude-path';
+
+const errMsg = (e: unknown): string => (e instanceof Error ? e.message : String(e));
+
+/**
+ * Claude Code 配置命令(Agentic Git pre-M5 预置)。
+ *
+ * - Set Claude Code Executable Path…:QuickPick「浏览可执行文件」/「Use system Claude Code(清空覆盖)」,
+ * 写回 `hyperGit.claudeCode.executablePath`(全局作用域)。
+ * - Open Claude Settings:打开 `~/.claude/settings.json`;不存在时经用户确认后创建(写入 `{}`)。
+ *
+ * 说明:此处仅落地配置与快捷入口,真正的 Claude Code 调用留待 M5 AI 接缝(`agent/`)实装。
+ */
+export function registerClaudeCommands(): vscode.Disposable[] {
+ const subs: vscode.Disposable[] = [];
+
+ subs.push(
+ vscode.commands.registerCommand('hyperGit.setClaudeCodePath', async () => {
+ type Item = vscode.QuickPickItem & { id: 'browse' | 'system' };
+ const pick = await vscode.window.showQuickPick- (
+ [
+ { id: 'browse', label: '$(folder-opened) Browse for executable…' },
+ {
+ id: 'system',
+ label: '$(discard) Use system Claude Code',
+ description: 'Clear the override and auto-detect from PATH',
+ },
+ ],
+ { placeHolder: 'Configure the Claude Code executable used by Hyper Git' },
+ );
+ if (!pick) {
+ return;
+ }
+ const config = vscode.workspace.getConfiguration('hyperGit.claudeCode');
+ if (pick.id === 'system') {
+ await config.update('executablePath', '', vscode.ConfigurationTarget.Global);
+ void vscode.window.showInformationMessage(
+ 'Hyper Git will use the system Claude Code (auto-detected from PATH).',
+ );
+ return;
+ }
+ const sel = await vscode.window.showOpenDialog({
+ canSelectMany: false,
+ canSelectFiles: true,
+ canSelectFolders: false,
+ title: 'Select the Claude Code executable',
+ });
+ if (!sel?.[0]) {
+ return;
+ }
+ await config.update('executablePath', sel[0].fsPath, vscode.ConfigurationTarget.Global);
+ void vscode.window.showInformationMessage(`Claude Code executable set to: ${sel[0].fsPath}`);
+ }),
+ );
+
+ subs.push(
+ vscode.commands.registerCommand('hyperGit.openClaudeSettings', async () => {
+ const filePath = defaultClaudeSettingsPath(os.homedir());
+ try {
+ if (!fs.existsSync(filePath)) {
+ const choice = await vscode.window.showInformationMessage(
+ `${filePath} does not exist. Create it?`,
+ { modal: true },
+ 'Create',
+ );
+ if (choice !== 'Create') {
+ return;
+ }
+ await fs.promises.mkdir(path.dirname(filePath), { recursive: true });
+ await fs.promises.writeFile(filePath, '{}\n', 'utf8');
+ }
+ const doc = await vscode.workspace.openTextDocument(vscode.Uri.file(filePath));
+ await vscode.window.showTextDocument(doc);
+ } catch (e) {
+ void vscode.window.showErrorMessage(`Failed to open Claude settings: ${errMsg(e)}`);
+ }
+ }),
+ );
+
+ return subs;
+}
diff --git a/src/engine/agent/claude-path.ts b/src/engine/agent/claude-path.ts
new file mode 100644
index 0000000..391a4a5
--- /dev/null
+++ b/src/engine/agent/claude-path.ts
@@ -0,0 +1,12 @@
+import * as path from 'path';
+
+/**
+ * Claude Code 相关路径的纯逻辑(零 vscode 依赖,Vitest 可测)。
+ *
+ * home 由调用方(adapter 层,`os.homedir()`)注入,保持函数确定性与跨平台正确性。
+ */
+
+/** Claude Code 用户设置文件(`~/.claude/settings.json`)的绝对路径。 */
+export function defaultClaudeSettingsPath(home: string): string {
+ return path.join(home, '.claude', 'settings.json');
+}
diff --git a/src/extension.ts b/src/extension.ts
index 901e74d..9f25bb8 100644
--- a/src/extension.ts
+++ b/src/extension.ts
@@ -27,6 +27,7 @@ import { ShelfService, ShelfTreeProvider, registerShelfCommands } from './adapte
import { RebaseWebview } from './adapter/webview/rebase-webview';
import { registerMergeCommands } from './adapter/webview/merge-editor';
import { registerMiscCommands } from './adapter/misc-commands';
+import { registerClaudeCommands } from './adapter/claude-commands';
import { getGitApi } from './adapter/git-api';
import { GitRepositoryService } from './adapter/git-repository-service';
import { GitHubAuth } from './adapter/ci/github-auth';
@@ -152,6 +153,7 @@ export async function activate(context: vscode.ExtensionContext): Promise
...registerRemoteCommands(service, branchesTree, logTree),
...registerMergeCommands(service),
...registerMiscCommands(service, branchesTree, logTree),
+ ...registerClaudeCommands(),
vscode.commands.registerCommand('hyperGit.toggleBlameAnnotation', () => blame.toggle()),
vscode.commands.registerCommand('hyperGit.branchesGroupByPrefix', () => applyBranchesGrouping(true)),
vscode.commands.registerCommand('hyperGit.branchesFlatten', () => applyBranchesGrouping(false)),
diff --git a/tests/unit/claude-path.test.ts b/tests/unit/claude-path.test.ts
new file mode 100644
index 0000000..59e2348
--- /dev/null
+++ b/tests/unit/claude-path.test.ts
@@ -0,0 +1,20 @@
+import * as path from 'path';
+import { describe, it, expect } from 'vitest';
+import { defaultClaudeSettingsPath } from '../../src/engine/agent/claude-path';
+
+describe('claude-path', () => {
+ it('拼接 /.claude/settings.json', () => {
+ const home = path.join(path.sep, 'Users', 'x');
+ expect(defaultClaudeSettingsPath(home)).toBe(path.join(home, '.claude', 'settings.json'));
+ });
+
+ it('以 .claude/settings.json 结尾(跨平台分隔符)', () => {
+ const result = defaultClaudeSettingsPath(path.join(path.sep, 'home', 'dev'));
+ expect(result.endsWith(path.join('.claude', 'settings.json'))).toBe(true);
+ });
+
+ it('绝对路径以 home 为前缀', () => {
+ const home = path.join(path.sep, 'root');
+ expect(defaultClaudeSettingsPath(home).startsWith(home)).toBe(true);
+ });
+});
From 3bedb8dd9e1f1d32279801ef75c990eb02e8936b Mon Sep 17 00:00:00 2001
From: ThreeFish
Date: Fri, 10 Jul 2026 22:43:13 +0800
Subject: [PATCH 2/2] =?UTF-8?q?docs(ClaudeCode):=20=E6=96=B0=E5=A2=9E=20Cl?=
=?UTF-8?q?aude=20Code=20=E9=85=8D=E7=BD=AE=E5=8A=9F=E8=83=BD=E6=96=87?=
=?UTF-8?q?=E6=A1=A3=E5=B9=B6=E5=90=8C=E6=AD=A5=E8=AE=BE=E8=AE=A1/?=
=?UTF-8?q?=E6=8C=87=E5=BC=95=E6=96=87=E6=A1=A3=E4=B8=8E=E6=8C=87=E6=A0=87?=
=?UTF-8?q?=E6=A0=A1=E5=87=86;?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 新增功能文档 docs/features/claude-code-config.md(效果/设计 Mermaid/配置表/
命令表/实现/与 Agentic Git 关系/验证),并登记至文档中心与知识索引。
- README 双语指标校准为实际值(6 视图 · 101 命令 · 7 配置项 · 372 单元测试;
此前 97 命令 / 324 测试已滞后 HEAD),并在 AI 接缝段补 pre-M5 铺垫说明。
- 设计文档就近最小同步:engineering-plan §6、implementation-status §5、
05-ai-agent-seams §阶段1 均补 pre-M5 已落地注记(不做 sofia.* 全量改名)。
- CHANGELOG Unreleased 补 Added 条目。
🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang
---
CHANGELOG.md | 1 +
README.md | 4 +-
docs/.agents/knowledge-map.md | 1 +
docs/README.md | 1 +
docs/architecture/engineering-plan.md | 2 +
docs/features/claude-code-config.md | 76 ++++++++++++++++++++++++
docs/i18n/zh-CN/README.md | 4 +-
docs/milestones/implementation-status.md | 2 +
docs/research/05-ai-agent-seams.md | 1 +
9 files changed, 88 insertions(+), 4 deletions(-)
create mode 100644 docs/features/claude-code-config.md
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 29bd7b3..dd1b997 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,7 @@
### Added
+- **Claude Code 配置(Agentic Git 预置)**:新增两项与 Claude Code 相关的配置为 M5 [AI 接缝](./docs/research/05-ai-agent-seams.md) 铺路——① 设置项 `hyperGit.claudeCode.executablePath`(Claude Code CLI 可执行路径,**留空=从 `PATH` 自动探测 `claude`**;描述内嵌 `command:` 链接就地提供「浏览 / 打开 Claude 设置」);② 命令 `hyperGit.setClaudeCodePath`(QuickPick:Browse 文件选择器写回 / **Use system Claude Code** 清空覆盖)与 `hyperGit.openClaudeSettings`(打开 `~/.claude/settings.json`,缺失时经确认创建 `{}`)。采用**原生设置 + 命令**承载(零新增 Webview 面板),路径解析下沉纯函数 [`engine/agent/claude-path.ts`](./src/engine/agent/claude-path.ts)(Vitest 可测),命令实现见 [`adapter/claude-commands.ts`](./src/adapter/claude-commands.ts)。**仅落地配置与快捷入口**,`agent/` 五接缝与 `hyperGit.ai.enabled` 行为不变、零破坏。同步校正 README 指标行(`6 视图 · 101 命令 · 7 配置项 · 372 单元测试`,此前 `97 命令 / 324 测试` 已滞后 HEAD)。完整叙述见 [Claude Code 配置](./docs/features/claude-code-config.md)。
- **Branches 视图按 `/` 前缀分组为文件夹树**:Local / Remote / Tags 三段支持在**平铺**与**按 `/` 前缀分组的可折叠文件夹树**间切换——共享前缀的分支收拢到以前缀命名的文件夹下、叶子仅显示末段后缀(如 `bak/2025`、`bak/master-2025-07` → 📁`bak` → `2025` / `master-2025-07`;远程整体收拢为 `origin` 文件夹并内嵌 `feature`)。新增纯逻辑引擎 [`buildRefTree`](./src/engine/ref/ref-tree.ts)(复用「变更文件目录树」`buildFileTree` 的 trie 构建 + compact 折叠范式;叶子携完整 `RawRef`、命令定位不受影响;分支感知排序:当前 HEAD → 收藏 → 同档文件夹优先、名称数字感知升序),并**隐藏 `origin/HEAD` 符号引用**(对齐主流 Git UI,消除 `origin` 叶子与 `origin` 文件夹同名冲突)。工具栏提供「平铺 ⇄ 树」切换(`hyperGit.branchesGroupByPrefix` / `hyperGit.branchesFlatten`,context key 驱动按钮互斥),偏好按仓库持久化于 `workspaceState`(默认树形),文件夹默认展开、展开态跨刷新稳定。文件夹节点用独立 `contextValue` 且不登记任何右键命令,checkout / delete / rename / merge / rebase / compare / favorite 与多选批量均零改动、零破坏。完整叙述见 [分支前缀分组树](./docs/features/branch-tree-group-by-prefix.md)。
## [0.0.14] - 2026-07-06 — 修复 GRAPH 视图提交记录时间倒序
diff --git a/README.md b/README.md
index a47c513..dea9a6b 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@
English · 简体中文
-6 views · 97 commands · 6 settings · 324 unit tests
+6 views · 101 commands · 7 settings · 372 unit tests
## Features
@@ -40,7 +40,7 @@
- **Consumes** the stable `Repository` API exported by the built-in `vscode.git` extension as its Git foundation, rather than rebuilding a Git state machine.
- **Controlled CLI channel**: capabilities the stable API does not cover (cherry-pick / revert / reset / branch rename / hunk staging / stash listing / graph topology / shelf, etc.) run through `GitRepositoryService.execGit`, reusing the same Git binary (`api.git.path`).
- **Hand-rendered views** carry the full change-management UI (webviews live under `adapter/webview/`); pure logic is distilled into `engine/` (zero `vscode` dependency, unit-testable).
-- **AI seams**: 5 interfaces (`ILlmProvider` / `ICommitMessageProvider` / `IPreCommitInspector` / `IChangelistGrouper` / `IConflictResolver`) are reserved (design inspired by JetBrains' `CheckinHandler` commit lifecycle), currently shipped as Null implementations; the full implementation is deferred to M5.
+- **AI seams**: 5 interfaces (`ILlmProvider` / `ICommitMessageProvider` / `IPreCommitInspector` / `IChangelistGrouper` / `IConflictResolver`) are reserved (design inspired by JetBrains' `CheckinHandler` commit lifecycle), currently shipped as Null implementations; the full implementation is deferred to M5. As pre-M5 groundwork, a **Claude Code executable path** setting (`hyperGit.claudeCode.executablePath`) and a **`~/.claude/settings.json` shortcut** are already configurable — see [Claude Code configuration](./docs/features/claude-code-config.md).
diff --git a/docs/.agents/knowledge-map.md b/docs/.agents/knowledge-map.md
index bf32110..d2621a8 100644
--- a/docs/.agents/knowledge-map.md
+++ b/docs/.agents/knowledge-map.md
@@ -22,6 +22,7 @@
- [变更文件目录树](../docs/features/file-list-group-by-directory.md) — Commit / Log 文件列表「平铺 ⇄ 按目录分组」切换:host 侧 `buildFileTree` 构树下发、compact 折叠、目录三态。
- [分支前缀分组树](../docs/features/branch-tree-group-by-prefix.md) — Branches 视图 Local/Remote/Tags「平铺 ⇄ 按 `/` 前缀分组」切换:`buildRefTree` 构树、分支感知排序、compact 折叠、隐藏 `origin/HEAD`、按仓库持久化。
- [Log 提交悬浮详情](../docs/features/log-commit-tooltip.md) — 悬停提交行浮层展示 分支/标签/HEAD/完整消息/作者·提交者/时间/SHA;复用 CI 浮层范式、与其互斥。
+- [Claude Code 配置](../docs/features/claude-code-config.md) — Agentic Git 预置:`hyperGit.claudeCode.executablePath` 设置 + `~/.claude/settings.json` 快捷入口(原生设置 + 命令;纯路径逻辑沉淀 `engine/agent/`)。
- [实施状态总览](../docs/milestones/implementation-status.md) — M0-M5 交付记录 + API 限制 + M5 AI 设计 + 验证/发布(**实施看板**)。
- [工程实施方案](../docs/architecture/engineering-plan.md) — 路径 B 架构 + M0-M5 里程碑(**开发蓝图**)。
- [Git 功能矩阵](../docs/requirements/idea-feature-matrix.md) — 56 功能点 / 8 组(**验收基线**,参考 IDEA 等成熟实现)。
diff --git a/docs/README.md b/docs/README.md
index 924fb82..774651e 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -9,6 +9,7 @@
## 功能文档
- [Log 视图 CI 状态](./features/log-ci-status.md) — 按提交显示 GitHub CI 最终状态(绿勾/红叉 + 悬停 Tooltip 明细):认证、限流、懒加载、边界与配置。
+- [Claude Code 配置](./features/claude-code-config.md) — Agentic Git 预置:Claude Code 可执行路径设置 + `~/.claude/settings.json` 快捷入口(原生设置 + 命令;M5 前置铺垫)。
## 发布说明
- [Release Notes 目录](./releases/README.md) — 各正式版发布说明(GitHub Release 正文单一事实源);最新:[v0.0.14 修复 GRAPH 视图提交记录时间倒序](./releases/v0.0.14.md)。
diff --git a/docs/architecture/engineering-plan.md b/docs/architecture/engineering-plan.md
index 5a9c28d..852d392 100644
--- a/docs/architecture/engineering-plan.md
+++ b/docs/architecture/engineering-plan.md
@@ -226,6 +226,8 @@ hyper-git/
**Commit 流水线 hook 注入点**(M2 即建责任链,默认 Null hooks):
`staged diff → [Hook A: 提交信息生成] → message 定稿 → [Hook B: 提交前检查链=beforeCheckin] → [Hook C: 分组校验] → commit → [Hook D: checkinSuccessful] → push → [Hook E: checkinFailed→Hook F: 冲突解决]`
+**pre-M5 已落地(配置铺垫)**:新增 `hyperGit.claudeCode.executablePath`(Claude Code CLI 路径,留空=`PATH` 自动探测)与 `Open Claude Settings`(`~/.claude/settings.json` 快捷入口)两项配置——仅承载「配置 + 快捷入口」,接缝仍 Null、`hyperGit.ai.enabled` 行为不变;M5 时 `ILlmProvider` 等将读取该路径定位 CLI。详见 [Claude Code 配置](../features/claude-code-config.md)。
+
---
## 7. CI/CD 与发布策略
diff --git a/docs/features/claude-code-config.md b/docs/features/claude-code-config.md
new file mode 100644
index 0000000..d5ea4e3
--- /dev/null
+++ b/docs/features/claude-code-config.md
@@ -0,0 +1,76 @@
+# Claude Code 配置(可执行路径 · Claude 设置快捷入口)
+
+> 为 **Agentic Git**(M5 AI Agent 能力)预置的两项 Claude Code 相关配置:
+> **可执行路径**——指定自定义的 Claude Code CLI 二进制(留空则从 `PATH` 自动探测 `claude`);
+> **Claude 设置**——一键打开用户级配置文件 `~/.claude/settings.json`。
+> 本次仅落地「配置项 + 快捷入口」;真正的 Claude Code 调用留待 M5 [AI 接缝](../research/05-ai-agent-seams.md) 实装,当前 `agent/` 五接缝仍为 Null 实现、`hyperGit.ai.enabled` 行为不变。
+
+## 效果
+
+- **设置界面**:`设置 → 搜索 hyperGit.claudeCode` 可见「Claude Code executable path」文本框,占位示例 `/opt/homebrew/bin/claude`;描述内嵌两条可点击命令链接(`Browse for executable…` / `Open Claude settings`),在设置页内就地复现「浏览文件夹」与「打开 Claude 设置」两个动作。
+- **命令面板**:`Hyper Git: Set Claude Code Executable Path…` 与 `Hyper Git: Open Claude Settings` 亦可直接调用。
+
+## 设计
+
+采用**原生 VS Code 设置 + 命令**承载(与仓库既有 7 项配置一致,零新增 Webview 面板;符合最小干预 / 复用驱动)。路径解析下沉为纯函数(engine 层,可单测),adapter 层仅注入 `os.homedir()` 并触碰 vscode API。
+
+```mermaid
+flowchart LR
+ subgraph UI["设置界面 / 命令面板"]
+ S["hyperGit.claudeCode.executablePath\n(string, 默认空 = PATH 自动探测)"]
+ C1["cmd: setClaudeCodePath"]
+ C2["cmd: openClaudeSettings"]
+ end
+ subgraph Adapter["adapter/claude-commands.ts(唯一触 vscode)"]
+ Q["QuickPick\nBrowse… / Use system"]
+ O["existsSync?\n缺失→确认→mkdir+写{}"]
+ end
+ subgraph Engine["engine/agent/claude-path.ts(纯函数,可单测)"]
+ P["defaultClaudeSettingsPath(home)\n→ <home>/.claude/settings.json"]
+ end
+ S -. "markdownDescription 命令链接" .-> C1
+ S -. "markdownDescription 命令链接" .-> C2
+ C1 --> Q
+ Q -->|Browse| S
+ Q -->|Use system| S
+ C2 --> O
+ O --> P
+ O --> D["openTextDocument + showTextDocument"]
+ style S fill:#1f6feb,color:#fff
+ style P fill:#238636,color:#fff
+ style O fill:#8957e5,color:#fff
+ style Q fill:#d29922,color:#000
+```
+
+## 配置
+
+| 键 | 类型 | 默认 | 说明 |
+|---|---|---|---|
+| `hyperGit.claudeCode.executablePath` | `string` | `""` | Agentic Git 使用的 Claude Code CLI 可执行路径;**留空 = 从 `PATH` 自动探测 `claude`(推荐)**。可经 `Set Claude Code Executable Path…` 命令浏览设置或清空。 |
+
+## 命令
+
+| 命令 | 标题 | 行为 |
+|---|---|---|
+| `hyperGit.setClaudeCodePath` | Set Claude Code Executable Path… | QuickPick:**Browse for executable…**(文件选择器写回设置) / **Use system Claude Code**(清空覆盖,回退 `PATH` 自动探测)。 |
+| `hyperGit.openClaudeSettings` | Open Claude Settings | 打开 `~/.claude/settings.json`;**文件不存在时经用户确认后创建**(`mkdir -p` + 写入 `{}`),随后在编辑器打开。 |
+
+## 实现
+
+- 纯逻辑(Vitest 可测):[`engine/agent/claude-path.ts`](../../src/engine/agent/claude-path.ts) — `defaultClaudeSettingsPath(home)` 跨平台拼接路径(`home` 由调用方注入,函数确定性)。
+- 适配层(唯一触 vscode):[`adapter/claude-commands.ts`](../../src/adapter/claude-commands.ts) — `registerClaudeCommands()`,复用 `misc-commands.ts` 的 `showOpenDialog` / `openTextDocument` / 错误处理范式。
+- 装配:[`extension.ts`](../../src/extension.ts) — 命令注册块追加 `...registerClaudeCommands()`。
+- 契约:[`package.json`](../../package.json) — `contributes.configuration`(新增设置项)+ `contributes.commands`(两条命令)。
+- 测试:[`tests/unit/claude-path.test.ts`](../../tests/unit/claude-path.test.ts)。
+
+## 与 Agentic Git 的关系
+
+本特性是 M5 的**预置铺垫(pre-M5 groundwork)**:仅提供配置与快捷入口,不改变现有行为——`agent/` 五接缝(`ILlmProvider` 等)仍 Null 实现、`hyperGit.ai.enabled` 仍仅占位。待 M5 启动,`ILlmProvider` / 提交信息生成等接缝将读取 `hyperGit.claudeCode.executablePath` 定位 CLI 并实装真实能力。相关设计见 [AI Agent 架构预留](../research/05-ai-agent-seams.md) 与 [实施状态总览](../milestones/implementation-status.md)。
+
+## 验证
+
+1. `pnpm run check-types` + `pnpm run lint` + `pnpm run test:unit`(含 `tests/unit/claude-path.test.ts`)全绿。
+2. Extension Development Host(F5):
+ - `设置` 搜索 `hyperGit.claudeCode` → 见新设置及两条内嵌命令链接;点击 `Browse…` 弹文件选择、点击 `Open Claude settings` 可跳转。
+ - 命令面板 `Set Claude Code Executable Path…` → Browse 写入路径 / Use system 清空,设置值随之变化。
+ - 命令面板 `Open Claude Settings`:文件已存在→直接打开;不存在→确认后创建 `{}` 并打开;取消则不创建。
diff --git a/docs/i18n/zh-CN/README.md b/docs/i18n/zh-CN/README.md
index 317f1b9..c63ed2f 100644
--- a/docs/i18n/zh-CN/README.md
+++ b/docs/i18n/zh-CN/README.md
@@ -16,7 +16,7 @@
English · 简体中文
-6 视图 · 97 命令 · 6 配置项 · 324 单元测试
+6 视图 · 101 命令 · 7 配置项 · 372 单元测试
## 核心能力
@@ -40,7 +40,7 @@
- **消费** 内置 `vscode.git` 导出的稳定 `Repository` API 作为 git 底座,不重造 git 状态机。
- **受控 CLI 通道**:稳定 API 未覆盖的能力(cherry-pick / revert / reset / 分支重命名 / hunk 暂存 / stash 列表 / graph 拓扑 / shelf 等)经 `GitRepositoryService.execGit` 复用同一 git 二进制(`api.git.path`)实现。
- **自绘视图** 承载完整的变更管理 UI(Webview 位于 `adapter/webview/`);纯逻辑沉淀于 `engine/`(零 vscode 依赖、可单测)。
-- **AI 接缝**:预留 `ILlmProvider` / `ICommitMessageProvider` / `IPreCommitInspector` / `IChangelistGrouper` / `IConflictResolver` 共 5 个接口(设计参考 JetBrains `CheckinHandler` 提交生命周期),当前以 Null 实现交付,完整实现延后至 M5。
+- **AI 接缝**:预留 `ILlmProvider` / `ICommitMessageProvider` / `IPreCommitInspector` / `IChangelistGrouper` / `IConflictResolver` 共 5 个接口(设计参考 JetBrains `CheckinHandler` 提交生命周期),当前以 Null 实现交付,完整实现延后至 M5。作为 M5 前置铺垫,已可配置 **Claude Code 可执行路径**(`hyperGit.claudeCode.executablePath`)与 **`~/.claude/settings.json` 快捷入口**——详见 [Claude Code 配置](../../features/claude-code-config.md)。
diff --git a/docs/milestones/implementation-status.md b/docs/milestones/implementation-status.md
index 6e889d7..5282ee0 100644
--- a/docs/milestones/implementation-status.md
+++ b/docs/milestones/implementation-status.md
@@ -96,6 +96,8 @@
**M5 启动前置**:`engines.vscode` 上调以支持 LM/Chat API;opt-in 配置开关;模型来源可切换。
+**pre-M5 已落地(配置铺垫)**:`hyperGit.claudeCode.executablePath`(Claude Code CLI 路径,留空=`PATH` 自动探测)+ `Open Claude Settings`(`~/.claude/settings.json` 快捷入口)两项配置已交付——仅承载配置与快捷入口,接缝仍 Null、`hyperGit.ai.enabled` 行为不变。详见 [Claude Code 配置](../features/claude-code-config.md)。
+
## 6. 验证体系
- **单元测试(Vitest,< 1s)**:engine/ 纯逻辑(scm-mapping、changelist-grouper、commit-pipeline、conventional-linter、git-status-map、conventional-check)+ CommitService.executeCommit(mock Repository,7 分支)。共 45 项。
diff --git a/docs/research/05-ai-agent-seams.md b/docs/research/05-ai-agent-seams.md
index 629f4a6..5810968 100644
--- a/docs/research/05-ai-agent-seams.md
+++ b/docs/research/05-ai-agent-seams.md
@@ -203,6 +203,7 @@ flowchart TD
### 阶段 1:可选 AI 期——**配置开关 + 模型来源可切换**
- 新增配置:`sofia.ai.enabled`(总开关)、`sofia.ai.modelSource`(`vscodeLM` | `byok` | `openaiCompatible`)、`sofia.ai.commitMessage.enabled` 等细粒度开关。
+ > 事实校准:实际产品命名空间为 `hyperGit.*`(本文 `sofia.*` 为改名前的历史草案,全量收敛另议)。**首个落地的 pre-M5 配置**为 `hyperGit.claudeCode.executablePath`(Claude Code CLI 路径)——属「CLI 后端定位」,与此处的「模型来源(`modelSource`)」接缝正交;详见 [Claude Code 配置](../features/claude-code-config.md)。
- `ILlmProvider` 按 `modelSource` 路由:
- `vscodeLM`:走 `vscode.lm.selectChatModels`([LM API](https://code.visualstudio.com/api/extension-guides/ai/language-model))——需 Copilot 订阅 + 用户 consent。
- `byok`:走 BYOK/Ollama([Provider API](https://code.visualstudio.com/api/extension-guides/ai/language-model-chat-provider))——**本地化、不强依赖云端、企业友好**。