会自己调工具的智能体,放权的边界要写清楚。本教程用 OpenAI Model Spec 的 scope of autonomy,带你配一份可审计、可中止的自主权契约。
给智能体写一份自主权契约:实操教程
这篇教程解决什么
目标:给你正在用的、会调用工具、会自己行动的智能体配一份「自主权契约」(scope of autonomy)。它要回答四件事——这个智能体能用哪些工具、到什么时间为止、最多花多少、受哪些约束。读完你会得到一份可复用的记录模板。
前提:你已经在使用某个支持工具调用的智能体或平台,例如 Claude Code、Dify、扣子 Coze 或 WorkBuddy。本文不绑定具体产品的 UI,步骤以「该写什么」为主,产品里的具体入口以官方文档为准。
不覆盖:各产品后台里点哪个按钮、填哪个表单——这类路径随版本变动,本文不替你记,遇到对不上的以官网当前版本为准。
开始前的准备
- 账号与额度:确认所用平台的 API 或产品在你的环境可用;境内可用性各异,以官网为准。
- 一份任务清单:你打算让智能体自主执行的动作列出来,越具体越好。
- 成本说明:多数平台按用量计费,是否提供免费档以官网为准;本教程不写具体价格。
- 一个心态前提:契约要可审计、可中止。写它的目的不是放手不管,而是让「放权」变得可控、可复盘。
本教程的方法框架来自 OpenAI 的 Model Spec(2026/10/29 版) 中「Act within an agreed-upon scope of autonomy」一节。
步骤详解
第 1 步:列出允许的工具与动作(allowed_tools)
把智能体能调用的工具显式列成白名单,而不是让它「什么都能调」。每一条都对应一个真实存在的工具或动作。看到什么算成功:你拿到一张清单,且每一项你都认得、都同意它能执行。
第 2 步:定一个时间上限(latest_time)
给这次自主行动设一个截止时间。超过这个时间,智能体应当停下并把控制权交还给你。看到什么算成功:时间一到,任务不再自行推进,而是等待你确认。
第 3 步:设一个成本上限(max_cost)
给这次行动设一个预算上限,防止跑飞。看到什么算成功:达到上限时触发停止或告警,而不是默默继续烧额度。
第 4 步:写清工具约束(tool_constraints)
明确哪些动作需要人工确认、哪些是只读、哪些是禁止项(例如「不得外发数据」「不得删除资源」)。约束越具体,越不容易出意外。
第 5 步:用自由文本补上下文(additional_details)
用一段话解释上面的白名单与上限为什么这么定,方便日后审计。这层自由文本不强制结构,但建议把「预期产出」和「中止信号」写清楚。
第 6 步:给一个结束条件(ending condition)
每个 scope 都要有结束条件:超过它,智能体就停止行动,直到你确认新的 scope。OpenAI 的建议是:把时间上限作为结束条件的一部分是个好习惯。看到什么算成功:契约里有一句明确的「到 X 就停、等我确认」。
第 7 步:对齐指挥链(chain of command)
说明这份契约服从的优先级。Model Spec 给出的顺序从高一低是:Root(规范根章节)→ System → Developer → User → Guideline → 默认无权限。同时记住「no other objectives」:智能体只能追求适用指令里蕴含的目标,不得自行追求其他目标(比如刷在线时长、牟利、自我保全)。看到什么算成功:当不同来源指令冲突时,你知道以哪一层为准。
常见坑与排错
- 坑 1:allowed_tools 写成「全部」。这等于没设契约,回到了无约束状态。修正:永远列白名单。
- 坑 2:只有 latest_time 没有 max_cost。时间到了但额度还在烧。修正:两个上限都要有。
- 坑 3:结束条件写得太模糊。智能体不知道何时交还控制权,会变成「一直跑」。修正:结束条件要可判定。
- 坑 4:契约写成一次性、不可审计。出事时没法复盘当时放了什么权。修正:契约应可版本化、可复核。
- 坑 5:忽略指挥链。指令冲突时智能体可能照低优先级执行。修正:在契约里写明优先级来源。
进阶用法
把 ScopeOfAutonomy 记录化,纳入代码评审或 CI:每次放权都留一条可查的记录。多个 scope 嵌套时,外层约束优先于内层。配合 Model Spec 的「support human oversight and correction」(可纠正性:接受监督、响应纠正、可被关闭),让智能体在拿不准时主动 raise concern,而不是擅自扩大自主权。
常见问题
自主权契约是不是只给大模型厂商用?
不是。任何会自主调用工具的系统都能用:内部脚本、客服 bot、编码助手都适用。规模越小,越该用白名单把放权圈清楚。
小项目也需要写 scope 吗?
值得写,哪怕很短。一份三行的契约(能用什么工具、到几点、花多少)也比「随便跑」可控得多。
契约写得太死会不会限制智能体发挥?
会,所以约束要对准风险:只读动作可以放宽,写入 / 外发 / 删除要收紧。把自由度留给低风险动作。
怎么验证契约真的生效了?
用最小任务跑一遍:故意触发结束条件或上限,看智能体是否如期停下。验证过再放大放权范围。
相关工具与内容
相关工具:Claude Code、Dify、扣子 Coze、WorkBuddy。分类入口:智能体、编程。延伸阅读:模型接入渠道选型、知识摄入选型、Claude API 版本升级。
相关内容
用 Gemini Computer Use 跑通一个浏览器智能体
Computer Use 不是托管浏览器,而是「模型提议动作、你的代码负责执行」的循环。这篇按 Google 官方参考实现,在隔离环境里跑通一个能按自然语言操作浏览器的智能体,并给出一份上线前的护栏清单。
长程任务的上下文预算怎么定:从思考到缓存
模型能一次跑几小时之后,账就从「一次问答多少钱」变成「一个任务多少钱」。按官方文档走一遍:先量 token 足迹,再按统一上限拆输入与输出预算,改造提示让隐式缓存命中,长输出改后台执行,多轮状态交给服务端,最后给每个任务装一道预算闸门。
Claude API 升级到 2026-10-21
Claude API 在 2026-10-21 发布 2023 年以来首个正式版本,SDK 大版本同步升级并改了采样参数与字段名。本文给一套可照做的升级步骤与破坏性变更清单,并把版本化升级纳入日常维护。