先跑通一次只读任务再放开写权限——Claude Duet 上手前的取舍

文章导读
想把写权限一次开到能改页面数据的程度,真正卡住人的通常不是配置本身,而是回退:改错了能不能在几分钟内说清“改了哪一处、原来是什么、怎么改回去”。建议把“只用读取权限跑通一次任务”当成准入门槛,通过后再按页面级、字段级逐层放开。顺序上先把不可逆的动作往后放,比事后收紧权限省事得多。
📋 目录
  1. A 第一步只开读取,跑一个抓取型任务
  2. B 把写入范围限定到单个页面
  3. C 在执行记录里核对每一步实际动了什么
  4. D 准备一条回退路径
A A

想把写权限一次开到能改页面数据的程度,真正卡住人的通常不是配置本身,而是回退:改错了能不能在几分钟内说清“改了哪一处、原来是什么、怎么改回去”。建议把“只用读取权限跑通一次任务”当成准入门槛,通过后再按页面级、字段级逐层放开。顺序上先把不可逆的动作往后放,比事后收紧权限省事得多。

上手 Claude Duet 这类能读写页面的智能体,建议先用只读任务验证三件事:能不能正确识别页面结构、会不会如实回报结果、失败时给出的提示是否可判断。只读跑通后,把写权限限定到单个页面和指定字段,每放开一级就跑一次同类任务并核对执行记录。允许写入的前提是已经准备好回退路径,包括撤销入口和需要人工复核的字段清单;没有回退路径就先别放开写权限。

第一步只开读取,跑一个抓取型任务

这一步的目的不是让它干活,而是确认智能体看到的页面和你看到的是同一个页面。任务描述要具体到“读什么、输出成什么形状”,避免“帮我看看这个页面”这类开放式指令——开放式指令成功与否无法判断,失败也拿不到有用信息。

任务:只读。不要修改任何内容。
目标页面:<PAGE_ID 或页面链接>
请完成:
1. 列出页面上的主要区块名称(按从上到下顺序);
2. 对每个区块,说明它包含哪些字段或列;
3. 统计列表区的条目数量,并原样引用前 2 条的标题文本;
4. 如果某一步无法完成,直接说明卡在哪一步、看到什么提示,不要猜测。
输出格式:分区块的列表,不要输出解释性段落。

期望输出是结构化的区块清单加字段清单,标题文本要与页面上的实际文本逐字对得上。这份输出可以直接当作后面写操作的“基线”:写入之后再用同样的任务跑一遍,对比差异就知道动了什么。

失败时常见的提示通常集中在几类:找不到目标页面或返回 403/401,多半是授权范围或页面归属没配对;返回空集合或“未找到元素”,通常是页面结构和你描述的选择方式不匹配,或者页面本身是异步加载、智能体读取时内容还没渲染出来;超时或部分步骤失败,则要看是不是一次任务里塞了太多页面。这几种情况都建议先缩小任务范围重试,而不是直接去调权限。

把写入范围限定到单个页面

只读跑通后,第二级不要直接给“整个空间可写”,而是把作用面收到一个页面、一组字段。下面的骨架是通用写法,具体字段名要按你所用平台的配置项替换,不要照抄。

# 通用权限配置骨架(占位字段,按实际平台替换)
agent: <AGENT_NAME>
permissions:
  read: true
  write: true            # 二级才打开
scope:
  type: page             # 作用域粒度:page / space / workspace
  ids:
    - "<PAGE_ID>"        # 只放一个页面 id
  fields_allow:
    - "<FIELD_A>"        # 允许改的字段,留空视为不可写
    - "<FIELD_B>"
  actions_deny:
    - delete
    - create
    - move
limits:
  max_items_per_run: <N>  # 单次任务最多改动的条目数
  require_confirmation: true

配置生效的验证方法是“反向试探”,而不是看配置页面显示成功:拿一个不在 ids 里的页面 id 让智能体做一次写操作,观察是否被拒绝;再拿允许页面里一个不在 fields_allow 中的字段试一次,同样应被拒绝。两次都被拦住,才说明范围限定是真的起作用了。如果被放行,先不要继续,回头检查 scope 是写在智能体配置里还是写在任务请求里——两处都写时,以哪一处为准需要确认。

先跑通一次只读任务再放开写权限——Claude Duet 上手前的取舍

在执行记录里核对每一步实际动了什么

每放开一级权限,都要跑一次小任务并回读记录。记录条目建议按这个顺序读:先看时间戳和任务标识,确认是同一次任务产生的连续记录;再看目标资源标识,确认落在你限定的页面内;然后看动作类型,是读取还是更新;最后看变更前后的字段摘要和结果状态,失败条目单独挑出来看错误信息。先看范围,再看内容,比从头读到尾更容易发现越界。

越界操作的识别特征通常比较明显:目标资源 id 不在白名单里;动作类型出现 delete、create、move 这类未在允许列表中的操作;一次任务里出现多条写记录,而任务描述只要求改一条;变更摘要里出现未授权字段;改动条目数接近或超过 max_items_per_run 上限。出现任意一条,都建议立即回到上一级权限,把这次的输入指令和记录一起留存,再决定是收紧字段还是补一条更明确的约束。

准备一条回退路径

回退路径要在放开写权限之前就确认可用,而不是出事之后再找。通常需要准备三样东西:撤销入口、快照、人工核对清单。撤销入口指平台自带的版本历史、回收站或操作回滚功能,配置前先手动改一条无关紧要的内容试一次回滚,确认这条路径真的能走通;快照指在写入前导出目标页面的当前状态(文本或结构化数据皆可),用于比对“改了什么”;人工核对清单则是回滚之后必须逐项看过的字段。

  • 回退动作:定位到本次任务的执行记录 → 按记录中的资源 id 进入页面 → 通过版本历史还原到写入前版本,或按字段逐项改回快照中的值。
  • 需要人工核对的字段:页面标题与状态;被改动条目的归属人和排序位置;与其它页面的关联或引用关系;列表条目数量是否与快照一致。
  • 回退后复验:用第一步那个只读任务再跑一遍,把输出与写入前基线对比,确认差异归零。

如果平台没有可用的版本历史,那这一步的取舍就很清楚了:先别放开写权限,或者只在一个可以随时重建的测试页面上放开。能不能回退,比能不能写,更值得在上手前花时间确认。