jev-filter

Jev Filter:把关键信号交给 AI。采集一次,结合上下文判断,返回可回查的证据。

CI 最新版本 npm 版本 MCP Servers 已收录 MIT 许可证 M8ven 实时监测

English · 快速开始 · 中文文档 · 接入 AI · Benchmark

Jev Filter

AI agent 工具结果的语义筛选。 将大量工具输出转成精简、类型化的判断,再交给主模型。原文保存在程序内部,返回相关证据与待复核 ID,完整记录仍可按 ID 回查。

由 Apixly 独立维护的 MIT 项目。官方 npm 包:@apixly/jev-filter。功能与适用条件。

发现与接入 MCP: 查看 MCP Servers 收录页 ↗ · 配置客户端与四个只读工具 →

快速开始

Node.js 22+ · macOS / Linux · npm 发行包内置 Python。 Windows 可用 WSL,或原生安装 Python 包。安装与 doctor 可离线完成;推理需要 TypeSafe Jev API key。

npm install -g @apixly/jev-filter
jev-filter doctor

在任意目录运行:

export TYPESAFE_API_KEY='your-key'

jev-filter query --input - --mode choose \
  --task '选择当前仍未恢复的 DNS 故障' <<'JSON'
[
  {"id":"a","text":"DNS 已恢复,请求成功。"},
  {"id":"b","text":"DNS 仍失败,无法建立连接。"}
]
JSON

预期选中 b,以下省略诊断元数据:

{"selected_ids":["b"],"review_ids":[],"complete":true}

处理实际批量数据时,在原文进入聊天之前,让 CLI 在一次调用内完成采集与筛选:

jev-filter exec --task '找出尚未恢复的网络故障' \
  --analysis analysis.json -- your-collector --json

从可复制的分析契约开始。退出码 2 仍需解析结果包:complete=false 与 review_ids 表示需要关注。小例子用于了解接口;精确路径、ID、selector、计算和少量短输出通常使用原生工具。安装、密钥与结果处理 →

实用教程

提供可复制的合成输入与分析契约。在文档站阅读教程 · 常见问题。

实测优势

以下为 2026-10-04 使用合成输入的付费真实调用。公开源码哈希、逐次用量、耗时与失败;每个结果对应明确范围。

耗时和费用各有得失。 六个整段对比单元中有五个慢了 0.1–18.4%;冷输入 API 等价费用从下降 23.2% 到增加 1.1%。订阅实际账单未知。上下文变小,不保证耗时或实际账单下降。

方法、负面结果与复现 · 整段任务逐次数据

筛选路径、实测结果与适用范围

更快的语义筛选,用相同的预期答案核验。 三条路径都按两个语义条件筛选 96 条记录,精确返回同样的 48 个匹配 ID。

实测路径 筛选耗时中位 精确完整结果
Jev jev-1.13.0 · 自动合批 API 1.313 秒 3/3
Luna gpt-5.6-luna · 已登录 Codex CLI 13.421 秒 3/3
Astra gpt-6-astra · 已登录 Codex CLI 14.543 秒 3/3

这里对比可用的执行路径,包含 CLI 启动与主模型回合,没有分离模型原生延迟;主模型路径均为 medium 推理、不使用工具。每臂三次是 smoke 样本,不是整轮 agent 提速或跨任务保证。逐次证据 · 方法与复现

同输出筛选路径:Jev API 中位 1.313 秒,已登录 Codex CLI 的 Luna 13.421 秒、Astra 14.543 秒;每条路径 3/3 精确

优势 实测结果 范围与代价
更快完成重复判断 筛选速度 2.58 倍:3.215 → 1.246 秒,耗时减少 61.2%;Jev 输入 tokens 少 56.5%。 单条并发与自动合批并发 Jev 对比,96 条合成记录 × 两个判断,每臂三次,12/12 次结果精确。只测 Jev 阶段,并发上限 12;不是与主模型的速度对比。数据
聚焦主模型上下文 返回工具上下文减少 91.6–97.2%;过滤臂完整完成 12/12,原文臂 11/12;24/24 组 ID 全对。 24 次真实 agent 运行、三个合成场景、两个主模型、每臂两次。五个单元慢了 0.1–18.4%;冷输入 API 等价费用从下降 23.2% 到增加 1.1%。订阅实际账单未知。数据
找回更多相关代码 正确匹配 4/12 → 10/12,误报为零。 精确候选与可选召回均经过原生语义筛选。返回上下文 5,284 → 9,706 bytes;词法完全无交集仍漏掉。数据
定位真正要查的变更 两次重复都选对 4/4 个目标变更;相比保留全部文件,返回上下文减少 23.9%。 八个合成文件、两次重复。语义筛选增加模型用量,整段耗时中位 503 → 1,465 ms。数据
验证实际接入链路 13/13 项付费 E2E 通过,包含 MCP 精确证据回查和 64/64 条 survey 主题标注。 Python CLI、全新 npm 0.4.0 JS/原生包、官方 MCP、本地 Chromium 提取与 survey。小型合成夹具;这些公开适配层没有暴露提供方返回的实际模型 ID。数据
走进滚动容器找到目标 同一严格 0.55 / 0.10 策略下,嵌套滚动验证完成 0/3 → 3/3。 固定浏览器源码 A/B,由程序补充观察到的容器证据。六次普通目标运行仍需复核;完成更多步骤会增加调用、上下文和耗时。数据

