# Knowledge Tool And Automation Platform

> Covers Blade 工具契约、注册与执行，以及文件、搜索、Shell、worktree、Browser 和领域适配工具的协作边界。 Navigate when: 新增工具、调整工具注册或执行顺序、排查工具副作用、并发、重试、输出投影或自动化资源生命周期。 Excludes: 全局权限与 Workspace Trust 策略（见 ../workspace-policy-and-shared-foundations/）、MCP 协议内部生命周期（见 ../extension-ecosystem/mcp-protocol-runtime/）、Agent 轮次决策（见 ../agent-execution-and-orchestration/decision-loop-and-completion/）。 Keywords: tools, Tool, ToolRegistry, ToolExecutor, createTool, isRetrySafe, ApplyPatch, Bash, WorktreeManager, SessionBrowserRuntime.

- Skill: `echovic/knowledge-tool-and-automation-platform` (Agent Skill)
- Install (CLI): `npx skillmds@latest add echovic/knowledge-tool-and-automation-platform`
- Raw SKILL.md: https://api.skillmd.com/api/skills/echovic/knowledge-tool-and-automation-platform/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: echovic (https://skillmd.com/u/echovic)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/echovic/knowledge-tool-and-automation-platform

---


## Module Structure

该域把模型可见的工具声明、运行时准入与具体副作用适配器连接起来；`SessionRuntime`
负责组装 Session 私有依赖，Agent loop 负责提交并持久化调用，具体工具只返回统一
`ToolResult`。

### Directory Layout
- `packages/cli/src/tools/core/` — TypeBox 工具工厂与统一调用对象
- `packages/cli/src/tools/types/` — 工具、调用、结果与执行上下文契约
- `packages/cli/src/tools/registry/` — 内置、延迟加载与动态 MCP 工具目录
- `packages/cli/src/tools/execution/` — 权限、Hook、准入、锁、调用与验证管线
- `packages/cli/src/tools/builtin/` — 文件、Shell、Browser 与工作流工具适配器
- `packages/cli/src/browser/` — Session 隔离的 Playwright 自动化运行时
- `packages/cli/src/worktree/` — 托管 Git worktree 的创建、交付和清理
- `packages/cli/src/services/FileSystemService.ts` — 本地与 ACP 文件系统抽象

### Key Entry Points
- `getBuiltinTools()` in `packages/cli/src/tools/builtin/index.ts` — 按 Session 能力组装内置工具
- `ToolRegistry` in `packages/cli/src/tools/registry/ToolRegistry.ts` — 维护可发现工具及动态 MCP 投影
- `ToolExecutor.execute()` in `packages/cli/src/tools/execution/ToolExecutor.ts` — 执行单次工具调用的统一入口
- `StreamingToolExecutor` in `packages/cli/src/agent/loop/StreamingToolExecutor.ts` — 将 Provider 流式 tool call 接入持久化与执行

## Gotchas
- `ToolKind` 只参与权限和容量分类，`isConcurrencySafe`、`parallelism` 与 `isRetrySafe` 是三个独立维度；不能因工具是 `ReadOnly` 就推断它可并发、可流式预启动或可重放 (`packages/cli/src/tools/types/ToolTypes.ts`, `packages/cli/src/tools/core/createTool.ts`)
- 工具瞬态异常重试默认 fail-closed；未显式声明 `isRetrySafe: true` 的调用只执行一次，避免在完成状态不确定时重复外部副作用 (`packages/cli/src/tools/execution/ToolInvocationRunner.ts`, `packages/cli/tests/unit/tooling/tools/builtin/tool-retry-safety.test.ts`)
- `Browser` 自动化与 Web UI 的 iframe Preview 是两个独立运行时；前者由 Session 持有 Playwright Context，后者不能被 Agent 工具直接操纵 (`packages/cli/src/browser/SessionBrowserRuntime.ts`, `packages/cli/web/src/components/preview/BrowserPreview.tsx`)
- Session 关闭必须同时回收执行器队列、后台进程、Browser Context、文件访问记录和 worktree 内存绑定；只释放其中一个会留下跨轮次资源或容量占用 (`packages/cli/src/agent/runtime/SessionRuntime.ts`)
- `ExecutionPipeline` 只是 `ToolExecutor` 的兼容别名，新代码若沿用旧“固定阶段类”心智模型会误判当前真实调用顺序 (`packages/cli/src/tools/execution/ExecutionPipeline.ts`, `git:e6a1bef4`)

