
今天拆的是 hypit:一个让编码 Agent 把参考视频写成可重跑作品源码、并且把画面绑在词而不是秒上的开源发行版;文章给全它在链条上的层级、三步上手路径、九处已知阻塞,以及那份「改过的 Apache-2.0」把多租户托管挡在哪一条线上。
@hypit/hypit 从 2026 年 8 月 18 日首发算起共 32 个版本,最近一周下载 9,998 次 2。许可不是一份标准开源许可:仓库里那份文件把自己写成「改过的 Apache-2.0,附加以下条件」,GitHub 因此把它的许可识别成 NOASSERTION 13。这个名字在本频道已经出现过 10 次,每一次都只出现在对照表的一行里,正文从来没有写过它——今天补上。
skills/hypit、packages、services 三行排在最前,说明这个仓库把相当一块面积花在「Agent 怎么用」这件事上,而不只是渲染代码。1compiler、dsl、markup-language、programming-language、plugin-system、video-clone 同时挂在同一个仓库上 1。它由四块拼起来:.svml 是作品源码,写画面、声音和它们之间的引用;.svs 是可复用的外观与生成配方;.svrun 是这一次要产出什么;hypit.runtime.json 是执行环境档案,声明用哪些服务、哪个凭证、多大并发 4。packages/render-hyperframes、packages/media-pipeline 与 packages/composition 分工完成 5。packages/ 下有一百二十多个顶层包,从 caption、sound、seedance 这样的领域组件,到 provider-hiapi、provider-tokendance、provider-pollo、provider-monid 这样接模型服务的适配包 1。官方把可执行的那一份叫作发行版(Distribution),把技能那一份单独发布 6。hypit studio --run <你的 .svrun> 在浏览器里打开这条片子的时间线,另有一个带时间戳评论的视图 7。project.json,capcut-cli 交一份剪映草稿,Diffusion Studio 交一份可执行的 JSX,那些文件里写的是时间轴;hypit 交出的那份源码里写的不是时间轴,是哪句话对应哪个画面。这是它和前面所有期的真正差别,也是下面这一节要讲的事。<script> 里的一段段台词,加上三种标记:<opening>...</opening> 是一个 Segment,所有口播都写在 Segment 里;<HOST>、<GUEST> 这样的 Role Cue 在 Segment 里切换说话人,<host>、<主持人>、<진행자> 都算——按上下文认,不按大小写认 9。<显示的文字 | 念出来的文字> 是 Dual Text,把「看到的」和「听到的」分开:<S|ess> 显示字母 S、念出字母名;<API|A P I> 显示 API、念三个字母;<|只说不显示> 念出来但不进字幕 9。@{名字} ... @{/名字} 是一段有名字的语义范围,@{名字!} 是一个语义点。画面、动画、音效都可以绑到这些名字上;word{emphasis,keyword} 则给单个词挂属性,交给字幕组件去表现 9。@{coffee} my coffee @{/coffee} 后面跟 @{smoothie} my smoothie @{/smoothie},两个画面之间那个停顿归谁,取决于前一段的结束边界落在词的终点还是起点——写成 @{/coffee} 就把停顿留给下一张图,写成 @{/coffee~} 就留给自己 9。这就是「改一句词,时间自己重排」的技术基础:换掉的词变长变短,绑在它上面的画面跟着走,不需要重画时间轴。
<import> 组成,元素之间用 {...} 互相引用。最小的一份生成声明长这样,先把包引进来,再声明一个本地图片资源 10:<import as="media" from="@hypit/media@1"/>
<import as="seedance" from="@hypit/seedance@1"/>
<media:Image id="presenter" src="./assets/presenter.png"/>hypit plan 会把这一次真正要执行的子图冻出来给你看 11。<import as="film" from="@hypit/film@1"/>
<import as="render" from="@hypit/render-hyperframes@1"/>
<render:Video id="final" composition={main.composition} timeline={speech.timeline}/>@hypit/render-hyperframes 做的事情,是把这份合成编译成一份 HyperframesDocument;真正动手的那一层是本地 Provider 包 @hypit/provider-hyperframes-local,它的依赖里明明白白写着 @hyperframes/engine 与 @hyperframes/producer,版本都钉在 0.7.101 12。分工也写在文档里:HyperFrames 只负责出一份静音的画面事实,音频由媒体管线单独渲染,最后一个显式的混流环节把两者合起来——所以「改配乐」这件事永远不会偷偷去改 HyperFrames 的 HTML 5。它把帧分给若干个 Chrome worker(本地渲染器版本钉在 152.0.7928.2),出片后用 ffprobe 验一遍「声明画布、声明帧率、声明帧数」是否对得上,对不上就退回来 13。0.7.101,而 HyperFrames 上游的 @hyperframes/engine 到 2026 年 9 月 28 日已经发到 0.8.86,同一时期上游仓库里的两个 tag 之间隔了 442 个版本 14。换句话说,这一层的「底座」是别人钉住版本的依赖,不是永远对齐的同一套东西。| 你手上要有 | 它交回 |
|---|---|
| 一个编码 Agent(Claude Code、Codex 这类,能装技能包的都行) | 一个普通项目目录:authors/、recipes/、runs/、assets/、kits/、packages/、output/,加一份 hypit.runtime.json 4 |
| Node.js 22.15 以上 | 一份可读可改的作品源码:.svml、.svs、.svrun 三种文本文件,Agent 和你在同一批文件上工作 6 |
本机 ffmpeg 与 ffprobe;要用本地转写再备 uv(它会自己建独立 Python 环境) | 浏览器里的时间线:hypit studio --run build.svrun,另有一个带时间戳评论的评审页 719 |
| 一个生成服务的账号:官方推荐的 HypiHub,或者你自己的 API key,或者自己部署的推理服务 | 一支成片:hypit get <build-id> --output final.video --to output/final.mp4 11 |
| 一条参考视频(本地文件或平台链接),或者只是一句需求描述 | 每次执行一份 Result,状态是 complete / failed / cancelled 之一;失败的执行也会留下已经完成的那部分素材,可以显式挑出来复用 11 |
@hypit/hypit 那个 npm 包,提供命令、Studio 和运行时。装技能包不会装可执行文件,装可执行文件也不会连账号、不会给你任何模型额度 6。第二,素材生成永远在别处。 hypit 自己不出图像、不出视频、不出声音,它负责把你要的请求发给你选的服务,把拿回来的文件摆到图上 15。npm install --global @hypit/hypit;想跟项目走就 npm install --save-dev @hypit/hypit。装完先验一眼 hypit version 与 hypit paths,后者会告诉你在用哪份档案、项目在哪、发行版装在哪 6。hypit runtime use hypit.runtime.json # 选定执行环境
hypit auth login hypihub.default # 连一个模型服务账号
hypit plan build.svrun # 看这次到底要跑哪些请求
hypit pricing build.svrun # 看这些请求按哪个价目表算
hypit build build.svrun --follow # 只有这一步会真的提交工作
hypit get <build-id> --output final.video --to output/final.mp4check、plan、pricing 三样都不花钱,只有 build 会花钱。 plan 会把冻出来的子图里每一个外部请求列出来,pricing 是一个明确的只读联网操作,它把选中 Provider 公开的价目表拉过来跟这些请求对在一起,连「这个 Provider 没声明价格」这种不确定性也照原样列出来,官方的说法是「Hypit 自己不替你算出总价」11。
hypit 包给你可执行的工具」,以及「框架本身免费使用;你的编码 Agent 和任何模型服务各自有账号和价钱;装技能和可执行文件都不含生成额度」。20

