工作流封装 · 个人项目 · 2026.09

行研报告自动化 · 工作流封装

把一套成熟的 B 端行研咨询工作流(8 大工序模块、约 32 万字 SOP),从「人当调度器」 封装成「编排器调度 + 人工闸门把关」的可断点续跑 agent 工作流。 不推翻原有话术,只替换掉其中「人在记步骤、人在复制粘贴、人在判断该不该继续」的部分。

11
工序模块 A–I
37
可渲染步骤
13
产物命名契约
76
测试用例(35+41)
0
第三方依赖

为什么要封装

原模板是一套提示词 SOP 产品:每个模块给你一大段标准话术,粘进模型, 每一步产出后自己判断,再回复「进入 stepN / 继续」推进。

它成熟、经过实战。但 人就是调度器 —— 这既是它的质量控制机制,也是它无法自动化的瓶颈。

封装的原则:不动话术,只动调度。
模块里的提示词是逐字原文,只做两处无损处理 —— 删掉与其他模块重复的公共参数段(改为占位符)、 把缩进层级整理成 Markdown。

六项改造

每一行都是「原来靠人 → 现在靠系统」,且都有落地的文件。

原模板(靠人)封装后(靠系统)落地物
参数层 A/B/C/D/E/F1 每个模块的「第零步」都要手工粘贴同一大段公共参数 参数集中在 project.json 统一维护,渲染时自动注入四段结构 shared/公共参数.md
调度层 人记住「到哪一步了」,靠回复「进入 stepN / 继续」推进 状态机 + 每次运行的 state.json,支持断点续跑 engine/orchestrator.py
物料层 人工复制粘贴上游成果(D 模块甚至专门写了「复制黏贴其他 APP 成果」一节) 产物契约 + artifacts.json,下游自动注入 shared/产物契约.md
闸门层 人肉把关,全靠自觉 auto / human / check 三类闸门显式声明,可审计 shared/闸门协议.md
共享约束 制表规范在 F1 里重复两遍;去 AI 味文风在备份区重复 12 遍 抽为共享文件,按模块按需注入 shared/制表规范.md
留痕 每次运行留 prompts/(渲染后提示词原文)+ answers/(原始回答)+ run.log runs/<ts>/

流水线

A背景及目的
B原生数据解析
C章节切割
D打标字段设计
E数据打标
F1指标体系&Demo
F2定量数表骨架
F3纯定量报告
/
G纯定性报告
H定性定量合并
I报告正文撰写

13 个产物的命名契约见 shared/产物契约.md;模块依赖关系定义在 workflow.json。

成熟度(如实反映断点)

母本本身的「成熟」是不均匀的 —— A–F1 是经实战的完整话术,F2 之后在母本里是空的。封装没有掩盖这一点。

模块母本状态本封装的实现方式可用度
A 背景及目的生成器完整话术逐字收录
B 原生数据解析完整话术逐字收录 + 解析脚本
C 章节切割 & 对应数据完整话术(含禁配规则)逐字收录
D 打标字段 & 标签设计完整话术(2 环节)逐字收录
E 数据打标标注「他方封装」,实含 142 行引导词逐字收录母本引导词;工程细节(分批策略 / 规模上限 / 跨批口径)原文未述中高
F1 定量指标体系 & 章节 DEMO完整话术(含制表规范)逐字收录
F2 定量数表骨架母本为空回收备份区内容(逐字)+ 自研 Python 跑数引擎中高
F3 纯定量报告母本为空回收备份区内容 + 两步(已去重)中高
G 纯定性报告母本为空回收备份区定性分支;有两处缺口已标注
H 定性定量合并标注「待出」无历史实现可回收,全部相关原话只有 2 行。未编造话术
I 报告正文撰写母本无此节点回收备份区四步中高
建议起手方式:先只跑 A → B → C → D 这一段(母本最成熟,且 C/D 是后段所有产物的地基), 确认产物对了再往后放。不要一上来就跑全链。

怎么用

网页版控制台

python main.py web          # 或双击 run-web.bat
浏览器打开 http://127.0.0.1:8770/

在页面上可完成整条流程:看流水线进度 → 渲染当前步骤提示词(一键复制)→ 粘贴回答提交 → 放行 / 打回 → 看产物与留痕 → 跑确定性脚本。纯标准库,不依赖框架或 CDN,离线可用。

命令行

python main.py              # 仪表盘 + 数字菜单
python main.py init --project project/my-project.json
python main.py next
python main.py submit A --step step1 --file ans.md
python main.py approve      # 该步是 human 闸门时
有界设计:程序入口只有两个 —— main.py(命令行)与 web/server.py(网页版)。 engine/、scripts/ 下的文件都不需要直接调用。

质量与留痕

引擎冒烟测试 35 项 —— 状态机 / 闸门 / 渲染器 / 全 37 步渲染扫描 / 11 模块 DAG 走通
脚本回归测试 41 项 —— 数据画像 / 打标链路 / 制表规范落实 / 禁配报错
确定性脚本 parse_raw_data.py · label_data.py · quant_tables.py
留痕惯例 每次运行产出 prompts/(渲染后提示词原文)+ answers/(模型原始回答)+ run.log, 沿用既有工程 generated/ 的证据链做法

技术栈

Python 3纯标准库零第三方依赖 本地 Web 控制台状态机 + 断点续跑 产物契约闸门协议

路径说明
main.py命令行入口:仪表盘 + 数字菜单 + 全部子命令
web/网页版控制台(纯标准库,127.0.0.1:8770)
engine/orchestrator.py编排器:状态机、闸门、渲染器
workflow.json流水线定义:模块 / 依赖 / 步骤 / 闸门 / 13 个产物契约
modules/各模块规格说明书 + 逐字话术
shared/公共参数 · 闸门协议 · 产物契约 · 制表规范 · 文字风格规范
scripts/确定性数据处理脚本(解析 / 打标 / 跑数)
tests/引擎冒烟 + 脚本回归
runs/每次运行的状态、提示词、回答、产物
docs/设计说明 · 物料流转 · 开发计划 · 已知缺口

这件事真正难在哪

难的从来不是写一个编排器 —— 是判断哪些环节该自动化、哪些必须留给人

原 SOP 之所以要人一步步回复「继续」,不是因为技术上做不到自动跳转, 而是因为每一步的产出质量需要人确认。所以正确的做法不是把人拿掉, 而是把人从「调度」挪到「把关」

三类闸门在 workflow.json 里是显式声明、可审计的 —— 而不是散落在提示词里的那句「请确认无误后再继续」。

关于本页:本页仅为项目展示,不含源 SOP 的任何话术内容 —— 底层工作流属于原模板作者的知识产权,本页只描述封装工程的改造方式与结构。

个人项目 · 2026.09