harness enigneering-任务入口窗口-随笔

2026-04-29 09:592阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

意义:搭建跟自身项目有关的垂直环境。常用的codex,cc等其实本身有通用harness 内核,但我们仍需根据自己的工作场景在此基础上搭建垂直场景的harness 框架,以便于agent能更好完成目标(其实就相当于给一个公司制定工作流程和员工守则)。(4.25 01:38 兴致勃勃)

记录一下第一个最主要的关口:任务入口/窗口

意义:把人类的自然语言转换成agent可执行的完整清单。变成结构化对象json文件。

核心任务:分析界定任务内容,具体可为以下几点:

(1)用户想做什么(intent classification)

(2)任务对象是什么(object)

(3)允许做什么(boundary)

(4)需要读取哪些上下文(context)

(5)要做的事情是否安全,是否有风险(risk)

(6)根据风险等级评估结果是否让人介入审批(approval)

(7)怎么验证结果(validation)

(8)最后展现什么结果,产品(deliverable)

具体分析:

1.intent

agent其实不懂到底人类到底什么意思,它更倾向于用户的请求应该进入哪一条链,哪种工作流。

因此,intent其实就像路由标签和索引一样。可随时认定和引用。

用户请求—intent分类— 选择工作链

因此必须构建完整的intent taxonomy。并且在真实场景中,intent应该分类分层设计,可以从垂直场景的不同状态划分intent类别,也可以分层控制从大类到过程到动作手段。

但如果intent taxonomy过于精细繁重就会导致无法识别,相互影响。所以要研究怎么识别intent taxonomy的方法。

方法有以下几类:

(1)自定义规则分类。直接设定捕捉具体字段,形式之类,简单方便,但复杂度上升梯度大,而且对复杂语义和意会都无法识别。

(2)利用llm结构化分类。就是利用模型帮你识别语义,但还要设定schema规范输出格式(无限套娃,一层层界定)。

(3)对以上两种混合使用。简单意义规则分类,复杂的借助llm,当然,也可以用混杂一些embedding检索,小的模型分析这些,都可以混,最后打分,靠置信度评价给出结果,或者融合结果。

根据这个我们可以获得一个结构化输出结果

分析的意图,置信度,关键词,什么分类器认证的等等所有信息,这样我们就可以完成认证标注了。

除此之外,intent classification应该能识别多意图的能力,因为人往往会提出多个要求,并且任务之间存在先后顺序。可以通过连接词识别,多词态分析比如存在多动词多名词等方式来识别,识别后进行语段切割,子任务切割,主次区分。

此外,审查和澄清也相当重要,由于harness本身要求全流程连贯,提高使用效率。所以agent应该减少和用户交互过程。因此,只应该允许置信度低,intent冲突,high risk,缺少object或者无法明确时,这种应该及时反馈交付用户审查。

另外intent模块也可以自己装配测试集,完成自我验证,增强可信度。

总结一下,intent classification的内容

1.先定义 intent taxonomy

  1. 用规则识别明显任务

  2. 用 LLM 处理复杂语义

  3. 用 Pydantic 或 JSON Schema 固定输出

  4. 支持多 intent 拆分

  5. 保留 evidence 和 confidence

  6. 低置信度或高风险时触发澄清

  7. 用测试集评估分类效果

最终通过intent classification你可以把用户请求定义到正确的workflow工作链上。

2.object

意义:明确任务作用对象。

比如帮我切个西瓜,西瓜要切成方的,越小越好。

这个就有很多对象,作用对象:西瓜,形状对象:方形,指标对象:大小

agent在得到intent后,应该能具备立刻明确具体操作对象的能力。

如果他不具备这个能力,他就会不知道切什么水果。乱切成芒果,大小形状也无法控制。

在具体的应用场景,object可以分为很多种,目标对象,文件路径对象,环境领域对象,指标对象,数据对象,想调用的工具,禁止更改对象等等,看需求添加。

因此,我们又可以针对这个得到一个结构化输出。

那怎么识别对象呢,跟intent一样,还是规则定义,形式匹配,llm识别。

