代码仓库分析

jev-git

jev-git 用两个 Jev Noul 问题检查暂存 diff 中的凭据和破坏性载荷。查看 0.80 阈值、fail-closed 策略与固定版本源码。

原始来源暂不可访问。 2026-10-24 复查返回 404;上文描述对应历史版本。你可以先运行下方本站编写的离线实验,它不代表复现原项目。

E2 · 资料已核对已检查公开资料或源码证据;仅有固定提交链接并经对应源码核对,才可称固定版本核验。不代表本站运行过、认可性能或保证安全。

本站核对范围:固定版本源码阅读 · 离线契约检查;具体限制见下文。

Stars
2
Forks
0
协议
MIT
最近提交
2026-09-21

Jev 在这里做什么

固定版本把最多 25,000 个字符的 diff 作为 state,一次请求同时判断 has_secrets 与 has_destructive_payload。概率达到 0.80 时阻止提交,0.55–0.80 给出警告;缺失答案、解析失败、未配置密钥或 API 错误都会 fail closed。

项目展示了如何把 Jev 放进已有 Git 控制点,而不是让模型直接执行 Git 操作。安装命令会链入现有 pre-commit 内容并补充 pre-push hook;真正的提交与推送仍由 Git 完成。

本站于 2026-09-26 核对固定提交 d1b6732 的 README、Rust 实现与测试,没有运行该二进制或独立测量延迟。README 中约 80ms、静态二进制小于 2MB 等性能数字属于作者陈述,不应理解为本站基准结果。

jev-git 到底检查什么?

它不是代码生成器,也不是语法 linter。固定版本把暂存区或管道输入的 diff 截断到 25,000 个字符,作为一次 Jev 请求的 state,同时提出 has_secrets 与 has_destructive_payload 两个 Noul 问题。

Jev 负责
判断 diff 是否像是包含凭据或破坏性载荷,并返回概率。
代码负责
读取 diff、应用 0.55/0.80 阈值、安装 hook、输出警告并在异常时 fail closed。
不能推出
本站没有运行二进制;README 的约 80ms 与体积数字不是独立基准。

原始仓库不可访问时,还能检查什么?

2026-10-24 复查时,原始仓库的固定 README 和 main.rs 均返回 404。上文保留的是历史版本说明,不能据此判断当前维护或运行状态。下面是本站独立编写的 Git 报告实验,不是 Rust jev-git 的复现,也不验证它的两项 Noul 或性能数字。

比较两种责任划分

历史项目用 Noul 辅助判断凭据和破坏性载荷;本站示例先在本地拦截敏感路径和常见凭据格式,再对允许的 diff 提出改动类别、风险等级和人工复核三个不同问题。第一层解决“是否允许发送”,第二层才处理语义建议。正则不能证明不存在秘密,真实上传前仍需检查数据。

四个反例验证应用行为

这份实验注入合成响应,检查有效建议、缺少密钥、敏感文件和不完整响应。四种情况都不能授权合并;blocking 模式均返回 1。报告模式的退出码 0 只表示报告步骤完成,不表示代码安全。

// This site's advisory Git lab, not the upstream Rust jev-git binary.
// Node 20+. Synthetic responses only; no key, network request or Git write.
import assert from 'node:assert/strict';
import { reviewDiff, exitCode } from './jev-pr-review.mjs';

const answers = {
  change_type: { type: 'choice', choice: 'fix', confidence: 0.8 },
  risk: { type: 'score', score: 1 },
  needs_human_review: { type: 'noul', noul: 0.6 },
};
const input = { names: 'M\0src/app.js\0', patch: '+return true;', apiKey: 'offline-only' };
const response = async () => ({ ok: true, json: async () => ({ answers }) });
const noUpload = async () => { throw new Error('Must not send this input'); };
const cases = [
  ['valid suggestion', await reviewDiff({ ...input, fetchImpl: response }), 'report_only'],
  ['missing key', await reviewDiff({ ...input, apiKey: '', fetchImpl: noUpload }), 'missing_credentials'],
  ['sensitive file', await reviewDiff({ ...input, names: 'M\0.env\0', fetchImpl: noUpload }), 'sensitive_input'],
  ['incomplete response', await reviewDiff({ ...input, fetchImpl: async () => ({ ok: true, json: async () => ({ answers: {} }) }) }), 'invalid_response'],
];
for (const [name, result, expected] of cases) {
  assert.equal(result.status, expected);
  assert.equal(exitCode(result, 'blocking'), 1);
  console.log(`${name}: ${result.status}; blocking exit=1`);
}
console.log('OFFLINE FIXTURES: four application checks passed; no upstream binary or model-quality test.');

下载本站报告实现 · 下载四案例实验

node jev-git-offline.mjs

将两个文件放在同一目录,使用 Node 20+ 运行。预期输出四条状态,末行以 OFFLINE FIXTURES 开头。它不读取仓库、不写 Git、不请求服务,也不建立模型准确率结论。

继续看 Git 工作流:输入、报告与人工门禁 →