Jev Decision Gate by BPJ

io.github.f-tigerv0.3.1更新于 Oct 2, 2026

Local Issue triage with optional Jev judgments and calibrated acceptance gates.

概览

AI 生成的概览

在本地进行 Issue 分诊,使用规则基线并可选用 Jev 模型调用,支持校准与验收门控。

功能
提供六个 MCP 工具,用于在本地对 Issue JSON 批次进行分诊、检查任务与用量、校准验收策略、在留出集上评估,并给出接受或复核建议。首个用例预测 Issue 类型、受影响模块和信息是否充分。它不会编辑 Issue、添加标签、发表评论或关闭工单。规则基线无需密钥即可运行;Jev 模型调用为可选且默认关闭。
适用场景
适合维护代码仓库、希望在本地分诊 Issue 批次、将规则基线与模型提供方对比,并校准哪些建议可以自动接受的场景。也适合能够提供人工复核标签用于校准、并另留独立评估集的团队。
运行要求
需要 Python 3.11+,并在本地安装该软件包,或在支持 MCPB 0.4 与 UV 的主机中安装 MCP 捆绑包。启动 MCP 服务器时需指定指向已授权 JSON 目录的数据根路径。Jev 模式还需要 TYPESAFE_API_KEY 环境变量以及访问提供方端点的出站网络;除非在启动时启用,否则 Jev 处于关闭状态。
安装前请注意
Jev 模式会把选定的 Issue 标题与正文文本发送到第三方端点;预期标签不会被发送。请将 TYPESAFE_API_KEY 保存在本地环境或密钥管理器中,不要放入 Issue、聊天、仓库或提交到 Git 的 MCP 配置。模型调用由提供方单独计费,失败的调用可能在没有用量报告的情况下仍被计费,成本输出只是估算而非账单。内置分类法范围较窄,样本过小或错误率过高时门控会被禁用。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Jev Decision Gate by BPJ,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Jev Decision Gate · by BPJ

[Tests]

Use Jev for Issue triage without building the whole integration and review workflow.

中文 · MCP setup · Evaluation method · BPJ developer tools

[Three-way comparison: general LLM API, direct Jev API and our MCP. Our package supplies batch triage, validation, calibration, review and call limits. Compare model input prices and the included workflow.]

Why install ours? Get six MCP tools for local Issue batches, task/usage checks, independent calibration, held-out evaluation and accept/review recommendations. The same workflow is available as a Skill or CLI. LLM vs direct Jev vs our MCP.

Underlying model prices: about 238× difference, with the same hypothetical input volume. Standard uncached prices on 2026-10-02: Claude Fable 5.1 $10/M input tokens; Jev 1.13 $0.042/M. Against Haiku 4.5 ($1/M), the ratio is 23.8×. Direct Jev and our MCP share this Jev input price. This compares model input unit prices; total workflow cost depends on actual usage, output, retries and agent-host charges.

Price math and assumptions · Static image · Actual rules output

An independent MIT-licensed Python tool for repository maintainers. Run a rules baseline, optionally call TypeSafe's Jev, and calibrate which suggestions may be accepted. The first case predicts issue kind, affected module and information sufficiency. It never edits issues, applies labels, posts comments or closes tickets.

Version 0.3.1, early developer preview. This is an integration and statistical gate, not Jev's model, training algorithm, or an official TypeSafe product. The bundled cases are 12 original synthetic examples for trying the workflow.

Run in two minutes

Python 3.11+:

bash
git clone https://github.com/f-tiger/jev-decision-gate.gitcd jev-decision-gatepython -m venv .venv# macOS / Linuxsource .venv/bin/activate# Windows PowerShell: .venv\Scripts\Activate.ps1python -m pip install '.[mcp]'jev-gate demo --out demo-report.json --export-issues demo-issues.json

The demo runs locally without keys or network requests. It produces real output from a deliberately simple rules baseline. All items initially require review. Keep the report: compare on your own labels before choosing a provider. Commands refuse to overwrite existing output files.

Reproduce the animation's price calculation without a key:

bash
python tools/price_scenario.py --input-tokens 1000000 --fallback-fraction 0.1

This scenario is $0.042 for Jev input plus $1 for an extra 10% of that input sent to Fable, or $1.042 versus $10. The 9.6× input-cost ratio is hypothetical, excludes output/retries/review, and does not imply this package calls Fable. Share a successful run or a blocker.

Call Jev on selected issues

Set TYPESAFE_API_KEY through your local environment or secret manager. Do not paste a key into an issue, model chat, repository or MCP configuration committed to Git. Jev mode sends selected title/body text to https://api.typesafe.ai/v1/systemone; BPJ receives nothing.

