AI 工具 · 中文译文
WeftCut:项目说明全文中文译文
WeftCut README 的完整中文译文,保留原文代码、配图和项目文档链接。
WeftCut
你的 AI 智能体可以像你一样操作的视频编辑器。 将 Codex、Claude 或任意 MCP 客户端连接到一个真正的桌面非线性编辑器(NLE),播放时也能看见每一次编辑即时落到时间线上。代码可以渲染为视频,因此你的智能体能够构建可编辑的片段。
[!NOTE] WeftCut 仍在积极开发中,因此在 v1.0.0 之前,某些功能和 UI/UX 可能改变。欢迎加入,一起改进项目!

播放继续时,智能体通过 MCP 工作:重设底部字幕条的样式、修剪 B-roll,再撤销这两步——每次编辑都实时进入 UI,每个智能体动作都有记录。
大多数编辑器将 AI 作为附加功能:一个生成内容的按钮,或一个建议剪辑方式的侧栏。WeftCut 将编辑器本身开放为工具界面。本机 localhost MCP 服务器发布全部编辑工具——放置、修剪、分割、重设样式、关键帧、分组、字幕、混音、检查点——由你已经打开的任意智能体来操作。智能能力位于应用之外:安装包不附带任何模型权重,而本地语音和视觉引擎是在你想使用时,按需选择下载。
这也不是一个精简版编辑器。智能体能操作的一切,你都能在完整的 NLE 中手动完成:A/B-roll 时间线、带曲线编辑器的关键帧、效果、字幕、按角色划分的音频混音器,以及硬件加速导出。
快速开始
[!NOTE]
我们(项目原文作者)目前还没有经过验证的 macOS 安装包,因此请在 系统设置 → 隐私与安全性 → 仍要打开 中允许它运行。
- 从发布页面下载适合你平台的安装程序。
- 安装应用,打开设置面板,复制教你的智能体如何连接 WeftCut 的提示词。
- 开始享受你的工作。
将时间线交给智能体
把设置里的提示词复制到你的客户端,智能体就掌握了编辑器。
- 它编辑的就是你正在看的项目。 无需来回导入导出,也没有单独的无界面副本。
- 你始终能看见它做了什么。 每次工具调用都会变成 Agent 面板里的一行,例如已修剪片段 · Ember.mp4、已添加标记 · 需要查看,状态栏也会同步显示。任何动作都不会脱离记录。
- 每一批操作都可撤销。 智能体在逻辑边界建立检查点,每个检查点只需点击一次就能恢复。智能体也可以先在一次性克隆上演练整个多步骤编辑(
dry_run),在触碰你的项目之前发现冲突。 - 多智能体,有规则。 会话按连接区分。正在批量操作的智能体可以调用
set_history_lock,防止意外的 Ctrl-Z 打断它的工作;这个锁和智能体给出的理由都会展示给你。
对于较长的运行,智能体可以调用 begin_agent_session,将 UI 收拢为预览、拖动定位,以及其当前操作记录:

代码即视频:Motifs
Motif 是用代码编写的屏幕元素——一个真正的网页,使用 HTML、CSS、SVG、canvas、WebGL,或任何你想用的方式——作为一个图层放到时间线上。它并非固定预设:作者声明可调参数,属性检查器根据声明生成表单,因此下例中的 seconds、label 和 accent 可以在应用中编辑。
让它成为编辑器功能而非屏幕录制的唯一规则是:Motif 以时间的纯函数形式渲染。 它永远不会自行推进时间。harness 掌控时钟,将页面驱动到合成的每一帧,因此相同的 t 始终产生相同的像素——无论拖动定位、重新导出,还是预览与导出,都保持一致。
// The built-in Countdown's whole script, near enough verbatim — the rest of the
// file is the SVG ring it animates. `props` is whatever the manifest declares;
// `frame` runs once per composition frame and keeps no state of its own.
motif.define({
setup: async function (props, ctx) {
_label = props.label != null ? String(props.label) : "GO";
num.style.color = props.accent;
ring.style.stroke = props.accent;
ring.setAttribute("stroke-dasharray", C);
ring.animate([{ strokeDashoffset: 0 }, { strokeDashoffset: C }],
{ duration: ctx.duration * 1000, easing: "linear", fill: "both" });
},
frame: function (t, ctx) {
var n = Math.max(0, Math.ceil(ctx.duration - t));
num.textContent = n > 0 ? String(n) : _label;
},
});

