使用说明
视频馈送器
一个MCP服务器,让Claude在您演示错误时记录您的屏幕,然后获得它可以询问的AI证人报告。
你知道那个你无法描述的bug吗?记录它,叙述它,让编码代理看到你所看到的。
为什么不直接上传到Gemini?
将视频上传到网络上的Gemini可以让你进行一次性分析。视频馈送器为您提供 证人循环:
- 双子座 有眼睛和耳朵(视频+音频)。克劳德没有。
- 克劳德 有代码库。双子座没有。
- 双子座报告事实。克劳德将它们追溯到代码。
在初步证人报告后,克劳德可以盘问: “当用户在0:18滚动时,工具栏是否可见?” --Gemini重新观看同一视频进行回答,Claude将其映射到代码库中的特定函数。多轮,每轮都由代码级上下文通知。
运作原理
- 你告诉克劳德 “记录兰花”
- 克劳德打电话来
prepare_session("orchid")--启动应用程序,打开OBS,设置窗口捕获+麦克风 - 克劳德打电话来
start_capture()--OBS开始录制 - 你使用应用程序并大声讲述错误
- 克劳德打电话来
stop_and_analyze()--停止录制,将应用程序日志切片到捕获窗口,将视频+日志发送到Gemini - 双子座写了 目击报告 --它看到了什么,听到了什么,时间戳,日志相关性。它不会猜测代码原因。
- 克劳德读了报告。它可以呼叫
ask_witness("what was in the network tab at 0:18?")--双子座重新看了看回答。多轮。
原木戏法
录制开始时,Video Feeder会快照每个应用程序日志文件的字节偏移量。当你停下来时,它只会切下你录制过程中发生的线条。Gemini只获得视频+相关日志,没有之前数小时输出的噪音。
工具
| 工具 | 步骤 | 它的作用 |
|---|---|---|
list_apps |
-- | 显示已配置的应用程序 |
prepare_session / qa_prepare |
1 | 启动应用程序,打开OBS,设置捕捉+麦克风 |
start_capture / qa_record |
2 | 开始OBS录制,标记日志边界 |
stop_and_analyze / qa_stop |
3 | 停止记录,切片日志,发送到Gemini,返回见证报告 |
ask_witness / qa_ask |
4 | 后续问题——双子座重新观看同一视频 |
analyze_bug / qa_analyze |
-- | 分析现有视频/屏幕截图(不需要OBS) |
list_windows |
-- | 显示带有ID的可捕获窗口(macOS) |
start_recording |
-- | 遗留问题:没有会话管理的原始OBS录制 |
先决条件
- 紫外线 (Python包运行器)
- OBS 工作室 启用WebSocket服务器
- A. Gemini API密钥
- macOS(窗口检测使用CoreGraphics——分析可以在任何地方工作)
设置
1.启用OBS WebSocket
打开OBS,转到 工具>WebSocket服务器设置,并将其打开。默认端口为 4455。如果设置了密码,请记下密码。
2.获取Gemini API密钥
首选 谷歌AI工作室 并创建API密钥。
3.添加到克劳德代码
claude mcp add --transport stdio -s user video-feeder -- uv run /path/to/server.py
然后将您的环境变量添加到MCP配置中 ~/.claude.json:
{
"video-feeder": {
"type": "stdio",
"command": "uv",
"args": ["run", "/path/to/server.py"],
"env": {
"GEMINI_API_KEY": "your-key-here"
}
}
}
4.重新启动克劳德代码
服务器将显示为 video-feeder 在您的MCP工具中。
应用程序配置
创建 ~/.config/video-feeder/apps.json:
{
"apps": {
"myapp": {
"cwd": "~/Projects/myapp",
"command": "npm run dev",
"window_match": "MyApp",
"extra_logs": [".dev-logs/app.log"]
}
}
}
| 字段 | 必填 | 描述 |
|---|---|---|
cwd |
是 | 应用程序命令的工作目录 |
command |
是 | 使用Shell命令或argv数组启动应用程序 |
window_match |
是 | 子字符串与窗口所有者/标题匹配(不区分大小写) |
cdp_url |
否 | 用于控制台/网络事件捕获的Chrome DevTools协议URL |
extra_logs |
否 | 要作用域的其他日志文件(绝对或相对) cwd) |
运行输出
每个会话都会写入 ~/.qa-runs/video-feeder/<run_id>/:
manifest.json # session metadata, timestamps, status
recording.mp4 # the video (fragmented mp4, crash-safe)
context.md # user-provided context
witness-report.md # Gemini's witness report
logs/
app.full.log # stdout/stderr from the app process
*.capture.log # log lines scoped to recording interval
followups/
followup-001.md # ask_witness responses
followup-002.md
用法
完整的QA会议
you: "record orchid, there's a flicker bug"
claude: [calls prepare_session("orchid")]
claude: [calls start_capture()]
you: [use the app, narrate what you see]
you: "ok stop"
claude: [calls stop_and_analyze()]
claude: "Gemini saw the toolbar flicker at 0:18, correlating with a
React re-render in the logs. Let me look at the component..."
claude: [calls ask_witness("was the selection handle visible during the flicker?")]
claude: "Gemini confirms the handle was present but jumping between two
positions. This matches the unstable ref in FloatingToolbar.tsx:42..."
分析现有文件
将视频或屏幕截图放入对话中:
“分析此错误”+附加文件路径
无需OBS即可工作。
环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
GEMINI_API_KEY |
是 | - | Google AI Studio API密钥 |
GEMINI_MODEL |
没有 | gemini-2.5-flash |
使用Gemini模型 |
VIDEO_FEEDER_APPS_CONFIG |
没有 | ~/.config/video-feeder/apps.json |
应用程序配置路径 |
VIDEO_FEEDER_RUNS_DIR |
没有 | ~/.qa-runs/video-feeder |
运行输出根 |
VIDEO_FEEDER_MAX_CAPTURE_SECONDS |
没有 | 300 |
自动停止捕获限制 |
OBS_WEBSOCKET_HOST |
没有 | localhost |
OBS WebSocket主机 |
OBS_WEBSOCKET_PORT |
没有 | 4455 |
OBS WebSocket端口 |
OBS_WEBSOCKET_PASSWORD |
否 | (空) | OBS WebSocket密码 |
OBS自动执行什么操作
Video Feeder完全通过WebSocket管理OBS——您永远不会触摸OBS UI:
- 创建“视频馈送器QA”配置文件和场景
- 将ScreenCaptureKit窗口捕获源附加到您的应用程序
- 缩放源以适应画布(处理Retina显示器)
- 为旁白音频创建麦克风输入
- 记录为碎片化的mp4(崩溃安全-不干净停止时没有损坏的文件)
- 录制后清理源
局限性
- 仅限macOS 用于自动窗口检测和捕获。你可以使用
analyze_bug任何平台上的现有文件。 - 必须安装OBS 用于记录。仅用于分析并不需要它。
许可证
麻省理工学院