转写说明

本文基于已校验的公开原文进行结构化转写与事实梳理,非原文转载。 转写保留可核验的技术事实,并将工程建议与来源观点明确分开。

核心结论

Workrun 通过架构约束而非 Prompt 劝导实现 Agent 工作流的安全边界。该工具将工作流状态拆分为 Visible State 与 Raw State 两套视图,Prompt 只能访问脱敏后的可见状态,敏感数据仅在工具执行时通过受控绑定机制恢复。系统在输入端、工具调用端和输出端均部署了 Guardrails 硬规则,任何未经授权的数据访问都会被直接阻断而非静默放行。

能力机制

Scope State 数据隔离机制

Workrun 为每个节点分配独立的 State Namespace。节点输出默认私有,需显式配置才能对外暴露。敏感字段在工作流输入层通过 sensitiveFields 标记,被标记的字段自动转为占位符形式存在于 Visible State 中。

工作流存在三套状态视图:Raw State 保存原始输入仅存于内存;Visible State 用于 Agent Prompt、UI 和日志展示;节点私有 State 包含该节点产生的所有字段。配置 globalKeys 可将特定字段发布到全局可见范围,配置 readers 可授权下游节点访问本节点已发布的 State。

Tool State Binding 工具状态绑定

当 Agent 生成的参数值为占位符时,系统在工具执行前检查节点是否拥有对应 statePath 的 rawReaders 授权。若已授权,根据 AST 路径在 Raw State 中查找真实值并精准替换;若未授权,保持占位符并拒绝执行工具。绑定仅替换模型显式生成的参数路径,不会将整份 Raw State 注入请求。

Guardrails 边界硬规则

输入 Guardrail 在用户 Prompt 进入模型前进行扫描。常规 PII(邮箱、电话、IP、身份证号等)转换为脱敏占位符后放行;认证凭证(Bearer Token、sk- Key、GitHub/AWS Token、PEM 私钥)直接拒绝执行并报错。

输出 Guardrail 在工具结果写回 Agent 上下文、工作流日志及前端 UI 事件前介入,将敏感数据强制清洗为脱敏形式。流式输出场景下,需经过输出 Guardrail 的消息在 Rust 后端做 Chunk 汇聚缓存,待完整消息形成并脱敏后统一推送。

快速开始

工作流配置流程如下:

在工作流设置中添加输入字段,将 crmToken 标记为敏感字段,并在 Raw input readers 中仅授权需要原始值的节点。创建 Tool App 时配置输入参数与输出 Schema,工具代码使用 workrun_sdk.tool 装饰器。在节点 Inspector 中配置 State 访问权限:通过 globalKeys 发布需共享的字段,通过 sensitiveFields 强制脱敏特定字段,通过 rawReaders 授权 Raw State 访问。配置 Tool State Binding 将工具参数映射到 State 路径。

适用边界

该安全机制适用于需要严格数据隔离的 Multi-Agent 工作流。当不同节点对数据的可见范围有差异化需求时,Scope State 能够在架构层面强制执行隔离策略,避免依赖模型自身的指令遵循能力。

对于需要调用外部 API 且必须使用真实凭证的工具场景,Tool State Binding 提供了一种受控的数据恢复路径。凭证无需出现在 Prompt 中,工具执行时按需注入,降低了 Prompt 注入攻击的风险窗口。

核验清单

验证安全机制有效性需确认以下要点:

节点 Prompt 中敏感字段是否显示为占位符形式,而非明文。未配置 rawReaders 的节点在工具调用阶段是否收到拒绝执行错误。工具执行时是否能够获取到真实值(通过日志或调试输出确认)。输出 Guardrail 是否成功清洗工具返回结果中的敏感信息。流式输出场景下,单个 Chunk 是否无法匹配敏感数据正则。

来源与核验

  • 原始文章
  • 页面事实以原始来源及其引用的官方资料为准;版本、星标和模型能力会随时间变化。
  • AI Stack 不公开抓取到的全文快照,只发布独立转写与来源入口。

站内链接

相关文章