除此之外还有一个要求就是可以对所提对象之间完成索引锁定,我可以直接明确你说的这个对象在哪个文件定义的,我要找到这种映射关系。这个也是通过文件名匹配,关键词搜索,ast解析类名函数名,embedding检索等等方法完成映射锁定,还是一样的套路。

object还有一个很重要的,就是他能迅速锁定boundary对象,是否有risk,要加载哪些相关的context。

当然,这里提醒一下,无论是intent还是object,用户输入的语义正确很重要,如果用户无法准确输入需求,就很容易导致执行错位,比如你说优化一下,它很难分辨是要从正确率上还是速度还是大小上,因此正确表述需求才能更好的使用ai(文科生的价值也许超乎想象)。

总结一下:

  1. 领域词典匹配

  2. 正则/模式匹配

  3. LLM 结构化抽取

  4. 同义词标准化

  5. 仓库索引

  6. ripgrep 搜索

  7. AST / tree-sitter 符号索引

  8. object → file 映射

object这一步就是在完成锁定操作对象。

3.boundary

agent边界控制。就像人一样,agent也要有自己的边界感,在做事情的时候,什么事能做什么事不能做,什么东西能碰什么不能碰,这个应该明确。boundary可以有效限制agent乱改,越权,污染文件。

当object输出后,boundary应该能根据对象立刻调出以下几点:可动文件或路径,不可动文件或路径,允许与不允许的操作,需要索取approval的操作等等。

就相当于一个目标优化问题求解,pso之类,我先给你锁定一个你可以跑的多维空间,然后你必须在这个空间里面自己寻优,操作。

之外,boundary应该贯穿整个状态:

执行前:决定哪些文件和工具可用

执行中:拦截危险动作

执行后:用 git diff 检查是否越界

boundary在每次运行中应该能接受以下信息,已确定可执行边界。

(1)intent 结果

(2)object结果

(3)项目规则,预案规则(一般用md,yaml之类写好)

(4)git differ返还结果(未提交/已提交)

(5)用户提示词(自主提高优先级)

boundary最后也会生成一个结构化输出,包括之前提到的允许/不允许操作、工具、功能、可改大小,时间限制等

boundary应该能根据不同的输入形成不同的规则模版,并且可以不断迭代更新自身规则,然后生成新边界,当然规则之间直接应有优先级,避免覆盖,遗忘等现象。

总结:

Policy 规则文件

  • 路径白名单/黑名单

  • 动作权限

  • 工具权限

  • 命令拦截

  • 网络限制

  • 资源限制

  • 执行后 git diff 审计

有效的boundary应做到识别它能碰什么;不能碰什么;碰之前要不要问你;碰完后怎么检查有没有越界。

4.context

context回答的是Agent 在操作之前,要看什么资料,哪些即刻看,哪些一会看

context需要根据前面得到的 Intent + Object + Boundary 转成一组具体上下文包。

Intent 决定上下文类型

Object 决定相关文件

Boundary 决定可访问范围

例如,intent分类到画图,object指向风景图,这时候context应该能加载绘图脚本,格式规范,可用简易图标等等。

常用context:

  1. User Context用户上下文

  2. Task Context 任务上下文

  3. Conversation Context 对话上下文

  4. Product Context 垂直领域上下文

  5. Environment Context 环境上下文

  6. Tool Context工具上下文

  7. Memory Context 记忆上下文

  8. Policy / Constraint Context 约束上下文

context输出步骤

  1. 加载基础规则上下文

  2. 根据 Intent 选择上下文模板

  3. 根据 Object 找相关文件

  4. 根据 Boundary 排除禁止上下文

  5. 根据优先级和 token 预算排序

  6. 生成 ContextPlan

同时,上下文不是越多越好,很多人认为上下文多就可以懂得多,分析更全,实际因为关键信息被稀释,过期信息污染判断,模型注意力分散等等,agent会变笨,因此设计Context原则应该是足量不过量。

当上下文量达到一定程度的时候,context必须进行压缩,形成信息或结构摘要,片段检索,滑动窗口记录,或切片选择top5chunk来进行必要压缩,保留主要信息。

