构建我的第一个 Claude Code 插件
Source: Dev.to
请提供您希望翻译的正文内容,我将按照要求保留源链接、格式和技术术语,仅翻译文本部分。
介绍
我为 Forgetful 构建了一个 Claude Code 插件。
Forgetful 是我一直在研发的语义记忆系统——持久化的知识可以跨 Claude Code 会话随身携带,能够在相关概念之间自动链接,并且可以将代码仓库编码为可搜索的记忆。我在首次发布时写了篇文章介绍它。
我已经连续数周每天使用它,但让其他人进行设置时会遇到摩擦(MCP 配置、环境变量、选择数据库后端)。这类事情往往是:你把 README 发给某人,之后再也没有他的消息。
我甚至还提供了一些提示示例。
Claude Code 插件似乎是答案。
如果你还没有使用过它们,请参阅官方文档关于Claude Code 插件。它们允许你通过自定义斜杠命令、代理、技能和 MCP 服务器来扩展 Claude Code。你可以打包一个工作流并共享——有人运行 /install your-plugin,就能得到你的完整配置。
这正是我想要的:一个命令即可启动 Forgetful,再加上我日常使用的斜杠命令,打包后让其他人也能轻松尝试。
插件指令
插件提供以下斜杠指令:
| 指令 | 描述 |
|---|---|
/forgetful-setup | 配置 MCP 连接 |
/memory-search | 对你的知识库进行语义搜索 |
/memory-save | 按 Zettelkasten 约束创建记忆(单一概念,≤ 400 词,重要性评分,适当上下文) |
/memory-list | 浏览最近的记忆 |
/memory-explore | 深度图遍历;跟随链接和实体 |
/encode-repo | 指向代码库并从中提取记忆 |
此外,三个自动激活的技能可帮助:
- 决定何时查询 vs. 创建记忆,
- 正确策划和链接条目,
- 在知识图谱中探索而不迷失。
这些并非全新想法;它们是我已经在使用的工作流,只是被打包了。
注意事项与经验教训
配置文件在更新后不会保留
首个版本在插件目录中放置了一个 .mcp.json。更新后,插件目录(~/.claude/plugins/forgetful-plugin@1.0.0/)会被清空,导致配置消失。
解决方案: 不要在插件内部提供配置文件。我重写了 /forgetful-setup,让它执行:
claude mcp add forgetful --scope user -- uvx forgetful-ai
该命令会写入全局的 ~/.claude.json,在插件更新之间保持持久。对于自定义设置(Postgres、远程托管、认证令牌),该命令会从 GitHub 获取实时文档,并引导用户完成选项配置,避免了陈旧的重复文档。
昂贵的命令需要子代理
/memory-explore 执行五阶段遍历(查询 → 跟随链接 → 查找实体 → 获取关系 → 拉取实体关联记忆)。在主模型中一次性运行整个过程会迅速占满上下文窗口并产生高额费用。
解决方案: 启动一个 Haiku 子代理来处理繁重的计算,然后返回简洁的摘要。这样可以将费用降低到约十分之一,并保持主对话的整洁。我曾考虑过提供自定义代理,但每个代理定义都会占用上下文窗口,所以改用内置的 general-purpose 代理,它始终可用且拥有所有工具的访问权限。
技能不仅是华丽的提示
起初我以为技能只是 markdown 提示文件。真正缺失的部分是 YAML 前置元数据描述,它会呈现给模型并决定何时激活技能。模型在每条消息时会扫描这些描述——而不是整个文件。
关键要点:
- 编写清晰的第三人称描述,明确 何时 应该触发该技能。
- 模糊的描述不会被触发。
- 该描述的主要受众不是人类阅读者,而是作为激活触发条件。
尝试
/install forgetful-plugin
/forgetful-setup
标准设置大约需要 30 秒。
链接
- 插件仓库:
- 主要 Forgetful 项目: