视频反馈工具

一个MCP服务器,允许Claude记录屏幕并获取AI见证报告,用于调试和代码追踪。

  • by DSado88
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 DSado88/video-feeder

使用说明

视频馈送器

一个MCP服务器,让Claude在您演示错误时记录您的屏幕,然后获得它可以询问的AI证人报告。

你知道那个你无法描述的bug吗?记录它,叙述它,让编码代理看到你所看到的。

为什么不直接上传到Gemini?

将视频上传到网络上的Gemini可以让你进行一次性分析。视频馈送器为您提供 证人循环:

  • 双子座 有眼睛和耳朵(视频+音频)。克劳德没有。
  • 克劳德 有代码库。双子座没有。
  • 双子座报告事实。克劳德将它们追溯到代码。

在初步证人报告后,克劳德可以盘问: “当用户在0:18滚动时,工具栏是否可见?” --Gemini重新观看同一视频进行回答,Claude将其映射到代码库中的特定函数。多轮,每轮都由代码级上下文通知。

运作原理

  1. 你告诉克劳德 “记录兰花”
  2. 克劳德打电话来 prepare_session("orchid") --启动应用程序,打开OBS,设置窗口捕获+麦克风
  3. 克劳德打电话来 start_capture() --OBS开始录制
  4. 你使用应用程序并大声讲述错误
  5. 克劳德打电话来 stop_and_analyze() --停止录制,将应用程序日志切片到捕获窗口,将视频+日志发送到Gemini
  6. 双子座写了 目击报告 --它看到了什么,听到了什么,时间戳,日志相关性。它不会猜测代码原因。
  7. 克劳德读了报告。它可以呼叫 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录制

先决条件

设置

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 用于记录。仅用于分析并不需要它。

许可证

麻省理工学院