上下文检索一般依赖Repo Index ,就像提前画个地图。比如你想找一个淘宝上的的商品,如果没有索引,你要找半天都找不到,有了索引,你就可以直接链接转过去,这样 AI 不用凭感觉找文件,而是能先定位大概位置。

(4.25 05:32力竭了,不想写了,一晚上没睡觉,有时间继续)

除此之外,context还需要给资料排优先级,它必须在巨量的可读上下文中让agent能按必要性读到最需要注意的资料。

上下文不是不变的,上下文应该是实时根据内部文件调整变化的,比如git diff,测试结果修正后,上下文会随之调整。

核心要点:

  1. Context 由 Intent、Object、Boundary 共同决定。

  2. 不是越多越好,而是越相关越好。

  3. 项目规则优先,任务材料其次,动态反馈持续更新。

  4. 读上下文也要遵守边界。

  5. 大文件要摘要,小问题要局部片段。

  6. 旧信息要降权,新日志和当前 diff 要升权。

  7. 每个上下文都要有来源、目的和优先级。

  8. 工具执行结果要回流成新上下文。

因此,context的主要任务是完成在构建思维链之前的相关信息注入。

(我觉得整个任务入口层有点像想达到world model的效果,当然世界模型是直接形成因果链,这个是要通过人工构建一个因果反馈链?)

5.risk

意义:按上述结构输出的目标做,是否存在风险,是否要经过用户审批核验。如何把风险构建成成可计算的等级,以实现拦截,审查等功能。

比如一个界面,如果你说给这个前端界面换一个颜色,agent会直接执行,但如果你要更改这个前端界面对应的功能,那大概率agent要对你询问确定了。因为你会修正破坏代码和业务功能。

risk靠什么判断呢

Intent:任务类型

Object:作用对象

Boundary:允许和禁止范围

Context:项目规则和当前状态

Repo State:git 状态、当前分支、未提交修改

User Constraint:用户临时要求

Tool Plan:Agent 可能调用的工具

这些汇总起来就是你的输入来源,agent会把这个结果分为低中高多档,把不影响项目的放过,死守严重影响项目核心的任务和操作。

主要风险有intent ,object,action ,state几类,前三个比较好理解,第四个一般会因为工作区未提交修改,环境空间不足,无备份,正修正主链条等原因提升当前状态风险。这四个应该是不同的四个正交纬度,一旦哪个纬度到极高风险,应直接跳闸,交付用户审查。或者在高风险的时候是否要引入其他缓解策略,并在完成后进行自检。

实际场景下,agent应该重点检测部分任务字段,比如删除,清理,修改,密钥,权限等敏感字样以安全评估。

常规risk输出应做到以下:

risk level:危险等级

risk reasons:为什么危险

approval mode:能不能直接做

mitigation steps:做之前怎么降低风险

validation strength:做完后怎么证明没出问题

6.approval

前文risk已经评估了这个任务有多危险,要怎么缓解回测,approval要解决的是,就是根据这个结果,考虑是否要直接执行或向用户请求审批或者提权,提权要提多少,是否要一步步确认。

因此approval需要设置几档开关,

1.auto直接执行对于低风险

2.auto with diff 执行但要审查输出git differ结果对于中风险

3.ask before edit高风险必须在修正前询问。

4.manual approval,极高风险每步都审批

5.blocked,直接拒绝(比如?把你设置的api密钥整个泄漏出去?)

approval还有一个关键功能就是可以设置gate,设置门禁,每次调用的时候或者动作的时候都得过门禁看看批准与否。另外approval应该有限定,比如只是这一步同意,只是这个session同意,只是这个task同意。不能同意一次一直开发权限。

另外approval最好记录日志随时可以查阅反思。

总结一下approval功能:

根据风险等级、边界规则和当前状态,

决定 Agent 哪些动作可以自动执行,

哪些动作需要确认,

哪些动作必须禁止,

并记录所有授权过程。

7.validation

意义:在完成任务的时候怎么判断agent是否做对了

validation主要完成六类检验:

boundary validation边界检验

syntax vali语法检验

test vali测试检验(做个smoke test?)

behavior vali行为检测(接口能通吗?)

metric vali指标检测

output vali成品检验,成品?格式?

