开发者生态
morning
Jev 实践:类型化决策、限定权限
摘要
Tenuo Engineering · September 21, 2026 Jev in practice: typed decisions, scoped authority Building safe agent delegation with Jev, LangGraph, and Tenuo TL;DR: safe-upgrade is a dependency upgrade agen...
the
and
Jev
repository
Tenuo
decisions
agent
LangGraph
that
with
2026-09-24
1 阅读
约7分钟阅读
niyikiza
字号:
Tenuo Engineering · 2026 年 9 月 21 日 Jev 实践:类型化决策、范围权限 使用 Jev、LangGraph 和 Tenuo 构建安全代理委托 TL;DR:safe-upgrade 是基于 Jev、LangGraph 和 Tenuo 构建的依赖项升级代理。 Jev 将存储库证据转化为类型化的概率决策。 LangGraph 通过持久的工作流程来执行这些决策。 Tenuo 为每个结果行动提供任务范围内的授权。设计规则:判断、控制流和权限分开。我们从一个构建者的问题开始:当 Jev、LangGraph 和 Tenuo 分别处理系统的不同部分时,有用的工作流程是什么样的?依赖关系升级为我们提供了一种实用的方法来回答这个问题,因为正如存储库维护人员很快了解到的那样,明显的机械过程可能隐藏困难的兼容性问题。您更改版本、安装包、运行测试并打开拉取请求,但该版本可能删除了存储库调用的 API、更改了模块格式或更改了现有套件未执行的行为。安装和 CI 可以成功,而应用程序仍然损坏。有用的升级代理必须解释发布证据,将其与不熟悉的存储库关联起来,决定需要做什么工作,更改代码,并确定结果是正确的。它还可以访问源文件、包安装、测试命令、Git,有时还可以访问远程存储库。这种组合让我们可以研究代理开发的两个方面:从混乱的环境中做出有用的决策并控制随后的操作。首先决定程序可以使用 Jev 是我们的起点,因为依赖项升级包含普通规则处理不好的语义问题:此发行说明是否会影响此存储库使用包的方式?现有的测试会检测到报告的中断吗?目前哪个符合条件的步骤可以最大程度地降低风险?最终补丁是否解决了每个迁移问题? Jev 是一种用于软件内部决策的系统一模型,开发人员在其中提供状态和键入的问题。对于 Choice ,开发人员定义可用选项,Jev 返回所选选项、概率分布以及程序可用于路由的置信度。在 safe-upgrade 中,确定性代码首先计算合格的操作以及每个操作的原因。然后,生产适配器进行此 TypeSafe SDK 调用: import { choice , TypeSafeClient } from " @typesafe-ai/sdk " ; const client = new TypeSafeClient(); const 标准 = 对象 . fromEntries ( input .符合条件的Actions .map (({ 操作 , 原因 }) => [ 操作 , 原因 ]), ); const 结果 = 等待客户端。 systemOne ({ state : JSON . parse ( JSON . stringify ( input )), questions : { next : choice ( " 选择最直接降低本次升级中未解决的 " + " 风险的合格操作。每个选项都已被允许;选择 " + " 最有用的一个。 " , criteria , ), }, });常量答案=结果。答案。下一个 ;实际的 Choice 响应具有这种类型的形状。下面的值说明了添加回归测试是最强下一步的运行: { "type" : "choice" , "choice" : "author_tests" , "confidence" : 0.82 , "probabilities" : { "author_tests" : 0.74 , "assess_verification" : 0.18 , "implement" : 0.08 } } 路由器验证针对原始候选者选择标签,并使用普通 TypeScript 中的置信度: const choice = validateRouteChoice({ action : answer . choice ,confidence : answer .confidence , probabilities :answer . probabilities , }, EligibleActions .map (({ action }) => action ), );常量选择=选择。置信度 >= 置信度阈值 ?选择:确定性Fallback(输入); const 工人 = ACTION_WORKER [ 已选择。行动 ]; Jev 在这里特别有用,因为丰富的存储库状态可以保持丰富,而结果作为小型类型决策进入图表。置信度低、响应格式错误或传输失败会通过确定性路线发送工作流。候选集在请求之前建立,运行时随后再次验证返回的选择。从 Jev 的决定到 Tenuo 授权 Jev 的回应以选定的行动和信心结束。当受信任的路由代码将该操作映射到已知的工作人员时,执行开始。这就产生了下一个架构问题:该工作人员应该为此调用获得什么权限?对于author_tests,答案是存储库读取工具、测试文件写入和测试执行。在生产中,Tenuo 使用明确信任的发行者公钥进行初始化,然后导入外部发行的运行授权及其所有权证明持有者密钥。摘录从导入步骤开始。本地演示使用开发根目录并在命令输出中识别该模式。工作人员收到一个短暂的终端会话,该会话从运行的父授权中缩小: constparentSession = tenuo 。 sessionFromWire ({ 保证: 进程 .env . TENUO_RUN_WARRANT
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