Harness Marketplace 剖析系列 - 之 Claude Code:Harness 如何加载和执行 Plugin 能力
前面的文章已经完成了两层分析。第一层是 Plugin 的静态结构:Plugin ├── plugin.json ├── skills/ ├── commands/ ├── agents/ ├── hooks/ ├── .mcp.json └── .lsp.json第二层是 Plugin 从 Marketplace 到本地的安装过程:Marketplace Entry ↓ 定位 Plugin Source ↓ 复制到版本化 Cache ↓ 写入 enabledPlugins ↓ 等待 Claude Code 加载但到这里,Plugin 仍然只是一组保存在磁盘上的文件。真正决定 Plugin 是否有用的是下一步:Claude Code Harness 如何把这些文件转化成模型可理解、可选择、可调用的运行时能力?例如,一个放在:skills/code-review/SKILL.md中的 Markdown 文件,为什么会出现在 Claude 的可用 Skill 列表中?一个位于:agents/security-reviewer.md中的 Agent 定义,又是如何获得独立上下文、工具集合和执行生命周期的?Plugin 中的:hooks/hooks.json .mcp.json .lsp.json为什么不是简单地进入 Prompt,而是分别接入生命周期事件、外部工具系统和代码智能系统?这一篇,我们沿着下面这条运行链继续分析:Plugin 已安装并启用 ↓ Harness 解析作用域配置 ↓ 定位 Plugin Cache ↓ 读取 Plugin Manifest ↓ 发现并注册各类组件 ↓ 构建 Runtime Capability Registry ↓ 把必要的 Metadata 注入上下文 ↓ 用户显式调用或模型自动匹配 ↓ 执行 Skill / Command / Agent / Hook / MCP / LSP重点回答:Plugin 在什么时候被扫描? Skill Metadata 如何进入模型上下文? Skill 自动匹配是规则路由还是模型判断? Command 如何展开成实际 Prompt? Agent 如何创建独立上下文? Hook、MCP 和 LSP 如何接入 Runtime? 多个 Plugin 的能力如何合并和命名? /reload-plugins 到底重建了什么?一、从磁盘文件到运行时能力要理解 Claude Code 的 Plugin 加载机制,首先需要区分三个不同层次。第一层:Plugin Files → 磁盘上的 Markdown、JSON 和脚本 第二层:Capability Registry → Harness 已经识别并注册的能力描述 第三层:Runtime Execution → 当前任务真正选择和执行的能力三者并不是一回事。假设一个 Plugin 中有:my-plugin/ ├── skills/ │ └── review/ │ └── SKILL.md ├── commands/ │ └── review-pr.md └── agents/ └── reviewer.md磁盘上出现这些文件,并不等于它们已经全部进入模型上下文。更准确的过程是:文件存在 ↓ Harness 扫描并解析 ↓ 提取组件 Metadata ↓ 写入运行时能力注册表 ↓ 根据任务按需加载完整内容其中,Claude Code 对不同类型组件采用了不同加载方式。Skill → 先注册描述,匹配后再加载正文 Command → 注册显式调用入口,调用时展开正文 Agent → 注册独立执行角色,调用时创建子上下文 Hook → 注册生命周期监听器,事件发生时执行 MCP → 建立外部 Server 连接,注册 Tools 和 Prompts LSP → 启动语言服务器,注册代码导航和诊断能力所以 Plugin Loader 并不是简单地把整个 Plugin 目录拼进 System Prompt。它更像一个多类型能力装配器:Plugin Loader ├── Skill Registry ├── Command Registry ├── Agent Registry ├── Hook Dispatcher ├── MCP Server Manager └── LSP Server Manager二、Plugin 在什么时候被扫描1. 首次 Session 启动当 Claude Code 启动一个新 Session 时,需要先解析当前环境中的 Plugin 配置。这些配置可能来自:Managed Settings User Settings Project Settings Local Settings其中enabledPlugins使用:plugin-name@marketplace-name作为 Plugin 的完整标识。官方配置文档确认,Plugin 可以在用户级和项目级配置中启用或禁用;如果多个作用域存在配置,Claude Code 会按照其配置作用域规则解析最终状态。一个典型配置是:{"enabledPlugins":{"plugin-dev@claude-plugins-official":true,"formatter@company-tools":true,"experimental-agent@lab-tools":false}}Harness 首先需要计算:哪些 Plugin 最终启用 哪些 Plugin 被当前作用域覆盖为禁用 哪些 Plugin 来自 Managed Policy得到启用列表后,才会定位 Plugin 的本地安装目录:~/.claude/plugins/cache/ └── marketplace/ └── plugin/ └── version/2. Plugin 安装后不会自动修改当前上下文Plugin 被安装到本地 Cache 后,文件已经存在,但当前 Session 不一定立即感知。官方 Marketplace 教程在安装 Plugin 后明确要求执行:/reload-plugins以便在当前 Session 激活新 Plugin。因此需要区分:Plugin Installation → 改变磁盘状态和配置状态 Plugin Loading → 改变当前 Session 的能力状态如果不执行重载,也不重新启动 Session,当前运行时仍可能继续使用旧的能力注册表。3. Session 重启时重新加载重新启动 Claude Code Session 时,Harness 会根据当前配置重新加载已启用 Plugin。这一过程大致包括:读取 Settings ↓ 解析 enabledPlugins ↓ 定位 Plugin Cache ↓ 读取 plugin.json ↓ 发现组件 ↓ 建立 Runtime Registry不过需要说明:Anthropic 公开文档描述了 Plugin 的组件加载结果和配置方式,但没有完整公开 Plugin Loader 内部函数级实现。因此,本文讨论的是根据官方行为和配置规范还原出的逻辑过程,而不是对 Claude Code 二进制内部源码的逐行解读。4. Safe Mode 会跳过 Plugin 能力Claude Code 当前提供:claude --safe-modeSafe Mode 会禁用包括 Plugin、Skill、Hook、MCP Server、Custom Command、Agent 和 LSP Server 在内的自定义能力,同时保留内置工具、权限系统和基础认证。这从另一个角度说明:Plugin Registry → 是 Session 初始化期间装配的独立扩展层 Built-in Runtime → 即使没有 Plugin 仍可运行其架构关系可以理解为:Claude Code Core ↓ Built-in Tools / Agent Loop / Permissions ↓ Customization Loader ├── CLAUDE.md ├── Skills ├── Commands ├── Agents ├── Hooks ├── MCP ├── LSP └── Plugins三、Harness 如何发现 Plugin 中的组件Claude Code Plugin 采用“标准目录自动发现 + Manifest 补充配置”的模式。一个典型 Plugin 结构是:my-plugin/ ├── .claude-plugin/ │ └── plugin.json ├── skills/ ├── commands/ ├── agents/ ├── hooks/ │ └── hooks.json ├── .mcp.json └── .lsp.jsonHarness 读取 Plugin 后,会根据不同组件类型分别处理。1. 读取plugin.jsonplugin.json首先提供 Plugin 级身份:{"name":"my-plugin","version":"1.0.0","description":"Development utilities"}它解决的是:当前目录属于哪个 Plugin Plugin 的逻辑名称是什么 Plugin 的版本是什么 是否有额外组件声明Marketplace 还支持strict模式,用于决定 Plugin 自己的plugin.json与 Marketplace Entry 中的组件定义如何合并。官方文档说明:strict = true → 默认模式 → plugin.json 是组件定义权威 → Marketplace Entry 可以补充组件 strict = false → Marketplace Entry 是完整定义 → 如果 Plugin 自身又声明组件,可能形成冲突这说明 Claude Code 并不总是只扫描 Plugin 目录;在部分 Marketplace 策略中,Marketplace Operator 也可以控制哪些组件实际暴露。2. 扫描标准组件目录在普通 Plugin 中,Harness 会识别:skills/ commands/ agents/ hooks/hooks.json .mcp.json .lsp.jsonMarketplace 也允许通过配置指向额外的 Command、Agent 或其他组件路径,路径相对于 Plugin Root 解析。因此,组件来源可能包括:标准目录自动发现 + plugin.json 显式配置 + marketplace.json 补充配置最终形成一个归一化 Plugin Descriptor:NormalizedPlugin ├── id ├── version ├── rootPath ├── skills[] ├── commands[] ├── agents[] ├── hooks[] ├── mcpServers[] └── lspServers[]这一步的目标,是把不同来源的目录和配置转成统一的运行时描述。四、Skill Metadata 如何进入上下文Skill 是 Claude Code Plugin 中最典型的“渐进式上下文能力”。它的加载过程可以分为两个阶段:发现阶段 → 只让 Claude 知道有哪些 Skill 执行阶段 → 再加载完整 SKILL.md1. 启动时不加载全部 Skill 正文官方 Skill 文档明确说明:在普通 Session 中,Skill 的描述会被加载到上下文,使 Claude 知道当前有哪些 Skill;完整

