1实现原理 · 为什么它能做到
核心是「一个动词」的 CLI 架构:SKILL.md 把 BGM/SFX/图/图标/logo/人声/校色/LUT 八类媒体需求全部收敛为一条 `resolve` 命令,agent 把用户意图转成 `--intent`,搜索噪音全部落盘、只回一行结果。
```bash node <SKILL_DIR>/scripts/resolve.mjs --type <type> --intent "<description>" --project <dir> ``` Returns one line: `resolved <id> → <path> (<type>, <metadata>)`. All search noise stays on disk.
查找类能力(bgm/sfx/image/icon/voice)默认走 HeyGen 目录的 free-usage 路径,要求先安装并 OAuth 登录 heygen CLI,并以 --doctor 自检,否则不工作。
First run: install and sign in to the `heygen` CLI (the free-usage path), then verify with `node <SKILL_DIR>/scripts/resolve.mjs --doctor`.
生成类能力是「服务端默认 + 本地可选」双轨:BGM 生成用 Google Lyria(需 $GOOGLE_API_KEY/$GEMINI_API_KEY)失败回退本地 MusicGen;voice 用 HeyGen TTS 或本地 Kokoro;image 本地 mflux;video 本地 LTX——全部经 lib/ 脚本执行。
Generate BGM using Google Lyria RealTime API. Usage: python lyria-recipe.py --output <path> --duration <seconds> [tuning flags] Requires: $GOOGLE_API_KEY or $GEMINI_API_KEY environment variable (treated as aliases).
logo 解析走『svgl → simple-icons → GitHub 头像 → 域名 favicon』链,绝不手绘商标;这些是带网络请求的真实 provider(logo-provider.mjs)。
https://api.svgl.app https://cdn.jsdelivr.net/npm/simple-icons
媒体操作(cut/reframe/transform/duck/loudness/字幕切分/错误扩散/HEVC)由自研 node 脚本 + ffmpeg 落地,例如 freeze.mjs 对『冻结远程 URL』做了 SSRF 防护(拒绝 localhost/内网/链路本地)。
/^(localhost|.*\.local|.*\.internal|127\.|10\.|0\.|169\.254\.|192\.168\.|172\.(1[6-9]|2\d|3[01])\.|\[?(::1|::ffff:127\.|f[cd][0-9a-f]{2}:|fe80:))/i;
跨项目记忆/缓存是真实文件系统结构:项目 `.media/` + 全局 `~/.media/`(SHA-256 内容寻址缓存),偏好与整包 recipe 分项目/个人两档持久化,由 prefs.mjs/recipe.mjs 读写。
- `.media/manifest.jsonl`: machine SSOT, one JSON record per line - `~/.media/`: global cross-project reuse cache (content-addressed, SHA-256)
遥测默认开启但内容刻意粗粒度:PostHog 事件只含媒体类型/来源/provider,不带 intent 文本与路径,有 DO_NOT_TRACK / HYPERFRAMES_NO_TELEMETRY / CI / dev 退出开关,与 hyperframes CLI 共用 ~/.hyperframes/config.json 身份。
It records only the media TYPE, the resolution SOURCE, and the winning PROVIDER: never the intent text, file names, or paths, and `$ip:null` so no IP is stored. Best-effort and non-blocking (a resolve never waits on or fails from telemetry).
2核心能力
3外部依赖
| Kind | Dependency / Endpoint |
|---|---|
| cli | heygen CLI(HeyGen,OAuth free-usage / api-key) |
| cli | ffmpeg/ffprobe(adopt 探测、signalstats、cut、duck bake、loudnorm) |
| cli | mflux-generate / parakeet-mlx / ltx-2-mlx / codex(本地或订阅生成器,opt-in) |
| api | HeyGen REST API |
| api | Google Lyria RealTime(BGM 生成,google-genai) |
| api | ElevenLabs TTS(可选,tts.mjs 分支) |
| network | PostHog 遥测 |
| network | logo 源:svgl / simple-icons(jsdelivr) / GitHub 头像 / DuckDuckGo favicon |
| network | LUT CDN |
| network | 本地模型下载/安装(Hugging Face、uv/pip、git) |
| package | @hyperframes CLI 内联能力(Kokoro TTS、remove-background 等) |
4管控建议与判定依据
- scripts/: 执行本地脚本或命令: node <SKILL_DIR>/scripts/resolve.mjs(各 --type;agent 直接执行)
- 网络端点: 声明外部网络访问: api.heygen.com/v3(catalog/TTS/avatar,带 X-HeyGen-Client-Source: media-use 归因
- 本地工作目录: 文件读写与工件输出: 项目 `.media/`:manifest.jsonl、index.md、preferences.json、recipes/<name>/、素材落盘
5第二遍独立确认
- [ok] external_deps 中每个 CLI/API/网络端点的调用点真实存在 — 逐一反查:heygen CLI(setup-providers.md 安装/登录段)、ffmpeg(工具表)、Lyria(lyria-recipe.py 头部 docstring + bgm.mjs lyriaConfigured)、PostHog(telemetry.mjs 常量)、logo 源(logo-provider.mjs URL 常量)、LUT CDN(luts/index.json 记录)均有源码落点。
- [ok] 安全结论有无漏网网络调用 — URL 全量扫描覆盖 scripts/audio/luts/references;未发现扫描范围外的域;遥测为默认唯一自发性外发,opt-out 与注释一致。
- [ok] 凭证读取面是否如描述(env/.env/~/.heygen) — heygen.mjs 头注释与 loadEnvFromDir 实现(walk ≤5 dirs、shell env 优先)与描述一致;audio/scripts/lib/{heygen,tts,bgm}.mjs 分别读 HEYGEN/ELEVENLABS/GEMINI key。
- [ok] SSRF 防护声称 — freeze.mjs 第 57 行正则实际拦截 localhost/*.local/*.internal/127./10./169.254./192.168./172.16-31 与 IPv6 环回;freeze.test.mjs 同时断言拦截内网样例。
- [ok] 是否有将远程内容当指令/可执行代码的路径 — 下载资产均为数据文件(audio/image/cube);脚本为随包源码;未发现下载即执行路径。
- [ok] 功能声明夸大检查(media treatments、10k+ 曲库、75k+ 向量) — 目录规模数字来自 HeyGen 服务端宣称(SKILL.md 表格原文),skill 侧可验证的是调用点与回退链存在;『produce voiceover…background removal』对应 audio/ 引擎脚本与 provider 表。超出本地可验证的部分按供应商宣称标注。
6结论
e19482b5849526de…