# Knowledge Extension Ecosystem

> 覆盖 Blade 的 MCP、插件、Skills、自定义命令、Hooks 与 LSP 扩展边界及其 Session 集成关系。进入条件：新增扩展来源、调整 Workspace 扩展发现、排查插件资源未生效、 修改扩展资源快照或判断扩展职责归属。不包含：内置工具执行管线（见 ../tool-and-automation-platform/）、Workspace Trust 与通用配置合并（见 ../workspace-policy-and-shared-foundations/）。关键词：extension ecosystem、 MCP、plugin、SkillRegistry、CustomCommandRegistry、HookManager、LspSessionManager。

- Skill: `echovic/knowledge-extension-ecosystem` (Agent Skill)
- Install (CLI): `npx skillmds@latest add echovic/knowledge-extension-ecosystem`
- Raw SKILL.md: https://api.skillmd.com/api/skills/echovic/knowledge-extension-ecosystem/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-extension-ecosystem

---


## Module Structure

扩展生态先在 source project 上发现配置与资源，再由 Workspace 级注册表完成插件整合，
最后冻结为 Session 私有视图；MCP 和 LSP 还会在 Session 初始化时创建独立连接与进程。

### Directory Layout
- `packages/cli/src/mcp/` — MCP transport、目录、交互、恢复、OAuth 与异步任务
- `packages/cli/src/plugins/` — 插件发现、装载及向其他扩展点的资源注入
- `packages/cli/src/skills/` — Skill 元数据发现、正文延迟加载与注册表
- `packages/cli/src/slash-commands/custom/` — Markdown 自定义命令解析和执行
- `packages/cli/src/hooks/` — Hook 配置、匹配、信任与多种执行后端
- `packages/cli/src/lsp/` — Session 级语言服务器客户端和语义查询
- `.blade/` — 仓库内项目级 Skills、命令与配置资源

### Key Entry Points
- `resolveWorkspaceAgentResources()` in `packages/cli/src/agent/resources/WorkspaceAgentResources.ts` — 初始化并缓存 Workspace 扩展注册表
- `snapshotWorkspaceAgentResources()` in `packages/cli/src/agent/resources/WorkspaceAgentResources.ts` — 创建 Session 持有的扩展资源快照
- `resolveWorkspaceMcpConfig()` in `packages/cli/src/mcp/resolveWorkspaceMcpConfig.ts` — 合并当前 Session 的 MCP 来源
- `resolveWorkspaceLspResources()` in `packages/cli/src/lsp/WorkspaceLspResources.ts` — 解析并冻结当前 Session 的 LSP 配置
- `SessionRuntime.initialize()` in `packages/cli/src/agent/runtime/SessionRuntime.ts` — 绑定 Hooks 并创建 Session 私有 MCP/LSP 运行时

## Gotchas
- Workspace Trust 只决定项目扩展资源能否被发现，配置型 Hook 还必须通过独立的精确摘要信任；信任 workspace 不等于信任其中的命令、Prompt 或 HTTP Hook(`packages/cli/src/skills/SkillRegistry.ts`, `packages/cli/src/hooks/HookTrustService.ts`)
- source project 是 MCP/LSP/插件配置身份，execution workspace 是 worktree 中实际执行工具和启动 LSP 的路径；将两者混用会让 MCP 默认 cwd、MCP roots 或 LSP 文件边界指向错误 checkout(`packages/cli/src/agent/runtime/SessionRuntime.ts`, `packages/cli/src/mcp/resolveWorkspaceMcpConfig.ts`, `packages/cli/src/lsp/LspSessionManager.ts`)
- 插件刷新先清空再整批重注入 Workspace 注册表，但已创建 Session 使用 Skills、命令、Hooks 和 LSP 的快照，不应被刷新中的可变对象追改(`packages/cli/src/plugins/PluginIntegrator.ts`, `packages/cli/src/agent/resources/WorkspaceAgentResources.ts`)
- 插件整合阶段只登记 MCP/LSP 定义数量，不建立连接；实际 MCP client 和 LSP process 都延迟到精确 Session 中创建(`packages/cli/src/plugins/PluginIntegrator.ts`, `packages/cli/src/agent/runtime/SessionRuntime.ts`)
- MCP、LSP、Skills 和命令均按 workspace 或 Session 隔离，不能以无参数全局单例作为多项目调用的权威来源(`packages/cli/src/mcp/McpRegistry.ts`, `packages/cli/src/skills/SkillRegistry.ts`, `packages/cli/src/slash-commands/custom/CustomCommandRegistry.ts`)

