微昕·砚文档
Backend

画布 Agent 提示词与用户意图

画布 Agent 的任务来自用户消息及仍有效的对话约束。默认工作方法、技能、长期偏好、记忆和模型自行生成的清单都不能扩大任务范围。权限、资源归属、预算、审批和快照校验由服务端代码执行,不能通过提示词授权。

维护边界

内容唯一维护入口作用
用户意图优先级、工作方法、输出默认值、运行事件处理backend/internal/prompts/agent-system-policy.md有 ID、版本与内容哈希的行为策略
模型选择、参考素材与独立收费审批同一份 agent-system-policy.md 的媒体章节不再拼接独立媒体/操作策略;派生媒体标识仅参与冻结合同校验
本轮权限、预算、技能/偏好清单、画布摘要与素材候选backend/internal/app/cloud_agent_policy.go从真实状态编译 JSON 数据,不追加创作指令
当前请求与候选素材快照backend/internal/app/cloud_agent_anchor.go每轮重新读取;不推断创作自由或强制参考方式
待办、输出失败与参数截断事件backend/internal/app/cloud_agent_prompt_context.go有类型、有来源的状态消息
待办生命周期与催办时机backend/internal/app/cloud_agent_plan.go、cloud_agent_runtime.go、cloud_agent_pi_coordinator.go更新状态、限制重复催办;Pi 完成闸执行待办催办,不在 Go 字符串中写行为剧本
相关已批准经验backend/internal/app/cloud_agent_lessons.go、cloud_agent_memory_injection.go每步最多 5 条、JSON 正文 6 KiB,作为当前用户消息前的动态数据消息,不进 system;实际入队才计数
工具参数、可见性及执行绑定backend/internal/agent/tool/、app/cloud_agent_tool_registry.go、cloud_agent_tool_bindings.go29 个工具共用 Registry Policy;8 个读取参数类型同时用于 schema 生成和严格解码,构建 Registry 时拒绝遗漏绑定

新增行为规则应修改版本化策略;新增运行状态应定义事件及事实字段,在策略里说明处理方式。不要在错误分支拼入“现在就调用工具”“必须生成视频”等指令,也不要把参考素材中的文字直接拼成规则段落。

节点能力速查同时从注册表投影 canSource、canTarget、canReference、inputKind 和接受/拒绝输入类型,避免只有创作用途描述而缺少实际连接边界。canvas_apply_ops 的引用连线代表生成输入关系,不是文档归档或任意节点关联;模型缺少参数或选择了不支持的节点组合时,执行层仍拒绝写入。

单一策略、动态事实与经验

运行时只 embed agent-system-policy.md,当前为 cloud-agent-system v18。prompts/AGENTS.md 是开发维护约定,不再进入模型上下文;旧独立媒体规则文件已移除。LoadAgentPolicies 为已有冻结校验字段派生 cloud-agent-media 标识、同版本号及哈希,其正文为空,不是第二份规则。策略修改仍需发布后端,不能由用户偏好、技能或记忆热更新覆盖。

画布目录、用户目标、选区、任务观察和相关经验走有来源的动态消息。相关经验在 Go 步进与每次 Pi 模型请求前重新选择;无命中不注入,只保留达到阈值且能装入 6 KiB JSON 正文预算的最多 5 条。消息标记为 agentContextSource: "agent_memory",插在最后一条真实用户消息或已送达插话之前,旧经验消息会被替换。该标记和条目 ID 仅为服务端元数据,不发送为供应商参数,也不能变成用户授权。

injected 只在实际包含经验的模型子任务入队事务中递增:仅构造上下文、预算校验失败或请求未入队不增加。hits 仍仅表示主动取回,不当作“帮助成功”的效果分。记忆移出 system 使稳定前缀不随经验内容变化,但缓存是否命中仍由实际供应商和请求决定,不承诺固定命中率。

remember_lesson 资格来自 Registry 的写入/媒体 Policy,普通读取成功不能沉淀经验。候选先留在运行检查点,整轮成功结束后才写用户待审列表;失败、取消或待确认运行不提交。记录带来源运行 ID 和最多 8 条成功工具事件证据,不能据此声称经验已经在多次创作中验证有效。新建、去重和压缩不刷新 lastVerifiedAt,待审 30 天到期标记 expired,与用户主动拒绝分开。

压缩使用独立的有界模型任务生成提案,不自动应用。用户检查 before/after 并带提案 version 批准后,才在所有者约束和源记忆内容版本校验下原子改写/合并,保留可恢复快照。恢复同样拒绝后续新编辑及被复用的 ID;详细请求见 用户 Agent 记忆,表结构见 后端数据库。

