DSH Hub

yinhong-zhou/jevdo

jevaction

BundleWorkflow28 GitHub stars· updated 2026-10-03

Just Jev it. A Jev-first agent loop with reusable actions for DeepSeek Harness.

Install

npx @deepseek-ai/dsh plugin --profile web add github:yinhong-zhou/jevdo

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

jevaction DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/jevdo.svg)](https://dshhub.dev/plugins/jevdo)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from yinhong-zhou/jevdo, cleaned of badges and images.

<h1 align="center">JevDo</h1> <p align="center"><strong>The model is a tool now.</strong></p> 以 Jev 为调度核心的新一代 harness 架构。<br> Action 沉淀经验 · Jev 决定下一步 · 大模型只是选项之一 <p align="center"><em>Just Jev it.</em></p>

<b>简体中文</b> · <a href="README.en.md">English</a> <a href="#接力长什么样">使用场景</a> · <a href="#快速开始">快速开始</a> · <a href="#一轮是怎么走的">工作方式</a> · <a href="#实测">实验结果</a> · <a href="CONTRIBUTING.md">贡献指南</a>

会做的事,为什么还要再想一遍? 第十次打开同一个项目,它还在读配置、找脚本、拼命令,把上周已经走通的路再想一遍。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 个任务原生 LoopJevDo 第 1 轮(积累)第 2 轮第 3 轮
验收成功3/33/33/33/3
主模型调用242200
无需主模型的任务0/30/33/33/3
Jev 调用0562015
平均耗时10.06 s19.36 s3.61 s3.17 s
估算费用(含 Jev)¥0.2245¥0.6065¥0.0828¥0.0587
相对原生的费用降低——63.14%73.86%

表中为自主保存组。后两轮均无需主模型,平均估算费用比原生同任务降低 68.50%。 降幅仅指复用阶段;包含首次积累的三轮合计 ¥0.7480,仍比原生单轮乘三的外推参考高 11.04%。费用包含 Jev,沿用固定费率,非实际账单。

…

Related plugins