Kimi Code · /plugins 功能调研

把插件做成“安装、管理、接入现有能力”的入口,而不是第一期就重写一个扩展平台

结论:当前仓库已经有 slash 命令、Skills、MCP、hooks、SDK RPC 和旧 kimi-cli 插件迁移探测。推荐第一期让 /plugins 管理本地插件包,并把插件包里的 SKILL.md、可执行工具、MCP 配置接到现有能力上; marketplace、自动更新、分享和复杂 UI 扩展放到后续阶段。

调研日期:2026-05-25 当前仓库:/Users/moonshot/code/kimi-code 参考源码:kimi-cli / claude-code / codex / pi 交付物:自包含 HTML

1. 先给结论

推荐方向: /plugins 第一版做成 TUI 里的插件管理页:看已安装插件、看能力清单、看错误、启用/禁用、卸载、从本地路径安装。 插件本身先是一个目录包,里面可以带 plugin.jsonSKILL.md、工具脚本和可选 MCP 配置。
先做本地插件

沿用 old kimi-cli 的 plugin.json 思路,并和当前 Kimi Code 的 Skills / MCP / tool 执行体系对接。

不要急marketplace

Claude 和 Codex 的 marketplace、分享、自动升级很完整,但会明显扩大实现和安全面,适合第二阶段以后。

最关键安全边界

插件工具不能绕开权限确认,远程安装必须显式触发,manifest 路径必须限制在插件目录内。

一句话拆解

现在的 Kimi Code 已经有“能力被发现、展示、执行”的基础。缺的是一个稳定的插件包格式、安装位置、管理界面,以及把插件声明的能力接入 Session 的 RPC。做 /plugins 时,不应该让 TUI 直接读 agent-core,而是走 packages/node-sdk 暴露出的会话 API。

第一期成功标准

  • 用户输入 /plugins 后,可以看到插件列表、插件来源、启用状态、能力摘要和加载错误。
  • 用户可以从本地目录安装一个插件,也可以禁用、启用、卸载已安装插件。
  • 插件里的 skill 可以出现在现有的 skill 列表和 slash 补全里。
  • 插件声明的工具如果被模型调用,走现有权限/确认机制,不能静默执行。
  • 旧 kimi-cli 的 ~/.kimi/plugins 至少有清楚的迁移提示,最好能做验证后迁移。

2. 当前仓库是什么

/Users/moonshot/code/kimi-code 是一个 TypeScript monorepo。核心产品是终端里的 Kimi Code CLI/TUI, 底层由 SDK 和 agent-core 提供会话、skills、tools、MCP、权限、后台任务等能力。

路径 作用 和 /plugins 的关系
apps/kimi-code CLI / TUI 应用,用户直接交互的地方。 新增 /plugins slash 命令、插件管理 UI、安装/卸载操作入口。
packages/node-sdk 公开 TypeScript SDK 和 TUI 使用的 harness/session 包装。 TUI 不直接依赖 agent-core,插件列表和操作应该通过这里暴露。
packages/agent-core Agent、Session、skills、tools、MCP、权限、records 等核心能力。 插件扫描、manifest 解析、工具注册、skill roots 扩展应主要落在这里。
packages/migration-legacy 旧 kimi-cli 迁移探测和迁移材料。 已经检测旧 ~/.kimi/plugins,当前显示为“not yet supported”。
docs/en/customization Skills、MCP 等用户文档。 插件上线后需要新增或更新用户文档,说明插件和 skill/MCP 的区别。
边界提醒: apps/kimi-code 的仓库级规则要求它通过 @moonshot-ai/kimi-code-sdk 消费核心能力,不直接依赖 @moonshot-ai/agent-core。所以 /plugins 的 UI 可以在 app 里,但真正的插件扫描和执行不能只写在 TUI 里。

3. 当前已有可复用能力

Slash 命令

apps/kimi-code/src/tui/commands/registry.ts 存内置命令列表; resolve.ts 先解析内置命令,再解析 skill 命令;未知 slash 会被当普通消息发送。

对 /plugins:新增 plugins 内置命令,再在 KimiTUI 的命令分发里打开管理界面。

Skills

packages/agent-core/src/skill/scanner.ts 负责扫描 .kimi-code/skills.agents/skills、显式目录和 built-in 目录。

对 /plugins:插件目录可以作为额外 skill root,让插件内的 SKILL.md 自动进入 slash 补全和模型可见列表。

MCP

