@brad-frost-web/eddie-reporter (英语)
这个 艾迪记者 ——您安装的零依赖用量记录器 下游的埃迪产品。 它静态扫描一个产品 埃迪资产 使用(组件、食谱、页面模板和设计符号)和报告 活动回到 埃迪的大脑因此,通过和活动 设计系统变成了活的 呼吸的反馈循环而不是 点入时猜.
为什么会这样
埃迪的大脑已经知道 覆盖范围 (系统提供的内容)和通过
粗口收养扫描仪 收养 (哪个组织重新拥有) 声明 一个艾迪
依赖情况 package.json) (中文(简体) ). 它看不见的是 活动数字 : 哪个
产品实际使用的资产, 有多严重,以及 当它最后一次改变。 。 。 .
记者把缺口拉近了 它把"16再投靠艾迪"变成"这些
产品使用量 ed-card 240次,没人碰过 ed-r-legacy-banner 在90个
天数,以及 ed-p-app-dashboard 这是本季度最有助的模板". 那个
信号流进入 .eddie-brain/activity.json 穿过这里
eddie_get_activity MCP工具.
设计原则
- 零从属. 只有节点内置。 即时安装并添加无 供应链表面与它所运送的产品.
- 静态并只读 . 它读取源文本并计算引用. 从来没有 执行产品,从不读取运行时间/用户数据,从不修改 主持人。 报告具有决定性和隐私性.
- 永远不要破坏一个建筑. 失败的信标会被登录,而不是被抛出. CLI 输出
0即便交货失败. - 优雅地贬低. 如果没有网络(或者你不希望遥测), 它写一个本地的艺术品,你的CI可以 执行—— 大脑的肿瘤扫描或一个 人类以后可以捡起它.
安装使用( U)
运行时没有安装通过 npx数字 :
npx @brad-frost-web/eddie-reporter --event build \
--endpoint https://ds.bradfrost.com/report
或者把它加成一个 dev 依赖性,并把它接入一个构建/后建脚本:
// package.json
{
"scripts": {
"postbuild": "eddie-report --event build"
}
}
一次通过嵌入设置结束点, 脚本保持干净 :
export EDDIE_REPORT_ENDPOINT="https://ds.bradfrost.com/report"
export EDDIE_REPORT_TOKEN="…" # optional
按计划运行
环路的设计是运行无人注意,两端是:
- 产品方面. 复制
templates/eddie-report.yml你的产品.github/workflows/设置EDDIE_REPORT_ENDPOINT暗号 它的灯塔 每周一次 (单位:千美元)cron),每张 推动 改为main编号 :develop, (中文(简体) ), 随叫随到 部署在其他地方的产品可使用Netlify/Vercel 已排定的函数, apostbuild编号 :postdeploy钩子,或者普通的服务器克龙. - 系统侧. 主办单位
POST /report持续捕捉每个终点 netlify Blobs商店中的信标(无服务器文件系统为ephemeral). 这个 预定时间eddie-activityeddie-design-system中的工作流程然后冲出 存储到.eddie-brain/activity.json(单位:千美元)eddie-brain activity flush, (中文(简体) ), 刷新领养,并打开公关——所以分类账保持零活性 手动步骤.
国 际
eddie-report [dir] [options]
--endpoint <url> Brain ingestion URL (env: EDDIE_REPORT_ENDPOINT)
--token <token> Bearer token (env: EDDIE_REPORT_TOKEN)
--event <name> build | deploy | install | ci | dev | manual (default: manual)
--out <path> Local artifact path (default: .eddie/usage-report.json; '' to skip)
--ignore <path> Skip a file or directory, relative to dir (repeatable)
--ignore-dir <n> Skip every directory named <n>, anywhere in the tree (repeatable)
--dry-run Scan and print, but don't POST or write
--json Print the full report JSON to stdout
--quiet Suppress the human summary
构建生活在源头旁的产出
扫描器已经跳过通常的输出目录( E)dist, (中文(简体) ), _site, (中文(简体) ), .output(中文(简体) ). 无法分辨文件 内部 生成源目录。 承诺 css/styles.css 从 css/*.scss 里面写着埃迪的整张证物表 所以一个使用20多个证物的网站报道了600个 明确命名此类文件 :
eddie-report --event ci --ignore css/styles.css --ignore css/styles.tmp.css
API 上存在的选项与 ignorePaths (路径相对于被扫描的目录;一个目录跳过它的子树). 匹配是大小写敏感;接受扫描目录内一个绝对路径,外部一个永远不匹配. 缺少或旗形的值(--ignore --dry-run)是用法错误和出处 2.
bfw-进程规则书
Bfw-process产品带有一条规则书,其中引用了 Eddie 标记和符号名称作为 规则实例. 算作用法,它将一种只提及它的产品(# 1861) 的食谱或标志记入其中.
.bfw-process/财务报告和审定财务报表.microagents/从不扫描:扫描仪跳过每个点目录.AGENTS.md, (中文(简体) ),CLAUDE.md财务报告和审定财务报表SPEC.md并不是,因为一个文件站点上的根标记可以真正使用。 正如工作流程模板所做的那样,明确将其推出:
eddie-report --event ci --ignore AGENTS.md --ignore CLAUDE.md --ignore SPEC.md
程序化 API
import { buildReport, sendReport } from '@brad-frost-web/eddie-reporter';
const report = buildReport({ dir: process.cwd(), event: 'build' });
await sendReport(report, { endpoint: process.env.EDDIE_REPORT_ENDPOINT });
报告看起来像什么
{
"schema": "eddie-usage-report/1",
"reporterVersion": "0.62.1",
"generatedAt": "2026-07-14T00:00:00.000Z",
"event": "build",
"product": {
"id": "bradfrost.com",
"repo": "Brad-Frost-Web/bradfrost.com",
"branch": "main",
"commit": "a1b2c3d…",
"environment": "ci"
},
"eddie": {
"declared": { "@brad-frost-web/eddie-web-components": "^0.37.0" },
"packages": ["design-tokens", "web-components"]
},
"usage": {
"components": { "ed-card": 24, "ed-button": 18 },
"recipes": { "ed-r-site-header": 1 },
"pages": { "ed-p-app-dashboard": 1 },
"tokens": { "--ed-theme-color-content-default": 63 },
"unknownPrefixed": { "ed-slide": 12 },
"filesScanned": 210,
"filesMatched": 47
},
"totals": { "distinctComponents": 2, "distinctRecipes": 1, "distinctPages": 1, "distinctTokens": 1, "occurrences": 107, "distinctUnknownPrefixed": 1 }
}
一个产品自己的 ed-* 元素不是Eddie的用法
这个 ed- 前缀意为"在艾迪的目录". 定义自己产品
它下面的自定义元素—— Eddie Slips 运出 14, ed-slide, (中文(简体) ),
ed-robot, (中文(简体) ), ed-r-site-frame 在他们之中,他们曾经被算作艾迪
大脑无法从真实事物中得知
(单位:千美元)2192号) (中文(简体) ).
记者现在运送了目录的快照(图)dist/known-tags.json, (中文(简体) ),
由大脑的图中生成的埃迪发行版
(已公布) 一个 ed-* 编号 : ed-r-* 编号 : ed-p-* 标记到外面
usage.unknownPrefixed 而不是一个使用桶,算作零艾迪使用,
被丢弃 totals.occurrences大脑会浮出水桶
产品卷起和进入 eddie_get_activity是因为 unrecognised 数据,和
eddie_validate_file 在源代码的同一标签上发出警告.
两个读取一个条目, 和每个的固定: 它是产品的要素,
所以,给它自己的前缀es- 艾迪·斯利普(英语:Eddie Slips))——或者说是
Eddie的和比安装的记者更新,所以更新记者. A 类
自有目录可当作 knownTags 改为 scanUsage 编号 :
buildReport; 一个从源头运行而未建立快照的记者省略
大脑的分化 由自己的目录报告.
更大的画面
这位记者是双向系统-产品关系的第一个环节. 见
docs/VISION.md 整个地图上
使用加权健康、去色雷达、漂流道、公共收养
仪表板,关闭循环回治理.