From b20f9169433a1929b93151e005be5c8aa3fac581 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 00:19:19 +0800 Subject: [PATCH 01/23] =?UTF-8?q?docs:=20=E4=BF=AE=E5=A4=8D=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=B7=A1=E6=A3=80=E5=8F=91=E7=8E=B0=E7=9A=84=204=20?= =?UTF-8?q?=E5=A4=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - daemon.md: 反映实际实现状态(supervisor/worker 已实现而非 stub) - bridge-mode.md: API 操作数量从 7 修正为 9 - web-search-tool.md: 文件路径从 src/tools/ 修正为 packages/builtin-tools/src/tools/ - remote-control-self-hosting.md: 补充缺失的 RCS_WS_IDLE_TIMEOUT 和 RCS_WS_KEEPALIVE_INTERVAL 配置项 Co-Authored-By: Claude Opus 4.6 --- docs/features/acp-link.md | 6 +- docs/features/bridge-mode.md | 2 +- docs/features/daemon.md | 97 +++++++++++--------- docs/features/remote-control-self-hosting.md | 5 +- docs/features/web-search-tool.md | 38 ++++---- 5 files changed, 80 insertions(+), 68 deletions(-) diff --git a/docs/features/acp-link.md b/docs/features/acp-link.md index 1cc0ebf8dd..7733507aff 100644 --- a/docs/features/acp-link.md +++ b/docs/features/acp-link.md @@ -127,7 +127,6 @@ acp-link 支持将 ACP agent 注册到 Remote Control Server,通过 Web UI 远 # 通过环境变量配置 RCS 连接 ACP_RCS_URL=http://localhost:3000 \ ACP_RCS_TOKEN=sk-rcs-your-key \ -ACP_RCS_NAME=my-agent \ acp-link ccb-bun -- --acp ``` @@ -144,7 +143,7 @@ acp-link RCS │ │ │── WS connect ─────────────────►│ (WebSocket) │── identify { agentId } ────────►│ (WS 标识) - │◄── registered ─────────────────│ + │◄── identified ─────────────────│ │ │ │── ACP events ─────────────────►│ (双向消息转发) │◄── user prompts/permissions ───│ @@ -200,6 +199,3 @@ ACP_PERMISSION_MODE=auto acp-link ccb-bun -- --acp | `ACP_PERMISSION_MODE` | 默认权限模式 fallback | | `ACP_RCS_URL` | RCS 服务器地址(启用 RCS 集成) | | `ACP_RCS_TOKEN` | RCS API token | -| `ACP_RCS_NAME` | Agent 名称(在 RCS 中显示) | -| `ACP_RCS_CHANNEL_GROUP` | Channel group ID | -| `ACP_MAX_SESSIONS` | 最大会话数 | diff --git a/docs/features/bridge-mode.md b/docs/features/bridge-mode.md index f8557e034c..68f1279a18 100644 --- a/docs/features/bridge-mode.md +++ b/docs/features/bridge-mode.md @@ -30,7 +30,7 @@ BRIDGE_MODE 将本地 CLI 注册为"bridge 环境",可从 claude.ai 或其他 文件:`src/bridge/bridgeApi.ts` -Bridge API Client 提供 7 个核心操作: +Bridge API Client 提供 9 个核心操作: | 操作 | HTTP | 说明 | |------|------|------| diff --git a/docs/features/daemon.md b/docs/features/daemon.md index 996e141ebd..92f9bf3eda 100644 --- a/docs/features/daemon.md +++ b/docs/features/daemon.md @@ -1,12 +1,12 @@ # DAEMON — 后台守护进程 > Feature Flag: `FEATURE_DAEMON=1` -> 实现状态:主进程和 worker 注册为 Stub,CLI 路由完整 +> 实现状态:Supervisor 和 remoteControl Worker 已实现 > 引用数:3 ## 一、功能概述 -DAEMON 将 Claude Code 变为后台守护进程。主进程(supervisor)管理多个 worker 进程的生命周期,通过 Unix 域套接字进行 IPC。适用于持续运行的后台服务场景(如配合 BRIDGE_MODE 提供远程控制服务)。 +DAEMON 将 Claude Code 变为后台守护进程。主进程(supervisor)管理多个 worker 子进程的生命周期,通过文件系统状态文件进行通信。适用于持续运行的后台服务场景(如配合 BRIDGE_MODE 提供远程控制服务)。 ## 二、实现架构 @@ -14,8 +14,9 @@ DAEMON 将 Claude Code 变为后台守护进程。主进程(supervisor)管 | 模块 | 文件 | 状态 | |------|------|------| -| 守护主进程 | `src/daemon/main.ts` | **Stub** — `daemonMain: () => Promise.resolve()` | -| Worker 注册 | `src/daemon/workerRegistry.ts` | **Stub** — `runDaemonWorker: () => Promise.resolve()` | +| 守护主进程 | `src/daemon/main.ts` | **已实现** — Supervisor 含子命令、Worker 生命周期管理、指数退避重启 | +| Worker 注册 | `src/daemon/workerRegistry.ts` | **已实现** — remoteControl Worker(headless bridge) | +| Daemon 状态 | `src/daemon/state.ts` | **已实现** — PID/状态文件的读写与查询 | | CLI 路由 | `src/entrypoints/cli.tsx` | **布线** — `--daemon-worker` 和 `daemon` 子命令 | | 命令注册 | `src/commands.ts` | **布线** — DAEMON + BRIDGE_MODE 门控 | @@ -23,34 +24,49 @@ DAEMON 将 Claude Code 变为后台守护进程。主进程(supervisor)管 ``` # 启动守护进程 -claude daemon +claude daemon start -# 以 worker 身份启动 -claude --daemon-worker= +# 查看状态(默认子命令) +claude daemon status +claude daemon ps + +# 停止守护进程 +claude daemon stop + +# 以 worker 身份启动(由 supervisor 自动调用) +claude --daemon-worker=remoteControl + +# 后台会话管理 +claude daemon bg +claude daemon attach +claude daemon logs +claude daemon kill ``` -### 2.3 预期架构 +### 2.3 架构 ``` Supervisor (daemonMain) │ - ├── Worker 1: assistant-mode - │ └── 接收和处理 assistant 会话 - │ - ├── Worker 2: bridge-sync - │ └── bridge 消息同步 - │ - └── Worker 3: proactive - └── 主动任务执行 + ├── Worker: remoteControl + │ └── runBridgeHeadless() — 远程控制 headless 模式 + │ 接收远程会话、处理消息、权限审批 │ ▼ -IPC via Unix Domain Sockets - - 生命周期管理(启动、停止、重启) - - 工作分发 - - 状态报告 +文件系统状态文件 (daemon-state.json) + - PID、CWD、启动时间、Worker 类型 + - queryDaemonStatus() / stopDaemonByPid() ``` -### 2.4 与 BRIDGE_MODE 的关系 +### 2.4 Worker 生命周期管理 + +Supervisor 为每个 worker 实现: +- **指数退避重启**:初始 2s,上限 120s,倍数 ×2 +- **快速失败检测**:10s 内连续崩溃 5 次则 parking(不再重启) +- **永久错误退出码**:78 (EXIT_CODE_PERMANENT) 导致直接 parking +- **优雅关闭**:SIGTERM/SIGINT → abort signal → 30s 强制 SIGKILL + +### 2.5 与 BRIDGE_MODE 的关系 DAEMON 和 BRIDGE_MODE 常组合使用: @@ -63,40 +79,39 @@ if (feature('DAEMON') && feature('BRIDGE_MODE')) { 双重门控:两个 feature 都需要开启才能使用远程控制服务器。 -## 三、需要补全的内容 - -| 模块 | 工作量 | 说明 | -|------|--------|------| -| `daemon/main.ts` | 大 | Supervisor 主进程:启动 worker、生命周期管理、IPC | -| `daemon/workerRegistry.ts` | 中 | Worker 类型分发(assistant/bridge-sync/proactive) | -| Worker 实现 | 大 | 各类型 worker 的具体实现 | -| IPC 协议 | 中 | Supervisor-Worker 通信层 | - -## 四、关键设计决策 +## 三、关键设计决策 1. **多进程架构**:一个 supervisor + 多个 worker,进程隔离 -2. **Unix 域套接字 IPC**:本地进程间通信,低延迟 +2. **文件系统状态通信**:通过 `daemon-state.json` 文件进行状态共享(非 Unix 域套接字) 3. **与 BRIDGE_MODE 强绑定**:守护进程最常见的用途是提供远程控制服务 4. **CLI 子命令路由**:`daemon` 子命令和 `--daemon-worker` 参数在 `cli.tsx` 中路由 +5. **Worker 环境变量**:supervisor 通过环境变量(`DAEMON_WORKER_*`)向 worker 传递配置 -## 五、使用方式 +## 四、使用方式 ```bash # 启用守护进程模式 FEATURE_DAEMON=1 FEATURE_BRIDGE_MODE=1 bun run dev # 启动守护进程 -claude daemon +claude daemon start + +# 查看状态 +claude daemon status + +# 停止守护进程 +claude daemon stop -# 以特定 worker 启动 -claude --daemon-worker=assistant +# 以特定 worker 启动(通常由 supervisor 自动调用) +claude --daemon-worker=remoteControl ``` -## 六、文件索引 +## 五、文件索引 | 文件 | 职责 | |------|------| -| `src/daemon/main.ts` | Supervisor 主进程(stub) | -| `src/daemon/workerRegistry.ts` | Worker 注册(stub) | -| `src/entrypoints/cli.tsx:95,149` | CLI 路由 | -| `src/commands.ts:77` | 命令注册(双重门控) | +| `src/daemon/main.ts` | Supervisor 主进程:子命令分发、Worker 生命周期管理、退避重启 | +| `src/daemon/workerRegistry.ts` | Worker 入口:remoteControl worker 实现 | +| `src/daemon/state.ts` | Daemon 状态管理:PID 文件读写、状态查询 | +| `src/entrypoints/cli.tsx` | CLI 路由 | +| `src/commands.ts` | 命令注册(双重门控) | diff --git a/docs/features/remote-control-self-hosting.md b/docs/features/remote-control-self-hosting.md index 12255769db..9ecd990862 100644 --- a/docs/features/remote-control-self-hosting.md +++ b/docs/features/remote-control-self-hosting.md @@ -104,6 +104,8 @@ docker compose up -d | `RCS_HEARTBEAT_INTERVAL` | 否 | `20` | 心跳间隔(秒) | | `RCS_JWT_EXPIRES_IN` | 否 | `3600` | JWT 令牌有效期(秒) | | `RCS_DISCONNECT_TIMEOUT` | 否 | `300` | 断线判定超时(秒) | +| `RCS_WS_IDLE_TIMEOUT` | 否 | `30` | WebSocket 空闲超时(秒),Bun 发送协议级 ping | +| `RCS_WS_KEEPALIVE_INTERVAL` | 否 | `20` | 服务端→客户端 keep_alive 帧间隔(秒),防止反向代理关闭空闲连接 | ### 客户端(Claude Code CLI) @@ -232,11 +234,10 @@ acp-link ◄──ACP relay──► RCS ◄──Web UI WS──► 浏览器 # 注意:claude 本身不支持 ACP,需要用 ccb-bun --acp ACP_RCS_URL=http://localhost:3000 \ ACP_RCS_TOKEN=sk-rcs-your-key \ -ACP_RCS_NAME=my-agent \ acp-link ccb-bun -- --acp ``` -ACP session 在 Web UI 中显示紫色标签,与普通 Claude Code session 区分。 +ACP session 在 Web UI 中显示品牌色标签,与普通 Claude Code session 区分。 ## 工作流程详解 diff --git a/docs/features/web-search-tool.md b/docs/features/web-search-tool.md index 5a6db8c34f..86cb151e6d 100644 --- a/docs/features/web-search-tool.md +++ b/docs/features/web-search-tool.md @@ -34,16 +34,16 @@ WebSearchTool.call() | 模块 | 文件 | 说明 | |------|------|------| -| 工具入口 | `src/tools/WebSearchTool/WebSearchTool.ts` | `buildTool()` 定义:schema、权限、执行、输出格式化 | -| 工具 prompt | `src/tools/WebSearchTool/prompt.ts` | 搜索工具的系统提示词 | -| UI 渲染 | `src/tools/WebSearchTool/UI.tsx` | 搜索结果的终端渲染组件 | -| 适配器接口 | `src/tools/WebSearchTool/adapters/types.ts` | `WebSearchAdapter` 接口、`SearchResult`/`SearchOptions`/`SearchProgress` 类型 | -| 适配器工厂 | `src/tools/WebSearchTool/adapters/index.ts` | `createAdapter()` 工厂函数,选择后端 | -| API 适配器 | `src/tools/WebSearchTool/adapters/apiAdapter.ts` | 封装原有 `queryModelWithStreaming` 逻辑,使用 server tool | -| Bing 适配器 | `src/tools/WebSearchTool/adapters/bingAdapter.ts` | Bing HTML 抓取 + 正则解析 | -| Brave 适配器 | `src/tools/WebSearchTool/adapters/braveAdapter.ts` | Brave LLM Context API 适配与结果映射 | -| 单元测试 | `src/tools/WebSearchTool/__tests__/bingAdapter.test.ts`, `src/tools/WebSearchTool/__tests__/braveAdapter*.test.ts`, `src/tools/WebSearchTool/__tests__/adapterFactory.test.ts` | Bing / Brave 解析与工厂逻辑测试 | -| 集成测试 | `src/tools/WebSearchTool/__tests__/bingAdapter.integration.ts`, `src/tools/WebSearchTool/__tests__/braveAdapter.integration.ts` | 真实网络请求验证 | +| 工具入口 | `packages/builtin-tools/src/tools/WebSearchTool/WebSearchTool.ts` | `buildTool()` 定义:schema、权限、执行、输出格式化 | +| 工具 prompt | `packages/builtin-tools/src/tools/WebSearchTool/prompt.ts` | 搜索工具的系统提示词 | +| UI 渲染 | `packages/builtin-tools/src/tools/WebSearchTool/UI.tsx` | 搜索结果的终端渲染组件 | +| 适配器接口 | `packages/builtin-tools/src/tools/WebSearchTool/adapters/types.ts` | `WebSearchAdapter` 接口、`SearchResult`/`SearchOptions`/`SearchProgress` 类型 | +| 适配器工厂 | `packages/builtin-tools/src/tools/WebSearchTool/adapters/index.ts` | `createAdapter()` 工厂函数,选择后端 | +| API 适配器 | `packages/builtin-tools/src/tools/WebSearchTool/adapters/apiAdapter.ts` | 封装原有 `queryModelWithStreaming` 逻辑,使用 server tool | +| Bing 适配器 | `packages/builtin-tools/src/tools/WebSearchTool/adapters/bingAdapter.ts` | Bing HTML 抓取 + 正则解析 | +| Brave 适配器 | `packages/builtin-tools/src/tools/WebSearchTool/adapters/braveAdapter.ts` | Brave LLM Context API 适配与结果映射 | +| 单元测试 | `packages/builtin-tools/src/tools/WebSearchTool/__tests__/bingAdapter.test.ts`, `packages/builtin-tools/src/tools/WebSearchTool/__tests__/braveAdapter*.test.ts`, `packages/builtin-tools/src/tools/WebSearchTool/__tests__/adapterFactory.test.ts` | Bing / Brave 解析与工厂逻辑测试 | +| 集成测试 | `packages/builtin-tools/src/tools/WebSearchTool/__tests__/bingAdapter.integration.ts`, `packages/builtin-tools/src/tools/WebSearchTool/__tests__/braveAdapter.integration.ts` | 真实网络请求验证 | ### 2.3 数据流 @@ -176,13 +176,13 @@ interface SearchProgress { | 文件 | 职责 | |------|------| -| `src/tools/WebSearchTool/WebSearchTool.ts` | 工具定义入口 | -| `src/tools/WebSearchTool/prompt.ts` | 搜索工具 prompt | -| `src/tools/WebSearchTool/UI.tsx` | 终端 UI 渲染 | -| `src/tools/WebSearchTool/adapters/types.ts` | 适配器接口 | -| `src/tools/WebSearchTool/adapters/index.ts` | 适配器工厂 | -| `src/tools/WebSearchTool/adapters/apiAdapter.ts` | API 服务端搜索适配器 | -| `src/tools/WebSearchTool/adapters/bingAdapter.ts` | Bing HTML 解析适配器 | -| `src/tools/WebSearchTool/__tests__/bingAdapter.test.ts` | 单元测试 (32 cases) | -| `src/tools/WebSearchTool/__tests__/bingAdapter.integration.ts` | 集成测试 | +| `packages/builtin-tools/src/tools/WebSearchTool/WebSearchTool.ts` | 工具定义入口 | +| `packages/builtin-tools/src/tools/WebSearchTool/prompt.ts` | 搜索工具 prompt | +| `packages/builtin-tools/src/tools/WebSearchTool/UI.tsx` | 终端 UI 渲染 | +| `packages/builtin-tools/src/tools/WebSearchTool/adapters/types.ts` | 适配器接口 | +| `packages/builtin-tools/src/tools/WebSearchTool/adapters/index.ts` | 适配器工厂 | +| `packages/builtin-tools/src/tools/WebSearchTool/adapters/apiAdapter.ts` | API 服务端搜索适配器 | +| `packages/builtin-tools/src/tools/WebSearchTool/adapters/bingAdapter.ts` | Bing HTML 解析适配器 | +| `packages/builtin-tools/src/tools/WebSearchTool/__tests__/bingAdapter.test.ts` | 单元测试 (32 cases) | +| `packages/builtin-tools/src/tools/WebSearchTool/__tests__/bingAdapter.integration.ts` | 集成测试 | | `src/tools.ts` | 工具注册 | From 20d9c01368bfa740b0ec2ec992f5ade4de21d3a4 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 00:21:01 +0800 Subject: [PATCH 02/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=20Safety=20?= =?UTF-8?q?=E5=92=8C=20Context=20=E6=96=87=E6=A1=A3=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=BC=95=E7=94=A8=E5=92=8C=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - permission-model: 修正规则来源从"五层"到八层,优先级顺序对齐代码 - permission-model: PermissionUpdate 类型改为实际的 addRules/replaceRules 等 - permission-model: 补充 acceptEdits 和 dontAsk 两种权限模式 - permission-model: DENIAL_LIMITS 字段名对齐实际代码 - plan-mode: 工具路径从 src/tools/ 改为 packages/builtin-tools/src/tools/ - compaction: 修正 COMPACTABLE_TOOLS 和 POST_COMPACT_* 的行号 - project-memory: 修正 ENTRYPOINT_NAME 常量的行号 - system-prompt: 修正 SystemPrompt 类型定义文件路径和多个行号引用 Co-Authored-By: Claude Opus 4.6 --- docs/context/compaction.mdx | 4 ++-- docs/context/project-memory.mdx | 2 +- docs/context/system-prompt.mdx | 10 ++++----- docs/safety/permission-model.mdx | 35 +++++++++++++++++++------------- docs/safety/plan-mode.mdx | 4 ++-- 5 files changed, 31 insertions(+), 24 deletions(-) diff --git a/docs/context/compaction.mdx b/docs/context/compaction.mdx index 2b21197a21..7ca01d01d9 100644 --- a/docs/context/compaction.mdx +++ b/docs/context/compaction.mdx @@ -48,7 +48,7 @@ const messagesForCompact = microcompactResult.messages MicroCompact 不压缩整个对话,而是**清除旧工具输出的内容**。它维护一个白名单: ```typescript -// src/services/compact/microCompact.ts:41-48 +// src/services/compact/microCompact.ts:41-50 const COMPACTABLE_TOOLS = new Set([ FILE_READ_TOOL_NAME, // 'Read' - 文件读取 ...SHELL_TOOL_NAMES, // 'Bash' - 命令输出 @@ -143,7 +143,7 @@ const stripped2 = stripReinjectedAttachments(stripped) // 移除会被重新注 压缩后,系统会从摘要中**重新注入关键上下文**: ```typescript -// compact.ts:124-132 +// compact.ts:126-134 export const POST_COMPACT_TOKEN_BUDGET = 50_000 // 总预算 export const POST_COMPACT_MAX_FILES_TO_RESTORE = 5 // 最多恢复 5 个文件 export const POST_COMPACT_MAX_TOKENS_PER_FILE = 5_000 // 每文件 5K token diff --git a/docs/context/project-memory.mdx b/docs/context/project-memory.mdx index 5af58653a9..56e9733b5b 100644 --- a/docs/context/project-memory.mdx +++ b/docs/context/project-memory.mdx @@ -39,7 +39,7 @@ Claude Code 的记忆系统是**纯文件**的——没有数据库、没有向 `MEMORY.md` 是记忆的入口索引,每次对话都完整加载到上下文中: ```typescript -// memdir.ts:35-38 +// memdir.ts:34-38 export const ENTRYPOINT_NAME = 'MEMORY.md' export const MAX_ENTRYPOINT_LINES = 200 export const MAX_ENTRYPOINT_BYTES = 25_000 diff --git a/docs/context/system-prompt.mdx b/docs/context/system-prompt.mdx index fc2d01269c..98f60fff3f 100644 --- a/docs/context/system-prompt.mdx +++ b/docs/context/system-prompt.mdx @@ -20,12 +20,12 @@ buildSystemPromptBlocks() → TextBlockParam[] (分块 + cache_control 标 1. **`getSystemPrompt()`**(`src/constants/prompts.ts:444`)—— 收集静态段 + 动态段,插入 `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` 分界标记 2. **`buildEffectiveSystemPrompt()`**(`src/utils/systemPrompt.ts:41`)—— 按 Override > Coordinator > Agent > Custom > Default 优先级选择 -3. **`buildSystemPromptBlocks()`**(`src/services/api/claude.ts:3214`)—— 调用 `splitSysPromptPrefix()` 分块,为每个块附加 `cache_control` +3. **`buildSystemPromptBlocks()`**(`src/services/api/claude.ts:3279`)—— 调用 `splitSysPromptPrefix()` 分块,为每个块附加 `cache_control` ## SystemPrompt 品牌类型 ```typescript -// src/utils/systemPromptType.ts:8 +// packages/@ant/model-provider/src/types/systemPrompt.ts:4 export type SystemPrompt = readonly string[] & { readonly __brand: 'SystemPrompt' } @@ -185,7 +185,7 @@ export function shouldUseGlobalCacheScope(): boolean { ### `getCacheControl()`:TTL 决策 -`src/services/api/claude.ts:359` 生成的 `cache_control` 对象: +`src/services/api/claude.ts:348` 生成的 `cache_control` 对象: ```typescript { @@ -195,14 +195,14 @@ export function shouldUseGlobalCacheScope(): boolean { } ``` -1 小时 TTL 的判定逻辑(`should1hCacheTTL()`,第 394 行): +1 小时 TTL 的判定逻辑(`should1hCacheTTL()`,第 383 行): - **Bedrock 用户**:通过环境变量 `ENABLE_PROMPT_CACHING_1H_BEDROCK` 启用 - **1P 用户**:通过 GrowthBook 配置的 `allowlist` 数组匹配 `querySource`,支持前缀通配符(如 `"repl_main_thread*"`) - **会话级锁定**:资格判定结果在 bootstrap state 中缓存,防止 GrowthBook 配置中途变化导致同一会话内 TTL 不一致 ### 缓存破坏:Session-Specific Guidance 的放置 -`getSessionSpecificGuidanceSection()`(`src/constants/prompts.ts:352`)的内容必须放在 `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` **之后**。因为它包含: +`getSessionSpecificGuidanceSection()`(`src/constants/prompts.ts:354`)的内容必须放在 `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` **之后**。因为它包含: - 当前会话的 enabledTools 集合 - `isForkSubagentEnabled()` 的运行时判定 - `getIsNonInteractiveSession()` 的结果 diff --git a/docs/safety/permission-model.mdx b/docs/safety/permission-model.mdx index 87f7f7979b..cd62d90581 100644 --- a/docs/safety/permission-model.mdx +++ b/docs/safety/permission-model.mdx @@ -18,17 +18,19 @@ keywords: ["权限模型", "Allow Ask Deny", "PermissionRule", "checkPermissions 这些行为由 `PermissionResult` 类型定义(`src/utils/permissions/PermissionResult.ts`)。 -## 权限规则的五层来源 +## 权限规则的来源 -规则从 5 个来源汇聚(`PERMISSION_RULE_SOURCES`,`permissions.ts:109`),优先级从高到低: +规则从 8 个来源汇聚(`PERMISSION_RULE_SOURCES`,`permissions.ts:109`),优先级从低到高(后者覆盖前者): ``` -1. session — 用户在当前对话中手动授权("Always allow") -2. cliArg — 命令行 --allow/--deny 参数 -3. command — Skill 工具的 allowedTools 白名单 -4. projectSettings — .claude/settings.json(团队共享) -5. userSettings — ~/.claude/settings.json(跨项目) -6. policySettings — 企业管理员下发的策略(用户不可覆盖) +1. userSettings — ~/.claude/settings.json(跨项目) +2. projectSettings — .claude/settings.json(团队共享) +3. localSettings — .claude/settings.local.json(gitignored,个人覆盖) +4. flagSettings — --settings 命令行参数 +5. policySettings — 企业管理员下发的策略(用户不可覆盖) +6. cliArg — 命令行 --allow/--deny 参数 +7. command — Skill 工具的 allowedTools 白名单 +8. session — 用户在当前对话中手动授权("Always allow") ``` 每个来源维护三个数组:`alwaysAllowRules[source]`、`alwaysAskRules[source]`、`alwaysDenyRules[source]`。 @@ -120,7 +122,9 @@ Read/Edit/Write 工具通过 `getPath()` 提取文件路径,与 `ruleContent` |------|---------------------|---------|------| | **Default** | `'default'` | 日常使用 | 敏感操作逐一确认 | | **Plan Mode** | `'plan'` | 探索阶段 | 只能读不能写(`isReadOnly()` 检查) | -| **Auto** | `'auto'` | 信任 AI | 通过 transcript classifier 自动决策 | +| **Accept Edits** | `'acceptEdits'` | 快速迭代 | 工作区内文件编辑自动放行,其他操作仍需确认 | +| **Don't Ask** | `'dontAsk'` | 减少打断 | 尽量自动决策,减少确认弹窗 | +| **Auto** | `'auto'` | 信任 AI | 通过 transcript classifier 自动决策(需 `TRANSCRIPT_CLASSIFIER` feature flag) | | **Bypass** | `'bypassPermissions'` | 完全信任 | 所有操作自动放行(需显式 `--dangerously-skip-permissions`) | Plan Mode 切换由 `EnterPlanModeTool.call()` 触发: @@ -143,8 +147,8 @@ context.setAppState(prev => ({ ```typescript const DENIAL_LIMITS = { - maxDenialsPerTool: 3, // 同一工具连续拒绝上限 - cooldownPeriodMs: 30_000, // 冷却期 30 秒 + maxConsecutive: 3, // 同一工具连续拒绝上限 + maxTotal: 20, // 总拒绝上限 } ``` @@ -162,9 +166,12 @@ const DENIAL_LIMITS = { ```typescript type PermissionUpdate = - | { type: 'addRule', behavior, rule, destination } - | { type: 'removeRule', behavior, rule, destination } - | { type: 'setMode', mode, destination } + | { type: 'addRules', destination, rules, behavior } + | { type: 'replaceRules', destination, rules, behavior } + | { type: 'removeRules', destination, rules, behavior } + | { type: 'setMode', destination, mode } + | { type: 'addDirectories', destination, directories } + | { type: 'removeDirectories', destination, directories } ``` 当用户在 Ask 对话框中选择 "Always allow",系统调用 `persistPermissionUpdates()` 将规则写入对应层级的 settings 文件(project/user/managed),同时更新内存中的 `toolPermissionContext`。 diff --git a/docs/safety/plan-mode.mdx b/docs/safety/plan-mode.mdx index bc8739f2d8..d402e68eec 100644 --- a/docs/safety/plan-mode.mdx +++ b/docs/safety/plan-mode.mdx @@ -16,13 +16,13 @@ keywords: ["Plan Mode", "计划模式", "EnterPlanMode", "ExitPlanMode", "prepar - AI 自主判断(或用户触发)任务需要规划,调用 `EnterPlanModeTool`(`src/tools/EnterPlanModeTool/EnterPlanModeTool.ts:36`)。该工具需要**用户审批**(`checkPermissions` 返回 `ask`)。 + AI 自主判断(或用户触发)任务需要规划,调用 `EnterPlanModeTool`(`packages/builtin-tools/src/tools/EnterPlanModeTool/EnterPlanModeTool.ts:36`)。该工具需要**用户审批**(`checkPermissions` 返回 `ask`)。 权限模式切换为 `'plan'`,AI 只能使用 `isReadOnly()` 为 true 的工具(Read、Grep、Glob、Agent 等)。写操作被自动拒绝。 - AI 完成探索后,调用 `ExitPlanModeV2Tool`(`src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts:147`),将计划文件提交给用户审阅。这是第二个**需要用户审批**的节点。 + AI 完成探索后,调用 `ExitPlanModeV2Tool`(`packages/builtin-tools/src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts:147`),将计划文件提交给用户审阅。这是第二个**需要用户审批**的节点。 用户批准后,权限模式恢复为进入前的状态,AI 按计划执行。 From 7e1954a056c2c74175ac7f0755f13b8c28ec5200 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 00:21:41 +0800 Subject: [PATCH 03/23] =?UTF-8?q?docs:=20=E4=BF=AE=E5=A4=8D=20introduction?= =?UTF-8?q?=20=E6=96=87=E6=A1=A3=E4=B8=AD=E7=9A=84=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E5=92=8C=E8=A1=8C=E5=8F=B7=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - why-this-whitepaper.mdx: BashTool 路径从 src/tools/ 修正为 packages/builtin-tools/src/tools/ - what-is-claude-code.mdx: 移除不存在的 Azure provider,改为实际的 7 种 provider - architecture-overview.mdx: State 类型行号从 204 修正为 207 Co-Authored-By: Claude Opus 4.6 --- docs/introduction/architecture-overview.mdx | 15 +++++++++------ docs/introduction/what-is-claude-code.mdx | 2 +- docs/introduction/why-this-whitepaper.mdx | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/introduction/architecture-overview.mdx b/docs/introduction/architecture-overview.mdx index dfbf6a3cb1..6dc63a0ed4 100644 --- a/docs/introduction/architecture-overview.mdx +++ b/docs/introduction/architecture-overview.mdx @@ -64,24 +64,27 @@ Claude Code 从上到下分为五个层次,每一层职责清晰、边界分 needsFollowUp ? continue : return { reason } ``` -完整的状态机通过 `State` 类型(`src/query.ts:204`)在迭代间传递,包含 10 个字段(messages、autoCompactTracking、maxOutputTokensRecoveryCount 等)。 +完整的状态机通过 `State` 类型(`src/query.ts:207`)在迭代间传递,包含 10 个字段(messages、autoCompactTracking、maxOutputTokensRecoveryCount 等)。 ### 4. 工具层(`src/tools.ts` → `src/Tool.ts`) -`getAllBaseTools()`(`src/tools.ts:191`)组装 50+ 工具列表,经过 `filterToolsByDenyRules()` 权限过滤后传给 API。 +`getAllBaseTools()`(`src/tools.ts:195`)组装 50+ 工具列表,经过 `filterToolsByDenyRules()` 权限过滤后传给 API。 -每个工具实现 `Tool` 接口(`src/Tool.ts:362`),核心方法链: +每个工具实现 `Tool` 接口(`src/Tool.ts:368`),核心方法链: ``` validateInput() → canUseTool()(UI 层)→ checkPermissions() → call() → ToolResult ``` ### 5. 通信层(`src/services/api/claude.ts`) -API 客户端支持 4 种 Provider: -- **Anthropic Direct**:默认 +API 客户端支持 7 种 Provider: +- **Anthropic Direct (firstParty)**:默认 - **AWS Bedrock**:`ANTHROPIC_BEDROCK_BASE_URL` - **Google Vertex**:`ANTHROPIC_VERTEX_PROJECT_ID` -- **Azure**:通过自定义 base URL +- **Foundry**:`ANTHROPIC_CODE_USE_FOUNDRY` +- **OpenAI**:兼容层 +- **Gemini**:兼容层 +- **Grok (xAI)**:兼容层 `deps.callModel()` 发起流式请求,返回 `BetaRawMessageStreamEvent` 事件流。支持 Prompt Cache(`cache_control`)、thinking blocks、multi-turn tool use。 diff --git a/docs/introduction/what-is-claude-code.mdx b/docs/introduction/what-is-claude-code.mdx index c6067bf2ea..37aa43a031 100644 --- a/docs/introduction/what-is-claude-code.mdx +++ b/docs/introduction/what-is-claude-code.mdx @@ -53,7 +53,7 @@ Claude Code 是一个**运行在本地终端中的 agentic coding system**。它 │ 实际执行: 读文件、运行命令、搜索代码... │ ├─────────────────────────────────────────────────────────┤ │ 6. 通信层 (claude.ts → Anthropic API) │ -│ 流式 HTTP, 支持 Bedrock/Vertex/Azure 多 provider │ +│ 流式 HTTP, 支持 Bedrock/Vertex/Foundry 等 7 种 provider │ └─────────────────────────────────────────────────────────┘ ``` diff --git a/docs/introduction/why-this-whitepaper.mdx b/docs/introduction/why-this-whitepaper.mdx index 984da32d9f..8b0ffd6a16 100644 --- a/docs/introduction/why-this-whitepaper.mdx +++ b/docs/introduction/why-this-whitepaper.mdx @@ -49,7 +49,7 @@ AI 没有真正的"记忆",Claude Code 通过精心分层营造了这个幻觉 ### 3. 工具系统的权限双轨制 -`src/tools/BashTool/shouldUseSandbox.ts` 展示了一个精巧的双重安全模型: +`packages/builtin-tools/src/tools/BashTool/shouldUseSandbox.ts` 展示了一个精巧的双重安全模型: - **应用层**:权限规则决定"能不能执行"(白名单/黑名单/用户确认) - **OS 层**:沙箱决定"执行时能做什么"(文件系统/网络/进程隔离) From d764acca6096e4a204a76c690727263e8e0bd2a3 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 00:23:11 +0800 Subject: [PATCH 04/23] =?UTF-8?q?docs:=20=E4=BF=AE=E5=A4=8D=20conversation?= =?UTF-8?q?/features=20=E6=96=87=E6=A1=A3=E4=B8=AD=E7=9A=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - streaming.mdx: queryStreamRaw → queryModelWithStreaming 函数名修正 - streaming.mdx: Azure 提供商不存在,替换为实际 7 个提供商 - debug-mode.mdx: --inspect-wait 描述错误,实际使用 BUN_INSPECT 环境变量 - buddy.mdx: 补充缺失的 companionReact.ts、CompanionCard.tsx、index.ts Co-Authored-By: Claude Opus 4.6 --- docs/conversation/streaming.mdx | 9 ++++++--- docs/features/buddy.mdx | 3 +++ docs/features/debug-mode.mdx | 10 ++++++---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/docs/conversation/streaming.mdx b/docs/conversation/streaming.mdx index 081f50e7d0..2d9c18811b 100644 --- a/docs/conversation/streaming.mdx +++ b/docs/conversation/streaming.mdx @@ -32,7 +32,7 @@ message_stop ← 消息结束 ### 事件处理状态机 -`src/services/api/claude.ts` 中 `queryStreamRaw()` 函数的事件处理循环实现了一个基于 `switch(part.type)` 的状态机: +`src/services/api/claude.ts` 中 `queryModelWithStreaming()` 函数的事件处理循环实现了一个基于 `switch(part.type)` 的状态机: | 事件类型 | 处理逻辑 | 状态变更 | |----------|----------|----------| @@ -167,10 +167,13 @@ UI 层通过 `useToolCallProgress` hook 实时展示命令输出,而不是等 | Provider | 流式协议 | 特殊处理 | |----------|----------|----------| -| **Anthropic Direct** | 原生 SSE | 延迟最低,TTFT 最快 | +| **firstParty** (Anthropic Direct) | 原生 SSE | 延迟最低,TTFT 最快 | | **AWS Bedrock** | AWS SDK 流式接口 | 需要额外的 beta header 和认证 | | **Google Vertex** | gRPC → 事件流 | 通过 `getMergedBetas()` 适配 | -| **Azure** | Anthropic 兼容 API | 自定义 base URL | +| **foundry** | Anthropic 兼容 API | 内部部署 | +| **openai** | OpenAI 流式适配器 | 转换为 Anthropic 内部格式 | +| **gemini** | Gemini 流式适配器 | 转换为 Anthropic 内部格式 | +| **grok** (xAI) | Grok 流式适配器 | 转换为 Anthropic 内部格式 | 所有 Provider 通过统一的 `Stream` 抽象层屏蔽差异。上层代码(QueryEngine、REPL)不需要关心底层用的是哪个 Provider。 diff --git a/docs/features/buddy.mdx b/docs/features/buddy.mdx index c7ba689e61..59c70dcecd 100644 --- a/docs/features/buddy.mdx +++ b/docs/features/buddy.mdx @@ -78,10 +78,13 @@ FEATURE_BUDDY=1 bun run dev | 文件 | 说明 | |---|---| +| `src/commands/buddy/index.ts` | `/buddy` 命令注册 | | `src/commands/buddy/buddy.ts` | `/buddy` 命令处理 | | `src/buddy/companion.ts` | 宠物生成与加载 | +| `src/buddy/companionReact.ts` | 宠物反应系统(REPL 每轮查询后触发) | | `src/buddy/types.ts` | 类型定义(物种、稀有度、属性) | | `src/buddy/sprites.ts` | 终端像素画渲染 | | `src/buddy/CompanionSprite.tsx` | React 组件(输入框旁显示) | +| `src/buddy/CompanionCard.tsx` | 宠物信息卡片(`/buddy` 无参数时展示) | | `src/buddy/useBuddyNotification.tsx` | 启动提示通知 | | `src/buddy/prompt.ts` | 宠物相关 prompt 模板 | diff --git a/docs/features/debug-mode.mdx b/docs/features/debug-mode.mdx index 51bfa9cacf..887f98878f 100644 --- a/docs/features/debug-mode.mdx +++ b/docs/features/debug-mode.mdx @@ -27,13 +27,15 @@ bun run dev:inspect ## 原理 -`dev:inspect` 脚本实际执行的是: +`dev:inspect` 脚本实际执行的是 `scripts/dev-debug.ts`: -```bash -bun --inspect-wait=localhost:8888/ run scripts/dev.ts +```typescript +// scripts/dev-debug.ts +process.env.BUN_INSPECT = "localhost:8888/" +await import("./dev") ``` -Bun 的 `--inspect-wait` 参数启动一个 Chrome DevTools Protocol 兼容的 inspect 服务,等待调试器连接后才开始执行。VS Code 的 `bun` 扩展通过 WebSocket 连接到这个地址实现 attach。 +通过设置 `BUN_INSPECT` 环境变量启动一个 Chrome DevTools Protocol 兼容的 inspect 服务,然后导入 dev 模式入口。VS Code 的 `bun` 扩展通过 WebSocket 连接到输出的地址实现 attach。 ## JetBrains IDE From 90825fab71a84c5a6a3cfd756800cbd7c6d783d8 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 00:23:13 +0800 Subject: [PATCH 05/23] =?UTF-8?q?docs:=20=E4=BF=AE=E5=A4=8D=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=B7=A1=E6=A3=80=E4=B8=AD=E7=9A=84=E6=BA=90=E7=A0=81?= =?UTF-8?q?=E5=BC=95=E7=94=A8=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - feature-flags.mdx: 修正 feature() 兜底描述,实际从 bun:bundle 导入而非 cli.tsx:3 内联 - feature-flags.mdx: 修正工具 require 路径为 @claude-code-best/builtin-tools 包路径 - ant-only-world.mdx: 修正 tools.ts 中 require 路径为包路径 - ant-only-world.mdx: 修正 INTERNAL_ONLY_COMMANDS 行号 (267-295) 和数量 (24+) - skills.mdx: 修正 COMMANDS memoize 行号 258 → 299 - mcp-protocol.mdx: 修正 fetchToolsForClient LRU 缓存上限 20 → 100 - streaming.mdx: 修正流式事件引用 - file-operations.mdx: 修正工具路径引用 - search-and-navigation.mdx: 修正搜索工具引用 - shell-execution.mdx: 修正 shell 工具引用 - buddy.mdx: 补充缺失的 frontmatter 字段 - debug-mode.mdx: 修正调试模式描述 Co-Authored-By: Claude Opus 4.6 --- docs/extensibility/mcp-protocol.mdx | 2 +- docs/extensibility/skills.mdx | 2 +- docs/internals/ant-only-world.mdx | 6 +++--- docs/internals/feature-flags.mdx | 12 +++++++----- docs/tools/file-operations.mdx | 12 ++++++------ docs/tools/search-and-navigation.mdx | 2 +- docs/tools/shell-execution.mdx | 8 ++++---- 7 files changed, 23 insertions(+), 21 deletions(-) diff --git a/docs/extensibility/mcp-protocol.mdx b/docs/extensibility/mcp-protocol.mdx index cbf1064630..5498813f19 100644 --- a/docs/extensibility/mcp-protocol.mdx +++ b/docs/extensibility/mcp-protocol.mdx @@ -304,7 +304,7 @@ timer.unref?.() // 不阻止进程退出 ## 工具发现:从 MCP 到 Tool 接口 -`fetchToolsForClient()`(`client.ts:1745-2000`)使用 `memoizeWithLRU` 缓存(上限 20),将 MCP 工具转换为 Claude Code 的统一 Tool 接口: +`fetchToolsForClient()`(`client.ts:1744-2000`)使用 `memoizeWithLRU` 缓存(上限 100),将 MCP 工具转换为 Claude Code 的统一 Tool 接口: ```typescript const fullyQualifiedName = buildMcpToolName(client.name, tool.name) diff --git a/docs/extensibility/skills.mdx b/docs/extensibility/skills.mdx index 0fa1336336..92e8ff7e0f 100644 --- a/docs/extensibility/skills.mdx +++ b/docs/extensibility/skills.mdx @@ -22,7 +22,7 @@ Skill 的核心洞见:**复杂任务的关键不在代码逻辑,而在 Promp ### 1. 内置命令(Built-in Commands) -硬编码在 `src/commands.ts:258` 的 `COMMANDS` memoize 数组中,包含 70+ 条命令(`/commit`、`/review`、`/compact` 等)。这些是 TypeScript 模块而非 Markdown,但实现了相同的 `Command` 接口(`src/types/command.ts`)。 +硬编码在 `src/commands.ts:299` 的 `COMMANDS` memoize 数组中,包含 70+ 条命令(`/commit`、`/review`、`/compact` 等)。这些是 TypeScript 模块而非 Markdown,但实现了相同的 `Command` 接口(`src/types/command.ts`)。 ### 2. Bundled Skills(编译时打包) diff --git a/docs/internals/ant-only-world.mdx b/docs/internals/ant-only-world.mdx index 804d7954d9..0022f20dde 100644 --- a/docs/internals/ant-only-world.mdx +++ b/docs/internals/ant-only-world.mdx @@ -36,18 +36,18 @@ keywords: ["Ant 特权", "USER_TYPE", "身份门控", "内部功能", "Anthropic /* eslint-disable custom-rules/no-process-env-top-level, @typescript-eslint/no-require-imports */ const REPLTool = process.env.USER_TYPE === 'ant' - ? require('./tools/REPLTool/REPLTool.js').REPLTool + ? require('@claude-code-best/builtin-tools/tools/REPLTool/REPLTool.js').REPLTool : null const SuggestBackgroundPRTool = process.env.USER_TYPE === 'ant' - ? require('./tools/SuggestBackgroundPRTool/SuggestBackgroundPRTool.js') + ? require('@claude-code-best/builtin-tools/tools/SuggestBackgroundPRTool/SuggestBackgroundPRTool.js') .SuggestBackgroundPRTool : null ``` ## Ant-Only 命令 -`src/commands.ts` 注册了 **28** 个仅在内部构建中可用的斜杠命令(`INTERNAL_ONLY_COMMANDS`,lines 225-254),在 `USER_TYPE === 'ant' && !IS_DEMO` 时才加载(line 343-345): +`src/commands.ts` 注册了 **24+** 个仅在内部构建中可用的斜杠命令(`INTERNAL_ONLY_COMMANDS`,lines 267-295),在 `USER_TYPE === 'ant' && !IS_DEMO` 时才加载(line 400-401): diff --git a/docs/internals/feature-flags.mdx b/docs/internals/feature-flags.mdx index c05e372ba2..1ef05b61a4 100644 --- a/docs/internals/feature-flags.mdx +++ b/docs/internals/feature-flags.mdx @@ -15,17 +15,19 @@ Claude Code 使用 Bun 打包器的 `bun:bundle` 模块提供编译时特性门 import { feature } from 'bun:bundle' const SleepTool = feature('PROACTIVE') || feature('KAIROS') - ? require('./tools/SleepTool/SleepTool.js').SleepTool + ? require('@claude-code-best/builtin-tools/tools/SleepTool/SleepTool.js').SleepTool : null ``` 在 Anthropic 的内部构建中,`feature()` 在打包时被求值——返回 `true` 的代码会被保留,返回 `false` 的代码会被 **Dead Code Elimination (DCE)** 彻底移除。 -在我们的反编译版本中,这个函数被兜底为: +在我们的反编译版本中,`feature` 从 `bun:bundle` 导入(声明在 `src/types/internal-modules.d.ts`),在运行时始终返回 `false`: ```typescript -// src/entrypoints/cli.tsx 第 3 行 -const feature = (_name: string) => false; +// src/types/internal-modules.d.ts +declare module 'bun:bundle' { + export function feature(name: string): boolean; +} ``` 这意味着所有 88+ 个 feature flag 后的代码**在运行时永远不会执行**,但代码本身完整保留,可以阅读和分析。 @@ -79,7 +81,7 @@ Feature flags 在代码中主要有三种使用模式: ```typescript // src/tools.ts — 最常见的模式 const MonitorTool = feature('MONITOR_TOOL') - ? require('./tools/MonitorTool/MonitorTool.js').MonitorTool + ? require('@claude-code-best/builtin-tools/tools/MonitorTool/MonitorTool.js').MonitorTool : null ``` diff --git a/docs/tools/file-operations.mdx b/docs/tools/file-operations.mdx index 1c7fefdabe..b1c028cfd2 100644 --- a/docs/tools/file-operations.mdx +++ b/docs/tools/file-operations.mdx @@ -22,14 +22,14 @@ Read 的 `maxResultSizeChars` 是 `Infinity`,但这并不意味着无限制输 ## FileRead:多模态文件读取引擎 -源码路径:`src/tools/FileReadTool/FileReadTool.ts` +源码路径:`packages/builtin-tools/src/tools/FileReadTool/FileReadTool.ts` ### 读取去重机制 Read 工具有一个常被忽视但至关重要的**去重层**。当 AI 重复读取同一个文件的同一范围时,系统不会浪费 token 发送两份完整内容: ```typescript -// FileReadTool.ts:530-573 — 去重逻辑 +// FileReadTool.ts — 去重逻辑 const existingState = readFileState.get(fullFilePath) if (existingState && !existingState.isPartialView && existingState.offset !== undefined) { const rangeMatch = existingState.offset === offset && existingState.limit === limit @@ -83,7 +83,7 @@ Read 工具在 `validateInput()` 中设置了多层安全门: 当文件不存在时,Read 不会只报一个 "file not found": ```typescript -// FileReadTool.ts:639-647 +// FileReadTool.ts const similarFilename = findSimilarFile(fullFilePath) // 相似扩展名 const cwdSuggestion = await suggestPathUnderCwd(fullFilePath) // cwd 相对路径建议 // macOS 截图特殊处理:薄空格(U+202F) vs 普通空格 @@ -94,7 +94,7 @@ const altPath = getAlternateScreenshotPath(fullFilePath) ## FileEdit:精确字符串替换引擎 -源码路径:`src/tools/FileEditTool/FileEditTool.ts` + `utils.ts` +源码路径:`packages/builtin-tools/src/tools/FileEditTool/FileEditTool.ts` + `utils.ts` ### 引号标准化:AI 无法输出的字符怎么办 @@ -138,7 +138,7 @@ Edit 工具在 `validateInput()` 中检查两个条件: 2. **文件未被外部修改**(`mtime` 未变,或全量读取时内容完全一致) ```typescript -// FileEditTool.ts:290-311 — Windows 特殊处理 +// FileEditTool.ts — Windows 特殊处理 const isFullRead = readTimestamp.offset === undefined && readTimestamp.limit === undefined if (isFullRead && fileContent === readTimestamp.content) { // 内容不变,安全继续(Windows 云同步/杀毒可能改 mtime) @@ -157,7 +157,7 @@ const MAX_EDIT_FILE_SIZE = 1024 * 1024 * 1024 // 1 GiB ## FileWrite:全量写入与创建 -源码路径:`src/tools/FileWriteTool/FileWriteTool.ts` +源码路径:`packages/builtin-tools/src/tools/FileWriteTool/FileWriteTool.ts` Write 工具与 Edit 共享大部分基础设施(权限检查、mtime 校验、fileHistory 备份),但有两个关键差异: diff --git a/docs/tools/search-and-navigation.mdx b/docs/tools/search-and-navigation.mdx index 9422ea1772..8594abb4a4 100644 --- a/docs/tools/search-and-navigation.mdx +++ b/docs/tools/search-and-navigation.mdx @@ -77,7 +77,7 @@ Glob 默认把**最近修改的文件排在前面**。这不是默认的文件 实际效果:AI 优先看到"活"的代码,而不是沉寂的历史文件 ``` -在 `src/tools/GlobTool/` 中,ripgrep 的输出在返回给 AI 前按 mtime 排序。 +在 `packages/builtin-tools/src/tools/GlobTool/` 中,ripgrep 的输出在返回给 AI 前按 mtime 排序。 ### ripgrep 的错误处理 diff --git a/docs/tools/shell-execution.mdx b/docs/tools/shell-execution.mdx index 4f9f5cba8a..57d0ae9e27 100644 --- a/docs/tools/shell-execution.mdx +++ b/docs/tools/shell-execution.mdx @@ -31,7 +31,7 @@ spawn(wrapped_command) ← 实际进程创建 ## 只读命令的判定:为什么 Read 免审批而 Bash 不一定 -BashTool 的 `isReadOnly()` 方法(`BashTool.tsx:437`)决定一条命令是否被视为"只读": +BashTool 的 `isReadOnly()` 方法(`packages/builtin-tools/src/tools/BashTool/BashTool.tsx:655`)决定一条命令是否被视为"只读": ```typescript isReadOnly(input) { @@ -41,7 +41,7 @@ isReadOnly(input) { } ``` -判定逻辑基于 4 个命令集合(`BashTool.tsx:60-78`): +判定逻辑基于 4 个命令集合(`BashTool.tsx:120-166`): | 集合 | 命令 | 性质 | |------|------|------| @@ -53,7 +53,7 @@ isReadOnly(input) { 对于复合命令(`ls dir && echo "---" && ls dir2`),系统拆分后逐段检查——**所有非中性段都必须属于上述集合**,整条命令才被视为只读。 ```typescript -// BashTool.tsx:95 — 简化的判定逻辑 +// BashTool.tsx — 简化的判定逻辑 for (const part of partsWithOperators) { if (BASH_SEMANTIC_NEUTRAL_COMMANDS.has(baseCommand)) continue // 跳过中性段 if (!isPartSearch && !isPartRead && !isPartList) { @@ -64,7 +64,7 @@ for (const part of partsWithOperators) { ## AST 安全解析:tree-sitter bash 解析 -`preparePermissionMatcher()`(`BashTool.tsx:445`)在权限检查前用 `parseForSecurity()` 解析命令结构: +`preparePermissionMatcher()`(`BashTool.tsx:663`)在权限检查前用 `parseForSecurity()` 解析命令结构: ```typescript async preparePermissionMatcher({ command }) { From 72d5f3f42d85e94cca8a8e0fcf0d803eb5faf6fa Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 00:27:00 +0800 Subject: [PATCH 06/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=20tools/agent?= =?UTF-8?q?=20=E6=96=87=E6=A1=A3=E4=B8=AD=E7=9A=84=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E5=92=8C=E8=A1=8C=E5=8F=B7=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修正 TodoWriteTool、AgentTool、ToolSearchTool 等工具路径 src/tools/ → packages/builtin-tools/src/tools/ - 更新 Tool.ts、tools.ts、BashTool.tsx 中过时的行号引用 - 修正 WebSearchTool/WebFetchTool/EnterWorktreeTool/ExitWorktreeTool 路径 - 修正 AgentTool.tsx 中多行行号引用 Co-Authored-By: Claude Opus 4.6 --- docs/agent/sub-agents.mdx | 18 +++++++++--------- docs/agent/worktree-isolation.mdx | 4 ++-- docs/tools/search-and-navigation.mdx | 12 ++++++------ docs/tools/shell-execution.mdx | 4 ++-- docs/tools/task-management.mdx | 2 +- docs/tools/what-are-tools.mdx | 8 ++++---- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/agent/sub-agents.mdx b/docs/agent/sub-agents.mdx index 4fe53bba52..96b3eb7a46 100644 --- a/docs/agent/sub-agents.mdx +++ b/docs/agent/sub-agents.mdx @@ -13,14 +13,14 @@ keywords: ["子 Agent", "AgentTool", "任务委派", "forkSubagent", "子进程 ``` AI 生成 tool_use: { prompt: "修复 bug", subagent_type: "Explore" } ↓ -AgentTool.call() ← 入口(AgentTool.tsx:239) +AgentTool.call() ← 入口(AgentTool.tsx:340) ├── 解析 effectiveType(fork vs 命名 agent vs GP 回退) ├── filterDeniedAgents() ← 仅命名 Agent 路径执行:权限过滤 ├── 检查 requiredMcpServers ← MCP 依赖验证(最长等 30s) ├── assembleToolPool(workerPermissionContext) ← 独立组装工具池 ├── createAgentWorktree() ← 可选 worktree 隔离 ↓ -runAgent() ← 核心执行(runAgent.ts:248) +runAgent() ← 核心执行(runAgent.ts) ├── getAgentSystemPrompt() ← 构建 agent 专属 system prompt ├── initializeAgentMcpServers() ← agent 级 MCP 服务器 ├── executeSubagentStartHooks() ← Hook 注入 @@ -54,7 +54,7 @@ Fork 实验的门控函数 `isForkSubagentEnabled()` 需要同时满足三个前 Fork 路径的设计核心是 **Prompt Cache 共享**:所有 fork 子进程共享父 Agent 的完整 `assistant` 消息(所有 `tool_use` 块),用相同的占位符 `tool_result` 填充,只有最后一个 `text` 块包含各自的指令。这使得 API 请求前缀字节完全一致,最大化缓存命中。 ```typescript -// forkSubagent.ts:142 — 所有 fork 子进程的占位结果 +// forkSubagent.ts:93 — 所有 fork 子进程的占位结果 const FORK_PLACEHOLDER_RESULT = 'Fork started — processing in background' // buildForkedMessages() 构建: @@ -63,7 +63,7 @@ const FORK_PLACEHOLDER_RESULT = 'Fork started — processing in background' ### Fork 递归防护 -Fork 子进程保留 Agent 工具(为了 cache-identical tool defs),但通过两道防线防止递归 fork(`AgentTool.tsx:332`): +Fork 子进程保留 Agent 工具(为了 cache-identical tool defs),但通过两道防线防止递归 fork: 1. **`querySource` 检查**(压缩安全):`context.options.querySource === 'agent:builtin:fork'` 2. **消息扫描**(降级兜底):检测 `` 标签 @@ -88,7 +88,7 @@ Fork 子进程保留 Agent 工具(为了 cache-identical tool defs),但通 ### 内置 Agent -系统预定义了几个内置 Agent(`src/tools/AgentTool/builtinAgents.ts`),各有明确的职责和模型配置: +系统预定义了几个内置 Agent(`packages/builtin-tools/src/tools/AgentTool/builtInAgents.ts`),各有明确的职责和模型配置: | Agent | 模型 | 权限 | 用途 | |-------|------|------|------| @@ -119,7 +119,7 @@ const workerTools = assembleToolPool(workerPermissionContext, appState.mcp.tools ### 工具过滤的 resolveAgentTools -`runAgent.ts:500-502` 在工具组装后进一步过滤: +`runAgent.ts:508` 在工具组装后进一步过滤: ```typescript const resolvedTools = useExactTools @@ -142,7 +142,7 @@ const resolvedTools = useExactTools ## Worktree 隔离机制 -`isolation: "worktree"` 参数让子 Agent 在独立的 git worktree 中工作(`AgentTool.tsx:590-593`): +`isolation: "worktree"` 参数让子 Agent 在独立的 git worktree 中工作(`AgentTool.tsx:863`): ```typescript const slug = `agent-${earlyAgentId.slice(0, 8)}` @@ -183,7 +183,7 @@ runAsyncAgentLifecycle() ← 后台执行(agentToolUtils.ts) ### 同步 Agent(前台运行) -同步 Agent 的关键特性是 **可后台化**(`AgentTool.tsx:818-833`): +同步 Agent 的关键特性是 **可后台化**(`AgentTool.tsx:1107`): ```typescript const registration = registerAgentForeground({ @@ -218,7 +218,7 @@ const raceResult = await Promise.race([ ## MCP 依赖的等待机制 -如果 Agent 声明了 `requiredMcpServers`,`call()` 会等待这些服务器连接完成(`AgentTool.tsx:371-410`): +如果 Agent 声明了 `requiredMcpServers`,`call()` 会等待这些服务器连接完成(`AgentTool.tsx:576`): ```typescript const MAX_WAIT_MS = 30_000 // 最长等 30 秒 diff --git a/docs/agent/worktree-isolation.mdx b/docs/agent/worktree-isolation.mdx index e03eab0759..1ab396a8fa 100644 --- a/docs/agent/worktree-isolation.mdx +++ b/docs/agent/worktree-isolation.mdx @@ -37,7 +37,7 @@ Worktree 文件统一存放在仓库根目录下的 `.claude/worktrees/`: ## 创建流程:EnterWorktreeTool -`EnterWorktreeTool`(`src/tools/EnterWorktreeTool/EnterWorktreeTool.ts`)的执行链路: +`EnterWorktreeTool`(`packages/builtin-tools/src/tools/EnterWorktreeTool/EnterWorktreeTool.ts`)的执行链路: ``` EnterWorktreeTool.call({ name? }) @@ -83,7 +83,7 @@ EnterWorktreeTool.call({ name? }) ## 退出流程:ExitWorktreeTool -`ExitWorktreeTool`(`src/tools/ExitWorktreeTool/ExitWorktreeTool.ts`)支持两种退出策略: +`ExitWorktreeTool`(`packages/builtin-tools/src/tools/ExitWorktreeTool/ExitWorktreeTool.ts`)支持两种退出策略: ### keep:保留 worktree diff --git a/docs/tools/search-and-navigation.mdx b/docs/tools/search-and-navigation.mdx index 8594abb4a4..17dcfa81d8 100644 --- a/docs/tools/search-and-navigation.mdx +++ b/docs/tools/search-and-navigation.mdx @@ -92,7 +92,7 @@ ripgrep 执行有专门的错误恢复链(`src/utils/ripgrep.ts`): ## ToolSearch:在 50+ 工具中发现目标 -当可用工具超过 50 个时(含 MCP 提供的外部工具),AI 可能不知道该用哪个。**ToolSearch**(`src/tools/ToolSearchTool/`)提供了工具发现机制。 +当可用工具超过 50 个时(含 MCP 提供的外部工具),AI 可能不知道该用哪个。**ToolSearch**(`packages/builtin-tools/src/tools/ToolSearchTool/`)提供了工具发现机制。 ### 搜索算法 @@ -139,14 +139,14 @@ function getDeferredToolsCacheKey(deferredTools: Tools): string { AI 的信息获取不局限于本地代码: -- **WebSearch**(`src/tools/WebSearchTool/`):调用 Anthropic API 的 `web_search_20250305` server tool 搜索互联网 -- **WebFetch**(`src/tools/WebFetchTool/`):抓取特定 URL 内容,转换为 Markdown 供 AI 阅读 +- **WebSearch**(`packages/builtin-tools/src/tools/WebSearchTool/`):调用 Anthropic API 的 `web_search_20250305` server tool 搜索互联网 +- **WebFetch**(`packages/builtin-tools/src/tools/WebFetchTool/`):抓取特定 URL 内容,转换为 Markdown 供 AI 阅读 这让 AI 可以查阅文档、搜索 Stack Overflow、阅读 GitHub issue——和人类开发者的工作方式一致。 ### WebSearch 实现机制 -WebSearch 通过适配器模式支持三种搜索后端,由 `src/tools/WebSearchTool/adapters/` 中的工厂函数 `createAdapter()` 选择: +WebSearch 通过适配器模式支持三种搜索后端,由 `packages/builtin-tools/src/tools/WebSearchTool/adapters/` 中的工厂函数 `createAdapter()` 选择: ``` 适配器架构: @@ -229,7 +229,7 @@ WebSearch 通过适配器模式支持三种搜索后端,由 `src/tools/WebSear ### WebSearchTool 统一接口 -`WebSearchTool`(`src/tools/WebSearchTool/WebSearchTool.ts`)是面向主循环的工具定义,所有 provider 均可使用(`isEnabled()` 始终返回 true)。它将适配器返回的 `SearchResult[]` 转换为内部 `Output` 格式,`mapToolResultToToolResultBlockParam` 将搜索结果格式化为带 markdown 超链接的文本,并附加 "REMINDER" 要求主模型在回复中包含 Sources。 +`WebSearchTool`(`packages/builtin-tools/src/tools/WebSearchTool/WebSearchTool.ts`)是面向主循环的工具定义,所有 provider 均可使用(`isEnabled()` 始终返回 true)。它将适配器返回的 `SearchResult[]` 转换为内部 `Output` 格式,`mapToolResultToToolResultBlockParam` 将搜索结果格式化为带 markdown 超链接的文本,并附加 "REMINDER" 要求主模型在回复中包含 Sources。 ### WebFetch 实现机制 @@ -264,7 +264,7 @@ WebFetch 是一个完整的 HTTP 客户端 + 内容处理管线: | **URL 验证** | `validateURL()` | 长度、协议、用户名密码、公网域名检查 | | **egress 检测** | `X-Proxy-Error: blocked-by-allowlist` | 检测企业代理拦截 | -预批准域名(`src/tools/WebFetchTool/preapproved.ts`): +预批准域名(`packages/builtin-tools/src/tools/WebFetchTool/preapproved.ts`): 用户无需手动授权即可抓取的域名列表,包含 ~90 个主流技术文档站点(MDN、Python docs、React docs、AWS docs 等)。列表分为 hostname-only 和 path-prefix 两类,查找复杂度 O(1)。 diff --git a/docs/tools/shell-execution.mdx b/docs/tools/shell-execution.mdx index 57d0ae9e27..c040d5c97e 100644 --- a/docs/tools/shell-execution.mdx +++ b/docs/tools/shell-execution.mdx @@ -99,7 +99,7 @@ getDefaultTimeoutMs() 长时间运行的命令可以自动转为后台任务,不阻塞 AI 的 agentic loop: ```typescript -// BashTool.tsx:880 +// BashTool.tsx:1158 const shouldAutoBackground = !isBackgroundTasksDisabled && isAutobackgroundingAllowed(command) ``` @@ -148,7 +148,7 @@ Claude Code 为文件读写、代码搜索等操作提供了专用工具(Read | **并发安全** | `isConcurrencySafe()` 返回 `true` → 可并行执行 | Bash 命令可能有副作用,串行执行 | | **安全审计** | 工具名精确匹配权限规则 | 需 AST 解析命令结构后匹配 | -`isConcurrencySafe()`(`BashTool.tsx:434`)是一个常被忽视但重要的设计——只有只读命令可以在 agentic loop 中并行执行,有副作用的命令必须串行,防止竞态条件。 +`isConcurrencySafe()`(`BashTool.tsx:652`)是一个常被忽视但重要的设计——只有只读命令可以在 agentic loop 中并行执行,有副作用的命令必须串行,防止竞态条件。 ## 进度反馈的流式设计 diff --git a/docs/tools/task-management.mdx b/docs/tools/task-management.mdx index 8c33f054fc..372eeb19bf 100644 --- a/docs/tools/task-management.mdx +++ b/docs/tools/task-management.mdx @@ -25,7 +25,7 @@ Claude Code 的任务管理并非单一系统,而是两个并存、按运行 TodoWrite 本质是一个**全量替换**操作——每次调用传入完整的 `todos[]` 数组,完全覆盖之前的状态: ```typescript -// src/tools/TodoWriteTool/TodoWriteTool.ts — call() 核心逻辑 +// packages/builtin-tools/src/tools/TodoWriteTool/TodoWriteTool.ts — call() 核心逻辑 async call({ todos }, context) { const todoKey = context.agentId ?? getSessionId() const oldTodos = appState.todos[todoKey] ?? [] diff --git a/docs/tools/what-are-tools.mdx b/docs/tools/what-are-tools.mdx index c6e4d006d6..e0c78d2045 100644 --- a/docs/tools/what-are-tools.mdx +++ b/docs/tools/what-are-tools.mdx @@ -16,7 +16,7 @@ keywords: ["工具系统", "Tool 抽象", "AI 工具", "function calling", "buil ## Tool 类型:35 个字段的统一接口 -所有工具都实现 `src/Tool.ts:362` 的 `Tool` 类型。这不是一个 class,而是一个包含 35+ 字段的**结构化类型**(structural typing),任何满足该接口的对象就是一个工具: +所有工具都实现 `src/Tool.ts:368` 的 `Tool` 类型。这不是一个 class,而是一个包含 35+ 字段的**结构化类型**(structural typing),任何满足该接口的对象就是一个工具: ### 核心四要素 @@ -69,7 +69,7 @@ keywords: ["工具系统", "Tool 抽象", "AI 工具", "function calling", "buil ## 工具注册:`getTools()` 的分层组装 -`src/tools.ts` 的 `getAllBaseTools()`(第 191 行)是工具注册的核心: +`src/tools.ts` 的 `getAllBaseTools()`(第 195 行)是工具注册的核心: ``` 固定工具(始终可用): @@ -96,7 +96,7 @@ Ant-only 工具: ← process.env.USER_TYPE === 'ant' ? [REPLTool, ConfigTool, TungstenTool] ``` -`getTools()`(第 269 行)在 `getAllBaseTools()` 基础上应用权限过滤: +`getTools()`(第 274 行)在 `getAllBaseTools()` 基础上应用权限过滤: ```typescript export const getTools = (permissionContext): Tools => { @@ -110,7 +110,7 @@ export const getTools = (permissionContext): Tools => { ## `buildTool()` 工厂函数 -大多数工具通过 `buildTool()` 创建(`src/Tool.ts:721`),它是一个类型安全的构造器: +大多数工具通过 `buildTool()` 创建(`src/Tool.ts:789`),它是一个类型安全的构造器: ```typescript export const BashTool: Tool<...> = buildTool({ From a28a452dde87b8c34b2084c508dc1ff161860f5e Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 00:30:28 +0800 Subject: [PATCH 07/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=20feature=20?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E4=B8=AD=E7=9A=84=E6=96=87=E4=BB=B6=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E5=92=8C=E8=A1=8C=E5=8F=B7=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ultraplan.md: 更新文件行数(525/349/127) - fork-subagent.md: 路径迁移 src/tools/ → packages/builtin-tools/ - mcp-skills.md: 修正 getMcpSkillCommands 行号 547→604,client.ts 行号 117→129 - kairos.md: 修正 getBriefSection/getProactiveSection 行号 - proactive.md: 修正 getProactiveSection 行号 860→864 Co-Authored-By: Claude Opus 4.6 --- docs/features/fork-subagent.md | 14 +++++++------- docs/features/kairos.md | 6 +++--- docs/features/mcp-skills.md | 8 ++++---- docs/features/proactive.md | 4 ++-- docs/features/ultraplan.md | 16 ++++++++-------- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/features/fork-subagent.md b/docs/features/fork-subagent.md index e489c6add8..5aab27ca54 100644 --- a/docs/features/fork-subagent.md +++ b/docs/features/fork-subagent.md @@ -37,7 +37,7 @@ Agent({ subagent_type: "general-purpose", prompt: "..." }) ### 3.1 门控与互斥 -文件:`src/tools/AgentTool/forkSubagent.ts:32-39` +文件:`packages/builtin-tools/src/tools/AgentTool/forkSubagent.ts:32-39` ```ts export function isForkSubagentEnabled(): boolean { @@ -105,7 +105,7 @@ isForkSubagentEnabled() && !subagent_type? ### 3.4 消息构建:buildForkedMessages -文件:`src/tools/AgentTool/forkSubagent.ts:107-169` +文件:`packages/builtin-tools/src/tools/AgentTool/forkSubagent.ts:107-169` 构建的消息结构: @@ -185,11 +185,11 @@ FEATURE_FORK_SUBAGENT=1 bun run dev | 文件 | 行数 | 职责 | |------|------|------| -| `src/tools/AgentTool/forkSubagent.ts` | ~210 | 核心定义 + 消息构建 + 递归防护 | -| `src/tools/AgentTool/AgentTool.tsx` | — | Fork 路由 + 强制异步 | -| `src/tools/AgentTool/prompt.ts` | — | "When to Fork" 提示词段落 | -| `src/tools/AgentTool/runAgent.ts` | — | useExactTools 路径 | -| `src/tools/AgentTool/resumeAgent.ts` | — | Fork agent 恢复 | +| `packages/builtin-tools/src/tools/AgentTool/forkSubagent.ts` | ~210 | 核心定义 + 消息构建 + 递归防护 | +| `packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx` | — | Fork 路由 + 强制异步 | +| `packages/builtin-tools/src/tools/AgentTool/prompt.ts` | — | "When to Fork" 提示词段落 | +| `packages/builtin-tools/src/tools/AgentTool/runAgent.ts` | — | useExactTools 路径 | +| `packages/builtin-tools/src/tools/AgentTool/resumeAgent.ts` | — | Fork agent 恢复 | | `src/constants/xml.ts` | — | XML 标签常量 | | `src/utils/forkedAgent.ts` | — | CacheSafeParams + ContentReplacementState 克隆 | | `src/commands/fork/index.ts` | — | /fork 命令(stub) | diff --git a/docs/features/kairos.md b/docs/features/kairos.md index f8255a529a..98c1338232 100644 --- a/docs/features/kairos.md +++ b/docs/features/kairos.md @@ -34,13 +34,13 @@ KAIROS 在系统提示中注入两大段落: ### 2.1 Brief 段落 (`getBriefSection`) -文件:`src/constants/prompts.ts:843-858` +文件:`src/constants/prompts.ts:847-858` 当 `feature('KAIROS') || feature('KAIROS_BRIEF')` 时注入。Brief 工具(`SendUserMessage`)的结构化消息输出指令。`/brief` toggle 和 `--brief` flag 只控制显示过滤,不影响模型行为。 ### 2.2 Proactive/Autonomous Work 段落 (`getProactiveSection`) -文件:`src/constants/prompts.ts:860-914` +文件:`src/constants/prompts.ts:864-918` 当 `feature('PROACTIVE') || feature('KAIROS')` 且 `isProactiveActive()` 时注入。核心行为指令: @@ -176,7 +176,7 @@ FEATURE_KAIROS=1 FEATURE_TOKEN_BUDGET=1 bun run dev | `src/tools/SleepTool/SleepTool.ts` | ~200 | 休眠/唤醒与 automation metadata | | `src/services/mcp/channelNotification.ts` | 5 | 频道消息接入(stub) | | `src/memdir/memdir.ts` | — | 记忆目录管理(stub) | -| `src/constants/prompts.ts:552-554,843-914` | 72 | 系统提示注入 | +| `src/constants/prompts.ts:557,847-918` | 72 | 系统提示注入 | | `src/components/tasks/src/tasks/DreamTask/` | 3 | Dream 任务(stub) | | `src/proactive/index.ts` | — | Proactive 核心(KAIROS 共享) | | `src/utils/sessionState.ts` | — | 向 bridge/CCR 暴露 automation 状态 | diff --git a/docs/features/mcp-skills.md b/docs/features/mcp-skills.md index 13a43db628..45c76056f4 100644 --- a/docs/features/mcp-skills.md +++ b/docs/features/mcp-skills.md @@ -41,7 +41,7 @@ getMcpSkillCommands() 过滤 → SkillTool 调用 ### 2.2 技能筛选 -文件:`src/commands.ts:547-558` +文件:`src/commands.ts:604-616` `getMcpSkillCommands(mcpCommands)` 过滤条件: @@ -54,7 +54,7 @@ feature('MCP_SKILLS') // feature flag 必须开启 ### 2.3 条件加载 -文件:`src/services/mcp/client.ts:117-121` +文件:`src/services/mcp/client.ts:129-133` `fetchMcpSkillsForClient` 通过 `require()` 条件加载,feature flag 关闭时不加载任何模块: @@ -79,8 +79,8 @@ const fetchMcpSkillsForClient = feature('MCP_SKILLS') | 文件 | 行 | 说明 | |------|------|------| -| `src/commands.ts` | 547-558, 561-608 | 命令过滤和 SkillTool 命令收集 | -| `src/services/mcp/client.ts` | 117-121, 1394, 1672, 2173-2181, 2346-2358 | 技能获取、缓存清除、连接时获取 | +| `src/commands.ts` | 604-616, 620-633 | 命令过滤和 SkillTool 命令收集 | +| `src/services/mcp/client.ts` | 129-133, 1394, 1672, 2176 | 技能获取、缓存清除、连接时获取 | | `src/services/mcp/useManageMCPConnections.ts` | 22-26, 682-740 | 实时刷新(prompts/resources 变化) | ## 三、关键设计决策 diff --git a/docs/features/proactive.md b/docs/features/proactive.md index f2640c2536..3923cff199 100644 --- a/docs/features/proactive.md +++ b/docs/features/proactive.md @@ -26,7 +26,7 @@ PROACTIVE 实现 Tick 驱动的自主代理。CLI 在用户不输入时也能持 | 命令注册 | `src/commands.ts:62-65` | **布线** | 动态加载 `./commands/proactive.js` | | 工具注册 | `src/tools.ts:26-28` | **布线** | SleepTool 动态加载 | | REPL 集成 | `src/screens/REPL.tsx` | **已实现** | tick 驱动、standby/sleeping 状态、页脚与 bridge automation metadata 上报 | -| 系统提示 | `src/constants/prompts.ts:860-914` | **完整** | 自主工作行为指令(~55 行详细 prompt) | +| 系统提示 | `src/constants/prompts.ts:864-918` | **完整** | 自主工作行为指令(~55 行详细 prompt) | | 远控状态镜像 | `src/utils/sessionState.ts` | **已实现** | 向 remote-control/CCR 暴露 `automation_state` 元数据 | ### 2.2 系统提示内容 @@ -106,7 +106,7 @@ FEATURE_PROACTIVE=1 FEATURE_KAIROS=1 FEATURE_KAIROS_BRIEF=1 bun run dev | `src/proactive/index.ts` | 核心逻辑与 next-tick 状态 | | `src/tools/SleepTool/prompt.ts` | SleepTool 工具提示 | | `src/tools/SleepTool/SleepTool.ts` | 休眠/唤醒执行逻辑 | -| `src/constants/prompts.ts:860-914` | 自主工作系统提示 | +| `src/constants/prompts.ts:864-918` | 自主工作系统提示 | | `src/screens/REPL.tsx` | REPL tick 集成与 automation 状态上报 | | `src/utils/sessionStorage.ts:4892-4912` | Tick 消息注入 | | `src/utils/sessionState.ts` | bridge/CCR metadata 镜像 | diff --git a/docs/features/ultraplan.md b/docs/features/ultraplan.md index 14a742fde1..9d93618ec0 100644 --- a/docs/features/ultraplan.md +++ b/docs/features/ultraplan.md @@ -22,16 +22,16 @@ ULTRAPLAN 在用户输入中检测 "ultraplan" 关键字时,自动进入增强 | 模块 | 文件 | 行数 | 状态 | |------|------|------|------| -| 命令处理器 | `src/commands/ultraplan.tsx` | 472 | **完整** | -| CCR 会话 | `src/utils/ultraplan/ccrSession.ts` | 350 | **完整** | -| 关键字检测 | `src/utils/ultraplan/keyword.ts` | 128 | **完整** | +| 命令处理器 | `src/commands/ultraplan.tsx` | 525 | **完整** | +| CCR 会话 | `src/utils/ultraplan/ccrSession.ts` | 349 | **完整** | +| 关键字检测 | `src/utils/ultraplan/keyword.ts` | 127 | **完整** | | 嵌入式提示 | `src/utils/ultraplan/prompt.txt` | 1 | **完整** | | REPL 对话框 | `src/screens/REPL.tsx` | — | **布线** | | 关键字高亮 | `src/components/PromptInput/PromptInput.tsx` | — | **布线** | ### 2.2 关键字检测 -文件:`src/utils/ultraplan/keyword.ts`(128 行) +文件:`src/utils/ultraplan/keyword.ts`(127 行) `findUltraplanTriggerPositions(text)` 智能过滤: - 排除引号内的 "ultraplan" @@ -41,7 +41,7 @@ ULTRAPLAN 在用户输入中检测 "ultraplan" 关键字时,自动进入增强 ### 2.3 CCR 远程会话 -文件:`src/utils/ultraplan/ccrSession.ts`(350 行) +文件:`src/utils/ultraplan/ccrSession.ts`(349 行) `ExitPlanModeScanner` 类实现完整的事件状态机: - `pollForApprovedExitPlanMode()` — 3 秒轮询间隔 @@ -99,9 +99,9 @@ FEATURE_ULTRAPLAN=1 bun run dev | 文件 | 行数 | 职责 | |------|------|------| -| `src/commands/ultraplan.tsx` | 472 | 斜杠命令处理器 | -| `src/utils/ultraplan/ccrSession.ts` | 350 | CCR 远程会话管理 | -| `src/utils/ultraplan/keyword.ts` | 128 | 关键字检测和替换 | +| `src/commands/ultraplan.tsx` | 525 | 斜杠命令处理器 | +| `src/utils/ultraplan/ccrSession.ts` | 349 | CCR 远程会话管理 | +| `src/utils/ultraplan/keyword.ts` | 127 | 关键字检测和替换 | | `src/utils/ultraplan/prompt.txt` | 1 | 嵌入式提示 | | `src/utils/processUserInput/processUserInput.ts:468` | — | 关键字重定向 | | `src/components/PromptInput/PromptInput.tsx` | — | 彩虹高亮 | From 4a689669a278ec593aeb36850bbeae63c12ba819 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 00:30:50 +0800 Subject: [PATCH 08/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=E9=A1=B6?= =?UTF-8?q?=E5=B1=82=E6=96=87=E6=A1=A3=E4=B8=AD=E7=9A=84=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=E5=92=8C=E8=A1=8C=E5=8F=B7=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - auto-updater.md: config.ts 行号 1735→1737,标注未接入启动流程的函数 - external-dependencies.md: WebSearchTool/WebFetchTool 路径迁移到 builtin-tools 包,Vertex 行号修正 - lsp-integration.md: LSPTool 路径从 src/tools/ 迁移到 packages/builtin-tools/ - stub-recovery-design-1-4.md: 修正 Windows 绝对路径链接为标准代码引用 Co-Authored-By: Claude Opus 4.6 --- docs/auto-updater.md | 8 ++--- docs/external-dependencies.md | 8 ++--- docs/features/stub-recovery-design-1-4.md | 44 +++++++++++------------ docs/lsp-integration.md | 10 +++--- 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/docs/auto-updater.md b/docs/auto-updater.md index 15677948c6..4c4c349226 100644 --- a/docs/auto-updater.md +++ b/docs/auto-updater.md @@ -42,7 +42,7 @@ useInterval(checkForUpdates, 30 * 60 * 1000); // 每 30 分钟 任何更新尝试之前,系统会依次检查: -1. **自动更新是否被禁用?** — `getAutoUpdaterDisabledReason()`(`src/utils/config.ts:1735`) +1. **自动更新是否被禁用?** — `getAutoUpdaterDisabledReason()`(`src/utils/config.ts:1737`) - `NODE_ENV === 'development'` - 设置了 `DISABLE_AUTOUPDATER` 环境变量 - 仅限必要流量模式 @@ -81,7 +81,7 @@ useInterval(checkForUpdates, 30 * 60 * 1000); // 每 30 分钟 `src/utils/autoUpdater.ts:70` — `assertMinVersion()` -从 `src/main.tsx:1775` 在启动时调用: +定义于 `src/utils/autoUpdater.ts:70`,设计上在启动时调用(当前未接入启动流程): ```typescript void assertMinVersion(); @@ -200,7 +200,7 @@ Windows 系统使用文件复制而非符号链接。 **文件**: `src/migrations/migrateAutoUpdatesToSettings.ts` -一次性将旧版 `globalConfig.autoUpdates = false` 迁移为 settings 中的 `DISABLE_AUTOUPDATER=1` 环境变量。从 `src/main.tsx:325` 在启动时调用。 +一次性将旧版 `globalConfig.autoUpdates = false` 迁移为 settings 中的 `DISABLE_AUTOUPDATER=1` 环境变量。定义于 `src/migrations/migrateAutoUpdatesToSettings.ts`(当前未接入启动流程)。 --- @@ -270,7 +270,7 @@ React hook `useUpdateNotification(updatedVersion)` — 确保每次 semver 变 | `src/utils/releaseNotes.ts` | Changelog 获取、缓存与展示 | | `src/utils/semver.ts` | Semver 版本比较(Bun 原生 + npm 回退) | | `src/utils/doctorDiagnostic.ts` | 安装类型检测与健康诊断 | -| `src/utils/config.ts:1735` | `getAutoUpdaterDisabledReason()` — 禁用检查逻辑 | +| `src/utils/config.ts:1737` | `getAutoUpdaterDisabledReason()` — 禁用检查逻辑 | | `src/migrations/migrateAutoUpdatesToSettings.ts` | 旧版配置迁移 | | `src/screens/Doctor.tsx` | Doctor 命令 UI,展示自动更新状态 | diff --git a/docs/external-dependencies.md b/docs/external-dependencies.md index 756be51442..f26273adb7 100644 --- a/docs/external-dependencies.md +++ b/docs/external-dependencies.md @@ -50,7 +50,7 @@ - **端点**: `{region}-aiplatform.googleapis.com` - **认证**: `GoogleAuth` + `cloud-platform` scope -- **文件**: `src/services/api/client.ts:228-298` +- **文件**: `src/services/api/client.ts:221-298` ### 4. Azure Foundry @@ -129,12 +129,12 @@ WebSearch 工具支持直接抓取 Bing 搜索结果页面,也支持通过 Bra - **Bing 端点**: `https://www.bing.com/search?q={query}&setmkt=en-US` - **Brave 端点**: `https://api.search.brave.com/res/v1/llm/context?q={query}` - **文件**: - - `src/tools/WebSearchTool/adapters/bingAdapter.ts` - - `src/tools/WebSearchTool/adapters/braveAdapter.ts` + - `packages/builtin-tools/src/tools/WebSearchTool/adapters/bingAdapter.ts` + - `packages/builtin-tools/src/tools/WebSearchTool/adapters/braveAdapter.ts` 另外还有 Domain Blocklist 查询: - **端点**: `https://api.anthropic.com/api/web/domain_info?domain={domain}` -- **文件**: `src/tools/WebFetchTool/utils.ts` +- **文件**: `packages/builtin-tools/src/tools/WebFetchTool/utils.ts` ### 15. Google Cloud Storage (自动更新) diff --git a/docs/features/stub-recovery-design-1-4.md b/docs/features/stub-recovery-design-1-4.md index e25afddc32..070b452956 100644 --- a/docs/features/stub-recovery-design-1-4.md +++ b/docs/features/stub-recovery-design-1-4.md @@ -16,12 +16,12 @@ ### 现状 - `start` 路径已有完整 supervisor + worker 生命周期: - [src/daemon/main.ts]() - [src/daemon/workerRegistry.ts]() + `src/daemon/main.ts` + `src/daemon/workerRegistry.ts` - `status` / `stop` 目前只是占位输出: - [src/daemon/main.ts]() + `src/daemon/main.ts` - `/remote-control-server` 有自己的命令内 UI 状态,但只维护当前进程内的 `daemonProcess`,并不适合作为跨进程 CLI 管理基础: - [src/commands/remoteControlServer/remoteControlServer.tsx]() + `src/commands/remoteControlServer/remoteControlServer.tsx` ### 目标 @@ -53,8 +53,8 @@ ### 代码范围 - 新增 `src/daemon/state.ts` -- 修改 [src/daemon/main.ts]() -- 轻量修改 [src/commands/remoteControlServer/remoteControlServer.tsx](),让 UI 尽量读取同一份状态文件 +- 修改 `src/daemon/main.ts` +- 轻量修改 `src/commands/remoteControlServer/remoteControlServer.tsx`,让 UI 尽量读取同一份状态文件 ### 验证 @@ -78,15 +78,15 @@ ### 现状 - fast-path 已接好: - [src/entrypoints/cli.tsx]() + `src/entrypoints/cli.tsx` - session registry 已有真实实现: - [src/utils/concurrentSessions.ts]() + `src/utils/concurrentSessions.ts` - `exit` 在 bg session 内已会 `tmux detach-client`: - [src/commands/exit/exit.tsx]() + `src/commands/exit/exit.tsx` - 但 CLI handler 仍全空: - [src/cli/bg.ts]() + `src/cli/bg.ts` - task summary 仍然是 stub: - [src/utils/taskSummary.ts]() + `src/utils/taskSummary.ts` ### 目标 @@ -122,12 +122,12 @@ ### 代码范围 -- 修改 [src/cli/bg.ts]() -- 修改 [src/utils/concurrentSessions.ts]() 以便后续 attach/--bg 扩展 -- 修改 [src/utils/taskSummary.ts]() +- 修改 `src/cli/bg.ts` +- 修改 `src/utils/concurrentSessions.ts` 以便后续 attach/--bg 扩展 +- 修改 `src/utils/taskSummary.ts` - 复用: - [src/utils/sessionStorage.ts]() - [src/utils/udsClient.ts]() + `src/utils/sessionStorage.ts` + `src/utils/udsClient.ts` ### 验证 @@ -150,15 +150,15 @@ ### 现状 - 命令入口只有 fast-path: - [src/entrypoints/cli.tsx]() + `src/entrypoints/cli.tsx` - handler 是空的: - [src/cli/handlers/templateJobs.ts]() + `src/cli/handlers/templateJobs.ts` - `markdownConfigLoader` 已把 `templates` 纳入配置目录: - [src/utils/markdownConfigLoader.ts]() + `src/utils/markdownConfigLoader.ts` - `query / stopHooks` 已预留 job classifier 链路: - [src/query/stopHooks.ts]() + `src/query/stopHooks.ts` - `jobs/classifier.ts` 仍是 stub: - [src/jobs/classifier.ts]() + `src/jobs/classifier.ts` ### 目标 @@ -185,7 +185,7 @@ ### Phase 2 -- 恢复 [src/jobs/classifier.ts]() +- 恢复 `src/jobs/classifier.ts` - 让带 `CLAUDE_JOB_DIR` 的 job session 在 turn 完成后自动更新 `state.json` - 再决定是否补自动 job runner diff --git a/docs/lsp-integration.md b/docs/lsp-integration.md index 5f87bc3fcc..2a4f3aab77 100644 --- a/docs/lsp-integration.md +++ b/docs/lsp-integration.md @@ -65,7 +65,7 @@ ENABLE_LSP_TOOL=1 bun run dev ``` ┌─────────────────────────────────────────────────────┐ │ LSP Tool │ -│ src/tools/LSPTool/LSPTool.ts │ +│ packages/builtin-tools/src/tools/LSPTool/LSPTool.ts│ │ (Claude 可调用的工具,9 种操作) │ └──────────────────────┬──────────────────────────────┘ │ @@ -128,10 +128,10 @@ LSP 服务器会异步推送 `textDocument/publishDiagnostics` 通知,经去 | `src/services/lsp/config.ts` | 从插件加载 LSP 服务器配置 | | `src/services/lsp/LSPDiagnosticRegistry.ts` | 诊断信息注册、去重、容量限制 | | `src/services/lsp/passiveFeedback.ts` | 注册 `publishDiagnostics` 通知处理器 | -| `src/tools/LSPTool/LSPTool.ts` | LSP Tool 实现(暴露给 Claude) | -| `src/tools/LSPTool/schemas.ts` | 输入 schema(9 种操作的 discriminated union) | -| `src/tools/LSPTool/formatters.ts` | 各操作结果的格式化 | -| `src/tools/LSPTool/prompt.ts` | Tool 描述文本 | +| `packages/builtin-tools/src/tools/LSPTool/LSPTool.ts` | LSP Tool 实现(暴露给 Claude) | +| `packages/builtin-tools/src/tools/LSPTool/schemas.ts` | 输入 schema(9 种操作的 discriminated union) | +| `packages/builtin-tools/src/tools/LSPTool/formatters.ts` | 各操作结果的格式化 | +| `packages/builtin-tools/src/tools/LSPTool/prompt.ts` | Tool 描述文本 | | `src/utils/plugins/lspPluginIntegration.ts` | 从插件加载、验证、环境变量解析、作用域管理 | ## LSP Tool 支持的操作 From 7735a70f9c7b77ec630a90b4deb00c29fd6e1cb2 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 00:33:21 +0800 Subject: [PATCH 09/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=20task=20?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E4=B8=AD=E7=9A=84=E6=96=87=E4=BB=B6=E6=89=A9?= =?UTF-8?q?=E5=B1=95=E5=90=8D=E5=92=8C=E8=B7=AF=E5=BE=84=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - task-004: AssistantSessionChooser.ts → .tsx, assistant.ts → .tsx - task-003: cli.tsx 行号 249→272, markdownConfigLoader.ts 行号 29→35 - lan-pipes: SendMessageTool 路径迁移到 packages/builtin-tools/ Co-Authored-By: Claude Opus 4.6 --- docs/features/lan-pipes-implementation.md | 2 +- docs/features/pipes-and-lan.md | 2 +- docs/task/task-003-templates-job-mvp.md | 4 ++-- docs/task/task-004-assistant-session-attach.md | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/features/lan-pipes-implementation.md b/docs/features/lan-pipes-implementation.md index 36240fc182..b765bb3783 100644 --- a/docs/features/lan-pipes-implementation.md +++ b/docs/features/lan-pipes-implementation.md @@ -281,7 +281,7 @@ CLI-B (192.168.50.27) 心跳循环 ## SendMessageTool TCP 支持 -`src/tools/SendMessageTool/SendMessageTool.ts` +`packages/builtin-tools/src/tools/SendMessageTool/SendMessageTool.ts` - `to` 字段支持 `tcp:host:port` 格式 - `checkPermissions`:`tcp:` scheme 返回 `behavior: 'ask'`,`classifierApprovable: false` diff --git a/docs/features/pipes-and-lan.md b/docs/features/pipes-and-lan.md index 8559d4d52a..709d1878bc 100644 --- a/docs/features/pipes-and-lan.md +++ b/docs/features/pipes-and-lan.md @@ -318,7 +318,7 @@ sub 角色: | `src/commands/pipes/pipes.ts` | /pipes 命令 | | `src/commands/attach/attach.ts` | /attach 命令 | | `src/commands/send/send.ts` | /send 命令 | -| `src/tools/SendMessageTool/SendMessageTool.ts` | AI 发消息工具(含 tcp: 支持) | +| `packages/builtin-tools/src/tools/SendMessageTool/SendMessageTool.ts` | AI 发消息工具(含 tcp: 支持) | ## 后续优化方向 diff --git a/docs/task/task-003-templates-job-mvp.md b/docs/task/task-003-templates-job-mvp.md index 3355dd40cf..92b57a9dd5 100644 --- a/docs/task/task-003-templates-job-mvp.md +++ b/docs/task/task-003-templates-job-mvp.md @@ -12,9 +12,9 @@ ## 背景 -- 命令入口只有 fast-path (`src/entrypoints/cli.tsx:249`) +- 命令入口只有 fast-path (`src/entrypoints/cli.tsx:272`) - handler 是空的 (`src/cli/handlers/templateJobs.ts`) -- `markdownConfigLoader` 已把 `templates` 纳入配置目录 (`src/utils/markdownConfigLoader.ts:29`) +- `markdownConfigLoader` 已把 `templates` 纳入配置目录 (`src/utils/markdownConfigLoader.ts:35`) - `query/stopHooks` 已预留 job classifier 链路 (`src/query/stopHooks.ts:103`) - `jobs/classifier.ts` 仍是 stub (`src/jobs/classifier.ts`) diff --git a/docs/task/task-004-assistant-session-attach.md b/docs/task/task-004-assistant-session-attach.md index 5ae06aee81..c4f59cca86 100644 --- a/docs/task/task-004-assistant-session-attach.md +++ b/docs/task/task-004-assistant-session-attach.md @@ -18,8 +18,8 @@ - `src/assistant/sessionHistory.ts` - 真正 stub 的主要是: - `src/assistant/sessionDiscovery.ts` - - `src/assistant/AssistantSessionChooser.ts` - - `src/commands/assistant/assistant.ts:7` + - `src/assistant/AssistantSessionChooser.tsx` + - `src/commands/assistant/assistant.tsx:7` - `src/assistant/index.ts` ## 分阶段实现 From 4cc8573408a4be219f15f6ee3b0a9b63be5708e3 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 00:34:01 +0800 Subject: [PATCH 10/23] =?UTF-8?q?docs:=20=E8=A1=A5=E5=85=85=20computer-use?= =?UTF-8?q?-tools-reference=20=E7=BC=BA=E5=A4=B1=E7=9A=84=20Windows=20?= =?UTF-8?q?=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加遗漏的 open_terminal 和 activate_window 两个 Windows 专属工具, 修正工具总数 37→39,Windows 工具数 10→12。 Co-Authored-By: Claude Opus 4.6 --- docs/features/computer-use-tools-reference.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/docs/features/computer-use-tools-reference.md b/docs/features/computer-use-tools-reference.md index 6eaca522ef..5dcaa7b826 100644 --- a/docs/features/computer-use-tools-reference.md +++ b/docs/features/computer-use-tools-reference.md @@ -2,12 +2,12 @@ ## 概览 -Computer Use 提供 37 个工具,分为三类: +Computer Use 提供 39 个工具,分为三类: | 分类 | 平台 | 工具数 | 说明 | |------|------|--------|------| | 通用工具 | 全平台 | 24 | 官方 Computer Use 标准能力 | -| Windows 专属工具 | Win32 | 10 | 绑定窗口模式下的增强能力 | +| Windows 专属工具 | Win32 | 12 | 绑定窗口模式下的增强能力 | | 教学工具 | 全平台 | 3 | 分步引导模式(需 teachMode 开启) | --- @@ -82,7 +82,7 @@ Computer Use 提供 37 个工具,分为三类: --- -## 二、Windows 专属工具(10 个) +## 二、Windows 专属工具(12 个) 仅 Windows 平台可见。核心能力:**绑定窗口后的独立操作——不抢占用户鼠标键盘**。 @@ -235,8 +235,19 @@ Computer Use 提供 37 个工具,分为三类: | 工具 | 参数 | 说明 | |------|------|------| +| `open_terminal` | `agent`, `command?` | 打开新终端窗口并启动 AI agent(claude/codex/gemini/custom)。自动绑定窗口并截图验证 | +| `activate_window` | `click_x?`, `click_y?` | 激活绑定窗口:SetForegroundWindow + BringWindowToTop + 点击确保焦点 | | `prompt_respond` | `response_type`, `arrow_direction?`, `arrow_count?`, `text?` | 处理终端 Yes/No/选择提示 | +**open_terminal agent 类型:** + +| agent | 命令 | 说明 | +|-------|------|------| +| `claude` | `claude` | 启动 Claude Code | +| `codex` | `codex` | 启动 Codex | +| `gemini` | `gemini` | 启动 Gemini | +| `custom` | 用户指定 | 自定义命令 | + **response_type 详情:** | response_type | 操作 | 场景 | From 635ef3d491643754dd94a2d8f9543f3bccf9d1b6 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 04:52:19 +0800 Subject: [PATCH 11/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=20audit/bash-c?= =?UTF-8?q?lassifier/token-budget/tree-sitter=20=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - feature-flags-audit: ScheduleCronTool 路径迁移、DAEMON 状态更新为 COMPLETE、assistant 文件标记已补全、UDS 标记已实现 - bash-classifier: BashPermissionRequest 文件路径修正、withRetry 行号移除 - token-budget: attachments.ts 行号范围修正 - tree-sitter-bash: bashPermissions.ts 路径迁移到 packages/builtin-tools Co-Authored-By: Claude Opus 4.6 --- docs/features/bash-classifier.md | 4 +-- docs/features/feature-flags-audit-complete.md | 34 ++++++++++--------- docs/features/token-budget.md | 2 +- docs/features/tree-sitter-bash.md | 2 +- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/docs/features/bash-classifier.md b/docs/features/bash-classifier.md index 85ae25b571..bd49620700 100644 --- a/docs/features/bash-classifier.md +++ b/docs/features/bash-classifier.md @@ -102,6 +102,6 @@ FEATURE_BASH_CLASSIFIER=1 FEATURE_TREE_SITTER_BASH=1 bun run dev | `src/utils/permissions/bashClassifier.ts` | — | Bash 分类器(stub,ANT-ONLY) | | `src/utils/permissions/yoloClassifier.ts` | 1496 | YOLO 分类器(完整参考实现) | | `src/utils/classifierApprovals.ts` | — | 分类器审批信号管理 | -| `src/components/permissions/BashPermissionRequest.tsx:261-469` | — | 分类器 UI | +| `src/components/permissions/BashPermissionRequest/BashPermissionRequest.tsx` | — | 分类器 UI | | `src/hooks/toolPermission/handlers/interactiveHandler.ts` | — | 交互式权限处理 | -| `src/services/api/withRetry.ts:81` | — | API beta 标头 | +| `src/services/api/withRetry.ts` | — | API beta 标头 | diff --git a/docs/features/feature-flags-audit-complete.md b/docs/features/feature-flags-audit-complete.md index cf357ade08..e02b48f2f6 100644 --- a/docs/features/feature-flags-audit-complete.md +++ b/docs/features/feature-flags-audit-complete.md @@ -543,11 +543,10 @@ src/utils/swarm/ 目录(22 个文件): | 文件路径 | 行数 | 功能说明 | |----------|------|----------| -| src/tools/ScheduleCronTool/CronCreateTool.ts | 157 行 | Cron 创建工具 | -| src/tools/ScheduleCronTool/prompt.ts | 135 行 | Cron 工具提示词 | -| src/tools/ScheduleCronTool/CronListTool.ts | 97 行 | Cron 列表工具 | -| src/tools/ScheduleCronTool/CronDeleteTool.ts | 95 行 | Cron 删除工具 | -| src/tools/ScheduleCronTool/UI.tsx | 59 行 | Cron UI 组件 | +| packages/builtin-tools/src/tools/ScheduleCronTool/CronCreateTool.ts | 157 行 | Cron 创建工具 | +| packages/builtin-tools/src/tools/ScheduleCronTool/prompt.ts | 135 行 | Cron 工具提示词 | +| packages/builtin-tools/src/tools/ScheduleCronTool/CronListTool.ts | 97 行 | Cron 列表工具 | +| packages/builtin-tools/src/tools/ScheduleCronTool/CronDeleteTool.ts | 95 行 | Cron 删除工具 | **引用该标志的文件(6 个)**: 1. src/cli/print.ts — CLI 输出 @@ -877,8 +876,8 @@ src/utils/swarm/ 目录(22 个文件): 59. src/utils/systemPrompt.ts **缺失文件**: -- src/commands/assistant/index.ts — 完全缺失(src/commands.ts 第 69 行引用了 `commands/assistant/index.js`) -- src/commands/assistant/gate.ts — 完全缺失 +- ~~src/commands/assistant/index.ts~~ — 已补全 +- ~~src/commands/assistant/gate.ts~~ — 已补全 **启用所需修复**: 需要创建 `src/commands/assistant/` 目录及其 `index.ts` 和 `gate.ts` 文件。 @@ -1341,16 +1340,19 @@ src/utils/swarm/ 目录(22 个文件): --- -## 45. DAEMON +## 45. DAEMON `[build: ON] [dev: ON]` **编译时引用次数**: 3 -**功能描述**: 守护进程模式。 -**分类**: STUB +**功能描述**: 守护进程模式。允许 Claude Code 作为后台长驻 supervisor 进程运行,管理多个 worker。 +**分类**: COMPLETE(已恢复) +**核心实现文件**: +1. src/daemon/main.ts — 413 行,daemon 主入口,管理生命周期 +2. src/daemon/workerRegistry.ts — 112 行,worker 注册和管理 +3. src/commands/daemon/index.ts — daemon 子命令入口 **引用文件**: -1. src/commands.ts — 条件注册命令(与 BRIDGE_MODE 组合) -2. src/entrypoints/cli.tsx — CLI 入口 -**代码量**: 0 行专属代码 -**说明**: 在 commands.ts 中,`DAEMON` 与 `BRIDGE_MODE` 一起用于条件加载 `commands/remoteControlServer/index.js`,该文件不存在。 +1. src/commands.ts — 条件注册命令 +2. src/entrypoints/cli.tsx — CLI 入口中的 `--daemon-worker` 路径 +**说明**: 已从 stub 恢复为完整实现,支持 `daemon start/status/stop` 子命令、exponential backoff、state file 持久化。 --- @@ -1867,8 +1869,8 @@ src/utils/swarm/ 目录(22 个文件): | src/tools/WorkflowTool/WorkflowTool.ts | 1 行 | WORKFLOW_SCRIPTS | | src/tools/WorkflowTool/constants.ts | 1 行 | WORKFLOW_SCRIPTS | | src/tools/ReviewArtifactTool/ReviewArtifactTool.ts | 1 行 | REVIEW_ARTIFACT | -| src/utils/udsMessaging.ts | 1 行 | UDS_INBOX | -| src/utils/udsClient.ts | 3 行 | UDS_INBOX | +| src/utils/udsMessaging.ts | 已实现 | UDS_INBOX | +| src/utils/udsClient.ts | 已实现 | UDS_INBOX | | src/skills/mcpSkills.ts | 3 行 | MCP_SKILLS | | src/tools/WebBrowserTool/WebBrowserPanel.tsx | 3 行 | WEB_BROWSER_TOOL | | src/tools/WorkflowTool/createWorkflowCommand.ts | 3 行 | WORKFLOW_SCRIPTS | diff --git a/docs/features/token-budget.md b/docs/features/token-budget.md index d064f01d23..1e5050db5e 100644 --- a/docs/features/token-budget.md +++ b/docs/features/token-budget.md @@ -191,7 +191,7 @@ FEATURE_TOKEN_BUDGET=1 bun run dev | `src/query/tokenBudget.ts` | 93 | 预算追踪器 + continue/stop 决策 | | `src/bootstrap/state.ts:724-743` | 20 | turn 级 token 快照状态 | | `src/constants/prompts.ts:538-551` | 14 | 系统提示注入 | -| `src/utils/attachments.ts:3829-3845` | 17 | API attachment 附加 | +| `src/utils/attachments.ts:3830-3844` | 17 | API attachment 附加 | | `src/query.ts:280,1311-1358` | 48 | 主循环集成 | | `src/screens/REPL.tsx:2897,2963,2138` | 20 | REPL 提交/完成/取消处理 | | `src/components/Spinner.tsx:319-338` | 20 | 进度条 UI | diff --git a/docs/features/tree-sitter-bash.md b/docs/features/tree-sitter-bash.md index 82c63a845f..4e917119e3 100644 --- a/docs/features/tree-sitter-bash.md +++ b/docs/features/tree-sitter-bash.md @@ -158,4 +158,4 @@ FEATURE_TREE_SITTER_BASH_SHADOW=1 bun run dev | `src/utils/bash/bashParser.ts` | 4437 | 纯 TS bash 解析器 | | `src/utils/bash/ast.ts` | 2680 | 安全分析器(核心) | | `src/utils/bash/treeSitterAnalysis.ts` | 507 | AST 分析辅助 | -| `src/tools/BashTool/bashPermissions.ts:1670-1810` | ~140 | 权限集成 + Shadow 遥测 | +| `packages/builtin-tools/src/tools/BashTool/bashPermissions.ts` | ~140 | 权限集成 + Shadow 遥测 | From 8a62c034bc842e0c95fd67fc508686eb286e4f1f Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 07:54:31 +0800 Subject: [PATCH 12/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=20langfuse-mon?= =?UTF-8?q?itoring=20AgentTool=20=E8=B7=AF=E5=BE=84=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- docs/features/langfuse-monitoring.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/langfuse-monitoring.md b/docs/features/langfuse-monitoring.md index d917ea6991..3a021f2f7d 100644 --- a/docs/features/langfuse-monitoring.md +++ b/docs/features/langfuse-monitoring.md @@ -202,4 +202,4 @@ docker run -d \ | `src/services/langfuse/__tests__/langfuse.test.ts` | 测试(568 行) | | `src/query.ts` | 主查询流程中的 Trace 集成 | | `src/services/tools/toolExecution.ts` | 工具执行中的观察记录 | -| `src/tools/AgentTool/runAgent.ts` | 子 Agent Trace 创建 | +| `packages/builtin-tools/src/tools/AgentTool/runAgent.ts` | 子 Agent Trace 创建 | From 64430e3648ecf4cab2acd4efe220a112fd94333c Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 07:56:19 +0800 Subject: [PATCH 13/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=20bridgeApi=20?= =?UTF-8?q?=E8=A1=8C=E5=8F=B7=E5=92=8C=20Tool.ts=20=E8=A1=8C=E5=8F=B7?= =?UTF-8?q?=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- docs/features/bridge-mode.md | 2 +- docs/safety/permission-model.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/features/bridge-mode.md b/docs/features/bridge-mode.md index 68f1279a18..5b9385a4f6 100644 --- a/docs/features/bridge-mode.md +++ b/docs/features/bridge-mode.md @@ -137,7 +137,7 @@ FEATURE_BRIDGE_MODE=1 FEATURE_DAEMON=1 bun run dev | 文件 | 行数 | 职责 | |------|------|------| -| `src/bridge/bridgeApi.ts` | 540 | API Client(核心) | +| `src/bridge/bridgeApi.ts` | 541 | API Client(核心) | | `src/bridge/sessionRunner.ts` | — | 会话运行器 | | `src/bridge/bridgeConfig.ts` | — | 配置管理 | | `src/bridge/replBridgeTransport.ts` | — | 传输层 | diff --git a/docs/safety/permission-model.mdx b/docs/safety/permission-model.mdx index cd62d90581..8acc38c3d1 100644 --- a/docs/safety/permission-model.mdx +++ b/docs/safety/permission-model.mdx @@ -67,7 +67,7 @@ MCP 工具使用 `getToolNameForPermissionCheck()` 获取匹配名称,支持 **2. 命令模式匹配**(BashTool 的 `checkPermissions()`) -BashTool 通过 `preparePermissionMatcher()`(`Tool.ts:514`)解析命令模式: +BashTool 通过 `preparePermissionMatcher()`(`Tool.ts:520`)解析命令模式: ```json {"tool": "Bash", "ruleContent": "git *"} → 匹配 "git commit -m 'fix'" ``` From fb0aa4db6de2b8ca8699e742cd2c1d948b169004 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 07:58:14 +0800 Subject: [PATCH 14/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=20Safety/Exten?= =?UTF-8?q?sibility=20=E6=96=87=E6=A1=A3=E4=B8=AD=E7=9A=84=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E8=B7=AF=E5=BE=84=E8=BF=81=E7=A7=BB=E5=92=8C=E8=A1=8C?= =?UTF-8?q?=E5=8F=B7=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - sandbox.mdx: shouldUseSandbox.ts 和 bashPermissions.ts 路径迁移至 packages/builtin-tools - why-safety-matters.mdx: bashPermissions.ts 路径迁移(3 处) - plan-mode.mdx: EnterPlanModeTool/prompt.ts 路径迁移 - auto-mode.mdx: Auto mode 指令行号 3464→3481 - hooks.mdx: AgentTool/runAgent.ts 路径迁移 - skills.mdx: SkillTool.ts 路径迁移 - custom-agents.mdx: Agent built-in 目录和 exploreAgent.ts 路径迁移 Co-Authored-By: Claude Opus 4.6 --- docs/extensibility/custom-agents.mdx | 4 ++-- docs/extensibility/hooks.mdx | 2 +- docs/extensibility/skills.mdx | 2 +- docs/safety/auto-mode.mdx | 2 +- docs/safety/plan-mode.mdx | 2 +- docs/safety/sandbox.mdx | 6 +++--- docs/safety/why-safety-matters.mdx | 6 +++--- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/extensibility/custom-agents.mdx b/docs/extensibility/custom-agents.mdx index d5977804a0..2846f5d48c 100644 --- a/docs/extensibility/custom-agents.mdx +++ b/docs/extensibility/custom-agents.mdx @@ -12,7 +12,7 @@ Claude Code 的 Agent 不仅仅来自用户自定义——系统有三类来源 | 来源 | 位置 | 优先级 | |------|------|--------| -| **Built-in** | `src/tools/AgentTool/built-in/` 硬编码 | 最低(可被覆盖) | +| **Built-in** | `packages/builtin-tools/src/tools/AgentTool/built-in/` 硬编码 | 最低(可被覆盖) | | **Plugin** | 通过插件系统注册 | 中 | | **User/Project/Policy** | `.claude/agents/*.md` 或 settings.json | 最高 | @@ -127,7 +127,7 @@ color: "blue" # 终端中的 Agent 颜色标识 以内置 Explore Agent 为例: ```typescript -// src/tools/AgentTool/built-in/exploreAgent.ts +// packages/builtin-tools/src/tools/AgentTool/built-in/exploreAgent.ts disallowedTools: [ 'Agent', // 不能嵌套调用 Agent 'ExitPlanMode', // 不需要 plan mode diff --git a/docs/extensibility/hooks.mdx b/docs/extensibility/hooks.mdx index 34d5a87213..438f546d34 100644 --- a/docs/extensibility/hooks.mdx +++ b/docs/extensibility/hooks.mdx @@ -240,7 +240,7 @@ SDK 非交互模式下信任是隐式的(`getIsNonInteractiveSession()` 为 tr ## Session Hook 的生命周期 -Agent 和 Skill 的前置 Hook 通过 `registerFrontmatterHooks()` 注册(调用位置:`src/tools/AgentTool/runAgent.ts`;定义位置:`src/utils/hooks/registerFrontmatterHooks.ts`),绑定到 agent 的 session ID。Agent 结束时通过 `clearSessionHooks()`(定义位置:`src/utils/hooks/sessionHooks.ts`)清理。 +Agent 和 Skill 的前置 Hook 通过 `registerFrontmatterHooks()` 注册(调用位置:`packages/builtin-tools/src/tools/AgentTool/runAgent.ts`;定义位置:`src/utils/hooks/registerFrontmatterHooks.ts`),绑定到 agent 的 session ID。Agent 结束时通过 `clearSessionHooks()`(定义位置:`src/utils/hooks/sessionHooks.ts`)清理。 ```typescript // runAgent.ts — 注册 agent 的前置 Hook diff --git a/docs/extensibility/skills.mdx b/docs/extensibility/skills.mdx index 92e8ff7e0f..d19b0b0069 100644 --- a/docs/extensibility/skills.mdx +++ b/docs/extensibility/skills.mdx @@ -98,7 +98,7 @@ shell: ["bash"] # Shell 执行环境 ## 两条执行路径:Inline vs Fork -SkillTool(`src/tools/SkillTool/SkillTool.ts:332`)在 `call()` 中根据 `command.context` 分流: +SkillTool(`packages/builtin-tools/src/tools/SkillTool/SkillTool.ts:332`)在 `call()` 中根据 `command.context` 分流: ### Inline 模式(默认) diff --git a/docs/safety/auto-mode.mdx b/docs/safety/auto-mode.mdx index aaebe78541..ac0430882d 100644 --- a/docs/safety/auto-mode.mdx +++ b/docs/safety/auto-mode.mdx @@ -137,7 +137,7 @@ Auto mode 可通过以下方式激活: ### 进入时(Full Instructions) -注入到对话中的指令(`messages.ts:3464`): +注入到对话中的指令(`messages.ts:3481`): > Auto mode is active. The user chose continuous, autonomous execution. You should: > diff --git a/docs/safety/plan-mode.mdx b/docs/safety/plan-mode.mdx index d402e68eec..f69f0c5105 100644 --- a/docs/safety/plan-mode.mdx +++ b/docs/safety/plan-mode.mdx @@ -107,7 +107,7 @@ if (isTeammate()) { ## 什么时候该用计划模式 -`EnterPlanModeTool` 的 Prompt(`src/tools/EnterPlanModeTool/prompt.ts`)定义了两套触发标准——外部版本更积极(鼓励规划),内部版本更克制(仅在真正模糊时使用): +`EnterPlanModeTool` 的 Prompt(`packages/builtin-tools/src/tools/EnterPlanModeTool/prompt.ts`)定义了两套触发标准——外部版本更积极(鼓励规划),内部版本更克制(仅在真正模糊时使用): | 场景 | 外部版本 | 内部版本 | |------|---------|---------| diff --git a/docs/safety/sandbox.mdx b/docs/safety/sandbox.mdx index 8bd2f00381..f3c3b2b9d3 100644 --- a/docs/safety/sandbox.mdx +++ b/docs/safety/sandbox.mdx @@ -166,7 +166,7 @@ keywords: ["沙箱", "sandbox", "权限", "Bash", "PowerShell", "bubblewrap", "s 5. 这条命令没有被显式排除 6. 这次调用没有被允许以 `dangerouslyDisableSandbox` 绕过 -对应入口在 `src/tools/BashTool/shouldUseSandbox.ts` 和 `src/utils/sandbox/sandbox-adapter.ts`。 +对应入口在 `packages/builtin-tools/src/tools/BashTool/shouldUseSandbox.ts` 和 `src/utils/sandbox/sandbox-adapter.ts`。 ### 3. PowerShell 只在支持平台上走 @@ -518,11 +518,11 @@ REPL / CLI 启动 如果你想继续顺着源码深入,推荐按下面顺序看: -1. `src/tools/BashTool/shouldUseSandbox.ts` +1. `packages/builtin-tools/src/tools/BashTool/shouldUseSandbox.ts` 2. `src/utils/Shell.ts` 3. `src/utils/sandbox/sandbox-adapter.ts` 4. `src/utils/permissions/permissions.ts` -5. `src/tools/BashTool/bashPermissions.ts` +5. `packages/builtin-tools/src/tools/BashTool/bashPermissions.ts` 6. `src/utils/permissions/pathValidation.ts` 7. `src/utils/permissions/filesystem.ts` diff --git a/docs/safety/why-safety-matters.mdx b/docs/safety/why-safety-matters.mdx index 69d55346c5..210ae7a86f 100644 --- a/docs/safety/why-safety-matters.mdx +++ b/docs/safety/why-safety-matters.mdx @@ -61,7 +61,7 @@ Claude 的 System Prompt 中包含安全指令——这是"软性"约束,依 | `deny` | 直接拒绝 | 匹配 deny 规则 | | `ask` | 弹窗确认 | 未匹配任何规则 或 匹配 ask 规则 | -以 BashTool 为例(`src/tools/BashTool/bashPermissions.ts`),`bashToolHasPermission()` 执行了极其细致的检查链: +以 BashTool 为例(`packages/builtin-tools/src/tools/BashTool/bashPermissions.ts`),`bashToolHasPermission()` 执行了极其细致的检查链: 1. **AST 安全解析**:用 tree-sitter 解析 bash AST,检测命令注入(`$()`、反引号等) 2. **语义检查**:识别危险命令(`eval`、`exec`、`source` 等) @@ -169,7 +169,7 @@ Bash("rm -rf node_modules") → ⚠️ 需确认(不可逆) 攻击:cd /malicious/dir && git status /malicious/dir 包含 bare repo + 恶意钩子 防御:bashToolHasPermission() 检测 cd + git 组合 - 强制 require approval(src/tools/BashTool/bashPermissions.ts:2209) + 强制 require approval(packages/builtin-tools/src/tools/BashTool/bashPermissions.ts:2209) ``` ### 场景3:管道注入 @@ -178,5 +178,5 @@ Bash("rm -rf node_modules") → ⚠️ 需确认(不可逆) 攻击:echo 'x' | xargs printf '%s' >> /etc/passwd splitCommand 会剥离重定向,导致路径检查遗漏 防御:即使管道段独立检查通过,仍对原始命令重新验证路径约束 - 检查重定向目标中的危险模式(反引号、$())(bashPermissions.ts:1992-2056) + 检查重定向目标中的危险模式(反引号、$())(packages/builtin-tools/src/tools/BashTool/bashPermissions.ts:1992-2056) ``` From fccdcd71b74c19c90022ceec804f336a1dfa6236 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 07:58:40 +0800 Subject: [PATCH 15/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=20internals=20?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=BC=95=E7=94=A8=E8=AE=A1=E6=95=B0=E5=92=8C?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ant-only-world: USER_TYPE 引用计数 465→410+,工具路径迁移到 builtin-tools - growthbook-ab-testing: growthbook.ts 行数 1156→1258 - hidden-features: 语音模式状态更新(audio-napi 已恢复) Co-Authored-By: Claude Opus 4.6 --- docs/internals/ant-only-world.mdx | 12 ++++++------ docs/internals/growthbook-ab-testing.mdx | 2 +- docs/internals/hidden-features.mdx | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/internals/ant-only-world.mdx b/docs/internals/ant-only-world.mdx index 0022f20dde..ecf242bba5 100644 --- a/docs/internals/ant-only-world.mdx +++ b/docs/internals/ant-only-world.mdx @@ -17,7 +17,7 @@ keywords: ["Ant 特权", "USER_TYPE", "身份门控", "内部功能", "Anthropic `BUILD_TARGET` 等构建时常量在反编译版本中已被移除。`USER_TYPE` 通过 Bun 的 `--define` 或环境变量注入,Bun 会进行**常量折叠**——所有 `process.env.USER_TYPE === 'ant'` 在外部构建中直接变为 `false`,后续代码被 DCE 移除。但在反编译版本中,这些代码保留完整。 -`USER_TYPE === 'ant'` 在代码库中出现 **377+ 次**(含 `=== 'ant'` 291 次、`(process.env.USER_TYPE) === 'ant'` 86 次),另有 `!== 'ant'` 53 次、其他引用约 35 次,总计 **465 处引用**,控制着工具、命令、API、UI 等方方面面。 +`USER_TYPE === 'ant'` 在代码库中出现 **351+ 次**(跨 163 个文件),另有 `!== 'ant'` 59 次(跨 38 个文件),总计 **410+ 处引用**,控制着工具、命令、API、UI 等方方面面。 ## Ant-Only 工具 @@ -25,10 +25,10 @@ keywords: ["Ant 特权", "USER_TYPE", "身份门控", "内部功能", "Anthropic | 工具 | 代码位置 | 用途 | |------|---------|------| -| **REPLTool** | `src/tools/REPLTool/` | 高级 REPL 模式——在 VM 中包装 Bash/Read/Edit/Glob/Grep/Agent 等工具 | -| **SuggestBackgroundPRTool** | `src/tools/SuggestBackgroundPRTool/` | 建议在后台创建 PR | -| **ConfigTool** | `src/tools/ConfigTool/` | 交互式配置编辑器,包含 Gates 标签页用于覆盖 GrowthBook flags | -| **TungstenTool** | `src/tools/TungstenTool/` | 基于 tmux 的终端面板工具(反编译版中已 stub) | +| **REPLTool** | `packages/builtin-tools/src/tools/REPLTool/` | 高级 REPL 模式——在 VM 中包装 Bash/Read/Edit/Glob/Grep/Agent 等工具 | +| **SuggestBackgroundPRTool** | `packages/builtin-tools/src/tools/SuggestBackgroundPRTool/` | 建议在后台创建 PR | +| **ConfigTool** | `packages/builtin-tools/src/tools/ConfigTool/` | 交互式配置编辑器,包含 Gates 标签页用于覆盖 GrowthBook flags | +| **TungstenTool** | `packages/builtin-tools/src/tools/TungstenTool/` | 基于 tmux 的终端面板工具(反编译版中已 stub) | ```typescript // src/tools.ts 第 14-24 行——条件导入 + Dead Code Elimination 标记 @@ -74,7 +74,7 @@ const SuggestBackgroundPRTool = - `summary` — 生成摘要 - `subscribePr` — 订阅 PR(需要 `KAIROS_GITHUB_WEBHOOKS` feature flag) - `forceSnip` — 强制截断历史(需要 `HISTORY_SNIP` feature flag) - - `ultraplan` — 超级规划(需要 `ULTRAPLAN` feature flag) + - `ultraplan` — 超级规划(需要 `ULTRAPLAN` feature flag,单独注册于 `commands.ts:396`) - `backfillSessions` — 回填会话数据 diff --git a/docs/internals/growthbook-ab-testing.mdx b/docs/internals/growthbook-ab-testing.mdx index dd7fcea141..3b043bf78a 100644 --- a/docs/internals/growthbook-ab-testing.mdx +++ b/docs/internals/growthbook-ab-testing.mdx @@ -19,7 +19,7 @@ keywords: ["GrowthBook", "A/B 测试", "运行时门控", "tengu", "渐进式发 ## 集成架构 -GrowthBook 的完整实现位于 `src/services/analytics/growthbook.ts`(1156 行),工作流程如下: +GrowthBook 的完整实现位于 `src/services/analytics/growthbook.ts`(1258 行),工作流程如下: diff --git a/docs/internals/hidden-features.mdx b/docs/internals/hidden-features.mdx index 6995e8c7b4..6c5b0624f8 100644 --- a/docs/internals/hidden-features.mdx +++ b/docs/internals/hidden-features.mdx @@ -84,7 +84,7 @@ keywords: ["隐藏功能", "未公开功能", "秘密功能", "Claude Code 彩 **门控**: `feature('VOICE_MODE')` - 代码中存在语音输入模式的注册点,但核心实现依赖于 `audio-napi` 包(在反编译版本中已 stub): + 代码中存在语音输入模式的注册点,核心实现依赖 `audio-capture-napi` 包(已恢复): - 通过 `/voice` 命令激活 - "按住说话"(hold-to-talk)交互模式 From f416889e92831520e31477c195608f3dadfabd66 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 07:58:43 +0800 Subject: [PATCH 16/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E6=96=87=E6=A1=A3=E4=B8=AD=E7=9A=84=E8=A1=8C=E5=8F=B7?= =?UTF-8?q?=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - sub-agents: AgentTool.call 入口行号 340→387 - shell-execution: ShellCommand onTimeout 行号 129→144 Co-Authored-By: Claude Opus 4.6 --- docs/agent/sub-agents.mdx | 2 +- docs/tools/shell-execution.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/agent/sub-agents.mdx b/docs/agent/sub-agents.mdx index 96b3eb7a46..a27d0ae44e 100644 --- a/docs/agent/sub-agents.mdx +++ b/docs/agent/sub-agents.mdx @@ -13,7 +13,7 @@ keywords: ["子 Agent", "AgentTool", "任务委派", "forkSubagent", "子进程 ``` AI 生成 tool_use: { prompt: "修复 bug", subagent_type: "Explore" } ↓ -AgentTool.call() ← 入口(AgentTool.tsx:340) +AgentTool.call() ← 入口(AgentTool.tsx:387) ├── 解析 effectiveType(fork vs 命名 agent vs GP 回退) ├── filterDeniedAgents() ← 仅命名 Agent 路径执行:权限过滤 ├── 检查 requiredMcpServers ← MCP 依赖验证(最长等 30s) diff --git a/docs/tools/shell-execution.mdx b/docs/tools/shell-execution.mdx index c040d5c97e..9eca2bdd97 100644 --- a/docs/tools/shell-execution.mdx +++ b/docs/tools/shell-execution.mdx @@ -92,7 +92,7 @@ getDefaultTimeoutMs() └── 最大上限:600,000ms(10 分钟,用户显式设置时) ``` -超时后系统不会直接杀进程——`ShellCommand`(`src/utils/ShellCommand.ts:129`)通过 `onTimeout` 回调通知调用方,由调用方决定是终止还是后台化。 +超时后系统不会直接杀进程——`ShellCommand`(`src/utils/ShellCommand.ts:144`)通过 `onTimeout` 回调通知调用方,由调用方决定是终止还是后台化。 ## 自动后台化 From 5079a1759547ddffea156e424bc5615824fcc39c Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 07:58:49 +0800 Subject: [PATCH 17/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=20feature=20?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E4=B8=AD=E7=9A=84=E7=8A=B6=E6=80=81=E3=80=81?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E5=92=8C=E8=AE=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - all-features-guide: 修正 feature flag 启用范围(dev only vs dev+build) - tier3-stubs: 大量状态修正(stub→已实现),缩减过时条目 - workflow-scripts: 路径迁移到 builtin-tools,状态更新 - web-browser-tool: 工具状态缺失→已实现,路径迁移 - context-collapse: CtxInspectTool 状态缺失→已实现 - computer-use: 行号引用更新,平台分发描述修正 - computer-use-tools-reference: 工具数 39→38 - voice-mode: voiceModeEnabled 行数 55→54 Co-Authored-By: Claude Opus 4.6 --- docs/features/all-features-guide.md | 50 ++++++++++------ docs/features/computer-use-tools-reference.md | 4 +- docs/features/computer-use.md | 46 +++++++------- docs/features/context-collapse.md | 4 +- docs/features/tier3-stubs.md | 60 ++++--------------- docs/features/voice-mode.md | 2 +- docs/features/web-browser-tool.md | 16 ++--- docs/features/workflow-scripts.md | 37 ++++++------ 8 files changed, 95 insertions(+), 124 deletions(-) diff --git a/docs/features/all-features-guide.md b/docs/features/all-features-guide.md index 3323ee97be..e872925752 100644 --- a/docs/features/all-features-guide.md +++ b/docs/features/all-features-guide.md @@ -516,25 +516,37 @@ AI 也可通过 `SnipTool` 自动截断过长的对话: | Flag | 默认 | 说明 | |------|------|------| -| `BUDDY` | ✅ dev/build | 伴侣系统 | -| `BRIDGE_MODE` | ✅ dev/build | 远程控制 | -| `VOICE_MODE` | ✅ dev/build | 语音模式 | -| `CHICAGO_MCP` | ✅ dev/build | Computer Use + Chrome | -| `AGENT_TRIGGERS_REMOTE` | ✅ dev/build | 定时任务 | -| `SHOT_STATS` | ✅ dev/build | API 统计 | -| `TOKEN_BUDGET` | ✅ dev/build | Token 预算 | -| `PROMPT_CACHE_BREAK_DETECTION` | ✅ dev/build | 缓存检测 | -| `ULTRAPLAN` | ✅ dev/build | 高级规划 | -| `DAEMON` | ✅ dev/build | 后台守护 | -| `UDS_INBOX` | ✅ dev/build | Pipe IPC | -| `LAN_PIPES` | ✅ dev/build | LAN 群控 | -| `MONITOR_TOOL` | ✅ dev/build | 后台监控 | -| `WORKFLOW_SCRIPTS` | ✅ dev/build | 工作流脚本 | -| `FORK_SUBAGENT` | ✅ dev/build | 子 Agent | -| `KAIROS` | ✅ dev/build | Kairos 调度 | -| `COORDINATOR_MODE` | ✅ dev/build | 多 Worker | -| `HISTORY_SNIP` | ✅ dev/build | 历史管理 | -| `CONTEXT_COLLAPSE` | ✅ dev/build | 上下文折叠 | +| `BUDDY` | ✅ dev only | 伴侣系统 | +| `BRIDGE_MODE` | ✅ dev only | 远程控制 | +| `VOICE_MODE` | ✅ dev+build | 语音模式 | +| `CHICAGO_MCP` | ✅ dev+build | Computer Use + Chrome | +| `AGENT_TRIGGERS_REMOTE` | ✅ dev+build | 定时任务 | +| `SHOT_STATS` | ✅ dev+build | API 统计 | +| `TOKEN_BUDGET` | ✅ dev+build | Token 预算 | +| `PROMPT_CACHE_BREAK_DETECTION` | ✅ dev+build | 缓存检测 | +| `ULTRAPLAN` | ✅ dev+build | 高级规划 | +| `DAEMON` | ✅ dev+build | 后台守护 | +| `UDS_INBOX` | ✅ dev only | Pipe IPC | +| `LAN_PIPES` | ✅ dev only | LAN 群控 | +| `MONITOR_TOOL` | ✅ dev+build | 后台监控 | +| `WORKFLOW_SCRIPTS` | ✅ dev+build | 工作流脚本 | +| `FORK_SUBAGENT` | ✅ dev+build | 子 Agent | +| `KAIROS` | ✅ dev+build | Kairos 调度 | +| `COORDINATOR_MODE` | ✅ dev+build | 多 Worker | +| `HISTORY_SNIP` | ✅ dev+build | 历史管理 | +| `CONTEXT_COLLAPSE` | ✅ dev+build | 上下文折叠 | +| `ULTRATHINK` | ✅ dev+build | 扩展思考 | +| `EXTRACT_MEMORIES` | ✅ dev+build | 自动记忆提取 | +| `VERIFICATION_AGENT` | ✅ dev+build | 验证 Agent | +| `KAIROS_BRIEF` | ✅ dev+build | Brief 模式 | +| `AWAY_SUMMARY` | ✅ dev+build | 离开摘要 | +| `ACP` | ✅ dev+build | ACP 协议 | +| `LODESTONE` | ✅ dev+build | 深度链接 | +| `BUILTIN_EXPLORE_PLAN_AGENTS` | ✅ dev+build | 内置 Explore/Plan agent | +| `AGENT_TRIGGERS` | ✅ dev+build | 本地定时任务 | +| `BG_SESSIONS` | ✅ dev only | 后台会话 | +| `TEMPLATES` | ✅ dev only | 模板系统 | +| `TRANSCRIPT_CLASSIFIER` | ✅ dev only | 对话分类 | 手动启用任意 flag: ```bash diff --git a/docs/features/computer-use-tools-reference.md b/docs/features/computer-use-tools-reference.md index 5dcaa7b826..026215da14 100644 --- a/docs/features/computer-use-tools-reference.md +++ b/docs/features/computer-use-tools-reference.md @@ -2,12 +2,12 @@ ## 概览 -Computer Use 提供 39 个工具,分为三类: +Computer Use 提供 38 个工具,分为三类: | 分类 | 平台 | 工具数 | 说明 | |------|------|--------|------| | 通用工具 | 全平台 | 24 | 官方 Computer Use 标准能力 | -| Windows 专属工具 | Win32 | 12 | 绑定窗口模式下的增强能力 | +| Windows 专属工具 | Win32 | 11 | 绑定窗口模式下的增强能力 | | 教学工具 | 全平台 | 3 | 分步引导模式(需 teachMode 开启) | --- diff --git a/docs/features/computer-use.md b/docs/features/computer-use.md index 2ae3cc77fa..b3e3370299 100644 --- a/docs/features/computer-use.md +++ b/docs/features/computer-use.md @@ -11,7 +11,7 @@ - ✅ `@ant/computer-use-input` 拆为 dispatcher + backends(darwin + win32) - ✅ `@ant/computer-use-swift` 拆为 dispatcher + backends(darwin + win32) - ✅ `CHICAGO_MCP` 编译开关已开 -- ❌ `src/` 层有 6 处 macOS 硬编码阻塞 +- ✅ `src/` 层 macOS 硬编码已移除(Phase 2 已完成) ## 2. 阻塞点全景 @@ -19,25 +19,25 @@ | # | 文件:行号 | 阻塞代码 | 影响 | |---|----------|---------|------| -| 1 | `src/main.tsx:1605` | `getPlatform() === 'macos'` | 整个 CU 初始化被跳过 | +| 1 | `src/main.tsx:2366` | `feature("CHICAGO_MCP")` 门控 | CU 初始化入口 | ### 2.2 加载层 | # | 文件:行号 | 阻塞代码 | 影响 | |---|----------|---------|------| -| 2 | `src/utils/computerUse/swiftLoader.ts:16` | `process.platform !== 'darwin'` → throw | 截图、应用管理全部不可用 | -| 3 | `src/utils/computerUse/executor.ts:263` | `process.platform !== 'darwin'` → throw | 整个 executor 工厂函数不可用 | +| 2 | `src/utils/computerUse/swiftLoader.ts` | macOS-only loader(已改为仅 darwin 加载) | 非 darwin 使用 platforms/ 替代 | +| 3 | `src/utils/computerUse/executor.ts:302` | `process.platform !== 'darwin'` → cross-platform executor | 非 darwin 走跨平台路径 | ### 2.3 macOS 特有依赖 | # | 文件:行号 | 依赖 | macOS 实现 | 需要替代方案 | |---|----------|------|-----------|------------| -| 4 | `executor.ts:70-88` | 剪贴板 | `pbcopy`/`pbpaste` | Win: PowerShell `Get/Set-Clipboard`;Linux: `xclip`/`wl-copy` | -| 5 | `drainRunLoop.ts:21` | CFRunLoop pump | `cu._drainMainRunLoop()` | 非 darwin:直接执行 fn(),不需要 pump | -| 6 | `escHotkey.ts:28` | ESC 热键 | CGEventTap | 非 darwin:返回 false(已有 Ctrl+C fallback) | -| 7 | `hostAdapter.ts:48-54` | 系统权限 | TCC accessibility + screenRecording | Win:直接 granted;Linux:检查 xdotool | -| 8 | `common.ts:56` | 平台标识 | `platform: 'darwin'` 硬编码 | 动态获取 | -| 9 | `executor.ts:180` | 粘贴快捷键 | `command+v` | Win/Linux:`ctrl+v` | +| 4 | `executor.ts:72-96` | 剪贴板 | `pbcopy`/`pbpaste` / PowerShell / xclip | Win: PowerShell `Get/Set-Clipboard`;Linux: `xclip`/`wl-copy` | +| 5 | `drainRunLoop.ts` | CFRunLoop pump | `cu._drainMainRunLoop()` | 非 darwin:直接执行 fn(),不需要 pump | +| 6 | `escHotkey.ts` | ESC 热键 | CGEventTap | 非 darwin:返回 false(已有 Ctrl+C fallback) | +| 7 | `hostAdapter.ts` | 系统权限 | TCC accessibility + screenRecording | Win:直接 granted;Linux:检查 xdotool | +| 8 | `common.ts:55-58` | 平台标识 | 动态获取 | 已改为 `process.platform` 分发 | +| 9 | `executor.ts:232` | 粘贴快捷键 | `command`/`ctrl` 分发 | 已按平台分发粘贴快捷键 | ### 2.4 缺失的 Linux 后端 @@ -100,19 +100,19 @@ | 步骤 | 文件 | 改动 | |------|------|------| -| 2.1 | `src/main.tsx:1605` | `getPlatform() === 'macos'` → 去掉平台限制,或改为 `!== 'unknown'` | -| 2.2 | `src/utils/computerUse/swiftLoader.ts:16-18` | 移除 `process.platform !== 'darwin'` throw。`@ant/computer-use-swift/index.ts` 已有跨平台 dispatch | -| 2.3 | `src/utils/computerUse/executor.ts:263-267` | 移除 `process.platform !== 'darwin'` throw。改为检查 input/swift isSupported | -| 2.4 | `src/utils/computerUse/executor.ts:70-88` | 剪贴板函数按平台分发:darwin→pbcopy/pbpaste,win32→PowerShell Get/Set-Clipboard,linux→xclip | -| 2.5 | `src/utils/computerUse/executor.ts:180` | `typeViaClipboard` 中 `command+v` → 非 darwin 时用 `ctrl+v` | -| 2.6 | `src/utils/computerUse/executor.ts:273` | `const cu = requireComputerUseSwift()` → 改为 `new ComputerUseAPI()`(从 package 直接实例化,不走 swiftLoader throw) | -| 2.7 | `src/utils/computerUse/drainRunLoop.ts` | 开头加 `if (process.platform !== 'darwin') return fn()` | -| 2.8 | `src/utils/computerUse/escHotkey.ts` | `registerEscHotkey` 非 darwin 返回 false(已有 Ctrl+C fallback) | -| 2.9 | `src/utils/computerUse/hostAdapter.ts:48-54` | `ensureOsPermissions` 非 darwin 返回 `{ granted: true }` | -| 2.10 | `src/utils/computerUse/common.ts:56` | `platform: 'darwin'` → `platform: process.platform === 'win32' ? 'windows' : process.platform === 'linux' ? 'linux' : 'darwin'` | -| 2.11 | `src/utils/computerUse/common.ts:55` | `screenshotFiltering: 'native'` → 非 darwin 时 `'none'`(Windows/Linux 截图不支持 per-app 过滤) | -| 2.12 | `src/utils/computerUse/gates.ts:13` | `enabled: false` → `enabled: true`(无 GrowthBook 时默认可用) | -| 2.13 | `src/utils/computerUse/gates.ts:39-43` | `hasRequiredSubscription()` → 直接返回 `true` | +| 2.1 | `src/main.tsx:2366` | `feature("CHICAGO_MCP")` → 已为跨平台入口 | +| 2.2 | `src/utils/computerUse/swiftLoader.ts` | 已改为仅 darwin 加载,非 darwin 使用 platforms/ | +| 2.3 | `src/utils/computerUse/executor.ts:302-309` | 已改为 cross-platform dispatch(非 darwin → createCrossPlatformExecutor) | +| 2.4 | `src/utils/computerUse/executor.ts:72-96` | 剪贴板已按平台分发:darwin→pbcopy/pbpaste,win32→PowerShell,linux→xclip | +| 2.5 | `src/utils/computerUse/executor.ts:232` | 粘贴快捷键已按平台分发:darwin→command,其他→ctrl | +| 2.6 | `src/utils/computerUse/executor.ts:302-309` | 非 darwin 已改为 `createCrossPlatformExecutor()` | +| 2.7 | `src/utils/computerUse/drainRunLoop.ts` | 非 darwin 无需 pump(直接执行 fn) | +| 2.8 | `src/utils/computerUse/escHotkey.ts` | 非 darwin 返回 false(已有 Ctrl+C fallback) | +| 2.9 | `src/utils/computerUse/hostAdapter.ts` | 非 darwin 权限检查逻辑已实现 | +| 2.10 | `src/utils/computerUse/common.ts:58` | 已改为动态 `process.platform` 分发 | +| 2.11 | `src/utils/computerUse/common.ts:55` | 已改为 darwin→'native',其他→'none' | +| 2.12 | `src/utils/computerUse/gates.ts:55` | 已更新(需验证 enabled 默认值) | +| 2.13 | `src/utils/computerUse/gates.ts:39` | `hasRequiredSubscription()` 已更新 | ### Phase 3:新增 Linux 后端 diff --git a/docs/features/context-collapse.md b/docs/features/context-collapse.md index e0c7260995..afe9f153e7 100644 --- a/docs/features/context-collapse.md +++ b/docs/features/context-collapse.md @@ -25,7 +25,7 @@ CONTEXT_COLLAPSE 让模型内省上下文窗口使用情况,并智能压缩旧 | 折叠核心 | `src/services/contextCollapse/index.ts` | **Stub** — 接口完整(`ContextCollapseStats`、`CollapseResult`、`DrainResult`),函数全部空操作 | | 折叠操作 | `src/services/contextCollapse/operations.ts` | **Stub** — `projectView` 为恒等函数 | | 折叠持久化 | `src/services/contextCollapse/persist.ts` | **Stub** — `restoreFromEntries` 为空操作 | -| CtxInspectTool | `src/tools/CtxInspectTool/` | **缺失** — 目录不存在 | +| CtxInspectTool | `packages/builtin-tools/src/tools/CtxInspectTool/CtxInspectTool.ts` | **实现** — 上下文内省工具 | | SnipTool 提示 | `src/tools/SnipTool/prompt.ts` | **Stub** — 空工具名 | | SnipTool 实现 | `src/tools/SnipTool/SnipTool.ts` | **缺失** | | force-snip 命令 | `src/commands/force-snip.js` | **缺失** | @@ -106,7 +106,7 @@ SnipTool 提供手动折叠能力: | 1 | `services/contextCollapse/index.ts` | 大 | 折叠状态机、LLM 调用、消息压缩 | | 2 | `services/contextCollapse/operations.ts` | 中 | `projectView()` 消息过滤 | | 3 | `services/contextCollapse/persist.ts` | 小 | `restoreFromEntries()` 磁盘持久化 | -| 4 | `tools/CtxInspectTool/` | 中 | 上下文内省工具(token 计数、已折叠范围) | +| 4 | `tools/CtxInspectTool/` | 已完成 | 上下文内省工具已实现(`packages/builtin-tools/src/tools/CtxInspectTool/`) | | 5 | `tools/SnipTool/SnipTool.ts` | 中 | Snip 工具实现 | | 6 | `commands/force-snip.js` | 小 | `/force-snip` 命令 | diff --git a/docs/features/tier3-stubs.md b/docs/features/tier3-stubs.md index e15f0e303d..43151f93db 100644 --- a/docs/features/tier3-stubs.md +++ b/docs/features/tier3-stubs.md @@ -7,50 +7,13 @@ | Feature | 引用 | 状态 | 类别 | 简要说明 | |---------|------|------|------|---------| -| CHICAGO_MCP | 16 | N/A | 内部基础设施 | Anthropic 内部 MCP 基础设施,非外部可用 | -| MONITOR_TOOL | 13 | Stub | 工具 | 文件/进程监控工具,检测变更并通知 | -| BG_SESSIONS | 11 | Stub | 会话管理 | 后台会话管理,支持多会话并行 | -| SHOT_STATS | 10 | 无实现 | 统计 | 逐 prompt 统计信息收集 | -| EXTRACT_MEMORIES | 7 | 无实现 | 记忆 | 自动从对话中提取重要信息作为记忆 | -| TEMPLATES | 6 | Stub | 项目管理 | 项目/提示模板系统 | -| LODESTONE | 6 | N/A | 内部基础设施 | 内部基础设施模块 | -| STREAMLINED_OUTPUT | 1 | — | 输出 | 精简输出模式,减少终端输出量 | -| HOOK_PROMPTS | 1 | — | 钩子 | Hook 提示词,自定义钩子的提示注入 | -| CCR_AUTO_CONNECT | 3 | — | 远程控制 | CCR 自动连接,自动建立远程控制会话 | -| CCR_MIRROR | 4 | — | 远程控制 | CCR 镜像模式,会话状态同步 | -| CCR_REMOTE_SETUP | 1 | — | 远程控制 | CCR 远程设置,初始化远程控制配置 | -| NATIVE_CLIPBOARD_IMAGE | 2 | — | 系统集成 | 原生剪贴板图片,从剪贴板读取图片 | -| CONNECTOR_TEXT | 7 | — | 连接器 | 连接器文本,外部系统文本适配 | -| COMMIT_ATTRIBUTION | 12 | — | Git | Commit 归因,标记 commit 来源 | -| CACHED_MICROCOMPACT | 12 | — | 压缩 | 缓存微压缩,优化 compaction 性能 | -| PROMPT_CACHE_BREAK_DETECTION | 9 | — | 性能 | Prompt cache 中断检测,监控 cache miss | -| MEMORY_SHAPE_TELEMETRY | 3 | — | 遥测 | 记忆形态遥测,记忆使用模式追踪 | -| MCP_RICH_OUTPUT | 3 | — | MCP | MCP 富输出,增强 MCP 工具输出格式 | -| FILE_PERSISTENCE | 3 | — | 持久化 | 文件持久化,跨会话保持状态 | -| TREE_SITTER_BASH_SHADOW | 5 | Shadow | 安全 | Bash AST Shadow 模式(见 tree-sitter-bash.md) | -| QUICK_SEARCH | 5 | — | 搜索 | 快速搜索,优化的文件/内容搜索 | -| MESSAGE_ACTIONS | 5 | — | UI | 消息操作,对消息执行后处理动作 | -| DOWNLOAD_USER_SETTINGS | 5 | — | 配置 | 下载用户设置,从服务端同步配置 | -| DIRECT_CONNECT | 5 | — | 网络 | 直连模式,绕过代理直接连接 API | -| VERIFICATION_AGENT | 4 | — | Agent | 验证 Agent,专门用于验证代码变更 | -| TERMINAL_PANEL | 4 | — | UI | 终端面板,嵌入式终端输出显示 | -| SSH_REMOTE | 4 | — | 远程 | SSH 远程,通过 SSH 连接远程 Claude | -| REVIEW_ARTIFACT | 4 | — | 审查 | Review Artifact,代码审查产出物 | -| REACTIVE_COMPACT | 4 | — | 压缩 | 响应式压缩,基于上下文变化触发 compaction | -| HISTORY_PICKER | 4 | — | UI | 历史选择器,浏览和选择历史对话 | -| UPLOAD_USER_SETTINGS | 2 | — | 配置 | 上传用户设置,同步配置到服务端 | -| POWERSHELL_AUTO_MODE | 2 | — | 平台 | PowerShell 自动模式,Windows 权限自动化 | -| OVERFLOW_TEST_TOOL | 2 | — | 测试 | 溢出测试工具,测试上下文溢出处理 | -| NEW_INIT | 2 | — | 初始化 | 新版初始化流程 | -| HARD_FAIL | 2 | — | 错误处理 | 硬失败模式,不可恢复错误直接终止 | -| ENHANCED_TELEMETRY_BETA | 2 | — | 遥测 | 增强遥测 Beta,详细的性能指标收集 | -| COWORKER_TYPE_TELEMETRY | 2 | — | 遥测 | 协作者类型遥测,追踪协作模式 | -| BREAK_CACHE_COMMAND | 2 | — | 缓存 | 中断缓存命令,强制刷新 prompt cache | -| AWAY_SUMMARY | 2 | — | 摘要 | 离开摘要,用户返回时总结期间工作 | -| AUTO_THEME | 2 | — | UI | 自动主题,根据终端设置切换主题 | -| ALLOW_TEST_VERSIONS | 2 | — | 版本 | 允许测试版本,跳过版本检查 | -| AGENT_TRIGGERS_REMOTE | 2 | — | Agent | Agent 远程触发,从远程触发 Agent 任务 | -| AGENT_MEMORY_SNAPSHOT | 2 | — | Agent | Agent 记忆快照,保存/恢复 Agent 状态 | +| CHICAGO_MCP | 16 | 已实现 | 工具 | Computer Use + Chrome MCP 控制(build 默认启用) | +| MONITOR_TOOL | 13 | 已实现 | 工具 | 后台监控工具,持续监视 shell 输出(build 默认启用) | +| BG_SESSIONS | 11 | 部分实现 | 会话管理 | 后台会话注册/清理已实现,任务摘要是 stub(dev 默认启用) | +| SHOT_STATS | 10 | 已实现 | 统计 | API 调用统计面板(build 默认启用) | +| EXTRACT_MEMORIES | 7 | 已实现 | 记忆 | 自动记忆提取(build 默认启用,受 GrowthBook 门控) | +| TEMPLATES | 6 | 部分实现 | 项目管理 | 项目/提示模板系统(dev 默认启用) | +| LODESTONE | 6 | 已实现 | 深度链接 | URL 协议处理器(build 默认启用) | ## 单引用 Feature(40+ 个) @@ -66,10 +29,9 @@ BUILDING_CLAUDE_APPS, ANTI_DISTILLATION_CC, AGENT_TRIGGERS, ABLATION_BASELINE 这些 feature 被列为 Tier 3 的原因: -1. **内部基础设施**(CHICAGO_MCP, LODESTONE):Anthropic 内部使用,外部无法运行 -2. **纯 Stub 且引用低**(MONITOR_TOOL, BG_SESSIONS):需要大量工作才能实现 -3. **实验性功能**(SHOT_STATS, EXTRACT_MEMORIES):尚在概念阶段 -4. **辅助功能**(STREAMLINED_OUTPUT, HOOK_PROMPTS):影响范围小 -5. **CCR 系列**:依赖远程控制基础设施,需要 BRIDGE_MODE 先完善 +1. **已实现但影响范围小**(CHICAGO_MCP, LODESTONE, SHOT_STATS, EXTRACT_MEMORIES, MONITOR_TOOL):已在 build/dev 默认启用,主要作为其他功能的基础设施 +2. **部分实现**(BG_SESSIONS, TEMPLATES):核心注册已实现,但部分功能如任务摘要仍是 stub +3. **辅助功能**(STREAMLINED_OUTPUT, HOOK_PROMPTS):影响范围小 +4. **CCR 系列**:依赖远程控制基础设施,需要 BRIDGE_MODE 先完善 如需深入了解某个 Tier 3 feature,可以在代码库中搜索 `feature('FEATURE_NAME')` 查看具体使用场景。 diff --git a/docs/features/voice-mode.md b/docs/features/voice-mode.md index 6131bd8da3..b2a6d5eee7 100644 --- a/docs/features/voice-mode.md +++ b/docs/features/voice-mode.md @@ -120,6 +120,6 @@ FEATURE_VOICE_MODE=1 bun run dev | 文件 | 行数 | 职责 | |------|------|------| -| `src/voice/voiceModeEnabled.ts` | 55 | 三层门控逻辑 | +| `src/voice/voiceModeEnabled.ts` | 54 | 三层门控逻辑 | | `src/hooks/useVoice.ts` | — | React hook(录音状态 + WebSocket) | | `src/services/voiceStreamSTT.ts` | — | STT WebSocket 流式传输 | diff --git a/docs/features/web-browser-tool.md b/docs/features/web-browser-tool.md index ece5d40ee3..9290a685ed 100644 --- a/docs/features/web-browser-tool.md +++ b/docs/features/web-browser-tool.md @@ -1,7 +1,7 @@ # WEB_BROWSER_TOOL — 浏览器工具 > Feature Flag: `FEATURE_WEB_BROWSER_TOOL=1` -> 实现状态:核心实现缺失,面板为 Stub,布线完整 +> 实现状态:核心工具已实现,面板为 Stub,布线完整 > 引用数:4 ## 一、功能概述 @@ -14,8 +14,8 @@ WEB_BROWSER_TOOL 让模型可以启动浏览器实例、导航网页、与页面 | 模块 | 文件 | 状态 | |------|------|------| -| 浏览器面板 | `src/tools/WebBrowserTool/WebBrowserPanel.ts` | **Stub** — 返回 null | -| 浏览器工具 | `src/tools/WebBrowserTool/WebBrowserTool.ts` | **缺失** | +| 浏览器面板 | `packages/builtin-tools/src/tools/WebBrowserTool/WebBrowserPanel.ts` | **Stub** — 返回 null | +| 浏览器工具 | `packages/builtin-tools/src/tools/WebBrowserTool/WebBrowserTool.ts` | **已实现** | | REPL 集成 | `src/screens/REPL.tsx` | **布线** — 渲染 WebBrowserPanel | | 工具注册 | `src/tools.ts` | **布线** — 动态加载 | | WebView 检测 | `src/main.tsx` | **布线** — `'WebView' in Bun` 检测 | @@ -44,8 +44,8 @@ WebBrowserPanel 在 REPL 侧边显示浏览器状态 | 模块 | 工作量 | 说明 | |------|--------|------| -| `WebBrowserTool.ts` | 大 | 工具 schema + Bun WebView API 执行 | -| `WebBrowserPanel.tsx` | 中 | REPL 侧边栏浏览器状态面板 | +| `WebBrowserTool.ts` | ✅ 已实现 | 工具 schema + Bun WebView API 执行 | +| `WebBrowserPanel.tsx` | 中 | REPL 侧边栏浏览器状态面板(仍为 Stub) | ## 四、关键设计决策 @@ -63,7 +63,7 @@ FEATURE_WEB_BROWSER_TOOL=1 bun run dev | 文件 | 职责 | |------|------| -| `src/tools/WebBrowserTool/WebBrowserPanel.ts` | 面板组件(stub) | -| `src/tools/WebBrowserTool/WebBrowserTool.ts` | 工具实现(缺失) | -| `src/screens/REPL.tsx:273,4582` | 面板渲染 | +| `packages/builtin-tools/src/tools/WebBrowserTool/WebBrowserPanel.ts` | 面板组件(stub) | +| `packages/builtin-tools/src/tools/WebBrowserTool/WebBrowserTool.ts` | 工具实现(已实现) | +| `src/screens/REPL.tsx:471,5676` | 面板渲染 | | `src/tools.ts:115-116` | 工具注册 | diff --git a/docs/features/workflow-scripts.md b/docs/features/workflow-scripts.md index 7bcc2e5e16..05a59e6052 100644 --- a/docs/features/workflow-scripts.md +++ b/docs/features/workflow-scripts.md @@ -14,17 +14,17 @@ WORKFLOW_SCRIPTS 实现基于文件的多步自动化工作流。用户可以定 | 模块 | 文件 | 状态 | |------|------|------| -| WorkflowTool | `src/tools/WorkflowTool/WorkflowTool.ts` | **Stub** — 空对象 | -| Workflow 权限 | `src/tools/WorkflowTool/WorkflowPermissionRequest.ts` | **Stub** — 返回 null | -| 常量 | `src/tools/WorkflowTool/constants.ts` | **Stub** — 空工具名 | -| 命令创建 | `src/tools/WorkflowTool/createWorkflowCommand.ts` | **Stub** — 空操作 | -| 捆绑工作流 | `src/tools/WorkflowTool/bundled/` | **缺失** — 目录不存在 | +| WorkflowTool | `packages/builtin-tools/src/tools/WorkflowTool/WorkflowTool.ts` | **部分实现** — tool schema + 渲染完整,call 返回运行时缺失提示 | +| Workflow 权限 | `packages/builtin-tools/src/tools/WorkflowTool/WorkflowPermissionRequest.tsx` | **部分实现** — 权限请求组件 | +| 常量 | `packages/builtin-tools/src/tools/WorkflowTool/constants.ts` | **实现** — 工具名 + 目录名 + 文件扩展名常量 | +| 命令创建 | `packages/builtin-tools/src/tools/WorkflowTool/createWorkflowCommand.ts` | **实现** — 扫描 .claude/workflows/ 目录创建 Command 对象 | +| 捆绑工作流 | `packages/builtin-tools/src/tools/WorkflowTool/bundled/index.ts` | **实现** — 内置工作流初始化 | | 本地工作流任务 | `src/tasks/LocalWorkflowTask/LocalWorkflowTask.ts` | **Stub** — 类型 + 空操作 | | UI 任务组件 | `src/components/tasks/src/tasks/LocalWorkflowTask/` | **Stub** — 空导出 | | 详情对话框 | `src/components/tasks/WorkflowDetailDialog.ts` | **Stub** — 返回 null | | 任务注册 | `src/tasks.ts` | **布线** — 动态加载 | -| 工具注册 | `src/tools.ts` | **布线** — 包含 bundled 工作流初始化 | -| 命令注册 | `src/commands.ts` | **布线** — `/workflows` 命令 | +| 工具注册 | `src/tools.ts` | **布线** — 动态加载 + bundled 工作流初始化 (行 131-134,235) | +| 命令注册 | `src/commands.ts` | **布线** — `/workflows` 命令 (行 93-95,395,460) | ### 2.2 预期数据流 @@ -69,13 +69,9 @@ steps: | 优先级 | 模块 | 工作量 | 说明 | |--------|------|--------|------| -| 1 | `WorkflowTool.ts` | 大 | Schema 定义 + 多步执行引擎 | -| 2 | `bundled/index.js` | 中 | 内置工作流定义(initBundledWorkflows) | -| 3 | `createWorkflowCommand.ts` | 中 | 从文件解析创建命令对象 | -| 4 | `LocalWorkflowTask.ts` | 大 | 步骤协调、kill/skip/retry | -| 5 | `WorkflowDetailDialog.ts` | 中 | 进度详情 UI | -| 6 | `WorkflowPermissionRequest.ts` | 小 | 权限对话框 | -| 7 | `constants.ts` | 小 | 工具名常量 | +| 1 | `WorkflowTool.ts` call 方法 | 中 | 实际工作流执行逻辑(当前返回运行时缺失提示) | +| 2 | `LocalWorkflowTask.ts` | 大 | 步骤协调、kill/skip/retry | +| 3 | `WorkflowDetailDialog.ts` | 中 | 进度详情 UI | ## 四、关键设计决策 @@ -95,11 +91,12 @@ FEATURE_WORKFLOW_SCRIPTS=1 bun run dev | 文件 | 职责 | |------|------| -| `src/tools/WorkflowTool/WorkflowTool.ts` | 工具定义(stub) | -| `src/tools/WorkflowTool/WorkflowPermissionRequest.ts` | 权限对话框(stub) | -| `src/tools/WorkflowTool/constants.ts` | 常量(stub) | -| `src/tools/WorkflowTool/createWorkflowCommand.ts` | 命令创建(stub) | +| `packages/builtin-tools/src/tools/WorkflowTool/WorkflowTool.ts` | 工具定义(部分实现) | +| `packages/builtin-tools/src/tools/WorkflowTool/WorkflowPermissionRequest.tsx` | 权限请求组件 | +| `packages/builtin-tools/src/tools/WorkflowTool/constants.ts` | 常量定义 | +| `packages/builtin-tools/src/tools/WorkflowTool/createWorkflowCommand.ts` | 命令创建(已实现) | +| `packages/builtin-tools/src/tools/WorkflowTool/bundled/index.ts` | 内置工作流初始化 | | `src/tasks/LocalWorkflowTask/LocalWorkflowTask.ts` | 任务协调(stub) | | `src/components/tasks/WorkflowDetailDialog.ts` | 详情对话框(stub) | -| `src/tools.ts:127-132` | 工具注册 | -| `src/commands.ts:86-89` | 命令注册 | +| `src/tools.ts:131-134,235` | 工具注册 | +| `src/commands.ts:93-95,395,460` | 命令注册 | From b048fdc91ab2ae985d9598adf17098331aac8962 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 07:58:58 +0800 Subject: [PATCH 18/23] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=20the-loop=20?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=BE=AA=E7=8E=AF=E8=A1=8C=E5=8F=B7=E5=BC=95?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit query.ts 代码变更后终止原因行号整体偏移约 40 行 Co-Authored-By: Claude Opus 4.6 --- docs/conversation/the-loop.mdx | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/conversation/the-loop.mdx b/docs/conversation/the-loop.mdx index 03359ad791..7edd8085f3 100644 --- a/docs/conversation/the-loop.mdx +++ b/docs/conversation/the-loop.mdx @@ -74,17 +74,17 @@ const toolUpdates = streamingToolExecutor | 终止原因 | 触发位置 | 机制 | |----------|---------|------| -| **blocking_limit** | 第 646 行 | Token 计数超过硬限制(非 autocompact 模式)→ 生成 PTL 错误消息 → 返回 | -| **image_error** | 第 980 行 | `ImageSizeError` / `ImageResizeError` 异常 → 直接返回 | -| **model_error** | 第 999 行 | `callModel()` 抛出不可恢复异常 → 生成错误消息 → 返回 | -| **aborted_streaming** | 第 1054 行 | `abortController.signal.aborted`(流式阶段)→ 为未完成的 tool_use 生成合成 tool_result → 返回 | -| **prompt_too_long** | 第 1178/1185 行 | 413 错误且 reactive compact 无法恢复 → 暂扣的错误消息被释放 → 返回 | -| **completed** | 第 1267 行 | API 错误(限流、认证失败等)导致无法继续 → 返回 | -| **stop_hook_prevented** | 第 1282 行 | Stop hook 返回 `preventContinuation: true` → 返回 | -| **completed** | 第 1360 行 | 正常完成:AI 未发出 tool_use → `needsFollowUp = false` → 经过 stop hooks → 返回 | -| **aborted_tools** | 第 1518 行 | `abortController.signal.aborted`(工具执行阶段)→ 返回 | -| **hook_stopped** | 第 1523 行 | 工具执行期间 hook 返回 `shouldPreventContinuation` → 返回 | -| **max_turns** | 第 1714 行 | 轮次计数超过 `maxTurns` 限制 → 返回 | +| **blocking_limit** | 第 686 行 | Token 计数超过硬限制(非 autocompact 模式)→ 生成 PTL 错误消息 → 返回 | +| **image_error** | 第 1021 行 | `ImageSizeError` / `ImageResizeError` 异常 → 直接返回 | +| **model_error** | 第 1040 行 | `callModel()` 抛出不可恢复异常 → 生成错误消息 → 返回 | +| **aborted_streaming** | 第 1095 行 | `abortController.signal.aborted`(流式阶段)→ 为未完成的 tool_use 生成合成 tool_result → 返回 | +| **prompt_too_long** | 第 1219/1226 行 | 413 错误且 reactive compact 无法恢复 → 暂扣的错误消息被释放 → 返回 | +| **completed** | 第 1308 行 | API 错误(限流、认证失败等)导致无法继续 → 返回 | +| **stop_hook_prevented** | 第 1323 行 | Stop hook 返回 `preventContinuation: true` → 返回 | +| **completed** | 第 1401 行 | 正常完成:AI 未发出 tool_use → `needsFollowUp = false` → 经过 stop hooks → 返回 | +| **aborted_tools** | 第 1559 行 | `abortController.signal.aborted`(工具执行阶段)→ 返回 | +| **hook_stopped** | 第 1564 行 | 工具执行期间 hook 返回 `shouldPreventContinuation` → 返回 | +| **max_turns** | 第 1755 行 | 轮次计数超过 `maxTurns` 限制 → 返回 | ## 继续条件(恢复路径) @@ -158,7 +158,7 @@ type State = { - **每一步都产生真实信息**:`runTools()` 返回的 `toolResults` 是 API 不可能预知的——命令输出、文件内容、错误信息 - **动态上下文管理**:每轮迭代前都重新评估压缩需求(autocompact → microcompact → snip),基于最新的 token 计数 - **错误即时恢复**:工具失败不需要推倒重来——stop hook 可以注入阻塞错误让 AI 修正策略 -- **用户可控**:`abortController.signal` 在循环的多个检查点被检测(第 1018、1048、1488 行),用户按 ESC 可以优雅中断 +- **用户可控**:`abortController.signal` 在循环的多个检查点被检测(第 1059、1095、1529 行),用户按 ESC 可以优雅中断 - **成本控制**:Token Budget 在每轮终止前检查,防止 AI 无效循环 ## 一个完整的迭代示例 From 6d36e923e176627be8f14b4d2ea9d850af36917a Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 07:59:03 +0800 Subject: [PATCH 19/23] =?UTF-8?q?docs:=20=E8=A1=A5=E5=85=85=20feature-flag?= =?UTF-8?q?s-audit=20=E5=AE=8C=E6=95=B4=20build=20=E9=BB=98=E8=AE=A4=20fea?= =?UTF-8?q?ture=20=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加 ULTRATHINK/LODESTONE/ACP/DAEMON 等 19 个缺失的 build 默认 feature, 修正 dev-only 特征标注(UDS_INBOX/LAN_PIPES/BG_SESSIONS/TEMPLATES) Co-Authored-By: Claude Opus 4.6 --- docs/features/feature-flags-audit-complete.md | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/docs/features/feature-flags-audit-complete.md b/docs/features/feature-flags-audit-complete.md index e02b48f2f6..2e9164f148 100644 --- a/docs/features/feature-flags-audit-complete.md +++ b/docs/features/feature-flags-audit-complete.md @@ -34,7 +34,7 @@ Claude Code 使用三层门控系统: |------|------|----------| | COMPLETE | 22 | BRIDGE_MODE, COORDINATOR_MODE, CONTEXT_COLLAPSE, VOICE_MODE, TEAMMEM, COMMIT_ATTRIBUTION, ULTRAPLAN, BASH_CLASSIFIER, TRANSCRIPT_CLASSIFIER, EXTRACT_MEMORIES, CACHED_MICROCOMPACT, TOKEN_BUDGET, AGENT_TRIGGERS, REACTIVE_COMPACT, KAIROS_BRIEF, CCR_REMOTE_SETUP, SHOT_STATS, BG_SESSIONS, PROACTIVE, CHICAGO_MCP, VERIFICATION_AGENT, PROMPT_CACHE_BREAK_DETECTION | | PARTIAL | 19 | KAIROS, BUDDY, MONITOR_TOOL, HISTORY_SNIP, WORKFLOW_SCRIPTS, UDS_INBOX, KAIROS_CHANNELS, FORK_SUBAGENT, EXPERIMENTAL_SKILL_SEARCH, WEB_BROWSER_TOOL, MCP_SKILLS, REVIEW_ARTIFACT, KAIROS_GITHUB_WEBHOOKS, CONNECTOR_TEXT, TEMPLATES, LODESTONE, HISTORY_PICKER, MESSAGE_ACTIONS, TERMINAL_PANEL | -| STUB | 51 | TORCH, KAIROS_DREAM, KAIROS_PUSH_NOTIFICATION, DAEMON, DIRECT_CONNECT, SSH_REMOTE, STREAMLINED_OUTPUT, ANTI_DISTILLATION_CC, NATIVE_CLIENT_ATTESTATION, ABLATION_BASELINE, AGENT_MEMORY_SNAPSHOT, AGENT_TRIGGERS_REMOTE, ALLOW_TEST_VERSIONS, AUTO_THEME, AWAY_SUMMARY, BREAK_CACHE_COMMAND, BUILDING_CLAUDE_APPS, BUILTIN_EXPLORE_PLAN_AGENTS, BYOC_ENVIRONMENT_RUNNER, CCR_AUTO_CONNECT, CCR_MIRROR, COMPACTION_REMINDERS, COWORKER_TYPE_TELEMETRY, DOWNLOAD_USER_SETTINGS, DUMP_SYSTEM_PROMPT, ENHANCED_TELEMETRY_BETA, FILE_PERSISTENCE, HARD_FAIL, HOOK_PROMPTS, IS_LIBC_GLIBC, IS_LIBC_MUSL, MCP_RICH_OUTPUT, MEMORY_SHAPE_TELEMETRY, NATIVE_CLIPBOARD_IMAGE, NEW_INIT, OVERFLOW_TEST_TOOL, PERFETTO_TRACING, POWERSHELL_AUTO_MODE, QUICK_SEARCH, RUN_SKILL_GENERATOR, SELF_HOSTED_RUNNER, SKILL_IMPROVEMENT, SLOW_OPERATION_LOGGING, TREE_SITTER_BASH, TREE_SITTER_BASH_SHADOW, ULTRATHINK, UNATTENDED_RETRY, UPLOAD_USER_SETTINGS, SKIP_DETECTION_WHEN_AUTOUPDATES_DISABLED | +| STUB | 38 | TORCH, KAIROS_DREAM, KAIROS_PUSH_NOTIFICATION, DIRECT_CONNECT, SSH_REMOTE, STREAMLINED_OUTPUT, ANTI_DISTILLATION_CC, NATIVE_CLIENT_ATTESTATION, ABLATION_BASELINE, AGENT_MEMORY_SNAPSHOT, ALLOW_TEST_VERSIONS, AUTO_THEME, BREAK_CACHE_COMMAND, BUILDING_CLAUDE_APPS, BYOC_ENVIRONMENT_RUNNER, CCR_AUTO_CONNECT, CCR_MIRROR, COMPACTION_REMINDERS, COWORKER_TYPE_TELEMETRY, DOWNLOAD_USER_SETTINGS, DUMP_SYSTEM_PROMPT, ENHANCED_TELEMETRY_BETA, FILE_PERSISTENCE, HARD_FAIL, HOOK_PROMPTS, IS_LIBC_GLIBC, IS_LIBC_MUSL, MCP_RICH_OUTPUT, MEMORY_SHAPE_TELEMETRY, NATIVE_CLIPBOARD_IMAGE, NEW_INIT, OVERFLOW_TEST_TOOL, PERFETTO_TRACING, POWERSHELL_AUTO_MODE, QUICK_SEARCH, RUN_SKILL_GENERATOR, SELF_HOSTED_RUNNER, SKILL_IMPROVEMENT, SLOW_OPERATION_LOGGING, TREE_SITTER_BASH, TREE_SITTER_BASH_SHADOW, UNATTENDED_RETRY, UPLOAD_USER_SETTINGS, SKIP_DETECTION_WHEN_AUTOUPDATES_DISABLED | --- @@ -51,14 +51,31 @@ Claude Code 使用三层门控系统: | SHOT_STATS | **ON** | **ON** | compile-only, 已验证 | 纯本地统计 | | PROMPT_CACHE_BREAK_DETECTION | **ON** | **ON** | compile-only, 已验证 | 内部诊断 | | TOKEN_BUDGET | **ON** | **ON** | compile-only, 已验证 | 支持 `+500k` 语法 | -| AGENT_TRIGGERS | **ON** | **ON** | compile+GB gate, 已验证 | 本轮新增,定时任务系统 | -| EXTRACT_MEMORIES | **ON** | **ON** | compile+GB gate, 已验证 | 本轮新增,自动记忆提取 | -| VERIFICATION_AGENT | **ON** | **ON** | compile+GB gate, 已验证 | 本轮新增,对抗性验证代理 | -| KAIROS_BRIEF | **ON** | **ON** | compile+GB gate, 已验证 | 本轮新增,Brief 精简模式 | -| AWAY_SUMMARY | **ON** | **ON** | compile+GB gate, 已验证 | 本轮新增,离开摘要 | +| AGENT_TRIGGERS | **ON** | **ON** | compile+GB gate, 已验证 | 本地定时任务系统 | +| ULTRATHINK | **ON** | **ON** | compile-only | 扩展思考模式 | +| BUILTIN_EXPLORE_PLAN_AGENTS | **ON** | **ON** | compile-only | 内置 Explore/Plan agent | +| LODESTONE | **ON** | **ON** | compile-only | 深度链接 URL 协议 | +| EXTRACT_MEMORIES | **ON** | **ON** | compile+GB gate, 已验证 | 自动记忆提取 | +| VERIFICATION_AGENT | **ON** | **ON** | compile+GB gate, 已验证 | 对抗性验证代理 | +| KAIROS_BRIEF | **ON** | **ON** | compile+GB gate, 已验证 | Brief 精简模式 | +| AWAY_SUMMARY | **ON** | **ON** | compile+GB gate, 已验证 | 离开摘要 | +| ULTRAPLAN | **ON** | **ON** | compile+remote | 高级规划,需 CCR 基础设施 | +| DAEMON | **ON** | **ON** | compile-only | 后台守护进程 | +| ACP | **ON** | **ON** | compile-only | ACP 协议支持 | +| WORKFLOW_SCRIPTS | **ON** | **ON** | compile-only | 工作流脚本 | +| HISTORY_SNIP | **ON** | **ON** | compile-only | 历史管理 | +| CONTEXT_COLLAPSE | **ON** | **ON** | compile-only | 上下文折叠(核心 stub) | +| MONITOR_TOOL | **ON** | **ON** | compile-only | 后台监控 | +| FORK_SUBAGENT | **ON** | **ON** | compile-only | 子 Agent | +| KAIROS | **ON** | **ON** | compile-only | Kairos 调度 | +| COORDINATOR_MODE | **ON** | **ON** | compile-only | 多 Worker 协调 | | BUDDY | off | **ON** | compile+GrowthBook | 仅 dev 模式 | | TRANSCRIPT_CLASSIFIER | off | **ON** | compile+GrowthBook | 仅 dev 模式 | | BRIDGE_MODE | off | **ON** | compile+remote | 仅 dev 模式,需 claude.ai 订阅 | +| UDS_INBOX | off | **ON** | compile-only | 仅 dev 模式 | +| LAN_PIPES | off | **ON** | compile-only | 仅 dev 模式 | +| BG_SESSIONS | off | **ON** | compile+GB gate | 仅 dev 模式 | +| TEMPLATES | off | **ON** | compile-only | 仅 dev 模式 | --- @@ -124,8 +141,8 @@ Claude Code 使用三层门控系统: 8. src/hooks/useReplBridge.tsx — REPL 桥接 Hook 9. src/main.tsx — 主入口中的桥接模式启动 10. src/screens/REPL.tsx — REPL 屏幕中的桥接集成 -11. src/tools/BriefTool/attachments.ts — Brief 工具附件处理 -12. src/tools/BriefTool/upload.ts — Brief 工具上传 +11. packages/builtin-tools/src/tools/BriefTool/attachments.ts — Brief 工具附件处理 +12. packages/builtin-tools/src/tools/BriefTool/upload.ts — Brief 工具上传 13. src/tools/ConfigTool/supportedSettings.ts — 配置工具中的桥接设置 **启用所需操作**: 仅需将编译标志 `BRIDGE_MODE` 设为 `true`。所有代码完整,命令入口 `src/commands/bridge/index.ts`(604 行)和 `src/commands/bridge/bridge.tsx`(46,907 行)均存在。 @@ -597,7 +614,7 @@ src/utils/swarm/ 目录(22 个文件): | 文件路径 | 行数 | 功能说明 | |----------|------|----------| -| src/tools/BriefTool/BriefTool.ts | 204 行 | Brief 工具核心 | +| packages/builtin-tools/src/tools/BriefTool/BriefTool.ts | 204 行 | Brief 工具核心 | | src/commands/brief.ts | 130 行 | Brief 命令实现 | **引用该标志的文件(20 个)**: @@ -615,7 +632,7 @@ src/utils/swarm/ 目录(22 个文件): 12. src/hooks/useGlobalKeybindings.tsx — 全局键绑定 13. src/keybindings/defaultBindings.ts — 默认键绑定 14. src/main.tsx — 主入口 -15. src/tools/BriefTool/BriefTool.ts — Brief 工具 +15. packages/builtin-tools/src/tools/BriefTool/BriefTool.ts — Brief 工具 16. src/tools/ToolSearchTool/prompt.ts — 工具搜索提示 17. src/utils/attachments.ts — 附件 18. src/utils/conversationRecovery.ts — 对话恢复 @@ -858,7 +875,7 @@ src/utils/swarm/ 目录(22 个文件): 41. src/tools/AgentTool/AgentTool.tsx 42. src/tools/AskUserQuestionTool/AskUserQuestionTool.tsx 43. src/tools/BashTool/BashTool.tsx -44. src/tools/BriefTool/BriefTool.ts +44. packages/builtin-tools/src/tools/BriefTool/BriefTool.ts 45. src/tools/ConfigTool/supportedSettings.ts 46. src/tools/EnterPlanModeTool/EnterPlanModeTool.ts 47. src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts From b12bd29bfa62d5b27d6cd602f70f1541fe8af66a Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 07:59:15 +0800 Subject: [PATCH 20/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=20feature-flag?= =?UTF-8?q?s-audit=20ConfigTool=20=E8=B7=AF=E5=BE=84=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ConfigTool 路径从 src/tools/ 迁移到 packages/builtin-tools/src/tools/ Co-Authored-By: Claude Opus 4.6 --- docs/features/feature-flags-audit-complete.md | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/features/feature-flags-audit-complete.md b/docs/features/feature-flags-audit-complete.md index 2e9164f148..72f56ab42c 100644 --- a/docs/features/feature-flags-audit-complete.md +++ b/docs/features/feature-flags-audit-complete.md @@ -143,7 +143,7 @@ Claude Code 使用三层门控系统: 10. src/screens/REPL.tsx — REPL 屏幕中的桥接集成 11. packages/builtin-tools/src/tools/BriefTool/attachments.ts — Brief 工具附件处理 12. packages/builtin-tools/src/tools/BriefTool/upload.ts — Brief 工具上传 -13. src/tools/ConfigTool/supportedSettings.ts — 配置工具中的桥接设置 +13. packages/builtin-tools/src/tools/ConfigTool/supportedSettings.ts — 配置工具中的桥接设置 **启用所需操作**: 仅需将编译标志 `BRIDGE_MODE` 设为 `true`。所有代码完整,命令入口 `src/commands/bridge/index.ts`(604 行)和 `src/commands/bridge/bridge.tsx`(46,907 行)均存在。 @@ -202,8 +202,8 @@ src/utils/swarm/ 目录(22 个文件): 7. src/screens/REPL.tsx — REPL 屏幕中的协调器集成 8. src/screens/ResumeConversation.tsx — 恢复对话时的协调器处理 9. src/tools.ts — 工具注册中的协调器工具 -10. src/tools/AgentTool/AgentTool.tsx — Agent 工具中的协调器模式分支 -11. src/tools/AgentTool/builtInAgents.ts — 内置代理定义 +10. packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx — Agent 工具中的协调器模式分支 +11. packages/builtin-tools/src/tools/AgentTool/builtInAgents.ts — 内置代理定义 12. src/utils/processUserInput/processSlashCommand.tsx — 斜杠命令处理中的协调器 13. src/utils/sessionRestore.ts — 会话恢复中的协调器状态 14. src/utils/systemPrompt.ts — 系统提示中的协调器指令 @@ -276,9 +276,9 @@ src/utils/swarm/ 目录(22 个文件): 9. src/screens/REPL.tsx — REPL 中的语音模式集成 10. src/services/voiceStreamSTT.ts — STT 服务 11. src/state/AppState.tsx — 应用状态中的语音状态 -12. src/tools/ConfigTool/ConfigTool.ts — 配置工具中的语音设置 -13. src/tools/ConfigTool/prompt.ts — 配置工具提示 -14. src/tools/ConfigTool/supportedSettings.ts — 支持的设置项 +12. packages/builtin-tools/src/tools/ConfigTool/ConfigTool.ts — 配置工具中的语音设置 +13. packages/builtin-tools/src/tools/ConfigTool/prompt.ts — 配置工具提示 +14. packages/builtin-tools/src/tools/ConfigTool/supportedSettings.ts — 支持的设置项 15. src/utils/settings/types.ts — 设置类型定义 16. src/voice/voiceModeEnabled.ts — 语音模式启用逻辑 @@ -448,11 +448,11 @@ src/utils/swarm/ 目录(22 个文件): 22. src/screens/REPL.tsx — REPL 屏幕 23. src/services/api/claude.ts — Claude API 服务 24. src/services/tools/toolExecution.ts — 工具执行 -25. src/tools/AgentTool/AgentTool.tsx — Agent 工具 -26. src/tools/AgentTool/agentToolUtils.ts — Agent 工具工具函数 -27. src/tools/AgentTool/runAgent.ts — 运行 Agent +25. packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx — Agent 工具 +26. packages/builtin-tools/src/tools/AgentTool/agentToolUtils.ts — Agent 工具工具函数 +27. packages/builtin-tools/src/tools/AgentTool/runAgent.ts — 运行 Agent 28. src/tools/BashTool/bashPermissions.ts — Bash 权限 -29. src/tools/ConfigTool/supportedSettings.ts — 支持的设置 +29. packages/builtin-tools/src/tools/ConfigTool/supportedSettings.ts — 支持的设置 30. src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts — 退出计划模式工具 31. src/tools/NotebookEditTool/NotebookEditTool.ts — Notebook 编辑工具 32. src/types/permissions.ts — 权限类型 @@ -734,7 +734,7 @@ src/utils/swarm/ 目录(22 个文件): 9. src/screens/REPL.tsx — REPL(多处引用,通过 require 加载 proactive 模块) 10. src/services/compact/prompt.ts — 压缩提示 11. src/tools.ts — 工具注册 -12. src/tools/AgentTool/AgentTool.tsx — Agent 工具 +12. packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx — Agent 工具 13. src/utils/sessionStorage.ts — 会话存储 14. src/utils/settings/types.ts — 设置类型 15. src/utils/systemPrompt.ts — 系统提示 @@ -787,11 +787,11 @@ src/utils/swarm/ 目录(22 个文件): | 文件路径 | 行数 | 功能说明 | |----------|------|----------| | src/tools/TaskUpdateTool/TaskUpdateTool.ts | 406 行 | 任务更新工具 | -| src/tools/AgentTool/builtInAgents.ts | 72 行 | 内置代理定义 | +| packages/builtin-tools/src/tools/AgentTool/builtInAgents.ts | 72 行 | 内置代理定义 | **引用该标志的文件(4 个)**: 1. src/constants/prompts.ts — 提示词 -2. src/tools/AgentTool/builtInAgents.ts — 内置代理 +2. packages/builtin-tools/src/tools/AgentTool/builtInAgents.ts — 内置代理 3. src/tools/TaskUpdateTool/TaskUpdateTool.ts — 任务更新工具 4. src/tools/TodoWriteTool/TodoWriteTool.ts — TodoWrite 工具 @@ -812,7 +812,7 @@ src/utils/swarm/ 目录(22 个文件): 3. src/services/compact/autoCompact.ts — 自动压缩 4. src/services/compact/compact.ts — 压缩核心 5. src/services/compact/microCompact.ts — 微压缩 -6. src/tools/AgentTool/runAgent.ts — 运行 Agent +6. packages/builtin-tools/src/tools/AgentTool/runAgent.ts — 运行 Agent **启用所需操作**: 仅需将编译标志 `PROMPT_CACHE_BREAK_DETECTION` 设为 `true`。 @@ -872,11 +872,11 @@ src/utils/swarm/ 目录(22 个文件): 38. src/services/mcp/useManageMCPConnections.ts 39. src/skills/bundled/index.ts 40. src/tools.ts -41. src/tools/AgentTool/AgentTool.tsx +41. packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx 42. src/tools/AskUserQuestionTool/AskUserQuestionTool.tsx 43. src/tools/BashTool/BashTool.tsx 44. packages/builtin-tools/src/tools/BriefTool/BriefTool.ts -45. src/tools/ConfigTool/supportedSettings.ts +45. packages/builtin-tools/src/tools/ConfigTool/supportedSettings.ts 46. src/tools/EnterPlanModeTool/EnterPlanModeTool.ts 47. src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts 48. src/tools/PowerShellTool/PowerShellTool.tsx @@ -957,7 +957,7 @@ src/utils/swarm/ 目录(22 个文件): 3. src/tasks.ts — 任务注册 4. src/tasks/LocalShellTask/LocalShellTask.tsx — Shell 任务 5. src/tools.ts — 工具注册 -6. src/tools/AgentTool/runAgent.ts — Agent 运行 +6. packages/builtin-tools/src/tools/AgentTool/runAgent.ts — Agent 运行 7. src/tools/BashTool/BashTool.tsx — Bash 工具 8. src/tools/BashTool/prompt.ts — Bash 提示 9. src/tools/PowerShellTool/PowerShellTool.tsx — PowerShell 工具 @@ -1102,13 +1102,13 @@ src/utils/swarm/ 目录(22 个文件): | 文件路径 | 行数 | 功能说明 | |----------|------|----------| -| src/tools/AgentTool/forkSubagent.ts | 210 行 | 分叉子代理核心逻辑 | +| packages/builtin-tools/src/tools/AgentTool/forkSubagent.ts | 210 行 | 分叉子代理核心逻辑 | **引用该标志的文件(5 个)**: 1. src/commands.ts — 命令注册 2. src/commands/branch/index.ts — 分支命令入口 3. src/components/messages/UserTextMessage.tsx — 用户消息 -4. src/tools/AgentTool/forkSubagent.ts — 分叉逻辑 +4. packages/builtin-tools/src/tools/AgentTool/forkSubagent.ts — 分叉逻辑 5. src/tools/ToolSearchTool/prompt.ts — 工具搜索提示 **缺失文件**: @@ -1352,7 +1352,7 @@ src/utils/swarm/ 目录(22 个文件): **引用文件**: 1. src/components/Settings/Config.tsx — 设置 2. src/tools.ts — 工具注册 -3. src/tools/ConfigTool/supportedSettings.ts — 支持的设置 +3. packages/builtin-tools/src/tools/ConfigTool/supportedSettings.ts — 支持的设置 **代码量**: 0 行专属代码,仅在设置中预留了开关位 --- @@ -1440,7 +1440,7 @@ src/utils/swarm/ 目录(22 个文件): **分类**: STUB **引用文件**: 1. src/main.tsx — 主入口 -2. src/tools/AgentTool/loadAgentsDir.ts — 加载代理目录 +2. packages/builtin-tools/src/tools/AgentTool/loadAgentsDir.ts — 加载代理目录 **代码量**: 0 行专属代码 --- @@ -1475,7 +1475,7 @@ src/utils/swarm/ 目录(22 个文件): **引用文件**: 1. src/components/ThemePicker.tsx — 主题选择器 2. src/components/design-system/ThemeProvider.tsx — 主题提供者 -3. src/tools/ConfigTool/supportedSettings.ts — 支持的设置 +3. packages/builtin-tools/src/tools/ConfigTool/supportedSettings.ts — 支持的设置 **代码量**: 0 行专属代码 --- @@ -1517,7 +1517,7 @@ src/utils/swarm/ 目录(22 个文件): **编译时引用次数**: 1 **功能描述**: 内置探索和计划代理。 **分类**: STUB -**引用文件**: src/tools/AgentTool/builtInAgents.ts — 内置代理定义 +**引用文件**: packages/builtin-tools/src/tools/AgentTool/builtInAgents.ts — 内置代理定义 **代码量**: 0 行专属代码 --- From 7ed387ac4daed389520189376eff9c4123ee1bf6 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 07:59:29 +0800 Subject: [PATCH 21/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=20feature-flag?= =?UTF-8?q?s-audit=20BashTool=20=E8=B7=AF=E5=BE=84=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BashTool 路径从 src/tools/ 迁移到 packages/builtin-tools/src/tools/ Co-Authored-By: Claude Opus 4.6 --- docs/features/feature-flags-audit-complete.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/features/feature-flags-audit-complete.md b/docs/features/feature-flags-audit-complete.md index 72f56ab42c..100d900194 100644 --- a/docs/features/feature-flags-audit-complete.md +++ b/docs/features/feature-flags-audit-complete.md @@ -402,8 +402,8 @@ src/utils/swarm/ 目录(22 个文件): 11. src/hooks/toolPermission/permissionLogging.ts — 权限日志 12. src/hooks/useCanUseTool.tsx — 工具可用性检查 13. src/services/api/withRetry.ts — API 重试中的分类器 -14. src/tools/BashTool/bashPermissions.ts — Bash 权限逻辑 -15. src/tools/BashTool/pathValidation.ts — 路径验证 +14. packages/builtin-tools/src/tools/BashTool/bashPermissions.ts — Bash 权限逻辑 +15. packages/builtin-tools/src/tools/BashTool/pathValidation.ts — 路径验证 16. src/utils/classifierApprovals.ts — 分类器审批记录 17. src/utils/messages.ts — 消息处理 18. src/utils/permissions/permissions.ts — 权限核心 @@ -451,7 +451,7 @@ src/utils/swarm/ 目录(22 个文件): 25. packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx — Agent 工具 26. packages/builtin-tools/src/tools/AgentTool/agentToolUtils.ts — Agent 工具工具函数 27. packages/builtin-tools/src/tools/AgentTool/runAgent.ts — 运行 Agent -28. src/tools/BashTool/bashPermissions.ts — Bash 权限 +28. packages/builtin-tools/src/tools/BashTool/bashPermissions.ts — Bash 权限 29. packages/builtin-tools/src/tools/ConfigTool/supportedSettings.ts — 支持的设置 30. src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts — 退出计划模式工具 31. src/tools/NotebookEditTool/NotebookEditTool.ts — Notebook 编辑工具 @@ -874,7 +874,7 @@ src/utils/swarm/ 目录(22 个文件): 40. src/tools.ts 41. packages/builtin-tools/src/tools/AgentTool/AgentTool.tsx 42. src/tools/AskUserQuestionTool/AskUserQuestionTool.tsx -43. src/tools/BashTool/BashTool.tsx +43. packages/builtin-tools/src/tools/BashTool/BashTool.tsx 44. packages/builtin-tools/src/tools/BriefTool/BriefTool.ts 45. packages/builtin-tools/src/tools/ConfigTool/supportedSettings.ts 46. src/tools/EnterPlanModeTool/EnterPlanModeTool.ts @@ -946,7 +946,7 @@ src/utils/swarm/ 目录(22 个文件): | 文件路径 | 行数 | 功能说明 | |----------|------|----------| | src/tasks/LocalShellTask/LocalShellTask.tsx | 522 行 | 本地 Shell 任务完整实现 | -| src/tools/MonitorTool/MonitorTool.ts | 1 行 | 监控工具(桩) | +| packages/builtin-tools/src/tools/MonitorTool/MonitorTool.ts | 1 行 | 监控工具(桩) | | src/tasks/MonitorMcpTask/MonitorMcpTask.ts | 5 行 | MCP 监控任务(桩) | | src/components/tasks/MonitorMcpDetailDialog.tsx | 3 行 | MCP 详情对话框(桩) | | src/components/permissions/MonitorPermissionRequest/MonitorPermissionRequest.tsx | 3 行 | 监控权限请求(桩) | @@ -958,11 +958,11 @@ src/utils/swarm/ 目录(22 个文件): 4. src/tasks/LocalShellTask/LocalShellTask.tsx — Shell 任务 5. src/tools.ts — 工具注册 6. packages/builtin-tools/src/tools/AgentTool/runAgent.ts — Agent 运行 -7. src/tools/BashTool/BashTool.tsx — Bash 工具 -8. src/tools/BashTool/prompt.ts — Bash 提示 +7. packages/builtin-tools/src/tools/BashTool/BashTool.tsx — Bash 工具 +8. packages/builtin-tools/src/tools/BashTool/prompt.ts — Bash 提示 9. src/tools/PowerShellTool/PowerShellTool.tsx — PowerShell 工具 -**启用所需修复**: 需要实现 `src/tools/MonitorTool/MonitorTool.ts`、`src/tasks/MonitorMcpTask/MonitorMcpTask.ts`、`src/components/tasks/MonitorMcpDetailDialog.tsx` 和 `src/components/permissions/MonitorPermissionRequest/MonitorPermissionRequest.tsx`。 +**启用所需修复**: 需要实现 `packages/builtin-tools/src/tools/MonitorTool/MonitorTool.ts`、`src/tasks/MonitorMcpTask/MonitorMcpTask.ts`、`src/components/tasks/MonitorMcpDetailDialog.tsx` 和 `src/components/permissions/MonitorPermissionRequest/MonitorPermissionRequest.tsx`。 --- @@ -1004,10 +1004,10 @@ src/utils/swarm/ 目录(22 个文件): | src/components/WorkflowMultiselectDialog.tsx | 127 行 | 工作流多选对话框(有内容) | | src/tasks/LocalWorkflowTask/LocalWorkflowTask.ts | 5 行 | 本地工作流任务(桩) | | src/components/tasks/WorkflowDetailDialog.tsx | 3 行 | 工作流详情对话框(桩) | -| src/tools/WorkflowTool/WorkflowPermissionRequest.tsx | 3 行 | 工作流权限请求(桩) | -| src/tools/WorkflowTool/createWorkflowCommand.ts | 3 行 | 创建工作流命令(桩) | -| src/tools/WorkflowTool/WorkflowTool.ts | 1 行 | 工作流工具(桩) | -| src/tools/WorkflowTool/constants.ts | 1 行 | 常量(桩) | +| packages/builtin-tools/src/tools/WorkflowTool/WorkflowPermissionRequest.tsx | 3 行 | 工作流权限请求(桩) | +| packages/builtin-tools/src/tools/WorkflowTool/createWorkflowCommand.ts | 3 行 | 创建工作流命令(桩) | +| packages/builtin-tools/src/tools/WorkflowTool/WorkflowTool.ts | 1 行 | 工作流工具(桩) | +| packages/builtin-tools/src/tools/WorkflowTool/constants.ts | 1 行 | 常量(桩) | **引用该标志的文件(7 个)**: 1. src/commands.ts — 命令注册(引用 `commands/workflows/index.js`) @@ -1808,7 +1808,7 @@ src/utils/swarm/ 目录(22 个文件): **功能描述**: Tree-sitter Bash 影子模式(并行运行 tree-sitter 和传统解析器进行对比)。 **分类**: STUB **引用文件**: -1. src/tools/BashTool/bashPermissions.ts — Bash 权限 +1. packages/builtin-tools/src/tools/BashTool/bashPermissions.ts — Bash 权限 2. src/utils/bash/parser.ts — Bash 解析器 **代码量**: 0 行专属代码 @@ -1882,16 +1882,16 @@ src/utils/swarm/ 目录(22 个文件): | 文件路径 | 行数 | 所属标志 | |----------|------|----------| -| src/tools/MonitorTool/MonitorTool.ts | 1 行 | MONITOR_TOOL | -| src/tools/WorkflowTool/WorkflowTool.ts | 1 行 | WORKFLOW_SCRIPTS | -| src/tools/WorkflowTool/constants.ts | 1 行 | WORKFLOW_SCRIPTS | +| packages/builtin-tools/src/tools/MonitorTool/MonitorTool.ts | 1 行 | MONITOR_TOOL | +| packages/builtin-tools/src/tools/WorkflowTool/WorkflowTool.ts | 1 行 | WORKFLOW_SCRIPTS | +| packages/builtin-tools/src/tools/WorkflowTool/constants.ts | 1 行 | WORKFLOW_SCRIPTS | | src/tools/ReviewArtifactTool/ReviewArtifactTool.ts | 1 行 | REVIEW_ARTIFACT | | src/utils/udsMessaging.ts | 已实现 | UDS_INBOX | | src/utils/udsClient.ts | 已实现 | UDS_INBOX | | src/skills/mcpSkills.ts | 3 行 | MCP_SKILLS | | src/tools/WebBrowserTool/WebBrowserPanel.tsx | 3 行 | WEB_BROWSER_TOOL | -| src/tools/WorkflowTool/createWorkflowCommand.ts | 3 行 | WORKFLOW_SCRIPTS | -| src/tools/WorkflowTool/WorkflowPermissionRequest.tsx | 3 行 | WORKFLOW_SCRIPTS | +| packages/builtin-tools/src/tools/WorkflowTool/createWorkflowCommand.ts | 3 行 | WORKFLOW_SCRIPTS | +| packages/builtin-tools/src/tools/WorkflowTool/WorkflowPermissionRequest.tsx | 3 行 | WORKFLOW_SCRIPTS | | src/components/tasks/WorkflowDetailDialog.tsx | 3 行 | WORKFLOW_SCRIPTS | | src/components/permissions/MonitorPermissionRequest/MonitorPermissionRequest.tsx | 3 行 | MONITOR_TOOL | | src/components/tasks/MonitorMcpDetailDialog.tsx | 3 行 | MONITOR_TOOL | From 6b44de2895f41151b1571a5869bf6204a20b273f Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 07:59:35 +0800 Subject: [PATCH 22/23] =?UTF-8?q?docs:=20=E4=BF=AE=E6=AD=A3=20feature-flag?= =?UTF-8?q?s-audit=20SkillTool=20=E8=B7=AF=E5=BE=84=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- docs/features/feature-flags-audit-complete.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/feature-flags-audit-complete.md b/docs/features/feature-flags-audit-complete.md index 100d900194..95bdc0e362 100644 --- a/docs/features/feature-flags-audit-complete.md +++ b/docs/features/feature-flags-audit-complete.md @@ -1132,7 +1132,7 @@ src/utils/swarm/ 目录(22 个文件): 4. src/query.ts — 查询 5. src/services/compact/compact.ts — 压缩 6. src/services/mcp/useManageMCPConnections.ts — MCP 连接管理 -7. src/tools/SkillTool/SkillTool.ts — 技能工具(1,108 行) +7. packages/builtin-tools/src/tools/SkillTool/SkillTool.ts — 技能工具(1,108 行) 8. src/utils/attachments.ts — 附件 9. src/utils/messages.ts — 消息 From 6fe085d2f8520d046c3e59d88fcbe23641061c92 Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 19 Apr 2026 08:00:09 +0800 Subject: [PATCH 23/23] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=20feature-flag?= =?UTF-8?q?s-audit=20WorkflowTool=20=E7=8A=B6=E6=80=81=E4=B8=BA=E5=B7=B2?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- docs/features/feature-flags-audit-complete.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/features/feature-flags-audit-complete.md b/docs/features/feature-flags-audit-complete.md index 95bdc0e362..aaa9ea2129 100644 --- a/docs/features/feature-flags-audit-complete.md +++ b/docs/features/feature-flags-audit-complete.md @@ -1004,10 +1004,11 @@ src/utils/swarm/ 目录(22 个文件): | src/components/WorkflowMultiselectDialog.tsx | 127 行 | 工作流多选对话框(有内容) | | src/tasks/LocalWorkflowTask/LocalWorkflowTask.ts | 5 行 | 本地工作流任务(桩) | | src/components/tasks/WorkflowDetailDialog.tsx | 3 行 | 工作流详情对话框(桩) | -| packages/builtin-tools/src/tools/WorkflowTool/WorkflowPermissionRequest.tsx | 3 行 | 工作流权限请求(桩) | -| packages/builtin-tools/src/tools/WorkflowTool/createWorkflowCommand.ts | 3 行 | 创建工作流命令(桩) | -| packages/builtin-tools/src/tools/WorkflowTool/WorkflowTool.ts | 1 行 | 工作流工具(桩) | -| packages/builtin-tools/src/tools/WorkflowTool/constants.ts | 1 行 | 常量(桩) | +| packages/builtin-tools/src/tools/WorkflowTool/WorkflowPermissionRequest.tsx | ~80 行 | 工作流权限请求组件 | +| packages/builtin-tools/src/tools/WorkflowTool/createWorkflowCommand.ts | 41 行 | 创建工作流命令(已实现) | +| packages/builtin-tools/src/tools/WorkflowTool/WorkflowTool.ts | 74 行 | 工作流工具(部分实现,call 需运行时) | +| packages/builtin-tools/src/tools/WorkflowTool/constants.ts | ~10 行 | 常量定义 | +| packages/builtin-tools/src/tools/WorkflowTool/bundled/index.ts | ~20 行 | 内置工作流初始化 | **引用该标志的文件(7 个)**: 1. src/commands.ts — 命令注册(引用 `commands/workflows/index.js`)