🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

AI 上下文清理 WJDdidi-1/ai-context-doctor

DeepSeek Harness
WJDdidi-18 天前有提交已提供中文文档扫描:含敏感能力

扫描仓库找出不该喂给 AI 的噪音文件并生成忽略清单

30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/28 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add WJDdidi-1/ai-context-doctor
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · tool
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 8 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 10 处,展示前 10 条)
  • 读取本地文件
    bin/ai-context-doctor.js:94
    stats = fs.statSync(dir);
  • 读取本地文件
    bin/ai-context-doctor.js:95
    fs.accessSync(dir, fs.constants.R_OK);
  • 读取本地文件
    bin/ai-context-doctor.js:131
    return parseRules(fs.readFileSync(path.join(cwd, '.aiignore'), 'utf8'));
  • 读取本地文件
    lib/scan.js:153
    children = fs.readdirSync(dir, { withFileTypes: true });
  • 读取本地文件
    lib/scan.js:174
    stats = fs.statSync(absolutePath);
  • 读取本地文件
    lib/aiignore.js:75
    stats = fs.lstatSync(aiignorePath);
  • 读取本地文件
    lib/aiignore.js:90
    existing = fs.readFileSync(aiignorePath, 'utf8');
  • 写入本地文件
    lib/aiignore.js:98
    fs.writeFileSync(aiignorePath, renderAiignore({ existing, added, created }), 'utf8');
  • 读取本地文件
    lib/policy.js:19
    const raw = JSON.parse(fs.readFileSync(path.join(cwd, POLICY_FILE), 'utf8'));
  • 写入本地文件
    lib/policy.js:35
    fs.writeFileSync(
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

找出 AI 编码智能体不该读的文件,再把仓库发给它。

README

由 DeepSeek 最新模型翻译生成
AI Context Doctor English README AI 编程助手会一个文件一个文件地读你的仓库。其中有些文件其实没用——构建产物、日志、lockfile、一个 40 MB 的数据文件。这个工具几秒钟就能把它们找出来,告诉你哪些该挡在 AI 之外。 npx ai-context-doctor 不用安装、不用登录、不需要 API key、不上传任何东西。它只看文件名和大小。 跑起来是什么样 下面是本项目自带的 demo 仓库的真实输出: AI Context Doctor Repo: demo-ai-context-noise-repo Scanned: 8 files, 1.50 MB AI Context Health: 22/100 Status: Too much noise for an AI coding agent Context noise estimate: 78% likely noise 22% likely useful source context Top context waste: 1. data/export.json 1.00 MB large file 2. dist/ 106.9 KB generated build output 3. package-lock.json 35.2 KB lockfile
展开完整文档(README 剩余 1 节)
AI Context Doctor

English README

AI 编程助手会一个文件一个文件地读你的仓库。其中有些文件其实没用——构建产物、日志、lockfile、一个 40 MB 的数据文件。这个工具几秒钟就能把它们找出来,告诉你哪些该挡在 AI 之外。

npx ai-context-doctor

不用安装、不用登录、不需要 API key、不上传任何东西。它只看文件名和大小。

跑起来是什么样

下面是本项目自带的 demo 仓库的真实输出:

AI Context Doctor

Repo: demo-ai-context-noise-repo
Scanned: 8 files, 1.50 MB

AI Context Health: 22/100
Status: Too much noise for an AI coding agent

Context noise estimate:
78% likely noise
22% likely useful source context

Top context waste:
1. data/export.json 1.00 MB large file
2. dist/ 106.9 KB generated build output
3. package-lock.json 35.2 KB lockfile
4. logs/dev.log 18.4 KB local log file
5. coverage/ 16.7 KB test coverage output

Review before sharing:
- .env.example environment template (usually safe to share)
- scripts/deploy.sh deployment script

Suggested .aiignore:
coverage/
dist/
.log
package-lock.json

Next step:
Run this before asking your coding agent to inspect a larger repo.

输出正文目前是英文,命令行参数也一样;本文件解释每一行是什么意思。

这份报告怎么读

| 这一行 | 意思 |
| Scanned: 8 files, 1.50 MB | 实际扫了多少内容。.git/ 和 node_modules/ 不扫。 |
| AI Context Health: 22/100 | 100 减去「命中了噪音规则的文件」占的体积比例。22 分表示 AI 要读的东西里大部分是噪音。 |
| Status: | 把分数翻译成一句话:85 分以上干净,60–84 有噪音,60 分以下噪音太多。 |
| Top context waste | 体积最大的五个噪音来源,以及各自被标出来的原因。 |
| Review before sharing | 看起来像凭证或部署脚本的文件。工具没有说它们一定是密钥,只是提醒你:把这个仓库贴进聊天窗口之前先看一眼。 |
| Suggested .aiignore | 可以直接复制进忽略文件的行。工具不会替你写。 |

拿它能干什么

- 在让 AI 读一个大仓库之前:先跑一遍,把建议的行贴进 .aiignore(或你所用助手的忽略配置),再跑一遍,看分数有没有变高。
- 刚 clone 下一个项目时:先看看里面有多少是自动生成的产物,免得 AI 一上来就读这些。
- CI 里:用 --json 拿到稳定的结构化结果,上下文健康度掉下去就让构建失败。
- 自己的工具里:require('ai-context-doctor') 可以直接调用同一套扫描。
- 在 DeepSeek Harness 里:装上 dsh-aiignore,会话打开工作区时会自动提醒 AI 哪些文件会浪费上下文,你不用记着去跑任何东西。

安装

零安装直接跑:

npx ai-context-doctor

或者装一次:

npm install -g ai-context-doctor

需要 Node.js 18 或更新版本。

用法

ai-context-doctor # 扫描当前目录 ai-context-doctor ../some-repo # 扫描另一个仓库 ai-context-doctor --json # 机器可读输出 ai-context-doctor --help ai-context-doctor --version

JSON 输出

npx ai-context-doctor ./some-repo --json

返回 repo、healthScore、status、noisePercent、usefulPercent、scannedBytes、scannedFiles、topNoise、review、suggestedAiignore;触发扫描上限时还会带 truncated: true。

如果传入的路径不是可读目录,--json 只会输出一个 JSON 对象(不会先打印横幅),并以退出码 1 结束,CI 可以直接解析失败原因:

{
"error": "not-a-readable-directory",
"message": "/path/you/passed is not a readable directory.",
"target": "/path/you/passed"
}

在代码里调用

const { scanRepository } = require('ai-context-doctor');

const report = scanRepository(process.cwd());
console.log(report.healthScore, report.topNoise);

scanRepository(root, { maxFiles, maxBytes }) 是同步的,没有任何依赖。传上限可以低成本扫超大目录,此时报告会带 truncated: true。

DeepSeek Harness 插件

dsh-aiignore 把同一套扫描封装成 Host 插件:会话打开工作区时,AI 会收到一条简短提示,说明哪些文件会浪费它的上下文;工作区干净时它什么都不说。

dsh plugin --profile web add dsh-aiignore

它声明了 engines.dsh: ">=0.2.0",Harness 会在安装前检查这个范围。源码、配置项与限制见 plugin/README.md。

什么算噪音

- 目录:dist/、build/、coverage/、.next/、.turbo/
- Lockfile:package-lock.json、pnpm-lock.yaml、yarn.lock
- 日志:.log
- 大文件:超过 1 MB、且没有被更具体的规则命中的单个文件
- 需要检查:看起来像凭证的文件名(.env、secrets.env、credentials.json、.pem、.key)以及路径里带 deploy 的文件。.env.example 会被识别成模板,标记为通常可以分享。
- 不遍历:.git/、node_modules/、.venv/、venv/、__pycache__/、vendor/

它不做什么

- 不调用任何 AI 服务,不需要 API key,不上传文件。
- 不修改你的仓库——不会写 .aiignore,也不会写别的文件。
- 不是 gitignore 检查器:它看的是「AI 会读到什么」,不是「git 跟踪什么」,所以被 git 忽略的文件照样会出现。
- 不是密钥扫描器。Review 列表基于文件名,没有扩展名的 id_rsa、粘在 config.js 里的密钥都会漏掉。
- 不统计 token,也不解析代码。分数是体积启发式:可以当真信号,不能当测量结果。
- 没有配置文件。上限只能通过 API 和 Harness 插件设置。

为什么建议 .aiignore 而不是 .gitignore

因为这是两个不同的问题。dist/ 在大多数项目里都被 git 忽略了,但一个不看 git 规则的助手照样会去读它。这个工具报告的是「AI 会读进去多少字节」,跟 git 怎么想无关。

隐私

全部在本地运行。工具只读取目录项和文件大小,不读文件内容,不建立网络连接,不存储任何东西。唯一会发到外面的数据,是你用 npm 安装它时 npm 自己发的。

开发

git clone https://github.com/WJDdidi-1/ai-context-doctor.git
cd ai-context-doctor
npm test # 单元测试与 CLI 测试
node bin/ai-context-doctor.js ./demo-ai-context-noise-repo

demo-ai-context-noise-repo/ 是一个故意做得很乱的仓库,随源码分发(不在 npm 包里),方便你直接试输出效果。

维护者:发布前看发布 checklist。发布在 CI 里通过 npm trusted publishing 完成,推 v tag 即触发,prepublishOnly 会先跑测试,坏包发不出去。

后续计划

- 未知参数给出明确报错,而不是当成目录名。
- 根据真实用户反馈改进噪音规则。
- 可选的 --fix:写出建议的忽略条目,但要你先看过 diff 再决定。

许可证

MIT
预览分享卡片长什么样 ↓WJDdidi-1/ai-context-doctor
分享 · DeepSeek Harness Hub
WJDdidi-1/ai-context-doctor

扫描仓库找出不该喂给 AI 的噪音文件并生成忽略清单

这是你的仓库?认领条目

回到顶部