关于 poordjaevin
poordjaevin 面向 AI 工程师和 QA 工程师,是本地优先的 AI 决策层,提供带置信度的类型化答案。它支持本地 NLI 和 Devin ACP 后端,并通过 MCP 服务供 Agent 调用决策工具。
主要功能
- 01类型化分类、评分和是非决策
- 02一次模型调用批量回答问题
- 03校准置信度并标注来源
- 04本地离线 NLI 后端
- 05CLI、Python 库和 MCP 服务
适用场景
- 01分类并路由支持工单
- 02拦截高风险 Agent 操作
- 03按等级为文本评分
MCP 相关
MCP 服务提供操作拦截、判断、分类、评分和类型化问答工具。后端包括 Devin ACP、VS Code LM 和离线 NLI。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
属于 DEVIN 生态系统
领域:控制 · 类型:产品
面向:AI 工程师、QA 工程师
接口:CLI / Python 库 / MCP 服务 / Bridge
路径:QA 工程师 · 第 3/3 步 — 位于devin-evals之后
适用场景
- 任务: 控制
- 产品:
devin-judge - 软件包:
poordjaevin - 模式: 只读
- 生态系统:
awesome-devin· 注册表:devin-powerups
poordjaevin
更名(2026 年 10 月):此仓库从 Icaro0310/poordjaevin 迁移至 Icaro0310/devin-judge。PyPI 软件包、控制台脚本和 MCP 注册表名称仍为 poordjaevin;星标、问题和历史记录通过重定向保留。
平民版 Jev。一个开源、本地优先的 LLM 应用“系统一”决策层:提供经过可证明校准的置信度的类型化决策。无需 API 密钥。无需候补名单。
社区项目。与 Cognition AI 无关联、未获其认可或赞助。“Devin”是 Cognition AI 的商标。
Linux · 个人版 Windows · 企业版 Windows
隶属于 awesome-devin 生态系统:精选的 devin-* 工具中心。
你的模型给出的 0.9 只是感觉。poordjaevin 的 0.9 则是经过测量的结果。
每个采用 JSON 模式的 LLM 都会给你一个置信度分数,并希望你不会去核实。poordjaevin 会核实。在随附的评估集上,它在准确率毫无损失的情况下,将校准误差(ECE)从 0.156 降至 0.072,并且可在笔记本电脑上运行,无需 API 密钥。
左:原始置信度,过高。右:校准后,标称为 0.8 的置信度确实约有 80% 的时候是正确的。
快速入门
# Linux / macOS
pip install "poordjaevin[local]"
# Windows (PowerShell)
py -m pip install "poordjaevin[local]"
[local] 会安装 torch 和 transformers,以用于离线 NLI 后端。如果你只打算使用 Devin ACP 后端(poordjaevin serve 的默认选项),直接执行 pip install poordjaevin 即可。若要直接从 GitHub 安装开发版本,请在软件包规格后附加 @ git+https://github.com/Icaro0310/devin-judge.git。
from poordjaevin import Client, Choice, Score, Noul
client = Client() # local model, no key, offline after one download
result = client.ask(
state="I've emailed three times and I'm STILL being double-charged. Cancel my account today.",
questions={
"topic": Choice(["billing", "technical", "account", "shipping", "other"]),
"frustration": Score(levels=["low", "medium", "high"]),
"is_urgent": Noul("The customer needs a response today."),
"wants_cancel": Noul("The customer wants to cancel their account."),
},
)
result["topic"].value # "billing" always one of your options, by construction
result["topic"].confidence # 0.86 calibrated, not a vibe
result["frustration"].value # "high"
result["is_urgent"].value # True
result["wants_cancel"].value # True
一次调用、一次模型推理,获得四个类型化答案。无需提示词工程,无需解析 JSON,也不会出现“模型返回了一段文字”的情况。
与 Devin 配合使用(MCP 服务,仅限 Devin)
poordjaevin 附带 MCP 服务,因此 Devin(或任何 MCP 客户端)都可以将其作为工具,快速做出经过校准的决策。一个显而易见的用途是:在 Agent 执行高风险工具调用前进行拦截。
此模式只需要 Devin。 默认后端(acp)通过一个随包提供的小型 Node 桥接程序与
devin acp 通信,因此每次决策都由你的 Devin 计划已提供的模型评分,并自动轮换模型。
无需 Ollama、虚拟机、隧道或第二个 API 密钥:桥接程序会读取 Devin CLI 使用的同一份
credentials.toml。
# Devin users: no local model needed
uv tool install "poordjaevin[mcp]"
或者使用 pipx(替代方式):
pipx install "poordjaevin[mcp]"
将其添加到 Devin MCP 配置中:
{
"mcpServers": {
"poordjaevin": { "command": "poordjaevin", "args": ["serve"] }
}
}
ACP 后端的要求:devin CLI 位于 PATH 中(或设置 DEVIN_CLI_PATH),
Node.js >= 18 位于 PATH 中,并且 Devin 凭据有效,存放在
%APPDATA%\devin\credentials.toml(Windows)或
~/.local/share/devin/credentials.toml(Linux,可通过
DEVIN_CREDENTIALS_PATH 覆盖)。
后端选择和调优,均为可选项:
| 变量 | 默认值 | 含义 |
|---|---|---|
POORDJAEVIN_BACKEND | acp | acp = 通过 ACP 使用 Devin 的模型,vscode-lm = 通过 LM API 使用 VS Code 的模型,nli = 完全离线的本地模型 |
POORDJAEVIN_ACP_MODEL | auto | 固定使用指定的 Devin 模型,而非自动轮换 |
POORDJAEVIN_ACP_TIMEOUT | 120 | 每轮决策往返的秒数 |
POORDJAEVIN_ACP_MAX_COST | unset | 当 ACP 累计成本超过此预算时,默认拒绝 |
POORDJAEVIN_VSCODE_LM_ENDPOINT | auto | 端点文件路径或直接覆盖为 http(s):// URL |
POORDJAEVIN_VSCODE_LM_TIMEOUT | 120 | 向扩展端点发出每次请求的秒数 |
POORDJAEVIN_VSCODE_LM_FALLBACK | unset | nli = 扩展不可用时回退到本地模型 |
POORDJAEVIN_ABSTAIN | off | on = 低于校准阈值时弃答,而不是给出答案 |
关于置信度的说明:在 acp 和 vscode-lm 模式下,置信度为 self_report(模型自行给出的概率,并经过温度调整),而不是 NLI 对数概率。每个工具响应都包含 confidence_source 字段,因此调用方不会混淆两者;每次调用的 model/cost 也会记录下来,以便监控配额。
vscode-lm 后端会通过 VS Code 当前提供的聊天模型(Copilot、Codex、BYOK)进行评分。vscode.lm 只存在于扩展宿主中,因此 icaro0310.judge 扩展会提供一个小型 localhost 端点,并通过平台数据目录中的 vscode-lm-endpoint.json(与 djaevin_log.db 同目录)公布该端点。如果扩展未运行,后端会默认拒绝;若 POORDJAEVIN_VSCODE_LM_FALLBACK=nli,则会回退到 nli。
机器上没有 Devin?使用离线路径:
uv tool install "poordjaevin[local,mcp]"
或者使用 pipx(替代方式):
pipx install "poordjaevin[local,mcp]"
POORDJAEVIN_BACKEND=nli poordjaevin serve # ~400MB one-time model download, then offline
此服务也适用于 Claude Code/Desktop(claude mcp add poordjaevin -- poordjaevin serve),JSON 配置格式相同。
随后,Agent 将获得以下本地工具:
| 工具 | 功能 |
|---|---|
gate(action) | 护栏:是否应拦截此操作(例如转移资金、删除数据)? |
judge(text, statement) | 是/否问题,并给出经过校准的 P(true) |
classify(text, options) | 选择一个选项,并给出经过校准的置信度 |
rate(text, levels) | 按等级评分(低 / 中 / 高) |
decide(text, questions) | 一次处理多个类型明确的问题 |
为什么这比让 LLM 来判断更好:使用默认的 NLI 后端时,它在本地运行(隐私性好)、免费(不消耗 token)、速度快,而且置信度经过校准,而非凭空编造。使用 acp 或 vscode-lm 时,评分文本会发送给你所选的模型提供商;置信度仍会通过 confidence_source 如实标注,加载了匹配的校准器时会经过校准,否则则为原始置信度。
限制提交范围(pre-commit hook)
此仓库提供了一个 pre-commit hook,会在每次提交前对操作文件运行
poordjaevin gate:
# .pre-commit-config.yaml (in the repo you want to protect)
- repo: https://github.com/Icaro0310/devin-judge
# the hook manifest ships in v0.1.2+; use a tag once cut
rev: main
hooks:
- id: devin-judge-gate
# optional: point the gate at your own action file
# args: [--action-file, path/to/action.txt]
必须先完成设置:该 hook 会在缺少配置时拒绝提交。如果没有操作文件,每次提交都会以状态码 2 退出,因此请先创建一次:
mkdir -p .devin
echo "The risky action this commit performs." > .devin/judge-action.txt
有两点值得注意:pre-commit 会将 args 附加在 entry 中已有的标志之后,因此需要重复指定 --action-file 来覆盖默认路径。此外,该 hook 会在每次提交时运行(always_run、pass_filenames: false),因此需要可用的后端:默认的 acp,或安装了 local extra 后使用 POORDJAEVIN_BACKEND=nli。
poordjaevin 的存在意义
大多数生产环境中的 AI 工作并非聊天,而是快速的结构化决策:路由工单、分类意图、评估情感、提取字段、门控工具调用。TypeSafe 的 Jev 为这一类别命名(“System One”模型),并准确阐明了其核心观点——而且,根据下文的独立跨系统基准测试,它目前也用结果支撑了自己的校准声明:它是在此测得的最强模型。不过,它是闭源的,需要托管服务,而且设有候补名单。
poordjaevin 面向那些无法通过“调用托管 API”来满足需求的部署场景:私有数据、离线环境、零边际成本、无需候补名单。它在小型本地模型上复现了 Jev 的类型化决策接口,并如实验证了自身的校准表现(采用 5 折交叉验证,绝不在用于拟合的数据上评分)。在下文的混合决策原语基准测试中,它优于其他开源本地替代方案,但在高基数基准测试中并非如此,具体情况请参见实际结果。它并未胜过 Jev。对于 NLI 后端完全本地且免费的方案而言,这就是诚实的取舍。
poordjaevin 与其他方案的比较
独立测得,非自报数据——完整的测试框架、数据和每个原始结果文件见 crossbench/。
poordjaevin 以红色显示。图表通过 crossbench/plot_comparison.py 从 crossbench/results/ 重新生成——与下表数据相同。
| Jev (TypeSafe) | von | Laya | poordjaevin | |
|---|---|---|---|---|
| 接口(类型化问题,单次处理) | 是 | 是 | 是 | 是 |
| 可在本地运行,无需 API 密钥 | 否 | 是 | 是 | 是 |
| 数据保留在你的环境中 | 否 | 是 | 是 | 是 |
| 等待名单 / 注册 | 是 | 否 | 否 | 否 |
| 开源 | 否 | 是 (Apache-2.0) | 是 (Apache-2.0) | 是 (MIT) |
| 准确率,Banking77(77 类,n=154) | 0.812 | 0.838 | 0.519 | 0.656 |
| ECE,Banking77(越低越好) | 0.084 | 0.135 | 0.388 | 0.414 |
| 准确率,多原语测试集(n=160) | 0.906 | 0.775 | 0.775 | 0.781 |
| ECE,多原语测试集(越低越好) | 0.045 | 0.108 | 0.215 | 0.071 |
多原语测试集的数据是在 evalset/tasks.jsonl 的 55 个项目 / 160 个决策快照上测得的;发布的测试集此后已扩展至 70 个项目 / 203 个决策(见 evalset/README.md)。Banking77 数据不受影响;尚未针对扩展后的测试集对四个系统进行完整重测。
请直截了当地看待结果,这正是开展这项测试的意义:
- Jev 在多原语测试集上全面胜出——准确率和校准度均最佳,没有例外。
von在 Banking77 上胜出——四个系统中准确率最高(0.838,甚至高于 Jev 的 0.812),不过 Jev 在该测试集上的校准度仍然更好(0.084 对比 0.135)。- poordjaevin 在多原语测试集上领先于开源本地方案——在 Laya、
von和 poordjaevin 中,准确率和校准度均最佳。但这不适用于 Banking77:von的准确率远高于 poordjaevin(0.838 对比 0.656),而且 poordjaevin 在该测试集上的校准度是四个系统中最差的(0.414,甚至高于 Laya 的 0.388),并非最佳。
没有哪个系统能包揽胜利,poordjaevin 尤其没有横扫开源方案——它赢下一项测试,却在另一项测试中被 von 大幅击败。完整的方法说明、公平性说明和每个原始结果文件都在 crossbench/ 中——只需花几美分调用 Jev API,再加上一些 CPU 时间即可复现。
poordjaevin 不是 Jev 的克隆,也不声称能击败 Jev,或能全面胜过 von。它复现了接口,用数据而非营销文案证明自身的校准表现,并且在混合决策原语基准测试中是最强的纯本地方案——但在高基数分类任务中并非如此,目前由 von 领先。
三种原语
| 原语 | 适用场景 | 返回值 |
|---|---|---|
Choice(options) | 分类、路由 | 胜出选项、各选项概率、经校准的置信度 |
Score(levels) | 序数评分、严重程度 | 胜出等级、量表上的连续分数、置信度 |
Noul(statement) | 是 / 否门控、护栏 | P(true),经阈值处理后转换为布尔值 |
返回的 value 始终取自你声明的集合。无效类别在结构上不可能出现,而非“通常会避免”。我们使用对抗性输入(NaN、无穷大、负数、全零分数向量)对此进行了测试。
工作原理
state + typed questions
|
v
one batched pass through a local zero-shot NLI model (no API key)
|
v
raw probabilities per option
|
v
calibration: temperature scaling + conformal abstention
|
v
typed, schema-valid answers + calibrated confidence
- 本地 NLI 后端(完全离线): 一个小型自然语言推理模型会在单次批量前向传递中,将每个选项作为蕴含假设进行评分。一次约 400MB 的下载后即可完全离线使用。无需密钥,也不依赖供应商;你的文本永远不会离开你的设备。
poordjaevin eval/calibrate和 Python 中的Client()使用此后端;如需将其用于serve,请设置POORDJAEVIN_BACKEND=nli。 - Devin ACP 后端(
poordjaevin serve的默认后端): 通过devin acp执行评分,因此决策使用 Devin 方案已提供的模型,并支持自动轮换和按调用报告成本。无需额外模型,也无需额外密钥。 - VS Code LM 后端: 通过
icaro0310.judge扩展中的vscode.lm执行评分,因此决策使用 VS Code 当前提供的聊天模型(Copilot、Codex、BYOK),无需额外密钥。设置POORDJAEVIN_BACKEND=vscode-lm即可选择此后端。 - 校准(竞争优势): 温度缩放会拟合一个标量,使预测置信度与实际准确率相匹配;保形阈值会将目标风险预算转化为“我不知道,请升级处理”的信号。校准因后端而异:基于 NLI 后端拟合的校准器不会应用于 ACP 分数(如果不匹配,服务会发出警告并回退到原始置信度)。
基准测试
使用两条命令即可复现所有结果:
poordjaevin eval --set evalset/tasks.jsonl # accuracy, ECE, Brier, risk-coverage
poordjaevin calibrate --set evalset/tasks.jsonl --plots # before/after ECE + the diagrams
在随附的评估集(70 个手动标注的条目,203 个决策)上,使用本地 NLI 后端且无需密钥:
| 指标 | 原始值 | 校准后 |
|---|---|---|
| 准确率 | 0.793 | 0.793 |
| ECE(校准误差) | 0.156 | 0.072 |
| Brier 分数 | 0.173 | 更低 |
| 温度 | 1.00 | 2.59 |
温度通过 5 折交叉验证拟合,因此“校准后”的数值是在留出数据上测得的,而不是在拟合所用的数据上测得的。完整表格和坦诚说明的局限性见 RESULTS.md。
**在相同输入和相同指标代码下,与 Jev、Laya 和 von 对比:**请参阅上文的 poordjaevin 与其他方案的比较,以及 crossbench/ 中的完整测试框架。简而言之:在这个混合决策原语基准测试中,poordjaevin 领先于开源方案;在高基数分类方面,von 领先;总体上,Jev 领先。
选择性预测:知道自己何时不知道
设置风险预算后,poordjaevin 会对置信度最低的决策弃权,而不是猜测:
在 10% 的错误预算下,它会有把握地回答 64% 的决策,并将其余决策升级处理。这是从系统 1(快速自动回答)过渡到系统 2(人工或更大的模型)的自然桥梁。
实例
python examples/ticket_router.py # full triage on a support ticket
python examples/tool_gate.py # gate a risky tool call before it runs
python examples/demo.py # raw vs calibrated, side by side
工具门控示例体现了一条实用经验:本地模型擅长回答具体问题(“此操作会转移资金”“此操作会删除数据”),但不擅长回答抽象问题(“此操作很危险”)。提出具体问题,再用一条规则应用策略。
坦诚说明局限
不炒作。以下是它的不足之处。
- 速度不如 Jev。 Jev 使用定制模型。poordjaevin 使用通用模型。我们会报告延迟,但不会拿它做宣传。
- 评测集规模较小(数十个项目、1 位标注者、英文、偏支持场景)。足以展示校准趋势和 schema 有效性,但不足以用于排行榜。
- 校准后的 ECE 为 0.072,并未低于 0.05。 这是实际交叉验证得出的数值,我们如实报告。按问题分别设置温度,很可能会进一步降低它。
- 本地模型的智能水平中等。 它能进行真正的语义蕴含判断,但无法深入推理。校准和弃答机制让它能够安全使用。
- Jev 目前领先,这是测量结果,而非假设;
von在一个指标上也领先。 跨系统基准测试显示,Jev 在多原语集合中明显胜出,并在 Banking77 校准方面领先;von在 Banking77 准确率上胜过 Jev 和 poordjaevin。poordjaevin 的真实定位是“在混合决策原语基准测试中,最佳的完全本地/免费选项”,而不是“胜过 Jev”,也不是“在所有方面都胜过所有开源替代方案”。 - 温度缩放无法解决所有问题。 对于 Banking77 的 77 类规模,经过适当交叉验证的温度重新拟合几乎无法改变 ECE(0.414 → 0.416)——这里的校准偏差源于小型 NLI 后端在选项数量较多时的结构性问题,而不是能通过拟合一个标量消除的问题。请参阅
crossbench/results/banking77_poordjaevin_recalibrated.json。
常见问题
这是 Jev 的克隆版吗? 不是。它在开放的本地模型上复现了 Jev 的开发者接口及其置信度校准保证,但不会照搬 Jev 的架构或速度。
我可以在本地运行 Jev 吗? 不能运行 Jev 本身,因为它是闭源托管服务。poordjaevin 是本地开源替代方案:它能在你自己的机器上离线运行相同的类型化决策接口,无需 API 密钥,也无需排队等待。
有没有 Jev 的开源替代方案? 有,poordjaevin 就是其中之一。poordjaevin 采用 MIT 许可证,在通用模型上复现了 Jev 的 Choice/Score/Noul 接口,并通过可复现的数据证明其校准效果。
我需要 API 密钥或 GPU 吗? 不需要。有两种免费使用方式:serve 默认使用 ACP 后端,可复用你现有的 Devin 凭据和模型;nli 在下载一次模型后,即可在 CPU 上离线运行。
这与 JSON 模式下的大模型有什么不同? 有两点。输出从设计上就符合 schema,而不是通过解析来实现。此外,置信度经过校准并有实证支持,不是模型凭空编造的数字。
什么是“System One”模型? 这是一种用于快速、自动化、结构化决策(分类、路由、评分、门控)的模型,与缓慢、审慎的聊天模型相对。这个名称源自 Kahneman 的 System 1 / System 2。
什么是 ECE? 期望校准误差:模型置信度与实际准确率之间的平均差距。数值越低越好。poordjaevin 的全部目标就是缩小这一差距。
我可以使用自己的模型吗? 可以。后端采用可插拔设计;后端只需实现 entail_probs(pairs) 即可。
路线图
- 类型化原语,设计上确保符合 schema
- 本地 NLI 后端,单次运行,无需密钥
- 评测集与指标(准确率、ECE、Brier、风险覆盖率)
- 校准:温度缩放 + 保形弃答
- MCP 服务:在 Claude Code 中将 poordjaevin 用作本地工具
- 对比 Jev、Laya、von 的独立跨系统基准测试(
crossbench/) - Devin ACP 后端:通过你现有的 Devin 凭据进行大模型评分(智能调节旋钮)
- 缩小与 Jev 在 Banking77 准确率/校准方面的差距(更大的后端、按类别校准)
平台支持
支持 Windows、Linux 和 macOS。ACP 桥接器会按平台解析 Devin 凭据和
devin 可执行文件:
| 平台 | Devin 凭据 | Devin CLI |
|---|---|---|
| Windows | %APPDATA%\devin\credentials.toml | PATH 中的 devin.exe |
| Linux | $XDG_DATA_HOME/devin/credentials.toml(默认路径为 ~/.local/share/devin/credentials.toml) | PATH 中的 devin |
| macOS | ~/Library/Application Support/devin/credentials.toml | PATH 中的 devin |
可通过 DEVIN_CREDENTIALS_PATH 和 DEVIN_CLI_PATH 分别覆盖这两项。凭据文件仅读取用于验证 ACP 会话;绝不会记录日志或复制。
贡献
欢迎提交问题和 PR,尤其是为评估集新增带标签的决策任务。如果你发现置信度表述不诚实,这就值得提交为一个 bug。
许可证
MIT。随意使用、发布和销售。
poordjaevin:价格低廉,诚实满满。如果你的模型的置信度只是种感觉,欢迎来看看。
如果这为你节省了调试时间,请在仓库点个 ⭐,帮助其他人发现它。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。