Skip to content

Claude Code 安装不应默认拉下整个多平台 community monorepo #252

@lovingfish

Description

@lovingfish

摘要

Claude Code 用户安装 nowledge-mem@nowledge-community 时,不应该为了一个 Claude Code plugin,把整个多平台 nowledge-co/community repo 都拉到 Claude 的 marketplace cache 里。

我本来只是想用 Claude Code 的 Nowledge Mem plugin,但本地的:

~/.claude/plugins/marketplaces/nowledge-community/

里面出现了 Cursor、Codex、Droid、Gemini、OpenCode、Raycast、Hermes、Pi 等一堆和当前 Claude Code 使用无关的 integration。排查问题时看到这些东西会非常困惑,也会让人误以为 Claude Code plugin 本体混进了其他平台的包。

当前观察到的状态

实际安装的 Claude Code plugin 本体是干净的:

~/.claude/plugins/cache/nowledge-community/nowledge-mem/0.7.3/

里面主要是:

.claude-plugin/plugin.json
skills/
commands/
hooks/
README.md
CHANGELOG.md
icon.png

这个部分没问题。

但 marketplace cache 是整个 community repo:

~/.claude/plugins/marketplaces/nowledge-community/

里面包含很多其他平台的集成,例如:

nowledge-mem-claude-code-plugin/
nowledge-mem-cursor-plugin/
nowledge-mem-codex-plugin/
nowledge-mem-droid-plugin/
nowledge-mem-gemini-cli/
nowledge-mem-opencode-plugin/
nowledge-mem-openclaw-plugin/
nowledge-mem-hermes/
nowledge-mem-raycast/
nowledge-mem-pi-package/
...

从维护 repo 的角度看,monorepo 可以理解;但从 Claude Code 用户的本地安装体验看,这个 cache 太脏了。

为什么这很难受

这不是说 Claude Code runtime 真的加载了 Cursor/Codex plugin。实际加载的 Claude Code plugin 是干净的。

问题是:用户为了安装一个 Claude Code plugin,本地 Claude marketplace cache 里被塞进了一整个多平台 integration repo。之后排查 hook、plugin、nmem 行为时,很容易被这些无关目录干扰。

尤其是 Nowledge Mem 本来就跨很多 agent/IDE,用户看到一堆 Cursor/Codex/Droid/OpenCode 目录,很难第一眼判断:

  • 哪些是 Claude Code 真正在用的
  • 哪些只是 marketplace repo 的旁支内容
  • 哪些 hook/README/manifest 有可能影响当前 Claude Code 行为

这个体验不够清晰。

Claude Code 现在已经有更优雅的机制

Claude Code marketplace 现在支持 sparse checkout:

claude plugin marketplace add nowledge-co/community \
  --sparse .claude-plugin nowledge-mem-claude-code-plugin

这样对 Claude Code 用户来说,只需要拉:

.claude-plugin/
nowledge-mem-claude-code-plugin/

另外,Claude Code marketplace docs 也支持 git-subdir plugin source,用来从 monorepo 里只取某个 plugin subdir。

期望行为

希望 Nowledge 的 Claude Code 安装文档或 marketplace 配置能避免让用户默认拉完整 community monorepo。

可能的做法:

  1. 在 Claude Code 安装文档里使用 sparse checkout 版本:

    claude plugin marketplace add nowledge-co/community \
      --sparse .claude-plugin nowledge-mem-claude-code-plugin
    claude plugin install nowledge-mem@nowledge-community
  2. 或者调整 .claude-plugin/marketplace.json,让 Claude plugin entry 使用 git-subdir 指向 nowledge-mem-claude-code-plugin

  3. 或者提供一个 Claude-Code-only marketplace/repo,让 Claude Code 用户不需要把 Cursor/Codex/Droid/Gemini/OpenCode 等无关 integration 拉到本地。

目标

不是反对 community monorepo。monorepo 作为维护仓库没问题。

我希望的是:Claude Code 用户安装 Claude Code plugin 时,本地只出现和 Claude Code 有关的内容。这样更清楚,也更容易排查问题。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions