ArcLoop 里 Agent 生成的大纲反复跑偏时,第一反应往往是重生成或换模型,但多数情况下问题在输入侧:角色设定里的目标与关系缺字段,或者分集约束没有写清每集要解决什么、结尾停在什么状态。建议先停止重生成,回到这两处配置,按下面四步把「跑偏」拆成可定位、可验证的条目,再决定改哪个变量。
大纲跑偏通常不是模型随机性造成的,而是角色卡缺少动机与关系、分集约束缺少每集冲突和结尾状态。建议先用三列表格把跑偏位置落到具体集数和字段,再检查角色必填字段、套用一集约束模板,最后每次只改一个变量重新生成并保留两次结果对照。判断标准是跑偏位置是否随改动消失,而不是整体观感是否变好。若两处都完整仍跑偏,需要再查上下文截断与生成参数,不要盲目加长提示词。
在生成结果里标出跑偏的具体位置
不要用「感觉不对」「有点怪」来描述问题,先把跑偏拆成三类:角色类(动机、语气、能力前后不一致)、时间线类(顺序、因果、跨集引用错乱)、冲突类(矛盾被跳过、没升级、直接消失)。三类对应不同的配置位置,混在一起看就只能靠重生成碰运气。
用一张三列表格逐条记录,只抄生成原文,不评价好坏。字段建议这样定:类型、出现位置(具体到集数和字段,例如「第 2 集结尾状态」「角色卡-目标」)、原文片段。
| 跑偏类型 | 出现位置 | 生成原文(照抄) |
|---|---|---|
| 角色 | 第 3 集大纲,主角行动句 | (此处粘贴原句) |
| 冲突 | 第 2 集结尾状态 | (此处粘贴原句) |
| 时间线 | 第 4 集开头的因果句 | (此处粘贴原句) |
位置写不具体,后面的对照就没有落点。记录完先别改配置,这张表是基线,用来和改配置后的结果比对。
回到角色设定区检查目标与关系是否为空
确认 Agent 是否真的拿到了角色动机信息,而不是只拿到名字和身份。可以按下面这份清单逐项对照,空着的字段先补上:
- 角色名与身份职能
- 短期目标:本季内要达成什么
- 长期动机:为什么非要达成,达不成会怎样
- 角色关系:与主要人物的对立、依赖或亏欠
- 行为底线或禁忌:这个角色不会做什么
- 说话与行事风格
空字段的常见影响通常是:目标为空时,人物容易退化成推进剧情的工具,跨集行为摇摆;关系为空时,对话缺少指向,冲突写成了陌生人吵架;底线为空时,角色可能做出与设定矛盾的举动,看起来像大纲跑偏,其实是没约束。这里只描述输入缺失与输出表现的对应关系,不涉及任何平台内部算法。
字段填了不代表会被读取。可以先在运行日志或调试输出里确认角色卡是否被拼进本次提示词;如果日志里根本看不到角色卡内容,先解决注入链路,再谈重生成。
检查分集约束里有没有写清每集冲突和结尾状态
分集约束要回答一个问题:Agent 是否知道这一集必须解决什么。只写「第 3 集,两人产生误会」这种描述,Agent 只能自由发挥,于是把后几集的内容提前压进来,或者让冲突绕回原点。建议每集按固定骨架写:
第 N 集
起始状态:承接上一集结尾的遗留问题与人物处境
本集冲突:谁想要什么,被谁或什么阻挡
结尾状态:本集结束时确定发生的变化(谁知道了什么、失去了什么)
不可越界:本集不得提前解决或揭示的事项
四行里「结尾状态」最关键,它决定了下一集的起始状态能不能接上;「不可越界」用来防止提前泄露后面才该出现的转折。写完之后把这份约束和第一节表格里的跑偏位置对一遍,看哪几条正好落在缺失的行上。
只改一个变量再重新生成做对照
要判断是角色设定还是分集约束导致跑偏,控制变量的做法比一次性全改更可靠。步骤如下:
- 固定其他条件(同一模型、同一提示词、同一集数范围),先生成一次作为基线 A,保留完整原文和当时的配置快照。
- 只改角色卡里缺失的目标与关系字段,其他不动,生成 B,保留原文。
- 把角色卡还原成基线版本,只补分集约束的结尾状态与不可越界,生成 C,保留原文。
- 用第一节的三列表格分别标注 A、B、C,看三类跑偏位置在哪个版本里消失。
判断方向大致是:补角色卡后角色类问题减少,说明主要卡在角色设定;只有补分集约束后时间线和结尾状态才对上,说明卡在分集约束。两次结果都要留档,包含使用的配置内容,方便后续定位回归。单次对照不足以定论,建议在同类题材上重复几次再下判断。如果角色卡和分集约束都补齐仍然跑偏,再检查上下文是否被截断、集数是否超出单次生成能覆盖的范围,这时才考虑拆分生成。