编写网页已经是编程智能体最擅长的事情,所以智能体可以为你的剪辑创作全新的叠加画面,而不是从目录中选一个。编写规范作为一个智能体 skill 随应用提供,模型因此能获得约定,而无需你粘贴文档。
底部字幕条、倒计时、卡拉 OK 文本和动画标题卡,是显而易见的用法。真正的界限,是你能在网页上构建的任何东西。
底层是完整编辑器

时间线——带缩略胶片条和波形的 A/B-roll 轨道,帧精确的 SMPTE 编辑、删除后自动闭合空隙的波纹删除、作为一个片段共同修剪的关联音视频、跨轨道分组,以及嵌套合成。
智能体工具:move_layer · trim_layer · split_layer · ripple_delete_gap · create_link · create_group · move_layers_to_composition
关键帧——为任意参数添加动画,具有贝塞尔缓动、曲线编辑器、切线控制、运动路径与外推。
智能体工具:set_keyframe · update_keyframe · smooth_keyframes · set_extrapolation
语音与字幕——转写片段,获得放入字幕轨道的可编辑字幕图层;将 SRT/VTT/ASS 导入媒体池,并放在相应起点。转写可以调用云端供应商,也可以在你允许应用获取本地引擎(whisper.cpp、FunASR)后,完全在你的机器上进行;智能体也可以提取原始音频,并运行自己的模型。文本转语音可用于临时旁白。
智能体工具:transcribe_clip · extract_clip_audio · apply_transcripts · apply_subtitles · synthesize_speech
音频——按角色混音(对话、音乐、音效、旁白),每种角色都有实时电平表、增益、声像、淡入淡出与降噪。Pauses 查找一次拍摄中的空白静音,并将其作为一次可撤销编辑切除,同时保留适当余量,让说话仍有自然停顿。
智能体工具:detect_pauses · remove_pauses · set_role_gain · set_role_flags

理解素材——镜头边界检测,提供逐镜头亮度、运动和清晰度信息、帧比较,以及视觉模型对片段实际内容的描述。智能体可以按内容剪辑,而不只是按时间码。
智能体工具:analyze_clip · auto_split_by_shot · describe_clip · compare_frames
标题、效果与转场——带描边的样式化文本图层、逐图层效果链,包括带吸管的色度抠像,可从实时画面取色,以及片段之间的转场。
智能体工具:add_effect · update_effect · add_transition · update_transition
导出——H.264 / HEVC / AV1,硬件或软件编码器,分辨率、fps 与质量控制,以及流式复用。
查找一切——一个 Ctrl+K 命令面板,覆盖命令、媒体、片段、字幕和标记,可搜索任何想找的内容。