相关新闻

C语言打印日期、程序行号、方便调试程序

C语言打印日期、程序行号、方便调试程序

一、为什么需要在代码里打印这些信息 写 C 程序时,调试是绕不开的环节。C 语言标准提供了一组预定义宏,能够在编译期自动注入当前代码的行号、所在文件名、编译日期和时间。这些信息在排查 bug 时非常有用,能帮我们快速锁定出错位置。 特别是在做单片机开发时,把编译日期…

2026/10/16 17:49:04 阅读更多 →
小白——Java的基础语法

小白——Java的基础语法

本人也是小白学完再复习一遍,希望能和大家一块进步*★,*:.☆( ̄▽ ̄)/$:*.★* 。从创建包开始:包是类似于文件夹,更多的时候感觉是打包发送比较方便的使用我常用倒置网址来命名包名,例如:com.xxxx…

2026/10/15 8:26:58 阅读更多 →
WarcraftHelper终极指南:3步解决魔兽争霸3在Windows 10/11上的兼容性问题

WarcraftHelper终极指南:3步解决魔兽争霸3在Windows 10/11上的兼容性问题

WarcraftHelper终极指南:3步解决魔兽争霸3在Windows 10/11上的兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典游戏魔…

2026/10/15 1:48:43 阅读更多 →

