关于 What's Inherited
What's Inherited 是供用户在将代码仓库交给 AI Agent 前检查其内容的 MCP 服务。它盘点面向 Agent 的指令和配置,不返回指令文件正文,也不判断内容是否恶意或客户端是否会执行。
主要功能
- 01列出指令文件及其导入
- 02报告绑定 Agent 事件的钩子命令
- 03检查仓库声明的 MCP 服务
- 04查找随仓库提供的技能和子 Agent
- 05估算指令的令牌开销
适用场景
- 01审查克隆仓库中的 Agent 指令
- 02定位绑定到 Agent 事件的钩子
- 03在启动前检查仓库声明的 MCP 服务
- 04盘点仓库附带的技能和子 Agent
MCP 相关
MCP 客户端可调用工具,检查代码仓库中的 Agent 指令文件、钩子、声明的 MCP 服务、技能和子 Agent。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
5收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| dir | string | 否 | 要检查的工作区绝对路径。若已设置 WI_DEFAULT_ROOT,则默认为该值;否则默认为服务器的工作目录。 |
详细介绍
whats-inherited-mcp
你会审查克隆下来的代码,却几乎没人会审查其中与 Agent 交互的部分。 这是一个 MCP 服务,用于枚举代码库检出内容中面向 AI Agent 而非面向你的所有内容:指令文件、与 Agent 事件关联的钩子命令、代码库声明的 MCP 服务,以及随附的技能和子 Agent。
原因
git diff 会显示代码,而你会阅读代码。它还会显示 CLAUDE.md 中新增的三行,你会略读过去,因为它们看起来像文档。它们并不是文档——而是模型会遵循的指令。
这类内容比大多数人想象的更多。你克隆的目录可能包含:
CLAUDE.md/AGENTS.md/.cursorrules——会加载到上下文中并被视为指令,其中包括深藏在目录树中的嵌套副本,它们仅在 Agent 于对应子目录中工作时生效.claude/settings.json中的钩子命令——配置为在使用工具、会话开始或提交提示词时触发的 shell 命令.mcp.json——代码库要求添加的 MCP 服务,通常通过npx -y <package>启动,这意味着运行的代码会在启动时下载,而不是你审查过的代码.claude/skills、.claude/commands、.claude/agents——代码库交给 Agent 的能力
没有任何工具会把这些内容集中起来。这个工具可以。
针对 langfuse/langfuse 在 7d2afa4 的检出内容运行——这是一个普通且信誉良好的开源代码库,选它恰恰是因为它没有任何问题:
# Inherited agent surface
**12 item(s) in this checkout are addressed to an agent, not to you.**
| Surface | Count | Detail |
|-------------------------------|------:|--------------------------------------------------------------|
| Instruction files | 12 | ~41,848 est. tokens, 5,593 lines your agent is told to follow |
| Hook commands | 0 | configured to run on agent events |
| MCP servers declared | 0 | 0 fetch code from a registry at launch |
| Skills / commands / subagents | 33 extensions (196 files) | shipped under `.agents/`, available to the agent |
## Worth a look
- 11 instruction file(s) are **not at the repo root** — they apply when the agent
works in those subdirectories and are easy to miss in review.
而 instruction_files 会显示:
> Counted once, reachable under more than one name (symlinks):
> - `AGENTS.md` ← also `.agents/AGENTS.md`, `CLAUDE.md`
五千五百多行常驻指令,其中大部分位于你永远不会打开的文件中,而且这个代码库也没有任何理由让人不信任。这正是重点:即使在无害的情况下,数量也很庞大,因此其中不寻常的条目很容易被忽略。
工具
| 工具 | 功能 |
|---|---|
inherited_summary | 概览:此检出内容中所有面向 Agent 的内容。从这里开始 |
instruction_files | 所有 CLAUDE.md/AGENTS.md/.cursorrules 文件、大小和 token 开销,以及其 @import 行引入的内容——包括解析到代码库之外的导入 |
auto_run_commands | 此检出内容配置为在 Agent 事件时触发的钩子命令,以及每个命令引用的脚本位于代码库内、代码库外还是缺失 |
declared_mcp_servers | 代码库声明的 MCP 服务、其中哪些会在启动时获取代码,以及它们获准访问的检出目录之外的文件系统路径 |
agent_extensions | 代码库随附的技能、斜杠命令和子 Agent |
每个工具都可选用 dir。如果省略该参数,服务会在设置了 WI_DEFAULT_ROOT 时使用它,否则使用当前工作目录。
安装
Claude Desktop(单击安装,无需终端): 从 Releases 下载最新的 whats-inherited-mcp-<version>.dxt,然后用 Claude Desktop 打开(双击,或选择“设置”→“扩展”→“安装扩展…”)。服务及其依赖项都包含在软件包中——无需 npm,也无需安装 Node。
注册到 Claude Code(在每个会话中均可使用):
claude mcp add --scope user whats-inherited -- npx -y whats-inherited-mcp
或添加到任意 MCP 客户端配置中:
{
"mcpServers": {
"whats-inherited": {
"command": "npx",
"args": ["-y", "whats-inherited-mcp"]
}
}
}
从源代码安装
git clone https://github.com/stcmain/whats-inherited-mcp.git
cd whats-inherited-mcp
npm install && npm run build
# then point your client at node /path/to/whats-inherited-mcp/dist/index.js
已在 npm 上发布为 whats-inherited-mcp,并在 MCP Registry 中注册为
io.github.stcmain/whats-inherited-mcp。
配置
有一个可选设置,且无需任何凭据。
| 变量 | 默认值 | 含义 |
|---|---|---|
WI_DEFAULT_ROOT | 服务的工作目录 | 调用工具时未提供 dir 参数的情况下要检查的目录。 |
每个工具都接受显式的 dir,且它始终优先。WI_DEFAULT_ROOT 只会更改回退值;如果桌面客户端启动了服务,设置此项就很有用:此时进程会继承该客户端的工作目录,而这个目录通常不是你想检查的代码库。
{
"mcpServers": {
"whats-inherited": {
"command": "npx",
"args": ["-y", "whats-inherited-mcp"],
"env": { "WI_DEFAULT_ROOT": "/path/to/the/checkout" }
}
}
}
它统计什么,以及它不会妄加猜测什么
把结果夸大得危言耸听很容易,但那会让工具变得毫无用处,因此统计方式刻意保持保守:
- 它不会检测恶意内容。 没有启发式扫描器,没有“可疑短语”正则表达式,也没有风险评分。这些方法会在普通代码库中产生自信满满的误报,还会漏掉任何精心编写的内容。此服务会告诉你该去哪里查看;具体内容由你来判断。
- 每个文件只统计一次。 一个代码库可能会通过多个名称呈现同一个文件——
CLAUDE.md → AGENTS.md → .agents/AGENTS.md是现实中常见的模式。条目会按解析后的真实路径去重,并列出别名,而不是把同一份内容统计三次。 - 不会重复统计
.claude/。 技能自己的CLAUDE.md会作为技能报告,而不会再被当作项目指令文件。 - “未识别路径令牌”并不代表安全。 如果钩子命令中没有此服务能够可靠提取的文件系统路径,它就会如实说明并停止。这是分析范围的明确局限,而不是结论。
- 导入检测采取保守策略。 首先会去除围栏代码块;只有未限定根目录的
@token指向文档时才会计入,因此@scope/pkg和@mentions不会计入统计。
坦诚说明局限
- 它只做报告,不做判断,也不做修复。 不会编辑、隔离或评分。它列出的每一项都可能在合法的代码库中正常出现。
- 你的客户端是否实际运行项目钩子,由客户端决定。 不同客户端各不相同,提示方式也不同,而且会随版本变化。此服务报告的是文件声明的内容,而不是你的客户端会执行什么。
- 令牌数量是估算值(约 4 个字符/令牌)。请将其视为排序依据和大致规模,而非计费依据。Anthropic 的分词器并未公开,因此本地工具无法做得更准确。
- 以 Claude Code 的布局为模型。 可以识别 Cursor、Windsurf、Cline 和 Copilot 的指令文件,但钩子和 MCP 的解析遵循 Claude Code 架构。
- 超大型单体代码库会被截断。 遍历深度和条目数均设有上限;达到上限时,输出会明确说明并将结果标记为不完整,而不会悄悄少报。
- 它从不读取 git 历史记录。 它描述的是此刻磁盘上的工作树,而不是差异所做的更改。
- 不会跟随符号链接目录(以避免循环风险)。会跟随符号链接文件。
设计说明 / 威胁模型
这个服务的全部工作就是检查可能带有恶意的内容,因此设计时默认这些内容可能有恶意。
- 它绝不能成为自己所报告的注入载体。 指令文件的正文绝不会返回——只返回元数据、路径,以及从已知 JSON 配置键中解析出的结构化字段。把某个仓库的
CLAUDE.md粘贴到你的上下文中,告诉你这个仓库可能包含恶意内容,这无异于自我挫败。 - 仓库编写的字符串会被隔离并标注。 钩子命令和 MCP 启动行必须展示出来才有用。它们会放在行内代码片段中,并对反引号进行中和、转义竖线、将换行符压平,这样精心构造的字符串就无法逃逸代码片段或 Markdown 表格;每个代码块还会附带一条常驻提示,说明引用文本是检出内容中的数据,而非指令。
- 不启动子进程。不调用 Shell。不联网。不写入。 使用的 Node API 仅限
node:fs读取、node:path和node:os。源代码中完全没有导入child_process,因此扫描仓库时不会执行其中的任何内容。 dir是唯一由模型控制的路径,并且从设计上就受到限制:该路径会经过解析和真实路径解析,并且必须是现有目录。由于不会输出文件正文,即使将其指向敏感位置,也只会泄露文件名和大小,而不会泄露内容;同时它也无法写入、执行或传输任何内容。- 绝不读取环境变量的值——只读取名称。人们常会把 API 密钥以明文留在
.mcp.json中。 - 工作量有上限: 深度上限、条目上限、文件大小上限,并且不会遍历符号链接目录。
开发者
由 Shift The Culture 开发——我们是一家由 AI Agent 驱动的一人公司,并亲自打造所需工具。这个服务免费且采用 MIT 许可,没有附加条件。
它还有三个同系列项目,同样免费且采用 MIT 许可:
- whats-running-mcp — 查看此刻机器上实际运行的内容,而不是旧对话记录声称的内容。
- whats-loaded-mcp — 查看你开始输入前就已占用上下文窗口的内容:技能描述、记忆文件及其导入项。
- whats-allowed-mcp — 查看你的 Agent 无需询问就能执行的操作:合并后的权限规则、哪个设置文件优先,以及客户端接受后又忽略的规则。
其余工具为付费工具:
- Agent Fleet Ops Kit($29)——在一台机器上运行三个或四个 Agent 时可能遇到的其他故障模式:两个会话编辑同一个检出目录、无人负责的开发服务器(导致 Agent 测试的应用与其编辑的应用不同),以及崩溃会话遗留的 MCP 服务占用端口和内存数周。 更喜欢 PayPal?同一套工具也可在 Payhip 获取。
- Agent Reliability Kit($29)——一个 Stop 钩子和两个 CLI,可在 Agent 声称某个仓库、URL 或构建“已完成”,但实际上从未检查过时阻止这一轮操作。 更喜欢 PayPal?同一套工具也可在 Payhip 获取。
无论如何,上述服务始终免费且采用 MIT 许可——它不包含推销内容、不收集遥测数据,也不依赖付费工具包。
赞助商
此服务采用 MIT 许可,并将一直采用 MIT 许可。没有专业版,不收集遥测数据,也不会将任何内容留给免费版之外。赞助为维护工作提供资金,同时不会改变这些承诺。
目前还没有赞助商——首个名额开放中。 企业赞助商的名称或标志将出现在本节、两个同系列服务以及赞助商页面上。赞助等级、具体展示内容以及赞助明确不包含的权益,请访问: https://shifttheculture.media/sponsor
个人赞助:https://paypal.me/ShiftTheCultureLLC — 金额不限,不含额外权益,也不设等级。
许可证
MIT © Zachary Pampu
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。