## Architecture
- 扩展资源主链路是“Workspace 发现与插件整合 → Session 快照 → 工具/Prompt/事件适配”；该边界让项目切换和插件刷新不改变正在运行的模型回合(`packages/cli/src/agent/resources/WorkspaceAgentResources.ts`, `packages/cli/src/agent/runtime/SessionRuntime.ts`)
- 插件是扩展聚合入口，可同时提供命令、Skills、Agents、Hooks、MCP 和 LSP；其中命令、Skills、Agents 注入 Workspace 注册表，Hooks 整批交换配置，MCP/LSP 由 Session 重新解析(`packages/cli/src/plugins/PluginIntegrator.ts`, `packages/cli/src/plugins/PluginLoader.ts`)
- Skills 与自定义命令都以 Markdown 为载体，但 Skills 将元数据暴露给模型并延迟加载正文，自定义命令会在发现时加载正文并在调用前展开参数、Shell 和文件引用(`packages/cli/src/skills/SkillLoader.ts`, `packages/cli/src/slash-commands/custom/CustomCommandExecutor.ts`)
- Hooks 是扩展域的行为拦截层，横跨工具准入、权限、会话、Agent 停止、压缩和 MCP Elicitation；它不拥有这些领域的主状态(`packages/cli/src/hooks/types/HookTypes.ts`, `packages/cli/src/tools/execution/ToolExecutionHooks.ts`)
- MCP 工具和 LSP 工具都进入统一 ToolRegistry，但前者是外部 Execute 工具与动态目录，后者是仅在 Session 有可用服务器时注册的 ReadOnly 语义查询工具(`packages/cli/src/mcp/createMcpTool.ts`, `packages/cli/src/tools/builtin/index.ts`)

## Decisions
- 运行时资源在 Session 创建时做深拷贝快照，是为了阻止后续 workspace refresh、项目切换或插件刷新改变活动 Session 已暴露给模型的能力集合(`packages/cli/src/skills/SkillRegistry.ts`, `packages/cli/src/slash-commands/custom/CustomCommandRegistry.ts`, `git:f6a82242`)
- 扩展点统一经过 Workspace Trust 后再读取项目级可执行资源，同时保留用户级资源可用性；Hooks 额外按内容摘要授权，避免“信任路径”永久授权后续修改(`packages/cli/src/security/WorkspaceTrustService.ts`, `packages/cli/src/hooks/HookTrustService.ts`, `git:a172a7c0`)
- MCP 与 LSP 放在独立 Session 生命周期而非进程全局生命周期，以隔离并行 Session 的连接、目录、诊断、环境和清理责任(`packages/cli/src/agent/runtime/SessionRuntime.ts`, `packages/cli/src/mcp/McpRegistry.ts`, `packages/cli/src/lsp/LspSessionManager.ts`)

## Patterns
- 插件资源使用 `plugin:<plugin-name>:<resource>` 或稳定 provider 名称避免跨插件冲突；短名只在唯一时才可解析(`packages/cli/src/plugins/namespacing.ts`, `packages/cli/src/skills/SkillRegistry.ts`, `packages/cli/src/slash-commands/custom/CustomCommandRegistry.ts`)
- 外部扩展产生的 schema、日志、结果、指令和配置都在进入模型或 UI 前做大小、类型和安全投影，不能直接透传协议对象(`packages/cli/src/mcp/McpToolResult.ts`, `packages/cli/src/hooks/schemas/HookSchemas.ts`, `packages/cli/src/config/lspSettings.ts`)

## Child Knowledge Nodes
- `./mcp-protocol-runtime/SKILL.md` — 进入条件：修改 MCP transport、动态目录、OAuth、Elicitation、Sampling、Tasks、结果安全或连接恢复
- `./plugin-lifecycle-and-marketplace/SKILL.md` — 进入条件：修改插件发现、安装、来源策略、兼容性、命名空间或资源注入
- `./skills-and-custom-commands/SKILL.md` — 进入条件：修改 SKILL.md/命令 Markdown 解析、覆盖优先级、延迟加载、Session 快照或调用入口
- `./hooks-and-behavior-interception/SKILL.md` — 进入条件：修改 Hook 事件、匹配、执行顺序、信任摘要、错误策略或跨领域拦截行为
- `./lsp-code-intelligence/SKILL.md` — 进入条件：修改 LSP 配置、进程代际、文档同步、诊断回注、语义查询或子 Session 继承

