<!-- title: 一机六份pptx：装机重影审计 -->

# 一机六份pptx：装机重影审计

## 概述

本系列前期做过一次装机全量统计：这台机器上装了 430 余个 Skill，按类别画过生态结构图。本篇换一把刀，不看类别，看**重影**——同一个能力、同一个（或近似的）名字，在一份装机里同时存在两份以上拷贝的现象。审计对象就是本机正在运行的真实装机：`skill-creator` 在磁盘上可定位 5 处，`pptx` 一个工位上有 6 个并列条目，obsidian 三件套同时以裸名和插件前缀两副面孔加载。本文拆清重影的成因（装载层的四个来源互不去重）、四种代价（触发歧义、更新落空、常驻 token、审计债），并给出一套读者可以直接在自己机器上跑的重影自查命令。

## 先看病历：本机重影名单

以下全部条目来自两处可复核的证据：本会话 Claude Code 加载的可用技能清单，以及对 `~/.claude/plugins` 目录的文件系统快照（2026-09-12）。

| 重影家族 | 装机内条目 | 重影形态 | 严重度 |
|---|---|---|---|
| skill-creator | 裸名 skill-creator ×2、obsidian:skill-creator、example-skills:skill-creator；磁盘另有 plugins/skill-creator、plugins/skill-creator-simple 两个散装插件目录 | 同名多源，磁盘 5 处 | ★★★★★ |
| pptx 工位 | pptx、pptx-official、pptx-generator、pptx-manipulation、pptx-test、example-skills:pptx | 1 个真同名 + 4 个同工位变体 | ★★★★☆ |
| obsidian 三件套 | 裸名 json-canvas / obsidian-bases / obsidian-markdown，与 obsidian: 前缀的同一批名字 | 3 个名字 × 2 个来源 | ★★★★☆ |
| frontend-design | frontend-design:frontend-design 与 example-skills:frontend-design | 两个插件市场各养一份 | ★★★☆☆ |
| canvas-design | 裸名 canvas-design 与 example-skills:canvas-design | 跨源同名 | ★★★☆☆ |
| course-video-maker | 本体、-link、-zh、-zh-link | 命名后缀矩阵，4 个变体 | ★★☆☆☆ |
| chart-craft | chart-craft 与 chart-craft-plus | 「升级版」并存 | ★★☆☆☆ |
| openstoryline | openstoryline-install 与 openstoryline-use | 按动词拆件，属健康拆分 | ★☆☆☆☆ |

两点说明。第一，这不是脏装机——这台机器的维护频率不低，4 月和 8 月各有一次归档备份（磁盘上可见 `skills_backup_20260417`、`backup-20260828`）。重影恰恰是**活跃装机的慢性病**：每换一种安装姿势，就留下一层沉积。第二，最后两行放在表里是为了对照：按动词拆件（install/use）是健康的分工，而 `-plus`、`-zh` 这类后缀变体则是灰区——名字不同、工位相同，触发时照样分票。

## 重影怎么长出来：四个来源，一个清单

Claude Code 的 Skill 装载层不是一个目录，而是四个来源的并集。本机磁盘快照可以完整看到这个地层结构：

```
~/.claude/
├── skills/                          # 来源①：个人目录，裸名加载
├── plugins/
│   ├── skill-creator/               # 来源②：散装插件（单独安装）
│   ├── skill-creator-simple/        # 来源②：又一次散装安装
│   └── marketplaces/
│       ├── claude-plugins-official/ # 来源③：官方插件市场
│       │   ├── plugins/plugin-dev/skills/…（7 件开发教学件）
│       │   ├── plugins/frontend-design/skills/…
│       │   └── external_plugins/stripe/skills/…
│       ├── anthropic-agent-skills/  # 来源④：官方示例技能市场
│       └── obsidian-skills/         # 来源④：第三方市场
└── skills_backup_20260417/          # 化石层：整卷备份，不加载
```

关键机制有三个，都可以从本机证据直接读出：

**其一，跨来源不去重。** 会话清单里 `pptx`（裸名）与 `example-skills:pptx`（插件名）同时在列，`canvas-design` 同理。装载层把四个来源的 SKILL.md 全部登记，不做同名合并。

**其二，插件件带命名空间前缀，个人件裸奔。** 市场装的件在清单里显示为 `example-skills:pptx`、`obsidian:json-canvas`、`frontend-design:frontend-design`——前缀就是插件名；个人目录的件则只有裸名。这解释了 obsidian 三件套为什么以两副面孔共存：名字相同，但 `json-canvas` 和 `obsidian:json-canvas` 在装载层是两个条目。磁盘上 `marketplaces/obsidian-skills/skills/` 与个人目录各存一份，互不知晓。

**其三，散装插件目录是重影的主产地。** `plugins/skill-creator` 与 `plugins/skill-creator-simple` 两个目录几乎肯定来自两次不同的安装尝试（一个完整版、一个精简版），谁也没有替换谁。这不是假设——会话清单里裸名 `skill-creator` 出现了两次，与磁盘上两个散装目录正好对应。

下面的图把最严重的 skill-creator 家族画了出来：

```mermaid
flowchart TD
    N["同一个名字：skill-creator"]
    S1["个人目录，裸名"]
    S2["散装插件 skill-creator"]
    S3["散装插件 skill-creator-simple"]
    S4["obsidian-skills 市场"]
    S5["anthropic-agent-skills 市场"]
    L["会话可用清单"]
    Q["触发时选哪一份？"]
    N --> S1
    N --> S2
    N --> S3
    N --> S4
    N --> S5
    S1 --> L
    S2 --> L
    S3 --> L
    S4 -->|加前缀成 obsidian:skill-creator| L
    S5 -->|加前缀成 example-skills:skill-creator| L
    L --> Q
```

顺带一提，化石层也有信息量：`skills_backup_20260417/skills/skills/.curated/` 这种双层嵌套，说明备份保存的是某次仓库整卷克隆的中间态；`pcap-generator/references/SKILL.md` 则是资源子目录里再放一份 SKILL.md 的布局样本。备份不加载、无害，但它会骗过你的审计脚本——后面自查命令里会处理这一点。

## 重影的四种代价

**代价一：触发分票。** 用户说「帮我做个 PPT」，六个 pptx 工位条目都在候补。哪个 descriptions 命中得更具体，哪个就更常被选中——这是经验观察，官方文档并未公开给出同工位多条目之间的仲裁顺序。可以确认的是：真同名对（`pptx` 与 `example-skills:pptx`）的存在本身，就意味着行为不再由单一文件决定。你改了 A 份的提示词，B 份还在按旧逻辑触发，于是出现「明明改过怎么没生效」的灵异现象。

**代价二：更新落空。** 上游仓库发了新版，`npx skills add` 把新件装进了其中一个来源，其余副本原样不动。obsidian 三件套是典型：如果 obsidian-skills 市场更新了 `obsidian-markdown`，你个人目录里那份裸名件不会跟着走，而它仍可能被触发。更新只落到一条影子上，是重影装机里最隐蔽的坑。

**代价三：常驻 token 开销。** 每个已安装 Skill 的名字和描述都会进入每一段会话的系统提示词。430 余件、每件一行描述，这笔开销按千 token 量级计；重影让同一段描述文字付两遍。社区最近正在为这笔账吵架——今天 HN 首页那条「RTK 宣称省 token，但我们的成本基准测不出来」（142 分）就是佐证：连专门做 token 优化的工具，收益都难以在基准里复现，这时装机里每一份冗余条目都更没有借口。

**代价四：审计债。** 重影让「这台机器上 pptx 到底是什么版本」变成一个需要考古的问题。散装目录、市场目录、个人目录、备份目录四层叠上去，没有一张清单能回答。安全类技能尤其危险：本机 4 月备份里躺着 `security-best-practices`、`security-threat-model` 的旧拷贝——一旦某天有工具或人「顺手恢复」，旧安全建议就会借尸还魂。

## 二十分钟自查：把你自己机器上的重影翻出来

以下命令在 macOS / Linux 的 Claude Code 默认目录结构下可直接运行。

第一步，全盘定位所有 SKILL.md，排除备份与缓存：

```bash
find ~/.claude -name "SKILL.md" \
  ! -path "*backup*" ! -path "*cache*" | sort
```

第二步，按技能名聚合，重影家族立刻现形：

```bash
find ~/.claude -name "SKILL.md" ! -path "*backup*" \
  | awk -F/ '{print $(NF-1)}' | sort | uniq -c | sort -rn | head -15
```

第三步，对疑似的同名对做指纹比对——比 frontmatter 的 name/description，再比正文差异：

```bash
diff ~/.claude/plugins/skill-creator/skills/skill-creator/SKILL.md \
     ~/.claude/plugins/marketplaces/anthropic-agent-skills/skills/skill-creator/SKILL.md

grep -H -m1 "^name:\|^description:" \
  ~/.claude/plugins/*/skills/skill-creator/SKILL.md \
  ~/.claude/plugins/marketplaces/*/skills/skill-creator/SKILL.md
```

第四步，处理。原则按顺序判断：真同名且内容一致 → 删散装副本，留有命名空间、有更新渠道的那份；真同名但内容分叉 → 先确认哪份是你实际在用的（看最近 mtime），另一份移出加载路径再归档；同工位变体 → 逐个读 description，删掉触发词重叠度最高的弱者，或把它改造成真正的分工（像 openstoryline 那样按动词拆，而不是按后缀堆）。

三条注意事项：改之前先整卷备份；`example-skills:` 这类官方示例件删除时走插件卸载（`/plugin` 管理）而不是手删目录；删完重开会话验证清单，重影清算是少数「立刻能在系统提示词里看到减肥效果」的操作。

## 给写件人的三条避让规则

重影不全是用户的错，一半是作者埋的。写自己的 Skill 时：

**一，别挤占已存在的名字。** 发布前先在目标市场搜一遍：你叫 `pptx`，就意味着和官方示例件、和其他所有 `pptx` 同台。`pptx-official` 这种「我才是正版」式的命名恰是重影生态的病症——正版不需要在名字里自证。起名带上自己的领地（功能细分词或专有名词），让后缀只表达分工。

**二，用命名空间分发，别劝用户裸装。** 走插件/市场渠道，你的件获得 `插件名:技能名` 前缀，天然避开裸名碰撞区；劝用户直接拷进个人目录，等于把它扔进最容易撞车的平原。

**三，变体要么合并，要么改成分工。** `-plus`、`-v2`、`-zh` 式后缀是在给触发层出难题。真有中英双版需求，学 openstoryline 把动词写进名字（install/use），让 description 各管各的场景；没有真分工，就只留一份。

## 排行榜

**重影最重家族 Top 3**：skill-creator（磁盘 5 处、清单 4 条目）；pptx 工位（6 条目并列）；obsidian 三件套（3 名 × 2 源）。

**最干净工位 Top 3**：algorithmic-art、brand-guidelines、webapp-testing——三者仅以 `example-skills:` 单一命名空间存在，单源、有更新渠道、零歧义，是市场渠道分发的正面样本。

**清理收益 Top 3**：skill-creator 家族（一次清掉 3–4 个条目）；pptx 工位变体（决定唯一主力后可清 3 个）；course-video-maker 后缀矩阵（合并 zh/link 变体可减半）。

## 参考来源

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