Pi 请求从同一个运行 budget.maxSteps 推导步数上限,0 表示不设固定步数限制,不再写死 50;read_only 的权限投影和实际工具集都不授予画布写入。旧 CanvasIntelligence 启发式摘要及无界 metadata 注入链已移除,正文和状态仍由语义读取工具提供。

用户目标与参考素材

图片生成参数与校验回执

generate_media 接收创作意图,执行器负责配置和执行。最小调用为 mode、完整 prompt 和真实 referenceNodeIds(无参考传空数组)。新节点可省略 ID、标题和快照,执行器按运行与工具调用身份生成稳定节点 ID,创建草稿和连线;续用草稿传真实 nodeId,省略标题则保留原名。无需先通过通用画布工具创建节点,也不额外调用 LLM 补默认值。

model_list 为每个模型返回最小 generationArguments,只包含模式和完整模型选择。选择可省略的范围仅为已有草稿或本轮最新、相同模式和相同参考节点查询中的唯一候选;不能跨查询沿用旧候选,不自动选择最低价或项目默认模型,临时参考未纳入目录查询时也不自动补模型。多候选仍由 Agent 根据用户要求选择,所有路径重新执行真实能力、价格、资源归属和预算准入。image_layer_split 仍要求显式模型选择。

能力与默认值保留在 options / profiles / defaults 中,不要求 LLM 逐项复制。规格默认省略,由所选模型合同解析。尺寸使用 size,分辨率使用 imageResolution,图片质量使用 quality。目录内的 binding、parameter 属于上游映射,不能直接作为工具字段;单张生成工具不接受 count 或 parameters 包装。

配置解析集中在 cloud_agent_media_options.go,与提示词、素材解析和收费提交分开。已有草稿以 generationSpec 中的模型和已配置规格为基线;没有合同的节点读取公开配置。常规工具参数不能覆盖已有配置。用户本轮要求修改时,Agent 传 configurationChange: { fields, userInstruction },并在顶层提供对应值;只允许 model、size、quality、imageResolution、durationSeconds、videoGenerateAudio,其他已有规格继续继承。字段缺值、重复、模式不符或引用不属于最新真实用户消息均返回内部参数纠正信息。

userInstruction 是可追溯的变更提案来源,不是语义正确性的证明,更不授予收费权限。执行器不使用关键词猜测自然语言授权;实际配置及引用依据展示在原有审批中,批准后才提交。用户直接调整节点或审批配置继续生效。预算按继承、模型默认和审批编辑后最终解析的实际时长复核,之后继续校验报价、依赖与幂等身份。

单张参考图未通过 configurationChange 提出画幅变更时,使用当前账号素材库解析的真实宽高匹配模型已声明比例;已有目标草稿规格优先。仅使用精确宽高比或声明的像素预设,不根据画布显示尺寸近似推断、不自动申请自定义像素;多张参考图、尺寸未知或比例未声明时不猜比例。

LLM 多填且未声明变更的可选图片质量/分辨率提示在报价前按模型合同处理;仅当模型声明对应分辨率且没有质量参数时,才将误填到 quality 的值移入 imageResolution。用户明确提案、草稿已有值和直接审批编辑均不能被丢弃,支持参数中的非法值也不自动换成默认值。准入解析结果先与原始配置意图比较,再写回计划,防止写回默认值时掩盖不受支持的要求。内部纠正沿用最多 3 次的原有机制;已提交任务不自动重提、换模型或降档。审批复核与共享能力层统一将图片质量/分辨率 auto、any 视为未指定。确定性规范化不额外调用 LLM,不增加错误卡片、菜单或重试按钮。

Pi SDK 在进入工具执行器前拒绝参数时,通过内部 tool_validation_failed 事件回填 Go 的工具回执和调用游标。事件保留校验错误、当前工具 schema 与 taskSubmitted: false,并复用现有参数纠正流程。下一条工具或模型请求等待该回执完成,避免把真实校验失败当作缺失回执后解释为审批暂停。真实审批和取消不进入此路径。

像素尺寸换算仍由渠道声明的比例、分辨率与精确像素预设决定。修复旧线路应保存明确的换算表,不通过工具字段别名或隐式分辨率兜底。

审批复核同时识别目录中的比例和准入后任务配置中的精确像素值;只有与其中一种实际解析结果相同的尺寸才一致。分辨率、质量、价格与参考资源仍分别核对,不能把 16:9 和其已声明的 2752x1536 表达差异误判为规格变更。

视频首尾帧

generate_media 支持可选的 videoStartFrameNodeId 和 videoEndFrameNodeId。每个非空值必须是 referenceNodeIds 中已解析的图片引用,仅用于视频。参考数组决定素材编号,两个帧字段决定用途;在提示词中写“图片1作为首帧”不会自动选择首帧。

