HelpMe JEV:判断链路与数据边界
JEV 只做 noul/choice/score 的结构化判断,LLM 负责翻译、草稿和图片描述;SQLite 按 owner 隔离,图片与记忆各有预算。
HelpMe JEV 是一个自托管的对话判断工具。JEV(TypeSafe System One)只回答结构化问题:noul 给是/否概率,choice 给选项概率,score 给等级;自然语言翻译、澄清、草稿和图片描述交给 LLM。最终是否发送由人决定。
一次分析
输入文本或截图,补充对象和场景。中文默认先翻译成英文,再交给 JEV。JEV 的返回由 _present 归一:noul >= 0.5 视为 yes,score 四舍五入,choice 按概率排序。
之后 LLM 可以澄清问题、生成候选回复。候选固定 3 条,再用一个 choice 问题排序。JEV 或翻译失败时 ranked=False,所有百分比为 0,但草稿仍然返回。JEV 健康检查是 5 个固定 smoke case,阈值 80;低于阈值时 UI 只允许 3 条排序。
运行形态
后端是 FastAPI,生产构建下同时服务 React 静态产物和 /api。JEV 与 LLM 都是 provider:配置协议、base URL、key 和 model;新 provider 通过连接测试后才启用。LLM 支持 OpenAI Chat Completions、OpenAI Responses、Anthropic Messages,图片交给标记为 supports_vision 的模型。
数据与预算
SQLite 使用 WAL,busy_timeout=5000;所有查询带 owner_user_id。provider key 存成 hmj1 的 HKDF/AES-GCM envelope。消息保留 15 天,session 8 小时,call log body 最多 64KiB。
图片限 4MiB、每条消息 9 张;不做 OCR,原始字节转 data URL 交给支持视觉的 LLM,描述最多 3 句。分析上下文取最近 10 条消息;背景预算 JEV_STATE_BUDGET_CHARS 默认 5000,硬上限 60000;persona 每行 1000 字符、最多 6 个 trait;memory 每行 240 字符;积压 20 条才总结,摘要最多 500 字符。
协议与边界
客户端只发 {state, model, questions}。choice 最多 255 个选项,score 2–10 个等级,noul 带 criteria.true/false。缺 answers 或返回非 JSON 直接 502,不做猜测。
这些概率是模型原样输出,不是校准后的偏好;noul 的 0.5 和 choice 的百分比都只是决策输入。JEV 不自动发送任何消息,也不替代人的判断。