Floe Agent
文档

设计流程(简报到导出)

状态:本页记录两种必须分开的状态。

快速上手——已发布的画布面板(实际操作路径)

  1. 打开一个画布,选中要作为设计来源的节点(文本/卡片、媒体/文件,或内置 Markdown/HTML/SVG 卡片),先放入或导入内容。
  2. 打开画布视图菜单并选择 设计流程(canvas.designWorkflow)。面板作用于当前选中节点,并显示该节点的真实能力。
  3. 编辑并保存简报/规格(保存简报、保存规格);将此规格应用到整个画布 会在同一次画布 CAS 提交中写入工程规格权威,已有与新建设计子文档都会继承。
  4. 冻结来源:使用当前节点内容 经由适配器守卫读取节点真实的文本、已留存素材字节、已绑定 CAD/Office 工作区文档或内置卡片来源;导入源文件… 用于外部文件。
  5. 由助手/工具提出新修订,在候选区查看(显示预览)后选择 采纳 或 拒绝。助手采纳还需先在面板 授权助手采纳,以签发一次性、带过期时间的凭据。
  6. 导出(已验证)… 只按记录格式导出,并先用真实解析器重开字节;恢复上一修订 以追加新修订的方式恢复,不覆盖历史。

[未发布] 对话入口:同一任务,三种工况

本轮在源码中实现的产品规则(模块级已验证;界面与工具接线仍待完成):

三种工况(Core API:DesignWorkMode、DesignWorkIntent、DesignWorkScope,位于 FloeAgent/Sources/FloeCore/DesignWorkflow.swift):

工况 开始前 执行 预览与完成
制作 一句自然语言目标;仅在确实缺少实质输入时简短追问;不填表单 经已接通服务创建真实可编辑成果;保留素材、输入与工作区归属 展示真实成果并用自然语言继续修改;只有保存/重开与格式验证后才标为完成
修改 冻结指定修订;把用户指出的位置映射到真实页面、选区、片段或对象 只在冻结范围内编辑;范围外内容与原稿/手动草稿保持可恢复 展示变化与范围外检查;采纳更新明确的原目标
重构 读取现状;先用对话确认必须保留的内容、数据、功能与格式,以及允许改变的范围 在独立候选中重组;原成果绝不先被覆盖;手动编辑使旧基线失效 逐项对比并验证保留要求;只有用户采纳才替换原成果;可另存变体

“优化一下”不会自动当作重做:局部可逆改动按修改处理,整体结构/功能变化先确认重构。切换工况时当前成果与约束保留在同一任务。DesignWorkIntent.validated(family:) 会拒绝没有完整保留约束的重构、空对象 ID、负页码、非正区域/时间范围以及格式与内容族不匹配(DesignWorkIntentError)。

[未发布] 重构授权:数据不是权限

[未发布] 能力矩阵与来源分类

模型与位置

组成 位置
流程状态机 FloeAgent/Sources/FloeCore/DesignWorkflow.swift
工况、保留约束、权威回执 [未发布] FloeAgent/Sources/FloeCore/DesignWorkflow.swift
共享所有者工作流(propose/adopt、权威钩) FloeAgent/Sources/FloeCore/DesignOwnerWorkflow.swift
能力矩阵与来源分类 [未发布] FloeAgent/Sources/FloeCore/DesignCapabilities.swift、DesignCanvasService.swift
DESIGN.md 导入/编辑/导出 FloeAgent/Sources/FloeCore/DesignMDCodec.swift
子文档编解码(绑定与上限) FloeAgent/Sources/FloeCore/DesignCanvasMetadata.swift
画布权威服务 + 采纳凭据 FloeAgent/Sources/FloeCore/DesignCanvasService.swift
共享 UI/工具事务(决策、应用模板、使用当前节点) FloeAgent/FloeApp/Workspace/DesignWorkflowActions.swift
Agent 工具(canvas.design*、design.*) FloeAgent/FloeApp/Workspace/DesignAgentTools.swift
面板(独立视图) FloeAgent/FloeApp/Workspace/DesignWorkflowPanel.swift

设计状态是绑定画布节点的类型化子文档(节点元数据键 canvas.design),只通过既有 FileCanvasDocumentRepository + CanvasProjectFileWriter 比较交换权威持久化——备份、同步、分叉、修订冲突全部沿用画布机制。没有独立的设计存储、画廊或工程身份:节点 ID 是唯一身份,必须提供,解码时校验绑定,不匹配即失败关闭。节点、连线与布局仍在 CanvasProject。画布级工程简报/规格权威存放在 CanvasProject 自身(designProjectAuthority,附加可选字段,旧工程解码为 nil),不是平行存储。

生命周期保证

类型化适配能力(已发布状态)

DesignCapabilityRegistry 只登记实际接通的操作。每个不可用操作必须带清晰原因。canvas.designCapabilities 向模型暴露该信息;App 注册诚实默认值。各类型实际接通的来源/导出操作:

类型 已接通操作 真实路径
image 导入、生成(已配置图像模型时)、预览、验证导出 素材入库、媒体生成、CGImageSource 重开
video 导入、预览、验证导出 素材入库、AVAsset 重开(时间锚点)
pdf 导入、预览、验证导出 素材入库、PDFKitGate 重开
notes 导入、预览、验证导出 Markdown/纯文本(md/markdown/txt),UTF-8 与格式重开
webpage/prototype 导入、采集(作为修订)、验证导出 绑定精确任务的浏览器采集、仅定位快照;HTML/JSON 与 SVG 经有界 XML/SVG 解析重开
cad 2D dwg/dxf:导入、预览、源导出、验证导出(同引擎重解析)。3D 验证导出当前不可用——glb/step/stl/obj/3mf/usdz/floecad 显式失败,不冒充“已验证” CadDocumentCenter;引擎编辑仍走 CAD 提案流程
office/presentation 仅对具有显式画布所有工作区绑定(canvas.designBindDocument)的节点接通导入、预览、源导出、验证导出,经 OfficeCommandCenter 与有界 OOXML 重开(docx/xlsx/pptx) 引擎命令编辑仍走办公提案流程;未绑定节点给出的原因是“需要先绑定工作区文档”,而不是“完全未接通”

[未发布] CAD 新增工具级 create 与 import(见工具契约):由内置工厂创建合法 .floecad 包并回读;把 STEP/IGES/STL/OBJ/GLB/glTF 几何导入既有包时只起草提案,在预览 + UI 授权 + apply 之前不改动任何内容。导入几何绝不伪造参数化特征树,IGES 壳体/面和网格格式保持只读渲染体,上述验证导出门槛不变。

内置画布来源节点

画布“添加内置”菜单创建的是类型化来源卡片(metadata.builtinPlugin),卡片文本即来源,并由专门视图渲染:

“使用当前节点”按插件格式冻结卡片的精确字节(先由适配器解析器重开);提案/采纳会通过原始渲染路径把新文本写回同一张卡片,保留节点 kind、builtinPlugin 元数据、布局与标题。强制格式兼容:例如 SVG/HTML 字节不能被采纳进 Markdown(notes)卡片,重命名为 .svg 的非 SVG 字节会被拒绝。未知/非文本内置节点(如没有已留存素材的 panorama3D)给出本地化的明确原因,不回退为普通卡片文本。绝不用截图/PDF 冒充可编辑原件。

Agent 工具

canvas.designGetState、canvas.designCapabilities、canvas.designCreate、canvas.designUpdateBrief、canvas.designUpdateSpec、canvas.designGetProjectSpec、canvas.designSetProjectSpec、canvas.designRegisterRevision、canvas.designImportSource(负载先发布再单次 CAS 提交;重放返回已记录结果,参数改变即拒绝)、canvas.designUseCurrentNode、canvas.designExportRevision(只按记录格式导出,真实重开校验)、canvas.designAddFeedback、canvas.designPropose、canvas.designAdopt(先校验重放、后消耗凭据;持久决策 outbox 在 CAS 前记录意图,启动对账补送)、canvas.designReject、canvas.designRestore(恢复真实节点内容)。

