pair-programmer
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseVideoDB Pair Programmer
VideoDB Pair Programmer
AI pair programming with real-time screen and audio context. Record your screen and audio, with AI-powered indexing that logs visual and audio events in real-time.
具备实时屏幕和音频上下文的AI结对编程工具。可录制你的屏幕与音频,通过AI驱动的索引功能实时记录视觉和音频事件。
Commands
Commands
When user asks for a command, read the corresponding file for instructions:
| Command | Description | Reference |
|---|---|---|
| Start screen/audio recording | See commands/record.md |
| Stop the running recording | See commands/stop.md |
| Search recording context (screen, mic, audio) | See commands/search.md |
| Summarize recent activity | See commands/what-happened.md |
| Install deps and configure API key | See commands/setup.md |
| Change indexing and other settings | See commands/config.md |
当用户询问命令时,请读取对应文件获取说明:
| Command | Description | Reference |
|---|---|---|
| 开启屏幕/音频录制 | 参见 commands/record.md |
| 停止正在进行的录制 | 参见 commands/stop.md |
| 搜索录制上下文(屏幕、麦克风、音频) | 参见 commands/search.md |
| 总结近期活动 | 参见 commands/what-happened.md |
| 安装依赖并配置API key | 参见 commands/setup.md |
| 修改索引及其他设置 | 参见 commands/config.md |
How It Works
How It Works
- User runs to install dependencies and set
/pair-programmer setupenvironment variableVIDEO_DB_API_KEY - User runs to start recording
/pair-programmer record - A picker UI appears to select screen and audio sources
- Recording starts and events are logged to
/tmp/videodb_pp_events.jsonl - User can stop recording from the tray icon (🔴 PP → Stop Recording)
- 用户运行 安装依赖并设置
/pair-programmer setup环境变量VIDEO_DB_API_KEY - 用户运行 开启录制
/pair-programmer record - 弹出选择器UI供用户选择屏幕和音频源
- 录制启动,事件会被记录到
/tmp/videodb_pp_events.jsonl - 用户可以通过托盘图标停止录制(🔴 PP → 停止录制)
Output Files
Output Files
| Path | Content |
|---|---|
| Process ID of the recorder |
| All WebSocket events (JSONL format) |
| Current session info (session_id, rtstream_ids) |
| 路径 | 内容 |
|---|---|
| 录制器的进程ID |
| 所有WebSocket事件(JSONL格式) |
| 当前会话信息(session_id、rtstream_ids) |
Event File Format
Event File Format
Events are written as JSONL (one JSON object per line):
json
{"ts": "2026-03-05T10:15:30.123Z", "unix_ts": 1709374530.12, "channel": "visual_index", "data": {"text": "User is viewing VS Code with auth.ts open"}}
{"ts": "2026-03-05T10:15:31.456Z", "unix_ts": 1709374531.45, "channel": "transcript", "data": {"text": "Let me check the login flow", "is_final": true}}事件以JSONL格式写入(每行一个JSON对象):
json
{"ts": "2026-03-05T10:15:30.123Z", "unix_ts": 1709374530.12, "channel": "visual_index", "data": {"text": "User is viewing VS Code with auth.ts open"}}
{"ts": "2026-03-05T10:15:31.456Z", "unix_ts": 1709374531.45, "channel": "transcript", "data": {"text": "Let me check the login flow", "is_final": true}}Environment Variables
Environment Variables
The recorder reads these from environment variables:
| Variable | Required | Description |
|---|---|---|
| Yes | VideoDB API key |
| No | API endpoint (default: https://api.videodb.io) |
录制器会从环境变量中读取以下配置:
| 变量名 | 必填 | 描述 |
|---|---|---|
| 是 | VideoDB API key |
| 否 | API端点(默认值:https://api.videodb.io) |
Reading Context
Reading Context
Events are in . Use CLI tools to filter — never read the whole file.
/tmp/videodb_pp_events.jsonl| Channel | Content | Density |
|---|---|---|
| Screen descriptions | Dense (~1 every 2s) |
| Mic speech | Sparse (sentences) |
| System audio summaries | Sparse (sentences) |
Channel filter — use grep to filter by channel, pipe to for recent events:
tailbash
grep '"channel":"visual_index"' /tmp/videodb_pp_events.jsonl | tail -10Keyword search — grep across all channels:
bash
grep -i 'keyword' /tmp/videodb_pp_events.jsonlTime-window filter — filter events from the last N minutes:
- Get current epoch:
$(date +%s) - Compute cutoff:
epoch - N*60 - Filter lines where the JSON field exceeds the cutoff
unix_ts - Pipe through to narrow by channel
grep
Generate the appropriate filtering command (grep, awk, python3, jq) based on complexity.
For semantic search across indexed content, use :
search-rtstream.jsbash
node search-rtstream.js --query="your query" --cwd=<PROJECT_ROOT>is the absolute path to the user's project directory. This is NOT the skill directory — resolve it before running the command.<PROJECT_ROOT>
See commands/search.md for the full search strategy and CLI patterns.
事件存储在 中。请使用CLI工具进行过滤,请勿读取整个文件。
/tmp/videodb_pp_events.jsonl| 通道 | 内容 | 密度 |
|---|---|---|
| 屏幕内容描述 | 高密度(约每2秒1条) |
| 麦克风语音内容 | 低密度(按句子生成) |
| 系统音频摘要 | 低密度(按句子生成) |
通道过滤 — 使用grep按通道过滤,通过管道传给获取最近的事件:
tailbash
grep '"channel":"visual_index"' /tmp/videodb_pp_events.jsonl | tail -10关键词搜索 — 跨所有通道grep搜索:
bash
grep -i 'keyword' /tmp/videodb_pp_events.jsonl时间窗口过滤 — 过滤最近N分钟内的事件:
- 获取当前时间戳:
$(date +%s) - 计算 cutoff 阈值:
epoch - N*60 - 过滤JSON字段大于cutoff的行
unix_ts - 通过管道传给按通道缩小范围
grep
根据复杂度生成合适的过滤命令(grep、awk、python3、jq)。
如需对索引内容进行语义搜索,请使用:
search-rtstream.jsbash
node search-rtstream.js --query="your query" --cwd=<PROJECT_ROOT>是用户项目目录的绝对路径。它不是当前skill的目录,请在运行命令前解析该路径。<PROJECT_ROOT>
完整的搜索策略和CLI使用模式参见 commands/search.md。