## Architecture
- 主链路是 `getBuiltinTools`/MCP 工具投影 → `ToolRegistry` → Agent loop → `ToolExecutor` → invocation；Schema、权限签名、并发、重试和展示数据都沿这一条统一契约传播 (`packages/cli/src/tools/builtin/index.ts`, `packages/cli/src/tools/registry/ToolRegistry.ts`, `packages/cli/src/tools/execution/ToolExecutor.ts`)
- `SessionRuntime` 先构造带 Browser、LSP、Skill、Task 等 Session 私有依赖的基础注册表，再为不同 Agent 按 allow/deny 过滤克隆目录，避免共享动态加载和审批状态 (`packages/cli/src/agent/runtime/SessionRuntime.ts`, `packages/cli/src/tools/registry/ToolRegistry.ts`)
- 文件、Shell 与 Browser 各自拥有额外的状态一致性边界：文件依赖读取记录和事务，Shell 依赖进程租约，Browser 依赖 Context/页面/快照代际；通用执行器不替代这些领域内保护 (`packages/cli/src/tools/builtin/file/FileAccessTracker.ts`, `packages/cli/src/context/storage/DurableProcessLeaseStore.ts`, `packages/cli/src/browser/BrowserSnapshotAuthority.ts`)
- `ToolResult` 同时承载给模型的 `llmContent`、稳定错误类型和跨表面的 metadata；TUI、Headless、Server 与 ACP 再通过统一 projector 做各自长度裁剪 (`packages/cli/src/tools/types/ToolTypes.ts`, `packages/cli/src/tools/display/ToolResultProjector.ts`)

## Decisions
- 工具系统已从 11 阶段对象管线迁移为平铺执行器，以显式函数组合表达顺序；保留旧导出仅用于兼容现有 import (`packages/cli/src/tools/execution/ExecutionPipeline.ts`, `packages/cli/src/tools/execution/ToolExecutor.ts`, `git:e6a1bef4`)
- 工具 schema 统一迁移到 TypeBox，并在发送给 Provider 前去除运行时注解和关闭未知对象字段，避免手写 JSON Schema 与运行时校验漂移 (`packages/cli/src/tools/validation/schemaToJson.ts`, `packages/cli/src/tools/validation/schemaErrorFormatter.ts`, `git:311ba368`)
- Browser 选择原生工具而非 MCP 或 iframe 控制，是为了复用 Blade 的权限、Hook、Session、取消和持久化语义，同时保持一个进程、多 Session Context 的资源模型 (`docs/superpowers/specs/2026-08-25-native-browser-tool-design.md`, `git:90fad7fe`)

## Patterns
- 能力适配器通过 `createTool` 返回声明与执行一体的对象，Session 依赖通过工厂参数注入；模块级单例仅用于真正的进程级资源 (`packages/cli/src/tools/core/createTool.ts`, `packages/cli/src/tools/builtin/index.ts`)
- 任何可能产生副作用的长生命周期资源都使用显式 owner/session identity 和幂等 dispose/release，恢复路径先验证身份再清理 (`packages/cli/src/context/storage/DurableProcessLeaseStore.ts`, `packages/cli/src/browser/BrowserProcessPool.ts`)
- 大输出先在生产端有界保留，再在表面投影层二次裁剪；持久记录保留计数和截断事实，避免 UI 限制反向改变执行语义 (`packages/cli/src/tools/builtin/shell/ShellOutputCapture.ts`, `packages/cli/src/tools/display/ToolResultProjector.ts`)

## Child Knowledge Nodes
- `./tool-contracts-and-registry/SKILL.md` — Navigate when: 定义工具、调整 TypeBox schema、注册表、延迟发现、MCP 工具目录或通用制品存储
- `./tool-execution-pipeline/SKILL.md` — Navigate when: 调整执行顺序、权限/Hook、并发准入、文件锁、重试、取消、自动验证或结果投影
- `./filesystem-search-and-atomic-patching/SKILL.md` — Navigate when: 修改 Read/Write/Edit/ApplyPatch、快照回退、Glob/Grep 或 ACP 文件语义
- `./shell-process-and-worktree/SKILL.md` — Navigate when: 修改 Bash、后台输入输出、进程租约/回收、写沙箱或托管 worktree
- `./browser-automation/SKILL.md` — Navigate when: 修改 Chromium 池、Session Browser、ARIA ref、同源边界、诊断、截图或 Web Browser 面板
- `./integration-and-workflow-tool-adapters/SKILL.md` — Navigate when: 修改领域能力的工具适配、Session 条件注入、ToolSearch 或 MCP/Goal/Task/LSP/Web 工具集合