最新新闻

水性醛酮树脂CT系列:提升漆膜光泽与硬度的功能助树脂

水性醛酮树脂CT系列:提升漆膜光泽与硬度的功能助树脂

做水性涂料这几年,我听得最多的反馈就三个:光泽差一点,硬度软一点,色浆放两天就返粗。这三个问题单拎出来都不算大,但放到工业漆、木器漆和油墨上,就是客户整批次退货的理由,严重一点直接丢订单…

2026/10/18 3:52:22 阅读更多 →
XERJ Autoindex + MCP 在 Windows 上的端到端实战:从安装、建索引到 Agent 检索的一站式闭环

XERJ Autoindex + MCP 在 Windows 上的端到端实战:从安装、建索引到 Agent 检索的一站式闭环

人工智能搜索引擎本地部署后端MCP 服务 【免费下载链接】xerj XERJ is the new way for AI to search data. Its autoindex capability activates agents to know your data without the token waste of grep and sed. One command indexes code, docs, logs and PDFs for sear…

2026/10/18 3:52:22 阅读更多 →
JavaScript原生四则运算计算器:从字符串拼接陷阱到精度控制

JavaScript原生四则运算计算器:从字符串拼接陷阱到精度控制

1. 这不是计算器Demo,而是前端交互逻辑的“最小可行验证”你有没有遇到过这样的场景:在表单里填两个数字,点个按钮,结果却卡在页面上不动?或者更糟——输入1和2,显示出来的却是"12"?这…

2026/10/18 3:52:22 阅读更多 →
JS高德地图设备图标实战:实时位置渲染与Marker管理优化

JS高德地图设备图标实战:实时位置渲染与Marker管理优化

1. 从一张“会说话的地图”说起:设备图标到底在解决什么问题做过物联网监控大屏、车辆调度后台或者共享设备管理平台的人,大概率都绕不开一个需求:把一堆设备的实时位置,用一张地图直观地铺出来。而“基于JS高德地图设置设备图标”…

2026/10/18 3:52:22 阅读更多 →
Unity协程底层原理与生命周期深度解析

Unity协程底层原理与生命周期深度解析

1. 协程不是“多线程”,但比多线程更难讲清楚刚接触 Unity 的开发者,十有八九会在协程(Coroutine)上栽第一个跟头。我见过太多人把StartCoroutine当成“开个后台线程”来用——结果发现 UI 还是卡、计时器不准、对象销毁后协程还在…

2026/10/18 3:52:22 阅读更多 →
从零跑通开源大模型:选型、环境、加载与推理全指南

从零跑通开源大模型:选型、环境、加载与推理全指南

很多人第一次看到“初始大模型”这个说法,第一反应是:是不是得先啃下一堆数学公式和论文?我在刚开始接触时也是这么想的,后来才发现,初始大模型这件事拆开来看,无非是两条线:一条是认知线&#…

2026/10/18 3:51:21 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →