Skip to main content

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。

معلومات المصدر

المستودع
echoVic/blade-code
آخر نشاط في المصدر
٢٦ أغسطس ٢٠٢٦ في ١٩:٥٧
لغة SKILL.md المكتشفة
الصينية
النجوم
١٨١
التفرعات
٢٨

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
6 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
knowledge-extension-ecosystem
description
覆盖 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。
## 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 继承
عرض على GitHub