bash
jev-gate triage demo-issues.json --provider jev --max-calls 12 --out jev-report.json

The default pins jev-1.13.0. One request per issue batches three independent questions against the same issue. There are no automatic retries. Failure returns a review recommendation and records unknown usage rather than assuming zero cost. Exit code 2 means an input failure or a saved report with provider failures; inspect stderr and the report.

To estimate the cost of provider-reported input tokens, explicitly add --input-usd-per-million YOUR_CURRENT_PRICE. Output is an estimate, not an invoice. Failed calls may be billed without reported usage. The estimate covers reported provider input; account for agent-host, review and fallback costs separately.

Bring your own cases

json
[  {    "id": "myrepo-123",    "title": "Login fails after session expiry",    "body": "Steps, environment, actual behavior and expected behavior...",    "expected": {"kind": "bug", "module": "auth", "information": "sufficient"}  }]

expected is optional at inference time and required for calibration/evaluation. It is never sent to Jev. Use human-reviewed labels. Fixed labels in v0.3.1:

FieldLabels
kindbug, feature, question, unknown
moduleauth, api, ui, docs, unknown
informationsufficient, missing

This taxonomy is intentionally narrow. Repositories whose modules do not fit should customize the question contract and recalibrate. No claim is made about accuracy in Chinese or other languages; evaluate the language you actually use.

Calibrate, then test separately

Run inference on independently labeled calibration and test files, then:

bash
jev-gate calibrate calibration-report.json --out policy.jsonjev-gate evaluate policy.json held-out-report.json --out evaluation.jsonjev-gate triage new-issues.json --provider jev --policy policy.json --out decisions.json

The model, taxonomy and score mapping must be frozen before calibration. IDs must be disjoint across calibration and evaluation; semantic duplicates must also be removed by the dataset owner. Small samples or high error disable the gate. A disabled policy skips model calls and sends every item to review. Policy scope mismatches fail before inference.

The fixed threshold search uses an exact one-sided binomial bound with Bonferroni correction. The bound concerns errors among accepted predictions under i.i.d. sampling. It does not cover distribution drift, adversarial input or reviewer accuracy. Read the assumptions and score definition.

MCP, Skill and Python

Download the MCP bundle for hosts supporting MCPB 0.4 with UV. Choose your Issue JSON directory; Jev is off by default. Registered as io.github.f-tiger/jev-decision-gate in the official MCP Registry. Installation and distribution status.

bash
jev-gate-mcp --data-root /absolute/path/to/authorized-json

Jev is disabled by default in MCP. Add --allow-jev --max-calls 20 at startup only when outbound model calls are authorized and the process can read your key. Six tools and client configuration.

Use the installable instructions under skills/jev-decision-gate/ in a compatible Skill host. Installation locations differ by host; this repository does not silently install or modify your host. The bundled Skill can run the same Python implementation without downloading project code during a task.

For hosts supported by the Skills CLI:

bash
npx skills add f-tiger/jev-decision-gate --skill jev-decision-gate

Discovery, an isolated public-repository installation and the installed Skill’s rules demo have been verified. Choose your agent during installation. The third-party Skills CLI has its own optional telemetry; see its documentation for DISABLE_TELEMETRY=1. This package itself has no telemetry.

python
from jev_decision_gate.triage import triagereport = triage([{"id": "example-1", "title": "API error", "body": "Please investigate"}])

What is free? What is paid?

The package, MCP server, Skill, fixtures and evaluator are free under MIT. Jev usage is billed separately by TypeSafe according to your account. BPJ does not sell a hosted Decision Gate service in this preview. Recurring evaluation, policy history and team review are possible future paid features; demand and delivery have not been validated.

See BPJ developer tools for the existing website. No private source code or keys are required to browse it. The package has no telemetry; website visits and GitHub stars do not prove successful installations.

Verify and contribute

bash
python -m unittest discover -s tests -vpython tests/smoke_mcp.py

Tests use mocks and synthetic fixtures, never paid APIs. Verification status, security boundaries, contributing and roadmap. Contributions are welcome for independently labeled, redistributable cases, failure reports and controlled comparisons with a rules baseline. Keep private issues and credentials out of public contributions.

Protocol reference: TypeSafe API, models, MCP Python SDK. Jev references describe interoperability; no affiliation is implied.

Want to share it? Use the launch copy and evidence links. AI-assisted implementation; no official TypeSafe affiliation.

来源:README.md,提交 256e06b

工具

0
工具元数据尚未被收录。

版本历史

1
  1. v0.3.1最新Oct 2, 2026