命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
卸载已安装的插件,可选保留数据目录、清理无用依赖或以 JSON 格式输出结果
claude plugin uninstall <plugin> [options]claude plugin uninstall formatter@my-marketplace --scope project --keep-dataclaude plugin uninstall <plugin> 是 claude plugin 子命令组里的一个 shell 命令,用来移除已安装的插件。claude plugin 在官方 CLI 参考中的别名是 claude plugins。它不会打开 /plugin 面板,官方文档明确把 claude plugin 系列命令定位为脚本化用途。
官方 plugins-reference 在 --json 选项上标注了 Requires Claude Code v2.1.268 or later。
<plugin> 接受两种写法:
plugin-name@marketplace-nameclaude plugin uninstall <plugin> [options]
示例(按官方选项表写出):
# 从任意 scope 卸载
claude plugin uninstall formatter@my-marketplace
# 从指定 scope 卸载
claude plugin uninstall formatter@my-marketplace --scope project
# 卸载但保留持久化数据目录
claude plugin uninstall formatter@my-marketplace --keep-data
| Flag | 说明 |
|---|---|
-s, --scope <scope> | 从指定 scope 卸载,可选 user、project、local。省略时的行为,官方页面措辞不一致:有的写作从所有已安装该插件的 scope 卸载,有的写作 whichever scope it's installed in |
--keep-data | 保留插件的持久化数据目录(${CLAUDE_PLUGIN_DATA})。不加此 flag 时数据目录会被删除 |
--json | 把结果输出为 stdout 最后一行的一个 JSON 对象,而不是人类可读的消息,供脚本使用 |
-h, --help | 显示帮助 |
说明:官方
plugins-reference的plugin uninstall选项表除上面四项外,还列出-y, --yes(跳过确认提示)和--prune。这两个 flag 出自官方文档,不是二手来源;--prune的具体含义在抓取到的官方页面版本里描述不一致,本文不展开。
退出码:官方文档明确:用法错误(例如 --scope 取值非法)不会输出结果行,以退出码 1 结束,原因写到 stderr。
--json 输出结构:stdout 的最后一行是一个 JSON 对象,只应解析这一行。
| 字段 | 出现条件 | 含义 |
|---|---|---|
command | 总是 | 运行的子命令 |
outcome | 总是 | ok 或 failed |
message | 总是 | 人类可读的结果描述 |
pluginId、scope、failureCode 等 | 仅在适用时 | 该子命令自己的字段 |
脚本里可以读取最后一行 JSON 中的 outcome(ok 或 failed)来判断结果。
下面两个例子只依赖文档写明的 --json 行为(结果在最后一行):
# 取最后一行并读取 outcome / message
claude plugin uninstall formatter@my-marketplace --scope user --json \
| tail -n 1 | jq -r '.outcome, .message'
# 批量卸载,逐个记录结果
for p in formatter@my-marketplace linter@my-marketplace; do
claude plugin uninstall "$p" --json | tail -n 1
done
在另一个终端里执行 claude plugin 命令后,已经打开的会话不会自动更新。官方文档要求在该会话里手动运行 /reload-plugins。
claude plugin uninstall(shell) | /plugin uninstall(会话内) | |
|---|---|---|
| 交互方式 | 不打开面板,适合脚本 | 打开 /plugin 面板,面板保持打开,需按 Esc 关闭后才能输入其他命令 |
| 数据目录 | 默认删除,用 --keep-data 保留 | 界面显示目录大小,并在删除前提示确认 |
| scope 处理 | 用 --scope 指定;省略时的行为见上文 flag 表说明 | 若项目的 .claude/settings.json 启用了该插件,会询问范围:只对自己禁用(在 .claude/settings.local.json 写入覆盖,项目里仍保持安装),或对所有人卸载(从共享的 .claude/settings.json 移除) |
| 对当前会话生效 | 需在会话中运行 /reload-plugins | 关闭面板时自动执行 /reload-plugins;若会使 prompt cache 失效则给出警告并保持待处理,可用 /reload-plugins --force 强制应用 |
GitHub issue #52456 是一位用户的报告,该 issue 已作为 duplicate 关闭。它称 TUI 卸载后仍会残留状态,而 CLI 卸载能清理下列四处:
~/.claude/plugins/installed_plugins.json~/.claude/settings.json 中的 enabledPlugins~/.claude/settings.local.json 中的 enabledPlugins~/.claude/plugins/cache/<marketplace>/<plugin>/这是用户对行为的描述,不是官方文档的保证。
| 约束 | 原因 / 来源 |
|---|---|
| managed scope 的插件无法修改 | 官方文档:由管理员通过 managed settings 安装的插件不能被用户修改 |
| 从 claude.ai 同步来的插件要在 claude.ai 上关闭 | 官方文档:要移除同步插件,请在 claude.ai 上把它关掉 |
| 数据目录仅在从最后一个安装它的 scope 卸载时才被删除 | 官方文档:数据目录在从最后一个仍安装该插件的 scope 卸载时自动删除 |
| 移除 marketplace 会卸载从它安装的所有插件 | 官方文档的 Warning;这是 plugin marketplace remove 的行为,与 uninstall 相关但不是同一个命令 |
~/.claude/plugins/data/{id}/,而 /plugin 界面会先提示。其中 {id} 把 a-z、A-Z、0-9、_、- 以外的字符替换为 -。例如 formatter@my-marketplace 对应 ~/.claude/plugins/data/formatter-my-marketplace/。如果之后可能重装并复用依赖缓存(如 node_modules),卸载时请加 --keep-data。--json 不能整段解析:stdout 可能在结果对象之前还有其他输出,官方要求只解析最后一行。--scope 时的卸载范围,官方页面措辞不一致:有的页面写作从所有已安装该插件的 scope 卸载,有的写作 whichever scope it's installed in。同一个插件装在多个 scope 时,请显式指定 --scope,避免误判。