当前已有 /mcp 状态面板和 /mcp-config 内置 skill,用户文档说明 MCP 配置来自用户和项目目录。

对 /plugins:插件可以后续声明 MCP server,但第一期可以只展示,不急着自动合并执行。

SDK RPC

packages/node-sdk/src/session.ts 已经有 listSkills()activateSkill() 这类会话 API。

对 /plugins:新增 listPlugins()installPlugin()setPluginEnabled()removePlugin() 比较自然。

旧迁移探测

packages/migration-legacy/src/detect.tspaths.ts 已经会找旧 ~/.kimi/plugins

对 /plugins:这里是兼容 old kimi-cli 插件的入口,不需要从零设计迁移发现。

现有 TUI 面板

tasks-browser.tshelp-panel.tsmcp-status-panel.ts 已经展示了搜索、选择、状态面板的写法。

对 /plugins:可以照着任务浏览器做一个插件浏览器,不必重做整套交互控件。

当前发现的一个小坑:TUI 可能没有传递 --skills-dir

apps/kimi-code/src/cli/commands.ts 定义了可重复的 --skills-dir <dir>run-prompt.ts 会把它传给 KimiHarness。但交互式 run-shell.ts 当前构造 KimiHarness 时没有明显传入 skillDirs。 如果 /plugins 复用“额外目录”接入 skills,需要顺手覆盖这个路径,避免 TUI 和非交互模式行为不一致。

4. 参考实现对比

下面四套参考实现的关注点不一样:old kimi-cli 最像第一期本地插件;Claude Code 是完整扩展平台; Codex 是 marketplace 和 /plugins UI 的强参考;Pi 展示了 TypeScript 扩展系统的另一种边界。

项目 用户入口 插件包形态 能扩展什么 对 Kimi 的启发
kimi-cli Python kimi plugin install/list/remove/info 目录或 zip/git,根目录 plugin.json,可带 SKILL.md 可执行工具,启动时还把插件目录并入 skill roots。 最适合第一期兼容;实现简单,工具用 stdin JSON、stdout 文本。
Claude Code /plugin、CLI plugin 命令、--plugin-dir/reload-plugins manifest + commands/agents/skills/hooks/outputStyles/MCP/LSP/userConfig/marketplace。 几乎所有用户可见能力:slash、agents、skills、hooks、MCP、LSP、样式和配置。 适合作为长期目标,但第一期照搬会过重;可借鉴“纯操作层 + TUI/CLI 包装”。
Codex /plugins TUI、app-server plugin RPC、配置里的 enable/disable。 .codex-plugin/plugin.json,路径字段必须以 ./ 开头。 skills、MCP servers、apps、hooks、marketplace、share/install/uninstall。 最像目标 UI;可借鉴 feature gate、cache 清理、插件 ID 和路径校验。
Pi skills 命令、--extension、自动发现、/reload skills 是标准目录;extensions 是 TS 模块或带 pi 字段的 package。 工具、命令、事件拦截、UI、prompt、provider、资源发现。 提醒我们区分“插件包管理”和“运行时扩展 API”;热刷新和来源标记值得借鉴。

old kimi-cli Python:最贴近第一期

plugin.json 本地安装 工具执行 会写入注入配置

文档在 /Users/moonshot/code/kimi-cli/docs/en/customization/plugins.md。 源码集中在 src/kimi_cli/plugin/src/kimi_cli/cli/plugin.py

  • 插件是目录包,根目录必须有 plugin.json
  • plugin.json 主要字段是 nameversiondescriptionconfig_fileinjecttools
  • 工具命令运行在插件目录,stdin 是 JSON 参数,stdout 作为工具结果返回,非零退出和 stderr 会转成错误。
  • 安装支持本地目录、zip、远程 zip、git URL、repo 子目录和分支 URL。
  • 安装位置是旧的 ~/.kimi/plugins;Kimi Code 应该使用新的 ~/.kimi-code/plugins
  • 启动时会刷新插件配置,把 host 的 api_keybase_url 注入配置文件或运行时 env。
  • 插件目录也会被纳入 skill roots,因此一个插件可以同时带工具和 SKILL.md
不建议照搬的点: old kimi-cli 会把凭证写入插件配置文件。Kimi Code 第一版建议只做运行时环境变量注入,避免把密钥落盘到插件目录。

Claude Code:完整插件平台参考

/plugin UI marketplace skills/commands/hooks/MCP 范围很大

主要源码在 /Users/moonshot/code/claude-code/src/utils/plugins/src/services/plugins/src/commands/plugin/

  • PluginManifestSchema 支持 commands、agents、skills、hooks、outputStyles、MCP、LSP、userConfig、channels、dependencies。
  • /plugin 打开交互设置页,包含发现、已安装、marketplaces、错误等视图;还有 /reload-plugins
  • CLI 与 TUI 复用 pluginOperations.ts,CLI 只负责命令行输出和退出码。
  • --plugin-dir 可以加载 session-only 插件,适合调试。
  • 插件缓存目录默认在 ~/.claude/plugins,带 marketplace 和版本分层。
  • userConfig 支持敏感值和模板替换,MCP/LSP/hooks/skills/agents 都可能引用配置。
可借鉴: 把安装、卸载、启用、读取 manifest 等逻辑放在纯操作层,让 CLI 和 TUI 共享;这样后续加非交互命令不会重复实现。

Codex:/plugins UI 和 marketplace 参考

/plugins app-server RPC enable/disable config 功能开关

主要源码在 /Users/moonshot/code/codex/codex-rs/app-server-protocol/src/protocol/v2/plugin.rsapp-server/src/request_processors/plugins.rstui/src/chatwidget/plugins.rscore-plugins/src/manifest.rs

  • /plugins 是 TUI 弹窗,支持 All Plugins、Installed、marketplace tab、Add Marketplace、搜索、详情、安装、卸载。
  • 插件 API 走 app-server protocol:list/read/install/uninstall/share/marketplace add/remove/upgrade。
  • 安装或卸载后会清 plugin/skill cache,并触发已有 thread 的 MCP refresh。
  • 配置用 [plugins."plugin@marketplace"] enabled = true/false 记录启用状态。
  • 插件 ID 形如 <plugin>@<marketplace>,两个段只允许 ASCII 字母、数字、_-
  • manifest 路径字段必须以 ./ 开头,不能包含 ..,保证不会越过插件根目录。
可借鉴: 功能开关、错误态、搜索态、缓存刷新和路径校验。Kimi Code 不一定需要 app-server,但需要同样清晰的 SDK/core API 边界。

Pi:扩展 API 和热刷新参考

skills 标准 TS extensions /reload 更像运行时扩展,不是插件商店

主要源码在 /Users/moonshot/code/pi/packages/coding-agent/src/core/skills.tssrc/core/extensions/loader.tssrc/core/extensions/runner.tsdocs/extensions.md

  • skills 兼容 Agent Skills 标准,扫描 ~/.pi/agent/skills.pi/skills.agents/skills、package 和 settings 指定目录。
  • extension 是 TypeScript 模块,可以注册工具、命令、快捷键、provider、事件处理、UI、消息渲染。
  • extension 自动发现目录是 ~/.pi/agent/extensions.pi/extensions,也可通过 --extension 临时加载。
  • /reload 会重新加载 keybindings、extensions、skills、prompts、themes。
  • 多个 extension 注册同名 slash command 时,Pi 会保留多个并加数字后缀;工具则 first registration wins。
可借鉴: 资源来源 sourceInfo 很重要;插件列表里要告诉用户“这个能力来自哪个插件、哪个文件”,不要只显示名字。

5. /plugins 应该解决什么

对用户来说,/plugins 不应该只是列一个目录。它要回答四个问题:我装了什么、它能做什么、它有没有问题、我能怎么处理。

需求 第一期建议 后续再做
查看插件 显示 installed / disabled / error;展示 name、version、description、source path、能力数量。 按 marketplace、作者、分类、更新时间过滤。
查看详情 详情页显示 skills、tools、MCP、hooks、manifest 错误、安装路径。 展示 screenshots、README、版本历史、更新日志。
安装 从本地目录安装;可选支持本地 zip。 远程 zip、git、GitHub marketplace、npm 包。
启用/禁用 记录到 ~/.kimi-code/config.toml 或插件状态文件;当前 session 尽量刷新,否则明确提示重启或 /new 按项目启用、workspace policy、管理员策略。
卸载 删除安装目录前确认;禁用状态和错误记录同步清理。 保留插件 data dir、版本回滚。
错误处理 manifest 解析错误、路径越界、工具名冲突、缺少入口文件都展示清楚。 自动修复建议、诊断导出。
迁移 识别 old kimi-cli ~/.kimi/plugins,提供一键迁移或清楚提示。 迁移后自动转换 manifest 格式和配置注入方式。

用户流程建议

输入 /plugins 打开插件浏览器。没有插件时展示安装入口和旧插件迁移提示。
选择插件 看描述、路径、状态、skills、tools、MCP、错误。
安装/启用 用户显式选择本地目录;解析 manifest;预览能力和风险。
刷新能力 更新 skills、plugin tools、MCP cache;无法热刷新时提示重启。
使用能力 skill 进入 slash 补全;工具被模型调用时按权限流程执行。

6. 插件包形态

最小可用的插件包应该容易手写,也能兼容 old kimi-cli 的目录插件。建议第一期固定根目录 plugin.json,允许同时带 SKILL.md 和工具脚本。

推荐目录结构

my-plugin/
├── plugin.json
├── SKILL.md
├── tools/
│   └── search.js
└── mcp.json       # 可选,建议第二期再自动接入

第一期 manifest 建议

字段尽量少,先保证安装、展示和工具执行能闭环。

name version description tools skills mcpServers

推荐 plugin.json 示例

{
  "name": "repo-search",
  "version": "0.1.0",
  "description": "Search repository files and summarize matches.",
  "skills": "./skills",
  "tools": [
    {
      "name": "search",
      "description": "Search files with ripgrep and return compact matches.",
      "command": ["node", "./tools/search.js"],
      "parameters": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "The ripgrep query."
          }
        },
        "required": ["query"]
      }
    }
  ]
}

字段建议

字段 是否第一期支持 说明
name 必须 插件名。建议 lowercase + 数字 + -,避免路径和展示混乱。
version 必须 用于展示、未来升级和迁移判断。
description 必须 展示给用户,也可作为模型理解插件能力的简短说明。
skills 可选 推荐路径字段必须以 ./ 开头;也可以第一期默认扫描插件根目录里的 SKILL.md
tools 可选但核心 每个工具有 name、description、command、parameters。执行时 stdin JSON,stdout 文本。
mcpServers 建议延后 可以先解析和展示,不自动执行。后续再合并到 MCP 配置。
inject / config_file 不建议第一期写配置 old kimi-cli 有这个能力,但 Kimi Code 第一版不应默认把密钥写入插件目录。

7. 推荐实现方案

实现上建议分三层:core 负责发现和执行,SDK 负责暴露会话 API,TUI 负责展示和用户操作。

TUI /plugins 打开浏览器,调用 SDK,不直接读 core。
node-sdk 新增 session 方法和 RPC 类型,转发 list/install/enable/remove。
agent-core 解析 manifest、管理安装目录、注册 skills 和 tools。
runtime 工具执行走权限确认、超时、stdout 限制和错误记录。
storage ~/.kimi-code/plugins 保存安装包,config 记录启用状态。

建议新增/修改路径

路径 改动 原因
packages/agent-core/src/plugin/manifest.ts 新增 manifest schema、路径校验、错误诊断。 插件格式要有唯一入口,路径必须限制在插件根目录内。
packages/agent-core/src/plugin/manager.ts 新增 list/install/remove/enable/disable,管理 ~/.kimi-code/plugins 不要把文件系统逻辑散到 TUI。
packages/agent-core/src/plugin/tool.ts 把 manifest tools 转成 agent-core tool,处理 stdin/stdout/timeout/权限。 old kimi-cli 的可执行工具模型可以复用,但要接入当前权限体系。
packages/agent-core/src/skill/scanner.ts 把已启用插件的 skill roots 加入扫描结果。 插件里的 skill 才能进入 /skill:name 和短 slash。
packages/agent-core/src/session/rpc.ts 新增 plugin RPC handler。 让 SDK/TUI 可以管理插件。
packages/node-sdk/src/session.ts 新增 listPlugins()installPlugin()setPluginEnabled()removePlugin() 保持 app 只通过 SDK 使用 core 能力。
apps/kimi-code/src/tui/commands/registry.ts 新增 plugins 内置 slash 命令。 进入 /plugins 补全和帮助。
apps/kimi-code/src/tui/kimi-tui.ts 新增 case "plugins"showPluginsBrowser() 接入现有命令分发。
apps/kimi-code/src/tui/components/dialogs/plugins-browser.ts 新增插件管理界面。 展示列表、详情、安装、禁用、卸载、错误。
packages/migration-legacyapps/kimi-code/src/migration 把旧 plugins 从“未支持”改成可迁移或可引导。 用户从 old kimi-cli 升级时不会丢失插件。

工具命名建议

推荐: 插件工具在内部命名为 plugin__<plugin>__<tool>,展示时仍可以显示 <plugin> / <tool>。 这样不会和内置工具、MCP 工具、其他插件工具撞名。

