
jevreel
io.github.DeepAleph由 GitHub 账号 DeepAleph 发布v0.2.0更新于 Oct 28, 2026
Search and understand videos without embeddings: contact sheets plus Jev typed decisions.
概览
把视频切成分帧拼图,用 TypeSafe 的 Jev 决策模型定位、核验并描述片段,向助手返回时间点与概率。
- 可以做什么
- 把本地视频或网址索引成分帧拼图、字幕与带类型的逐分钟时间线,并可加入自定义镜头问题
- 按描述搜索画面、语音或两者兼顾的片段,并在全分辨率帧上核验,给出时间与概率
- 根据参考照片找出某个人或物体出现的所有时刻
- 细看画面:截取两个时间点之间的全分辨率帧、在单帧中框选并裁剪目标、读取字幕内容
- 对整段视频提出一个带类型的问题,并在不发起新请求的情况下筛选已存时间线
- 列出本机已索引的视频
- 适用场景
- 适合让助手在长视频中查找特定时刻、在真实画面上核验并引用准确时间,或用带类型的问题梳理整部影片或录像。更适合一次性或探索性的视频提问;若要对大型视频库反复检索,向量索引更省钱。
- 运行要求
- 以 stdio 在本机运行,通过 uvx 启动,需要 uv、Python 3.11+ 以及 PATH 中的 FFmpeg。使用 Jev 的筛选、镜头和整片提问需要 TYPESAFE_API_KEY 中的 TypeSafe API 密钥;不带时间线的索引、缩放、字幕和查询无需密钥。网址支持与本地语音转写来自 [all] 附加组件,未安装时需在视频旁放置字幕文件。需要访问 TypeSafe 的网络连接。
安装
在 SourceWeft 中
- 打开 控制台中的 jevreel,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
jevreel
A zero-embedding approach to video intelligence, using Jev.
[CI] [License: MIT] [Python 3.11+]
jevreel lays a video out on labelled contact sheets, one frame per second and sixty frames to an image, and has Jev, TypeSafe's fast decision model, judge every sheet in parallel. The best windows are re-checked on full frames. Your agent (Claude Code, Codex, Cursor, Claude Desktop, anything that speaks MCP) gets back moments, times and probabilities, then looks closer itself. No vectors are computed or stored anywhere.
See it work
Five unedited Claude Code sessions using the jevreel MCP server and skill on Blender's open movie Tears of Steel (12:14, (CC) Blender Foundation, CC BY 3.0). Each clip is drawn from its recording: the agent's tool calls, what Jev answered for every sheet and frame, the hits, the cost, and the agent's own answer, quoted. Click a clip for the full-resolution video.
1. Find a three-second moment
2. Search the dialogue
[Use case 2: speech-mode search over caption lines, the picked line, and the agent's answer]
3. Read what's on screen
[Use case 3: finding the newspaper in the first five minutes and the headline the agent read]
4. Find a person from a photo
[Use case 4: searching by a reference photo, verified windows, and every moment on a timeline]
The reference photo is a crop of the frame at 9:18, so the 9:17 hit is its own source; the other seven are what the search found.
5. Map a whole film
The session starts with two failed calls, left in: a shell command the recording didn't allow, then a wrong folder. The error names the folder relative paths resolve from, and the next call works.
Why a decision model instead of embeddings
Multimodal embedding models already search video well: EmbeddingGemma 2 (October 2026) puts text, images, video frames and audio in one vector space and runs on a phone. jevreel takes a different route to the same goal, with different trade-offs.
- Your question, not a fixed notion of "similar". An embedding index decides at index time what counts as close. A decision model judges the question you ask now, and returns a probability your code can threshold, sort and gate on.
- Every second, cheaply. Jev charges for input tokens only, and output is free. A contact sheet is sent once and every question about it rides along in the same request, so jevreel screens the whole video at one frame per second instead of a handful of keyframes.
- Questions are nearly free, so ask many. Lenses add your own typed questions to every minute at almost no extra cost, then filter them as often as you like for nothing.
- The expensive model only sees what passed. Your agent gets the few moments that matter, as full-resolution frames, rather than a pile of thumbnails.
- Typed answers, not just rankings. Yes/no with the second it happens, one of your options, or a level on your scale, per minute or for the whole video.
Embeddings are the better fit for querying a large library over and over: once the vectors exist, each search is a lookup that costs nothing, while every jevreel question pays Jev for the minutes it screens (about $0.02–0.03 per hour of video). The two combine well: embeddings to shortlist videos, jevreel to find, verify and describe the moment.
How it works
- Index. Sample the video at 1 fps and tile the frames onto 1568 px contact sheets, each tile
labelled
T01,T02, and so on. Fetch captions, or transcribe locally. Ask every sheet a fixed set of questions once (people, on-screen text, cuts, setting, activity, a representative frame) plus any lenses you add, which gives a typed timeline. - Screen. One request per sheet: a yes/no (Noul) for "is it in this minute" plus a Choice over tile IDs for "which second". Screen and speech are separate questions combined in code.
- Verify. The top-ranked windows (by rank, not threshold) are re-checked with one yes/no per full frame, every half second around the pick. Screening ranks a one-second event correctly even when it can't confirm it; verification confirms it, or throws out a false lead.
- Look closer.
zoomre-renders full-resolution frames;locateputs a Box around a target in one frame and crops it;wholeanswers one question about the entire video from a storyboard, the timeline and the transcript.
Answers are cached: the same images and questions to the same model never cost twice.
This follows TypeSafe's own patterns. Their line-search cookbook pairs a Choice over labelled units with a Noul for "is it there at all". Their images guide searches a large image by Choice over tiles and looks closer only where needed. Their Box guide gates every box behind a Noul and checks its edges.
Quickstart
You need Python 3.11+, FFmpeg on your PATH, and a TypeSafe API key.
[all] adds URL support (yt-dlp) and local speech-to-text (faster-whisper). Without them, jevreel
indexes local files and uses .srt or .vtt captions saved next to the video.
Lenses: your own questions on every minute
A lens is a set of typed questions asked of every sheet and kept as timeline columns. Questions can
be noul (yes/no, plus the second it happens), choice (one of your options) or score (levels,
lowest first).
Use it from your agent
The MCP server exposes ten tools. The skill teaches agents the workflow: ask, look before claiming anything, cite times.
As a plugin
The plugin bundles the MCP server and the skill. It starts the server with
uvx --from "jevreel[url]==0.2.0", so you need uv and FFmpeg on
your PATH. Local speech-to-text is left out to keep the first start quick; for it, add the server
by hand with jevreel[all] as shown further down.
Claude Code asks for your TypeSafe API key when you enable the plugin and keeps it in your system's credential store:
Codex passes plugin servers only an allowlist of environment variables, so save the key once. The same command installs the environment the plugin starts, so its first start is fast:
By hand
Claude Code
Codex
Claude Desktop, Cursor and other mcpServers clients
VS Code uses the same entry under "servers" with "type": "stdio".
The skill (Claude Code, Codex and other agents that read Agent Skills):
Agents without MCP can use the skill with the CLI alone; every command prints JSON.
Tools
jevreel measure <video> reports what one contact sheet costs at several grid sizes on your account.
Python
Configuration
What it costs
Measured on 2026-10-15 with jev-1.14.0 at $0.042 per million input tokens, on a 10-minute 1080p video:
One question across an hour of video comes to about $0.02–0.03. Asked at index time, lens questions
ride along with the default ones, which is where the "nearly free" comes from: an 8-question request
cost about the same as a 2-question one. TypeSafe doesn't document image token counts yet. These
figures are what the API reported. Check yours with jevreel measure.
Measured on a real video
A 10-minute 1080p gameplay capture, no speech, every result checked against the frames by hand:
Limits
- Brief events need screening to rank their window. Verification looks every half second, but
only in the top-ranked windows (6 by default). An event that screening ranks below that is not
checked. Raise
JEVREEL_VERIFY_TOP, or lowerJEVREEL_TILES_PER_SHEETfor larger tiles. - No sound beyond speech. Audio reaches Jev only as transcript text.
- Jev's image support is experimental. TypeSafe calls images and Box "dreamer-ready", not production-ready, and says limits and accuracy can change between releases.
- Jev's real image minimum is 280 px per side. The docs say 256, but the API rejects anything smaller than 280 (measured 2026-10-15). jevreel pads every image itself.
- Thresholds need tuning on your footage. 0.5 to report and 0.7 for "strong" follow TypeSafe's examples. They held up on the test video, which is one video.
Contributing
Issues and pull requests are welcome. See CONTRIBUTING.md. Coding agents should read AGENTS.md.
License
MIT. jevreel is an independent project, not affiliated with TypeSafe AI. Jev is TypeSafe's model and is used through its public API under TypeSafe's terms.
来源:README.md,提交 6c89b26
工具
0版本历史
1- v0.2.0最新Oct 17, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分