但每个都六类检测太浪费资源了,所以我们可以通过risk判断的需要验证的强度,来思考到底要几维验证,越高越全。

vali流程如下:

  1. 读取 TaskSpec

  2. 根据 Intent 生成基础验证项

  3. 根据 Risk 增加验证强度

  4. 根据 Boundary 增加越界检查

  5. 根据用户目标增加成功标准检查

  6. 执行每个 check

  7. 收集证据

  8. 生成 ValidationReport

  9. 决定 passed / failed / needs_review

Validation 模块的本质是拿证据说话!

8.deliverable

交付模块,意义:回答要交付什么,什么格式。

交付物应该完成

  1. 根据 Intent 选择交付模板

  2. 根据 Risk 增加风险说明和证据要求

  3. 根据 ValidationReport 填入检查结果

  4. 根据 ExecutionLog 填入命令和操作

  5. 根据 GitDiff 填入 changed files 和 diff summary

  6. 根据用户要求加入指定产物

  7. 生成最终报告

Deliverable 模块用于将 Agent 执行过程中的结构化信息汇总为标准化交付结果。其输入通常包括 TaskSpec、RiskSpec、ValidationReport、执行日志、工具调用记录、生成文件路径和 git diff 摘要;输出则是面向用户或下游系统的 TaskDeliverable,用于记录任务结果、证据链和最终状态。
从实现上看,Deliverable 通常由模板驱动生成。系统根据 intent 选择基础交付模板,根据 risk_level 增加风险说明、审计信息或回滚建议,再根据 ValidationReport 填充验证结果。如果验证失败,Deliverable 不应输出“完成”,而应标记为 failed_validation 或 needs_review,并附带失败检查项和修复建议。(4.25 08:35马上到站了,写不动了,最后这部分直接oai搜索总结了一下)

不写了,本来是做火车来找对象的,订的硬座睡不着,所以随笔记录一下。

里面都是自己借助ai学习,尝试的一些理解,可能大错特错,哈哈哈。

网友解答:
--【壹】--:

感谢佬友的分享,写的非常详细,涨知识了!


--【贰】--:

非常感谢佬友分享,值得细细品读,再次感谢!

问题描述:

意义:搭建跟自身项目有关的垂直环境。常用的codex,cc等其实本身有通用harness 内核,但我们仍需根据自己的工作场景在此基础上搭建垂直场景的harness 框架,以便于agent能更好完成目标(其实就相当于给一个公司制定工作流程和员工守则)。(4.25 01:38 兴致勃勃)

记录一下第一个最主要的关口:任务入口/窗口

意义:把人类的自然语言转换成agent可执行的完整清单。变成结构化对象json文件。

核心任务:分析界定任务内容,具体可为以下几点:

(1)用户想做什么(intent classification)

(2)任务对象是什么(object)

(3)允许做什么(boundary)

(4)需要读取哪些上下文(context)

(5)要做的事情是否安全,是否有风险(risk)

(6)根据风险等级评估结果是否让人介入审批(approval)

(7)怎么验证结果(validation)

(8)最后展现什么结果,产品(deliverable)

具体分析:

1.intent

agent其实不懂到底人类到底什么意思,它更倾向于用户的请求应该进入哪一条链,哪种工作流。

因此,intent其实就像路由标签和索引一样。可随时认定和引用。

用户请求—intent分类— 选择工作链

因此必须构建完整的intent taxonomy。并且在真实场景中,intent应该分类分层设计,可以从垂直场景的不同状态划分intent类别,也可以分层控制从大类到过程到动作手段。

但如果intent taxonomy过于精细繁重就会导致无法识别,相互影响。所以要研究怎么识别intent taxonomy的方法。

方法有以下几类:

(1)自定义规则分类。直接设定捕捉具体字段,形式之类,简单方便,但复杂度上升梯度大,而且对复杂语义和意会都无法识别。

(2)利用llm结构化分类。就是利用模型帮你识别语义,但还要设定schema规范输出格式(无限套娃,一层层界定)。

(3)对以上两种混合使用。简单意义规则分类,复杂的借助llm,当然,也可以用混杂一些embedding检索,小的模型分析这些,都可以混,最后打分,靠置信度评价给出结果,或者融合结果。