全部需要显式 canvasID + nodeID(变更还需 expectedRevision 与 operationID),只通过画布权威读写。adopt 额外要求由面板签发的一次性、带过期时间的用户凭据(DesignAdoptionGrantStore)中的 grantID——助手无法自行采纳。adopt/restore 有副作用并要求审批。输入数据不能授予权限。

[未发布] cad.document 新增 create 与 import 动作;design.*/canvas.design* 的名称与参数不变。把工况与重构权威传入面向模型的参数、以及让画布动作可选携带工况,由集成线负责;绝不允许新增原始字符串/布尔形式的“授权”参数。

模板

内置模板随 App 提供;用户模板存放在 Application Support/FloeAgent/DesignTemplates,使用不可变版本目录与原子指针切换(回滚会恢复真实的上一版字节)。由签名内容更新服务(kind templates)交付的模板经哈希校验后只读物化到同一库;安装/更新/回滚仍留在“内容更新”设置中。模板界面在设计面板(创作)中,不在技能中。

测试

已发布引擎套件: Tests/FloeCoreTests/DesignWorkflowTests.swift 覆盖:冻结、候选在采纳前不生效、无变更提案被拒、分支采纳、锚点过期/重定位、需要真实变更才能解决反馈、修订冲突、恢复、DESIGN.md 往返与规格哈希、画布子文档绑定/损坏/新 schema 安全、operationID 去重与能力诚实性。引擎套件之外还包括:整工程采纳(同一次 CAS 写入真实节点内容、布局保留、重放跳过内容工作)、工程规格权威(三节点在一次提交中继承、同 operationID 换负载被拒、过期修订冲突、无关节点编辑、冻结运行保留、新节点继承、重开)、决策 outbox(跨重启完整指纹去重、旧信封回填、首次写入/重开、损坏/新 schema 只读并暴露错误、pending 不被裁剪、硬上限)、负载存储(路径穿越/符号链接/覆盖/跨画布)、模板持久化与签名包摘要权威、保留图像证据策略,以及 FloeAppTests 集成(图像端到端 导入→采纳→导出 与送达失败对账、缺失来源失败关闭、工程规格工具跨三节点、使用当前节点文本 + 精确本地化不可用原因、内置 Markdown/HTML/SVG 卡片 来源→提议→采纳→恢复→已验证导出 与精确的不支持状态、跨任务采集失败关闭)。

未发布源码的模块级证据(2026-10-13,分支 codex/design-workflows-20261013,Xcode 27.0/Swift 6 聚焦 SwiftPM harness): FloeCore 跑过 495 项测试(含 20 项新增工况/分类测试);随后的权威修正轮跑过 141 项聚焦测试(含 8 项新权威用例:伪造匹配 source+digest 被拒且零暂存字节、可信绑定 claim 被接受、陈旧/错主/错摘要/错操作被拒、幂等重放不二次领取)。运行时/日志修复证据见工具契约。这些只是模块级证据;2026-10-14 接续已完成全 App 编译、15 个变更 App 套件(78+53 例)、CAD 26 个 App 测试、创意入口 UI 测试与一项真实模型设计闭环,PPT 真实产物通过 python-pptx/openpyxl 独立回读。界面细节与真机表现仍由主协调验收。

待办门禁

办公/演示的引擎命令编辑仍委托给办公提案流程(即使已绑定工作区文档支持导入/验证导出);3D CAD 验证导出(交换/网格格式与 .floecad 包)尚无可用的单负载读取器,不能声称已验证;真实模型提供商的生成闭环需要已配置凭据。[未发布] 对话界面、工况/权威工具接线与能力实时探测均尚未集成,界面细节与真机验收仍由主协调完成,且不会因为单元测试通过或构建变绿而自动成立。

搜索文档

    搜索结果会跳到对应章节。