4.7 KiB
4.7 KiB
从零创作工作流
用户提供主题、需求或简要说明,需要生成一份新的飞书文档时,遵循本工作流。
核心方法论 — Code-Act Loop
通过自适应的 Code-Act Loop 驱动文档创作,而非固定模板式的工作流。每次任务都循环执行:
- Plan(规划) — 根据用户目标和文档当前状态,评估下一步该做什么
- Execute(执行) — 由主 Agent 自己运行
lark-cli docs命令推进正文;仅画板渲染按需隔离到 SubAgent(见步骤三) - Observe(观察) — 检查命令输出,验证正确性,确认内容是否满足用户目标
- Iterate(迭代) — 如需调整,回到 Plan 继续循环
循环在文档达到质量标准且满足用户需求时结束。不要试图一次性产出完美内容——迭代打磨效果更好。根据用户实际需求灵活决定文档结构和版块,而不是套用固定模板。
典型 Code-Act Loop 流程
步骤一:规划与撰写(单 Agent 串行)
正文由主 Agent 串行维护,不按章节拆给并行 Agent,避免上下文割裂、重复矛盾和全文级约束失效。
- 分析用户需求:受众、目的、范围
- 设计大纲:根据任务自然选择结构。可以是短文、纪要、FAQ、方案、报告、清单或其他形式;不要默认套固定章节、固定开头或固定富 block 配比
docs +create创建并撰写:- 短文档:一次写入完整内容。使用 Markdown 时,避免同时传入
--title和同名# 标题 - 长文档:先建骨架(标题 + 各级标题),再由主 Agent 顺序逐节用
block_insert_after --block-id <章节标题 block_id>补全正文;写完一节再写下一节,始终带着已写内容的上下文,保证衔接、不重复 - ⚠️ 不要一次性把超长完整内容塞进
--content,容易触发字符/参数限制;长文按节分次写入 - ⚠️ 同一节内多次插入时,要锚到上一个新插入的 block(按
lark-doc-update.md的「Block ID 生命周期」),否则反复锚同一个标题会让段落顺序颠倒 - ⚠️ 若先建骨架写了占位摘要,补正文时删除占位摘要,不要留残渣
- ⚠️
@file路径限制:--content @file只接受当前工作目录下的相对路径,传绝对路径(如@/tmp/xxx.md)会报unsafe file path。需要落盘时,将文件写在 cwd 下,用完自行清理
- 短文档:一次写入完整内容。使用 Markdown 时,避免同时传入
步骤二:整合审查与画板识别(串行)
docs +fetch --api-version v2 --detail with-ids获取文档,审查整体效果- 评估内容是否满足用户目标:事实是否完整、结构是否清楚、语气是否匹配、是否保留必要素材;检查跨节有无重复、矛盾或断流。再按
lark-doc-style.md的「写完自检」快速核对,发现问题就地定向修正 - 画板识别:逐章节扫描,判断是否有段落用图明显比文字更易懂(流程 / 架构 / 时间线 / 对比 / 占比等,见
lark-doc-style.md的画板原则)。默认用文字,只有确需图示才记录需要插图的章节、推荐画板类型、mermaid/SVG 路径和用于画图的源内容
步骤三:画板处理与润色
- 优先处理步骤二识别出的画板需求:读取并按 lark-doc-whiteboard.md 选型和插入;正文本身不交给 SubAgent
- 由主 Agent 自行润色(不另起内容子 Agent,正文始终一人维护):文字密集且不易读时,优先拆段、加小标题或调整顺序——叙述内容保持成段,不要默认改成列表,只有确属并列要点 / 步骤才用列表(见
lark-doc-style.md);只有确实存在行列数据时才用<table>。其余富 block 的取舍一律遵循lark-doc-style.md的写作原则,不主动堆叠。需要明显分隔的主题可补充<hr/>,不强制章节间都使用。本地图片使用docs +media-insert插入
步骤四:专项校验
- 字数门禁:如果用户给出任何明确字数要求(如“700-800 字”“1000 字左右”“不少于 500 字”“控制在 800 字以内”),本步骤必须执行,不属于按需项。读取并执行
lark-doc-word-stat.md的「字数遵循校验」;未得到脚本统计结果前,不得向用户声明“符合字数要求”。若没有明确字数要求,则跳过本项,不读取该 workflow。若执行了专项校验,向用户呈现目标区间、word_count和达标结论 - 重复标题检查:文档生成后,检查文档标题和正文第一个标题块是否重复;若重复,删除或改写正文第一个标题块,避免读者看到同一标题连续出现