根据这个我们可以获得一个结构化输出结果

分析的意图,置信度,关键词,什么分类器认证的等等所有信息,这样我们就可以完成认证标注了。

除此之外,intent classification应该能识别多意图的能力,因为人往往会提出多个要求,并且任务之间存在先后顺序。可以通过连接词识别,多词态分析比如存在多动词多名词等方式来识别,识别后进行语段切割,子任务切割,主次区分。

此外,审查和澄清也相当重要,由于harness本身要求全流程连贯,提高使用效率。所以agent应该减少和用户交互过程。因此,只应该允许置信度低,intent冲突,high risk,缺少object或者无法明确时,这种应该及时反馈交付用户审查。

另外intent模块也可以自己装配测试集,完成自我验证,增强可信度。

总结一下,intent classification的内容

1.先定义 intent taxonomy

  1. 用规则识别明显任务

  2. 用 LLM 处理复杂语义

  3. 用 Pydantic 或 JSON Schema 固定输出

  4. 支持多 intent 拆分

  5. 保留 evidence 和 confidence

  6. 低置信度或高风险时触发澄清

  7. 用测试集评估分类效果

最终通过intent classification你可以把用户请求定义到正确的workflow工作链上。

2.object

意义:明确任务作用对象。

比如帮我切个西瓜,西瓜要切成方的,越小越好。

这个就有很多对象,作用对象:西瓜,形状对象:方形,指标对象:大小

agent在得到intent后,应该能具备立刻明确具体操作对象的能力。

如果他不具备这个能力,他就会不知道切什么水果。乱切成芒果,大小形状也无法控制。

在具体的应用场景,object可以分为很多种,目标对象,文件路径对象,环境领域对象,指标对象,数据对象,想调用的工具,禁止更改对象等等,看需求添加。

因此,我们又可以针对这个得到一个结构化输出。

那怎么识别对象呢,跟intent一样,还是规则定义,形式匹配,llm识别。

除此之外还有一个要求就是可以对所提对象之间完成索引锁定,我可以直接明确你说的这个对象在哪个文件定义的,我要找到这种映射关系。这个也是通过文件名匹配,关键词搜索,ast解析类名函数名,embedding检索等等方法完成映射锁定,还是一样的套路。

object还有一个很重要的,就是他能迅速锁定boundary对象,是否有risk,要加载哪些相关的context。

当然,这里提醒一下,无论是intent还是object,用户输入的语义正确很重要,如果用户无法准确输入需求,就很容易导致执行错位,比如你说优化一下,它很难分辨是要从正确率上还是速度还是大小上,因此正确表述需求才能更好的使用ai(文科生的价值也许超乎想象)。

总结一下:

  1. 领域词典匹配

  2. 正则/模式匹配

  3. LLM 结构化抽取

  4. 同义词标准化

  5. 仓库索引

  6. ripgrep 搜索

  7. AST / tree-sitter 符号索引

  8. object → file 映射

object这一步就是在完成锁定操作对象。

3.boundary

agent边界控制。就像人一样,agent也要有自己的边界感,在做事情的时候,什么事能做什么事不能做,什么东西能碰什么不能碰,这个应该明确。boundary可以有效限制agent乱改,越权,污染文件。

当object输出后,boundary应该能根据对象立刻调出以下几点:可动文件或路径,不可动文件或路径,允许与不允许的操作,需要索取approval的操作等等。

就相当于一个目标优化问题求解,pso之类,我先给你锁定一个你可以跑的多维空间,然后你必须在这个空间里面自己寻优,操作。

之外,boundary应该贯穿整个状态:

执行前:决定哪些文件和工具可用

执行中:拦截危险动作

执行后:用 git diff 检查是否越界

boundary在每次运行中应该能接受以下信息,已确定可执行边界。

(1)intent 结果

(2)object结果

(3)项目规则,预案规则(一般用md,yaml之类写好)

(4)git differ返还结果(未提交/已提交)

(5)用户提示词(自主提高优先级)

boundary最后也会生成一个结构化输出,包括之前提到的允许/不允许操作、工具、功能、可改大小,时间限制等

