Skip to main content

jev-harness-lab

用 TypeSafe Jev(System One 决策模型)做 agent harness 工程实验的技术仓库:评测框架、基准报告、可运行的集成工具(MCP server、skill router)。

skills.sh

安装

① MCP server(给 agent 加三个 Jev 工具)

用 uv 一条命令,无需克隆:

# 从 PyPI
uvx jev-mcp

# 直接从 GitHub 源码运行
uvx --from git+https://github.com/Aitejiu/jev-harness-lab jev-mcp

配置到任意 MCP 客户端(opencode / Claude Desktop 等):

{
  "mcp": {
    "jev": {
      "type": "local",
      "command": ["uvx", "--from", "git+https://github.com/Aitejiu/jev-harness-lab", "jev-mcp"],
      "environment": { "TYPESAFE_API_KEY": "your-key" },
      "enabled": true
    }
  }
}

提供的工具:

工具 作用
scan_injection 扫描工具/网页/邮件输出里的注入指令,返回 block / review / pass
bash_risk shell 命令四维风险打分(破坏性 / 触密 / 外发 / 不可逆),返回 deny / review / allow
rank_candidates 候选片段按相关性打分排序(RAG 精排)

MCP Registry 归属标记(勿改格式):

mcp-name: io.github.aitejiu/jev

② Agent skill(让 Jev 帮主模型选 skill)

npx skills add Aitejiu/jev-harness-lab --skill jev-skill-router

用 Jev 把任务路由到已安装的 skill,并且只加载选中那一个的完整指令,避免把整个 skill 目录塞进主模型上下文。技能页:https://www.skills.sh/aitejiu/jev-harness-lab/jev-skill-router

环境变量

两个集成都需要:

export TYPESAFE_API_KEY=<your-key>

目录

.
├── examples/            # 最小可运行示例(三原语、state、路由、护栏、抽取)
├── eval/                # 评测框架:11 个基准脚本 + 24 份报告 + 原始结果
│   └── datasets/        # 手工构造的数据集(如 130 条 shell 命令风险集)
├── integrations/
│   └── opencode/        # opencode 插件:jev_route_skill(skill 门控)
├── skills/
│   └── jev-skill-router/  # 可安装的 agent skill(SKILL.md + 独立脚本,skills.sh)
├── docs/
│   └── REPORT.md        # 技术评估报告(数据与结论)
├── src/jev_mcp/         # MCP server 包(PyPI: jev-mcp)
├── pyproject.toml       # Python 打包配置(console script: jev-mcp)
├── server.json          # MCP Registry 元数据(mcp-name: io.github.aitejiu/jev)
├── mcp_server.py        # 兼容 shim:不安装也可 python mcp_server.py 运行
├── skill_router.py      # 本地 skill 目录路由(Jev 选择并加载 SKILL.md)
├── common.py            # .env 加载 + 共享 client
└── requirements.txt

快速开始

uv venv --python 3.12 .venv
uv pip install -r requirements.txt
echo "TYPESAFE_API_KEY=<your-key>" > .env
# 最小示例
.venv/bin/python examples/quickstart.py
.venv/bin/python examples/noul.py          # criteria 对判断的影响
.venv/bin/python examples/routing.py       # 阈值路由

# 跑评测(示例:skill router,501 个真实 skills)
.venv/bin/python eval/run_skillretbench.py --variant hybrid --per-setting 100

评测结果缓存在 eval/results/*.jsonl(已随仓库提交,可 --report-only 直接出报告);原始数据集在 eval/data/,需按 eval/README.md 的说明下载(已 gitignore)。

集成工具

MCP server

.venv/bin/python mcp_server.py   # stdio
工具 作用 输入 → 输出
scan_injection 扫描工具输出中的注入指令 tool_output → action(block/review/pass) + 概率
bash_risk shell 命令四维风险打分 command → action(deny/review/allow) + 破坏性/触密/外发/不可逆分数
rank_candidates 候选片段相关性重排 query + candidates(≤10) → 排序后的 index/score

接入 opencode 的配置示例(项目 .opencode/opencode.json):

{
  "mcp": {
    "jev": {
      "type": "local",
      "command": ["/absolute/path/to/jev-harness-lab/.venv/bin/python", "/absolute/path/to/jev-harness-lab/mcp_server.py"],
      "enabled": true
    }
  }
}

Skill router

.venv/bin/python skill_router.py --query "帮我查飞书文档" --load

opencode 插件在 integrations/opencode/jev-skill-router.ts:注册 jev_route_skill(task) 工具,请求进来时用 Jev 从本地 skill 目录选出最合适的一个并返回其完整指令。参考做法是配合 agent.build.tools.skill = false 关闭内置 skill 工具,使主模型上下文不再携带整个 skill 目录。

主要基准结果(详见 docs/REPORT.md)

任务 数据 结果
间接注入检测 InjecAgent 1,105 条 阈值 0.10:P/R 100%,良性误报 0%
检索重排 BEIR SciFact 900 对 BM25 → Jev:MRR 0.622 → 0.843,Hit@1 50% → 78.3%
意图分类 SNIPS / Banking77 7 类 97.9% / 77 类 80.3%
工具目录路由 MetaTool 199 工具 相似干扰 k=5 96.5%
Skill router SkillRetBench 501 库 hybrid 架构 R@1 75.8%(最强基线 38.0%)
命令风险门控 自建 130 条 危险拦截 100%、正常放行 98.2%
模型难度路由 RouterBench 51%(无信号,负结果)
轨迹失败归因 Who&When 1,403 步 AUROC 0.56(负结果)

总计约 22,500 次 API 调用、52.2M input tokens、$2.19。

说明

  • 所有 benchmark 使用公开数据集;原始结果 JSONL 已提交,报告可复现。
  • 部分官方基线为模拟实现(在报告中已标注)。
  • Jev 已知限制:choice 最多 255 个选项、仅文本输入、state+questions 共享约 32k tokens、英语为主。
  • 版本:jev-1.13.0,模型升级后建议重新评测。

Release files for jev-mcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jev-mcp 0.1.1
File Size Uploaded
jev_mcp-0.1.1.tar.gz 4.9 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for jev-mcp 0.1.1
File Interpreter ABI Platform
jev_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 4.9 MB

Release files / jev_mcp-0.1.1.tar.gz

Download URL jev_mcp-0.1.1.tar.gz
Size 4.9 MB
Tags Source
SHA-256 checksum
How to use checksums
f5e91ffc7950a4baf066791eb0a7a47b2ce627e2bb5236e9801ec443f2319de4
BLAKE2b-256 checksum
How to use checksums
1d55c9280a86d12d717b47baf0e44fd5a9864d0bbcf8f076e4baf9a2eee75fa0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / jev_mcp-0.1.1-py3-none-any.whl

Download URL jev_mcp-0.1.1-py3-none-any.whl
Size 7.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
539a97ca5fca223f30a132e54bdaf7b2c561934263e931d3c31adf0e89134a35
BLAKE2b-256 checksum
How to use checksums
1b002496ce0b86e2124ff4c53e6320b55d58bd1b4aa00a9def1205862ab15d8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.1.2

2 release files

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page