96 条记录 Jev 筛选:自动合批从 3.22 秒缩短至 1.25 秒,12/12 次结果精确

整段任务图表与可复现数据

最新整段任务的上下文缩减、API 等价费用与耗时变化

全部方法与真实调用结果 · 逐次 JSON · CSV · 复现脚本

早期证据:离线契约、合批与开放网站限制
实验 对应日期的结果 范围
离线发版契约 · 2026-10-04 预期行为 3/13 → 13/13;错误夹具动作 3 → 0。 构造响应,未调用模型;复核与诊断上下文增加。数据
Jev 合批 · 2026-09-22 输入 tokens 减少 56.5%;合批并发比单条并发快 32.4%。 96 条合成记录 × 两个判断,每臂两次;只测 Jev 阶段。数据
历史整段任务 · 2026-09-23 返回工具上下文减少 88–97%。 四个合成场景、48 次;费用与耗时各有得失。数据
历史托管夹具 · 2026-09-30 浏览器 15/15 Camofox、18/18 CDP;桌面 12/12。 当时的 planner 策略与本地夹具;不能作为当前严格策略或开放网页的完成保证。数据
公开网站 · 2026-09-30 只读目标完成 16/48;去掉访问墙与提供方失败后为 16/34。 一个环境、24 个目标;自定义控件与验证偏弱。数据

完整方法与历史数据。最新浏览器实验保留失败的候选裁剪变体与未知提供方尝试;安全停下不等于目标已完成。

看程序如何把目标变成可验证的结果

合成商店的真实录制:Jev 选择观察到的控件,程序在下单前暂停,确认后再验证结果

每一步先观察页面或窗口,让 Jev 在程序枚举的操作与控件里选择,重新核对目标,再执行和验证。模型输出不会变成 selector、坐标、命令或未经检查的文字。不可逆动作会暂停等待确认。

jev-filter browse --url https://shop.example/ \
  --goal 'Find in-stock red shoes in size 42' \
  --value query='red shoes' --verify-text 'Search results'

把示例网址替换成允许测试的页面,并提供有意义的校验条件。browse、desktop 必须同时满足 status: done 与独立终态验证;extract、survey 要求 ok 且 complete。选中动作或模型单独返回 DONE 都不是完成证明。独立的主模型接管参考 在严格复核后达成 6/6 个预期结果;它增加明显的主模型耗时,属于参考集成,不是产品内置自动回退。

交互式回放:浏览器、桌面、调研 · 录制方法 · 安全门禁与限制

一套核心,接入现有 AI

CLI · Python · JavaScript / TypeScript · MCP。 可以调用 shell、嵌入 jev_filter.batch.run、从 @apixly/jev-filter 导入 createClient,或向 MCP host 提供四个只读工具。每条接入路线复用同一核心,保留证据与部分结果。JavaScript 与 MCP 示例 →

配套 skill 支持 Codex、Claude Code 或兼容的工具框架:

# Codex;Claude Code 使用 ~/.claude/skills。
mkdir -p ~/.codex/skills
cp -R "$(npm root -g)/@apixly/jev-filter/skills/jev-filter" ~/.codex/skills/

给 agent 一段明确的使用规则:

大量记录需要标准明确的语义判断时使用 jev-filter。
传入任务、范围、排除条件、成功标准和有来源的已知事实。
让采集 → 分析 → 精简输出在一次工具调用内部完成。
复核未确定的 ID;精确查询和少量短结果使用原生工具。
不重复已完成判断,不再次封装已有 Jev 流程。

Jev 不会自动继承聊天历史。共享事实放 context,历史随各记录传入,并声明必要字段。授权与执行验证继续由现有程序负责。五分钟接入 → · 完整接入指南 →

按任务选择入口
任务 命令 / API 指南
采集可信命令的输出 exec 采集命令
筛选或分类 JSON 候选 query 结合上下文选择
定位代码行为 code-search 完整代码符号
检查有界 Git 变更 diff-review 命令参考
归类关联的 JSON/JSONL 事件 triage 关联日志
选择本地 Camofox 页面控件 locate 网页选择
完成短网页目标或采集页面记录 browse · extract 浏览器托管执行
完成 Windows/macOS 应用目标 desktop 桌面
对大量记录分类汇总 survey 大量记录
在 Python 中嵌入类型化推理 jev_filter.batch.run Python 接入
离线评测标注判断 eval 评测示例
接入 Node.js 程序或 MCP host createClient · mcp 接入示例

从输入到发行,每一步都可核对

旧 jev-context 命令与 Python imports 保持兼容。Jev Filter 由 Apixly / JIA-ss 独立维护,与 TypeSafe 无隶属关系。

参与开发

git clone https://github.com/apixly-ai/jev-filter.git
cd jev-filter
python -m venv .venv && . .venv/bin/activate
python -m pip install -e '.[code,dev]'
sh scripts/check.sh
npm test

贡献指南 · 开发与发布 · 更新日志 · 反馈问题 · MIT 许可证