old kimi-cli 遇到工具名冲突时直接跳过插件工具。这个做法简单,但用户很难发现为什么工具不可用。 新实现更应该在 /plugins 里明确显示“工具名冲突”或采用命名空间避免冲突。

安装目录和配置建议

  • 安装目录:~/.kimi-code/plugins/<plugin-name>
  • 临时安装 staging:~/.kimi-code/plugins/.tmp-<random>,验证成功后原子替换。
  • 启用状态:优先写入现有 config,例如 [plugins."repo-search"] enabled = true
  • 插件私有数据:后续可以加 ~/.kimi-code/plugin-data/<plugin-name>,卸载时询问是否保留。
  • 远程 marketplace:第一期不建缓存层,第二期再考虑 plugins/cache/<source>/<name>/<version>

8. 分阶段落地

Phase 0:确认范围 先决定第一期是否只支持本地目录,以及是否要立刻兼容 old kimi-cli 工具执行。
Phase 1:只读 /plugins 浏览器 实现 manifest 解析、安装目录扫描、SDK listPlugins()、TUI 列表/详情/错误态。不先执行任何插件工具。
Phase 2:skill 接入 把已启用插件里的 SKILL.mdskills/ 加到 skill roots,保证 slash 补全和模型提示正常。
Phase 3:工具执行 支持 tools 字段,工具执行走权限确认、超时、stdout 限制和错误展示。
Phase 4:安装、禁用、卸载和迁移 支持本地目录安装、禁用/启用、卸载;把旧 ~/.kimi/plugins 纳入迁移。
Phase 5:远程来源和 marketplace 在本地模型稳定后再做 git/zip/npm/marketplace、更新、分享、签名或 allowlist。

最小第一 PR 建议

  1. 新增 packages/agent-core/src/plugin/manifest.ts,只支持本地已安装目录扫描和错误收集。
  2. 新增 SDK/RPC listPlugins(),返回结构化列表,不做安装/执行。
  3. 新增 /plugins 命令和只读 TUI 浏览器。
  4. 补测试:manifest 成功/失败、路径越界、TUI slash 注册、空列表 UI。

这个 PR 小,能先把用户界面和数据模型定下来;后续再接 skill、tools、安装操作,不会一口气改太多核心路径。

9. 风险和安全边界

核心原则: 插件是用户安装的代码和提示词包。它既能影响模型行为,也可能执行本地命令,所以默认必须按“不可信输入”处理。
风险 具体症状 建议防线
路径越界 manifest 里写 ../secret、zip 解压覆盖外部文件。 所有路径必须归一化并确认在插件根目录内;zip 解压逐项检查。
静默执行命令 模型调用插件工具后直接跑本地脚本。 插件工具走和 shell/MCP 类似的权限确认;显示插件名、工具名、参数摘要。
密钥落盘 安装时把 API key 写进插件目录配置。 第一期不要写密钥文件;只允许运行时 env 注入,且 UI 明确展示。
工具名冲突 插件工具覆盖内置工具或 MCP 工具。 内部命名空间化;冲突在 /plugins 里作为诊断展示。
远程安装投毒 用户粘贴远程 URL,内容变化或来源伪装。 第一期只本地路径;远程来源需要显式确认、校验、缓存和来源展示。
输出过大 插件工具 stdout 很大,撑爆上下文或 UI。 限制 stdout 字节数和行数;超出时截断并提示。
长时间卡住 插件工具不退出。 默认 timeout,例如 120 秒;支持 abort signal。

第一期明确不要做

  • 不要支持自动安装远程 marketplace 插件。
  • 不要让插件声明任意 hook 并在启动时直接执行。
  • 不要默认把用户密钥写入插件配置文件。
  • 不要允许插件工具裸名覆盖内置工具。
  • 不要让 TUI 绕过 SDK 直接操作 core 内部对象。

10. 测试清单

manifest 解析

合法 manifest、缺少必填字段、未知字段、路径不是 ./、路径包含 ..

安装流程

本地目录安装、重复安装、staging 失败回滚、卸载后状态清理。

skill 接入

已启用插件的 SKILL.md 被扫描;禁用后不出现;短 slash 不覆盖内置命令。

工具执行

stdin JSON、stdout 返回、非零退出、stderr、timeout、env 注入、权限拒绝。

命名冲突

插件工具与内置工具、MCP 工具、其他插件工具同名时可诊断或命名空间化。

SDK/RPC