boundary应该能根据不同的输入形成不同的规则模版,并且可以不断迭代更新自身规则,然后生成新边界,当然规则之间直接应有优先级,避免覆盖,遗忘等现象。

总结:

Policy 规则文件

  • 路径白名单/黑名单

  • 动作权限

  • 工具权限

  • 命令拦截

  • 网络限制

  • 资源限制

  • 执行后 git diff 审计

有效的boundary应做到识别它能碰什么;不能碰什么;碰之前要不要问你;碰完后怎么检查有没有越界。

4.context

context回答的是Agent 在操作之前,要看什么资料,哪些即刻看,哪些一会看

context需要根据前面得到的 Intent + Object + Boundary 转成一组具体上下文包。

Intent 决定上下文类型

Object 决定相关文件

Boundary 决定可访问范围

例如,intent分类到画图,object指向风景图,这时候context应该能加载绘图脚本,格式规范,可用简易图标等等。

常用context:

  1. User Context用户上下文

  2. Task Context 任务上下文

  3. Conversation Context 对话上下文

  4. Product Context 垂直领域上下文

  5. Environment Context 环境上下文

  6. Tool Context工具上下文

  7. Memory Context 记忆上下文

  8. Policy / Constraint Context 约束上下文

context输出步骤

  1. 加载基础规则上下文

  2. 根据 Intent 选择上下文模板

  3. 根据 Object 找相关文件

  4. 根据 Boundary 排除禁止上下文

  5. 根据优先级和 token 预算排序

  6. 生成 ContextPlan

同时,上下文不是越多越好,很多人认为上下文多就可以懂得多,分析更全,实际因为关键信息被稀释,过期信息污染判断,模型注意力分散等等,agent会变笨,因此设计Context原则应该是足量不过量。

当上下文量达到一定程度的时候,context必须进行压缩,形成信息或结构摘要,片段检索,滑动窗口记录,或切片选择top5chunk来进行必要压缩,保留主要信息。

上下文检索一般依赖Repo Index ,就像提前画个地图。比如你想找一个淘宝上的的商品,如果没有索引,你要找半天都找不到,有了索引,你就可以直接链接转过去,这样 AI 不用凭感觉找文件,而是能先定位大概位置。

(4.25 05:32力竭了,不想写了,一晚上没睡觉,有时间继续)

除此之外,context还需要给资料排优先级,它必须在巨量的可读上下文中让agent能按必要性读到最需要注意的资料。

上下文不是不变的,上下文应该是实时根据内部文件调整变化的,比如git diff,测试结果修正后,上下文会随之调整。

核心要点:

  1. Context 由 Intent、Object、Boundary 共同决定。

  2. 不是越多越好,而是越相关越好。

  3. 项目规则优先,任务材料其次,动态反馈持续更新。

  4. 读上下文也要遵守边界。

  5. 大文件要摘要,小问题要局部片段。

  6. 旧信息要降权,新日志和当前 diff 要升权。

  7. 每个上下文都要有来源、目的和优先级。

  8. 工具执行结果要回流成新上下文。

因此,context的主要任务是完成在构建思维链之前的相关信息注入。

(我觉得整个任务入口层有点像想达到world model的效果,当然世界模型是直接形成因果链,这个是要通过人工构建一个因果反馈链?)

5.risk

意义:按上述结构输出的目标做,是否存在风险,是否要经过用户审批核验。如何把风险构建成成可计算的等级,以实现拦截,审查等功能。

比如一个界面,如果你说给这个前端界面换一个颜色,agent会直接执行,但如果你要更改这个前端界面对应的功能,那大概率agent要对你询问确定了。因为你会修正破坏代码和业务功能。

risk靠什么判断呢

Intent:任务类型

Object:作用对象

Boundary:允许和禁止范围

Context:项目规则和当前状态

Repo State:git 状态、当前分支、未提交修改

User Constraint:用户临时要求

Tool Plan:Agent 可能调用的工具

这些汇总起来就是你的输入来源,agent会把这个结果分为低中高多档,把不影响项目的放过,死守严重影响项目核心的任务和操作。