hypit plan 显示 external 0、paid 0」——也就是说它不花钱但会毁片子,字幕组合上线前必须自己抽帧验一遍 27。build-record 与 satisfy 显式声明。你能怎么办:每接受一份生成的素材,立刻把它写进下一个 .svrun,再花钱做下游 11。check 阶段不拦,一直走到 Build 才被拒。触发条件:作者写了 end="19.51s" 这类不落在帧边界上的时长。现状:#354 由 Flandern1211 在 2026 年 9 月 24 日提交,open;报告里有实测记录,作者是用 check、plan、build 三个阶段的耗时对比找出这一类的。你能怎么办:把 check 当成真正的门而不是仪式,时长只写能整除帧的数 29。ffmpeg / ffprobe 不在 PATH 上、本地 WhisperX 的 Python 环境没建(它用 uv 建自己的锁定环境,还要下模型权重)、本地渲染要下的 Chrome headless shell 没下——三样都表现为运行时的失败,而不是安装时的提示。触发条件:第一次在不熟悉的机器上跑,尤其是远端 Agent 环境。现状:官方文档把这三样分开写在「本地工具与托管程序」一节,并且明确说「可用、已选中、已准备、正在运行」是四个不同的事实。你能怎么办:hypit paths 看档案与机器位置,hypit doctor --endpoint <实例> 看这个端点配好没有,hypit programs status --verbose 看本地助手的状态与日志 19。normalize-media 面对任何会动的源都在解码前失败,报的是 -autorotate 被当成了输出选项。触发条件:机器上是 ffmpeg 6.x。现状:#343 由 deeplang-bot 在 2026 年 9 月 22 日提交,open,报告给了复现、成因和一行 diff,实测环境是 Ubuntu 24.04(aarch64)加 ffmpeg 6.1.1-3ubuntu5,版本是 @hypit/hypit@0.1.11。你能怎么办:先 ffmpeg -version 确认版本;这条的适用范围是明确的——它是 ffmpeg 6.x 上的一次参数拼写错误,不是所有环境都中 30。hypit pricing 会把选中 Provider 公开的价目拉过来摆在你面前,但明说自己不替你算总价,Provider 没声明价格时那条不确定性会照原样留在报告里 11。| 方案 | 你给它什么 | 它给你什么 | 它在这一层 | 许可与公开体量 |
|---|---|---|---|---|
| hypit(本期) | 一个编码 Agent、一条参考视频或一句需求、一个模型服务账号 | 一份可读可改的 SVML 作品源码、浏览器时间线,加一支成片 | 工作流描述语言,自带编译器、包生态与发行版 | 带附加条件的 Apache-2.0,17,215 star、2,054 fork、23 个 release 1 |
| HyperFrames(第 14 期) | 一句需求加网址 / 剧本 / PR / 音乐,或一份现成的网页工程 | 可继续编辑的网页工程,加一支 mp4 | 渲染底座,也是本期这一层的实际底座 | Apache-2.0,53,896 star、4,914 fork 33 |
| Remotion | React 组件 | React 工程渲染出的视频 | 同一层底座里的另一种写法 | 源码可见的 Remotion 许可,60,938 star 34 |
| video-shotcraft(第 1 期) | 一句产品说明与模板指令 | 157 张镜头卡排出的宣传片 | 装进 Agent 的镜头资产库 | Apache-2.0,9,826 star 35 |
| OpenStoryline(第 6 期) | 素材与剪辑意图 | 18 个工具节点串出的剪辑产线 | 剪辑编排产线 | Apache-2.0,3,451 star 36 |
| Diffusion Studio(第 13 期) | 一个项目文件夹与能连 MCP 的 Agent | 可继续改的 JSX 时间线工程 | 合成文档与剪辑环境 | MPL-2.0,3,126 star 37 |
| OpenChatCut | 本机工程与对话 | 多轨时间线工程,可导出剪映草稿 | 本地优先的对话式剪辑器 | AGPL-3.0,2,038 star 38 |
| capcut-cli(第 10 期) | 本机剪映草稿库 | 还能继续编辑的剪映工程 | 草稿文件读写 CLI | MIT,802 star 39 |
| Comfy MCP(第 9 期) | 提示词与工作流模板 | 生成的素材 | 生成底座 | AGPL-3.0 或商用许可,239 star 40 |
check、plan、pricing 三步都不花钱,只有 build 会真的提交工作。装两条命令、拿一条自己的短片跑通一遍,你就会知道这套「词锚定」的方式对不对你的活;就算不对,你也顺带看清楚了上一期那个渲染底座在别人手里是怎么被用的。github.com
npmjs.com
github.com
github.com
github.com
github.com
github.com
hypit.ai
github.com
github.com
github.com
github.com
npmjs.com
github.com
github.com
github.com
github.com
github.com
hypit.ai
github.com
hypit.ai
raw.githubusercontent.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.