Session.listPlugins() 等 API 返回稳定结构;错误不会让会话崩掉。

TUI 浏览器

空列表、loading、error、search、详情、启用/禁用/卸载确认。

旧插件迁移

检测 ~/.kimi/plugins;提示或迁移到 ~/.kimi-code/plugins;无效插件可跳过并报告。

配置写入

启用状态写入后可重新读取;保留未知 config 字段;禁用插件不加载工具和 skills。

文档

说明插件、skills、MCP 的区别;说明安全风险和安装来源;更新 slash command 文档。

11. 需要先拍板的问题

  1. 第一期是否只支持本地插件?我建议是。远程 git/zip/marketplace 放第二期。
  2. 是否兼容 old kimi-cli 的 plugin.json我建议兼容核心字段,尤其是 tools 和顶层 SKILL.md
  3. 插件工具是否允许裸工具名?我建议内部强制命名空间,UI 里再展示友好名。
  4. 安装后是否必须热刷新当前 session?最好支持,但可以第一期提示“新会话生效”;如果做工具执行,热刷新体验更重要。
  5. MCP 是否第一期自动接入?我建议第一期只解析和展示,第二期再合并执行。
  6. 启用状态是全局还是项目级?第一期全局更简单;项目级适合有 workspace policy 后再做。

12. 调研来源

本报告基于本机源码和文档检索,不依赖远程网络资料。下面是主要证据路径。

Kimi Code 当前仓库

  • /Users/moonshot/code/kimi-code/apps/kimi-code/AGENTS.md
  • /Users/moonshot/code/kimi-code/apps/kimi-code/src/tui/commands/registry.ts
  • /Users/moonshot/code/kimi-code/apps/kimi-code/src/tui/commands/resolve.ts
  • /Users/moonshot/code/kimi-code/apps/kimi-code/src/tui/commands/skills.ts
  • /Users/moonshot/code/kimi-code/apps/kimi-code/src/tui/kimi-tui.ts
  • /Users/moonshot/code/kimi-code/packages/node-sdk/src/session.ts
  • /Users/moonshot/code/kimi-code/packages/node-sdk/src/rpc.ts
  • /Users/moonshot/code/kimi-code/packages/agent-core/src/session/rpc.ts
  • /Users/moonshot/code/kimi-code/packages/agent-core/src/session/index.ts
  • /Users/moonshot/code/kimi-code/packages/agent-core/src/skill/scanner.ts
  • /Users/moonshot/code/kimi-code/packages/agent-core/src/skill/parser.ts
  • /Users/moonshot/code/kimi-code/packages/migration-legacy/src/detect.ts
  • /Users/moonshot/code/kimi-code/apps/kimi-code/src/migration/migration-screen.ts
  • /Users/moonshot/code/kimi-code/docs/en/customization/skills.md
  • /Users/moonshot/code/kimi-code/docs/en/customization/mcp.md
  • /Users/moonshot/code/kimi-code/docs/en/reference/slash-commands.md

参考实现

项目 路径 看点
kimi-cli Python /Users/moonshot/code/kimi-cli/docs/en/customization/plugins.md
/Users/moonshot/code/kimi-cli/src/kimi_cli/plugin/
/Users/moonshot/code/kimi-cli/src/kimi_cli/cli/plugin.py
旧插件格式、安装、工具执行、配置注入、skill roots。
Claude Code /Users/moonshot/code/claude-code/src/utils/plugins/
/Users/moonshot/code/claude-code/src/services/plugins/
/Users/moonshot/code/claude-code/src/commands/plugin/
完整插件平台、marketplace、UI、纯操作层、reload。
Codex /Users/moonshot/code/codex/codex-rs/tui/src/chatwidget/plugins.rs
/Users/moonshot/code/codex/codex-rs/app-server-protocol/src/protocol/v2/plugin.rs
/Users/moonshot/code/codex/codex-rs/core-plugins/src/manifest.rs
/plugins UI、plugin RPC、manifest 路径安全、配置启用状态。
Pi /Users/moonshot/code/pi/packages/coding-agent/docs/skills.md
/Users/moonshot/code/pi/packages/coding-agent/docs/extensions.md
/Users/moonshot/code/pi/packages/coding-agent/src/core/extensions/loader.ts
Agent Skills 标准、TS extension、热刷新、动态工具和命令。

注:本文里的“第一期/第二期”是实现建议,不代表已有产品承诺。真正开工前建议先用上面的“需要拍板的问题”确认范围。