长篇文学项目同时存在大量可能性。分支推演会产生互斥剧情,正文可能有多个修订版本,人物状态和 Canon 也可能收到不同提案。系统若只靠目录中“最新的文件”判断真相,很快会遇到审查错稿、旧补丁覆盖新状态和导出混入草稿等问题。
ArcVellum 的政策内核解决的是资格问题:什么内容可以被读取为正式事实,谁有权改变它,改变前需要哪些证据,失败后从哪个阶段恢复。
三类权力
创作权
主创 Agent 可以理解主题、选择叙事距离、规划场景节奏、提出分支、撰写正文与给出修订。它需要充分的文学自由。
编排权
系统或未来的自适应编排器可以决定任务顺序、推演深度、并行的只读分析、修订回退位置与重试策略。编排不得删除强制 Gate。
正式写入权
正文晋升、Canon apply、人物状态 apply、连续性账本写回与交付发布属于政策内核。它们要求内容身份、审查证据、任务完成凭据和事务操作共同成立。
三类权力分离后,模型可以积极探索,项目事实仍有单一来源。
七条正式路线
当前内核通过路线目录组织主要工作:
| 路线 | 负责的问题 |
|---|---|
longform-planning |
目标字数、事件库存、卷章场景和节奏责任 |
scene-development |
单场景从上下文到正文晋升和状态写回 |
source-ingest |
从已有文本反推项目资产并保留来源证据 |
style-engineering |
语料、风格抽象、评测与版本化挂载 |
character-and-world-assets |
人物、地点、组织、世界规则的候选与晋升 |
review-and-audit |
场景、章节、长篇、Canon 与交付审计 |
export-and-release |
清洁正文、DOCX、证据清单与发布准备 |
路线由项目状态推导。UI、Agent Runtime 和顾问可以请求动作,却不能各自维护一套“当前步骤”。
任务生命周期
一项任务经过固定状态:
issued -> opened -> running -> submitted -> validated -> completed -> blocked / repairable / cancelledtask-next 只签发当前合法任务。task-open 物化任务包和授权资料。Agent 在沙箱中生成 expected_outputs。task-submit 登记提交,task-complete 在预检通过后写入完成凭据。下一次状态推导再决定后续任务。
任务事件以追加账本保存,派生状态可以重建。单个按钮的本地状态、某段终端输出或一份孤立文件都不足以宣称任务完成。
TaskPackage 的核心字段
正式任务包至少包含:
task_id、route、stage 与 task type;source_paths和 Agent 可见的精简资料;expected_outputs与允许写入集合;- Prompt Asset、文学约束和输出合同;
- 上游证据、内容身份和当前项目 revision;
- 预检命令、提交方式和完成条件;
- 是否需要人工选择、独立审查或高风险审批。
这些字段将“请认真完成任务”转成可验证协议。沙箱、Worker、预检和 Engine Gate 都读取同一份合同。
候选层吸收创作不确定性
候选层允许系统保留尚未决定的可能:
| 候选 | 正式化条件 |
|---|---|
| 分支候选 | 有比较、评分、风险和正式选择 |
| 正文候选 | 通过当前内容身份的审查与 Lint |
| 人物状态补丁 | 语义审查、写入范围检查和 apply |
| Canon 补丁 | 分类、来源、冲突审查和批准 |
| 文风 Profile | 语料来源、详细度、测试和版本化 |
| 资产候选 | Schema、来源、重名与适用范围检查 |
模型在候选层可以保留复杂性。进入正式层后,系统需要明确哪一份被选中、为什么被选中、它替代了什么。
内容身份保护审查对象
文件路径不能唯一代表内容。一份 scene_0003.md 在审查后可能被改写;如果系统只检查路径存在,旧 Review 会被错误地用于新正文。
ArcVellum 将 candidate identity、内容哈希、source path、task id 和 revision 关联。审查、修订和晋升都要求 exact candidate 匹配。当前候选发生变化后,旧审查自然失效。
这套身份机制同样适用于:
- 修订必须指向准确 revision source;
- state patch 必须指向已晋升场景;
- continuity delta 必须带 writer session;
- approval 必须包含当前提案摘要;
- export manifest 必须列出实际晋升正文。
门禁如何组合
场景路线的正式门禁包含上下文、推演、分支、编剧态、字数、读者体验、文风、正文来源、Style Lint、AgentReview、晋升、静态审查、状态写回、Canon 写回和连续性账本。
门禁采用失败关闭。缺少任务 sidecar、completion marker 早于重新签发任务、候选身份不匹配、输出越界或预检失败都会停止推进。停止并不等于项目损坏,阻断信息会指向需要重新签发、修复或人工决定的具体位置。
事务写回
Agent Runtime 在临时工作区工作。声明输出通过规范化、Schema、溯源、Lint 和确定性预检后,Studio 才执行事务写回:
- 建立写前快照或备份;
- 只选择
expected_outputs; - 验证目标仍处于签发时的 revision;
- 写入正式项目;
- 登记 submission 和 completion;
- 重新计算路线状态;
- 失败时回滚本次导入。
该过程避免沙箱中的半成品直接污染正式项目,也避免多个运行同时覆盖同一资产。
人类决策的身份
分支选择、Canon 高风险写回、资产晋升、重大修订方向和交付发布可以产生 human choice。每张决策卡需要稳定 id、可选项、影响范围、当前提案摘要和一次性消费状态。
用户选择后,后端登记决定并重新计算任务;已经消费的卡片退出待办集合。全自动模式可以由受约束的代理用户策略处理允许自动决定的事项,高风险操作仍按项目配置保留明确边界。
派生状态与唯一来源
前端的进度、当前任务、可交付状态和星仪节点亮度都属于投影。它们从账本与正式文件派生,不反向成为业务真相。刷新页面、重启桌面端或更换 Agent 后,系统能够从项目状态恢复相同结论。
项目中可以有许多视图,正式政策来源保持一个。这个约束让阅读器、自动创作、顾问和桌面更新可以独立演化,而不会各自解释“作品完成到了哪里”。
常见阻断的语义
| 提示 | 真实含义 |
|---|---|
| sidecar incomplete | 任务已准备,平台 Agent 的语义产物或完成凭据尚未成立 |
| completion marker predates task | 任务被重新签发,旧完成凭据不能复用 |
| candidate mismatch | 审查或修订针对了另一份内容 |
| output outside expected outputs | Agent 修改了合同之外的文件 |
| deterministic preflight failed | 产物存在,但结构、来源或下游命令仍不接受 |
| writer session missing | 连续性变化缺少本次正式写作会话身份 |
阻断信息属于求解器状态的一部分。优秀的内核不仅拒绝错误,还应给出最短恢复路径,避免 Agent 在同一失败上空转。
政策内核的长期扩展
自适应编排可以在 task-next 之前生成 Creative Execution Plan,允许 Agent 决定推演深度、场景拆分、修订策略和只读分析并发。Plan Compiler 会把计划编译为现有任务图,强制注入 Canon、字数、连续性、审查和写回 Gate。
这种扩展保留现有边界:Agent 可以改变求解路径,项目事实的资格仍由同一个政策内核判断。