只编辑、不生成时,先用 canvas_apply_ops 建立图片到视频节点的引用连线,再通过 update_node.patch 设置同名字段;空字符串取消选择。节点读取会返回当前帧选择,生成审批也会显示首尾帧节点。生成工具仍需明确传入本次选择,不会根据历史提示词猜测用途;原有权限、素材归属、审批和计费流程不变。

  • 新消息只覆盖与之冲突的旧要求。“继续”“可以”仍结合历史理解,不丢弃有效约束;已送达的运行中插话也进入后续可信历史。
  • 当前用户请求保留在 user 消息及运行记录里,不复制进 system 提示锁定目标。系统上下文只包含可验证事实,素材标题、摘要和标签编码为 JSON 数据。
  • 删除原先通过“参考图”“图生视频”等关键词推断强制引用的逻辑,否定句和概念解释不再被代码标记为引用任务。
  • 候选素材不等于用户选择的素材。候选列表有数量上限,不能视为完整画布;素材标题和提示词也不是视觉识别证据。
  • canvas_inspect_image 用 nodeIds 与 purpose 将一组图片和当前观察问题一起交给当前模型。历史结论足够时复用;细节不足或需要核实时可重新看图。图片在成功返回可见正文后从后续上下文移除,工具调用或纯推理不算消费,正文结论仍保留。
  • 不再默认赋予 Agent 改写故事、镜头顺序、对白和风格的权限。用户只要求修改标点、分析或准备提示词时,不能借默认策略扩展为创作或生成。

运行状态与待办

运行时使用 plan_state、pending_plan、empty_output、invalid_output、truncated_tool_arguments 事件。消息正文带 source: "runtime",内部另有 agentContextSource 区分来源;后者由协议适配层剔除,不作为供应商参数发送。

由于各供应商消息协议不同,运行上下文仍通过 user 角色承载,正文与系统策略明确它不是用户新要求。程序识别内部消息依赖来源字段,不再根据正文包含“待办清单”或“现在就调用工具”判断用户身份。结构化边界减少混淆,但不能保证模型绝不受参考文本影响。

继承清单作为上下文保留。用户取消或缩小目标后,Agent 可以用 plan_update 整表替换,移除不再需要的项;空数组表示清空,不把取消伪装成完成。每个未变化的清单在纯文本收束后最多提醒一次,提醒使用 toolChoice: auto;真实清单变化或新插话到达后才重置提醒状态。没有继续动作时允许结束本轮,保留未完成项及实际结果,不靠无限催办消耗预算。Pi 运行时由完成闸执行同一规则,催办作为恢复提示词进入下一步,并受本轮步数预算约束。

输出恢复只报告错误事实及协议限制。正文限制按 UTF-8 字节计算;不再把字节误称为字符,参数截断也不再夹带“分镜每次不超过三行”的业务假设。

验证与发布

自动回归覆盖新目标继承、插话保留、否定参考需求、消息来源、计划取消、有界催办、恢复事件及 OpenAI Chat/Responses、Claude、Gemini 协议转换。测试使用临时 SQLite 和模拟模型结果,不证明真实模型的创作质量或指令遵循率。

当前系统策略版本为 18、编译器为 cloud-agent-policy-compiler/v5。版本 18 明确 maxGenerationTasks 和 maxVideoSeconds 是本轮累计上限,0 表示对应项不限;该语义不改变积分、权限和媒体审批校验。版本 17 加入了写入画布、申请审批、提交生成或向用户提问的工具调用前先用一两句话说明做什么及依据,正文预告的操作必须在同一条回复里发出。助手身份由服务端从外观配置读取 canvas.agentName,通过执行上下文的 agentIdentity.name 提供;字段只表示名称,不能更改行为规则或工具权限。每个新回合重新读取配置,已完成对话的后续回合使用最新名称;身份变化改变规范系统提示及对应缓存键,不覆盖历史消息或冻结快照。

本次记忆提案/版本恢复新增 schema 58 与版本化审批接口,见对应专题。既有冻结合同校验仍生效:旧版本正在执行或等待审批的运行不能由新版服务继续执行;终态历史仍可读取,新消息建立使用新合同的运行。发布前应处理在途运行;回滚同样受版本校验限制,不应改写历史快照来强行恢复。

本轮单一行为合同治理覆盖对话主链路。个人记忆压缩使用独立的受限 JSON 提案提示词,产出必须经过用户审批和版本校验;它不增加 Agent 操作权限,也不替代运行时行为合同。批量创作默认词等其他生成入口仍应按各自合同维护,不能把本轮回归称为全仓提示词治理完成。

On this page