技术栈
| 层 | 技术栈 |
|---|---|
| 外壳 | Electron 44 · TypeScript 7 · electron-vite · Vite 8 · Node 24 |
| UI | React 19 · Zustand · Immer · Tailwind CSS v4 · Base UI · shadcn/ui · Dockview · lucide · i18next(en-US / zh-CN)· fuzzysort |
| 预览 | PixiJS v8 · WebGPU / WebGL · WebCodecs VideoDecoder 池 · mediabunny · 自有 YUV→RGB 着色器 · Web Audio 时钟 |
| 导出 | Worker + OffscreenCanvas · GPU YUV 打包过程 · PBO 回读 · 通过 IPC 传输 rawvideo · 原生 ffmpeg 接收端 · WebCodecs 编码器(pin)· 流复制复用 |
| 原生核心 | Rust · napi-rs 3 · Tokio · imbl · serde · schemars · blake3 · reqwest · ffmpeg-sidecar |
| 原生解码 | @weftcut/native-decode · ffmpeg-next · 软件与 GPU 路径 · sharedTexture(Windows) |
| 共享数学逻辑 | weftcut-eval crate · 原生与 wasm32 · 吸附 · 关键帧求值 · 包络 · 角色门控 |
| ffmpeg | GPL CLI sidecar(任务、编码、复用)· LGPL 共享库(进程内解码) |
| 智能体接口 | MCP · localhost 上的可流式 HTTP · @modelcontextprotocol/sdk · bearer token · TS + Rust 工具目录 |
| Motifs | 离屏 BrowserWindow · Chrome DevTools Protocol · motif: 协议 · CSP default-src 'none' |
| 语音与视觉 | 通过 reqwest 调用云供应商 · whisper.cpp · FunASR · 按需下载模型 |
| 测试与 CI | Vitest · cargo test · Playwright · node --test · Stryker · GitHub Actions(Windows / macOS / Linux) |
设计决策:ADRs。
从源码构建
前置条件:Node 24+、Rust(通过 rustup 安装稳定版),以及你平台的 C++ 构建工具;各操作系统的命令见 docs/setup.md。
npm install # JS dependencies
npm run bootstrap # one-time: fetch ffmpeg + build the Rust addons
npm run dev # start the editor
其他有用的命令:npm run typecheck、npm test、npm run e2e、npm run build、npm run package(安装程序)。
文档
要了解系统全貌,请从**架构开始;要了解工具接口、资源和多智能体行为,请看 MCP 服务器与智能体 UX。Motifs** 与 Motif 编写 介绍叠加画面引擎及其约定。
其他全部文档
- 数据模型——项目状态结构、历史、持久化与验证。
- 渲染——PixiJS + WebCodecs 渲染器架构。
- 预览——交互式预览界面与传输控制。
- 导出——导出设置与范围、音频导出、最终复用、代理、后台任务。
- 字幕 · 音频——字幕导入与音频引擎。
- 一致性——用于帧对齐、音频同步、色彩的媒体测试数据和 E2E 验收门禁。
- 功能——小功能的约定:撤销栈范围、分组、搜索面板、取色器。
- 状态/日志系统——编辑器底部的日志总线。
- 设置——各操作系统的工具链前置条件与首次运行流程。
- 许可——MIT 应用,以及两种 FFmpeg 路径与构建时合规门禁。
- v1 目标——发布范围与未完成工作,使用 issue 跟踪;
docs/描述当前已经存在的功能。
维护者
WeftCut 由 UncleChair 构建并维护。
它的存在是为了加快我(原文项目维护者)自己的视频工作。我想要一个智能体真正能够操作的编辑器,以及一条我能在它工作时持续观看的时间线——因此,MCP 接口是我每天都用的部分,不是附加在旁边的演示。Motifs 来自需求的另一半:我想要的叠加画面,编写起来比寻找更容易,而能写网页的智能体,也能为眼前的镜头写一个叠加画面。
项目归在 WeftCut 组织下,让名称、域名和发布版有一个稳定归属,但这是一个单人项目——issues 和 pull requests 都会送到我这里。
许可证
WeftCut 使用 MIT License 许可证。打包的安装程序附带 FFmpeg 二进制文件,遵循它们各自的许可证:进程内解码使用 LGPL 共享库,作为独立进程运行的命令行工具使用 GPL。完整模式见 THIRD-PARTY-NOTICES.md 和 docs/licensing.md。
转载许可原文
以下为原项目 MIT 许可及版权声明:
MIT License
Copyright (c) 2026 UncleChair
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.