JevDo
The model is a tool now.
以 Jev 为调度核心的新一代 harness 架构。
Action 沉淀经验 · Jev 决定下一步 · 大模型只是选项之一
Just Jev it.
简体中文 · English
使用场景 · 快速开始 · 工作方式 · 实验结果 · 贡献指南
会做的事,为什么还要再想一遍? 第十次打开同一个项目,它还在读配置、找脚本、拼命令,把上周已经走通的路再想一遍。JevDo 在调用大模型之前,先让 Jev 判断:这件事,是不是已经会了?已有操作能处理,就直接调度执行;遇到新问题,再交给主模型。主模型把值得复用的做法保存为 Action,经过验证,留给下一次会话。
接力长什么样
三个使用示例,假设项目已保存并验证了对应的 Action。
① 日常修 bug
“启动后台,修掉订单列表的分页 bug,跑完单测和构建再交给我。”
Jev 启动依赖与服务,检查就绪 [start-admin-backend]
↓
主模型 读 issue,定位并修复分页逻辑
↓
Jev 跑单测、构建,核对退出码与产物 [test-and-build]
↓
主模型 说明修改与验证结果
② CI 红了
“CI 的 lint 又挂了,本地复现修一下,确认能过。”
Jev 准备依赖,按 CI 配置复现 lint [repro-ci-lint]
↓
主模型 根据报错修改代码
↓
Jev 重跑 lint,再执行提交前检查 [verify-before-push]
↓
主模型 解释改动,给出 commit message
③ 准备发版
“走一遍发版流程:版本号、changelog、tag、构建产物。”
Jev 跑全量回归,检查发版条件 [regression-gate]
↓
主模型 读合并记录,更新版本号与 CHANGELOG
↓
Jev 按项目脚本打 tag、构建、校验产物 [cut-release]
↓
主模型 整理 release notes
Jev 调度重复操作,主模型处理新问题。 启动 → 代码修改 → 测试构建的完整交接已在实验中跑通。如果请求只是“启动项目”或“跑一遍回归”,已有 Action 能覆盖全部工作且满足完成条件时,Jev 可以独立完成,全程零次主模型调用。
一轮是怎么走的
- Jev:决定下一步。读取与主模型相同的已组装会话和工具历史,选择 Action、请求主模型、澄清或结束本次请求。
- Action:留下怎么做。命令或脚本,连同用途、项目绑定和验收方式,跨会话保留;简单操作直接保存命令,复杂行为更适合脚本。
- 主模型:解决新问题,积累新操作。写代码、做推理、处理异常,也在任务中主动维护 Action 库。
基于 DeepSeek Harness,早期版本优先支持 DSH 0.2.0-rc.1 的 headless 使用。包名和工具前缀保留
jevaction。主模型参与后,由它完成最终答复。
flowchart LR
U["任务与会话历史"] --> J{"Jev"}
J -->|已有 Action| A["Harness 执行与验收"]
J -->|新问题 / 异常| M["主模型"]
A --> H["结果回到共同历史"]
M -->|工具调用与结果| H
H --> J
M -.->|保存并验证| K[("Action 库")]
K -.->|候选操作| J
classDef judge fill:#ede8ff,stroke:#9b8deb,color:#302653
classDef model fill:#eef3ff,stroke:#5171ae,color:#162b50
class J judge
class M model
Jev 选择,代码执行。它只能选择当前可用的操作和参数,实际命令仍经过宿主工具权限与验收。实现发生变化、执行失败,或没有合适的操作时,工作交回主模型。
Action 怎么留下来
第一次,主模型读取项目,找到可复用的命令或脚本,通过 jevaction_create 保存用途、项目绑定和验收方式,再用 jevaction_validate 验证并激活。它会主动考虑保存稳定的开发操作,也遵守用户“不保存”的要求。
下一次,Jev 根据当前请求选择 Action 和项目,Harness 补全已保存的执行参数,运行并验收。操作成功不等于整个任务结束:还需要分析、修改或解释,就继续调用主模型。
同一个构建 Action 可以绑定不同项目的命令。实现脚本变化后,旧版本需要复核;测试针对的源码、报表读取的数据变化,则由验收检查当前结果。完整规则见 Action 规格 与 使用场景。
实测
在三个常见开发场景——项目启动、项目测试与构建、本地发布——中,对比 JevDo 与原生 DSH Loop。所有组获得相同现成脚本,原实验 Action 库从空开始;原生 DSH Loop 每项测一次,JevDo 每轮新会话、相同输入并保留操作库。
| 每组 3 个任务 | 原生 Loop | JevDo 第 1 轮(积累) | 第 2 轮 | 第 3 轮 |
|---|---|---|---|---|
| 验收成功 | 3/3 | 3/3 | 3/3 | 3/3 |
| 主模型调用 | 24 | 22 | 0 | 0 |
| 无需主模型的任务 | 0/3 | 0/3 | 3/3 | 3/3 |
| Jev 调用 | 0 | 56 | 20 | 15 |
| 平均耗时 | 10.06 s | 19.36 s | 3.61 s | 3.17 s |
| 估算费用(含 Jev) | ¥0.2245 | ¥0.6065 | ¥0.0828 | ¥0.0587 |
| 相对原生的费用降低 | — | — | 63.14% | 73.86% |
表中为自主保存组。后两轮均无需主模型,平均估算费用比原生同任务降低 68.50%。 降幅仅指复用阶段;包含首次积累的三轮合计 ¥0.7480,仍比原生单轮乘三的外推参考高 11.04%。费用包含 Jev,沿用固定费率,非实际账单。
这是原实验的事后三任务子集统计,没有重跑或改写原始数据;小样本一次采样,非公开基准成绩。原四任务的 31 → 8 次、约 74% 调用降幅及回滚记录保留在历史报告中。最终三任务结果 · 费用拆解 · 原四任务报告 · 原始轨迹
快速开始
需要 Node.js 24.14+。先运行不需要 API 密钥的跨会话复用演示:
git clone https://github.com/yinhong-zhou/jevdo.git
cd jevdo
npm ci
npm run demo
接入真实 Jev 与主模型,或替换自己的 DSH 默认 Loop,见 安装与配置。插件提供 Loop、Action 工具和维护提示;实际执行继续使用宿主工具。
文档与开发
配置与实现参考 · Action 规格 · 使用场景 · 反馈问题
欢迎提交 Action 示例、复现用例、Loop 修复与文档改进。开发约定与上游协作方式见 贡献指南。
npm run check
npm test
npm run build
当前可学习操作以固定命令和项目绑定为主,任意自由参数、完整 Web UI 和多 Agent 组合兼容性不在已验证范围内。核心入口见 src/dsh/index.ts,完整实现边界见 参考文档。
来源与协议
MIT。感谢 DeepSeek Harness 的作者与贡献者提供插件与 Agent 运行底座。本项目适配了其官方 Loop 生命周期代码,原版权与来源保留在 第三方声明 和 适配代码。
No comments yet. Be the first to write one.