主要风险有intent ,object,action ,state几类,前三个比较好理解,第四个一般会因为工作区未提交修改,环境空间不足,无备份,正修正主链条等原因提升当前状态风险。这四个应该是不同的四个正交纬度,一旦哪个纬度到极高风险,应直接跳闸,交付用户审查。或者在高风险的时候是否要引入其他缓解策略,并在完成后进行自检。

实际场景下,agent应该重点检测部分任务字段,比如删除,清理,修改,密钥,权限等敏感字样以安全评估。

常规risk输出应做到以下:

risk level:危险等级

risk reasons:为什么危险

approval mode:能不能直接做

mitigation steps:做之前怎么降低风险

validation strength:做完后怎么证明没出问题

6.approval

前文risk已经评估了这个任务有多危险,要怎么缓解回测,approval要解决的是,就是根据这个结果,考虑是否要直接执行或向用户请求审批或者提权,提权要提多少,是否要一步步确认。

因此approval需要设置几档开关,

1.auto直接执行对于低风险

2.auto with diff 执行但要审查输出git differ结果对于中风险

3.ask before edit高风险必须在修正前询问。

4.manual approval,极高风险每步都审批

5.blocked,直接拒绝(比如?把你设置的api密钥整个泄漏出去?)

approval还有一个关键功能就是可以设置gate,设置门禁,每次调用的时候或者动作的时候都得过门禁看看批准与否。另外approval应该有限定,比如只是这一步同意,只是这个session同意,只是这个task同意。不能同意一次一直开发权限。

另外approval最好记录日志随时可以查阅反思。

总结一下approval功能:

根据风险等级、边界规则和当前状态,

决定 Agent 哪些动作可以自动执行,

哪些动作需要确认,

哪些动作必须禁止,

并记录所有授权过程。

7.validation

意义:在完成任务的时候怎么判断agent是否做对了

validation主要完成六类检验:

boundary validation边界检验

syntax vali语法检验

test vali测试检验(做个smoke test?)

behavior vali行为检测(接口能通吗?)

metric vali指标检测

output vali成品检验,成品?格式?

但每个都六类检测太浪费资源了,所以我们可以通过risk判断的需要验证的强度,来思考到底要几维验证,越高越全。

vali流程如下:

  1. 读取 TaskSpec

  2. 根据 Intent 生成基础验证项

  3. 根据 Risk 增加验证强度

  4. 根据 Boundary 增加越界检查

  5. 根据用户目标增加成功标准检查

  6. 执行每个 check

  7. 收集证据

  8. 生成 ValidationReport

  9. 决定 passed / failed / needs_review

Validation 模块的本质是拿证据说话!

8.deliverable

交付模块,意义:回答要交付什么,什么格式。

交付物应该完成

  1. 根据 Intent 选择交付模板

  2. 根据 Risk 增加风险说明和证据要求

  3. 根据 ValidationReport 填入检查结果

  4. 根据 ExecutionLog 填入命令和操作

  5. 根据 GitDiff 填入 changed files 和 diff summary

  6. 根据用户要求加入指定产物

  7. 生成最终报告

Deliverable 模块用于将 Agent 执行过程中的结构化信息汇总为标准化交付结果。其输入通常包括 TaskSpec、RiskSpec、ValidationReport、执行日志、工具调用记录、生成文件路径和 git diff 摘要;输出则是面向用户或下游系统的 TaskDeliverable,用于记录任务结果、证据链和最终状态。
从实现上看,Deliverable 通常由模板驱动生成。系统根据 intent 选择基础交付模板,根据 risk_level 增加风险说明、审计信息或回滚建议,再根据 ValidationReport 填充验证结果。如果验证失败,Deliverable 不应输出“完成”,而应标记为 failed_validation 或 needs_review,并附带失败检查项和修复建议。(4.25 08:35马上到站了,写不动了,最后这部分直接oai搜索总结了一下)

不写了,本来是做火车来找对象的,订的硬座睡不着,所以随笔记录一下。

里面都是自己借助ai学习,尝试的一些理解,可能大错特错,哈哈哈。

网友解答:
--【壹】--:

感谢佬友的分享,写的非常详细,涨知识了!


--【贰】--:

非常感谢佬友分享,值得细细品读,再次感谢!