内容生产

v3.0 · 骨架
同样的六步,重新装一遍
架构总览 1.0 2.0 3.0
一句话:把「写一篇能用的内容」拆成六个可检查的步骤,每一步的输入输出都是文件 —— 所以每一步都能单独重跑、单独替换、单独对账。

为什么重写

2.0 跑得住,但带不走
2.0 的标准在服务器上,执行端只放指针。这套设计在自家环境里是对的 —— 唯一源不会漂。
但它有个前提:你得先连上那台服务器。换台机器、换个人接手,第一步就要访问权,然后还得有人讲一遍「这套东西认什么」。
3.0 的判断:标准本身也应该是一份可以拷走的东西。
顺带修掉三个老毛病
① 写到一半发现方向错了 —— 判断和写作都放在 X,产出是一份结构化 JSON,看完就知道这页会是什么样,不用等整页渲染。
② 同一张映射表存了两份 —— 值域只留一份,其他地方全部从它派生。派生出来的对不上,是派生坏了,不是定义坏了。
③ 出问题不知道错在哪一步 —— 每班一个目录,六步各留一份产物,哪步不对看哪份。

三层分工

chain/ config/ 定义层 · 可以被改的东西 改这里 = 改这套系统认什么 modules/ 执行层 · 一步一个文件 不许互相调用 runs/ 记录层 · 一班一个目录 六步产物全留
为什么按这三层分
不是审美,是变更频率不同。定义常改(加子域、改上限),执行少改(改判据才动),记录只追加。
把常改的和少改的混在一起,是这类系统最常见的死法 —— 改一个值要动一整套逻辑。
指标只有一个:改一个定义,需要碰几个文件。答案是 1 才算合格。

六个模块

A
扫描
找候选
只报有什么
模型
X
判定
唯一做判断
的地方
模型
B
组装
只渲染
缺就停住
纯代码
C
检查
只查机器
判得了的
纯代码
D
部署
推页 · 索引
默认不真推
纯代码
E
验收
线上四项
核验
纯代码
模块一句话边界
A 扫描只报「有什么」,不报「值不值得」
X 判定整链唯一做判断的地方
B 组装只渲染,缺东西就停住
C 检查只查机器判得了的,不评好坏
D 部署步骤顺序不可换
E 验收只验「线上对不对」
四条硬边界
① 只有 A 和 X 碰模型 —— 其余四个模块输入相同、输出必然相同。
② B 只渲染不判断 —— 契约里缺一块,它报错停住,不猜。
③ C 不评「写得好不好」—— 那是评审的事,不是检查器的事。
④ D 默认不真推 —— 要上线得显式开。

五张表

表回答什么
taxonomy有哪些类 / 子域 / 话题值
topics每个子域找什么、不找什么
search用谁去搜、花多少钱
sources从哪些地址抓
backlog这一类具体要写哪个点
为什么搜什么和怎么搜要分开
「找什么」是我们自己维护的判断 —— 哪些子域值得追、哪些词不对。
「怎么搜」是能力 —— 用框架自带的搜索,还是接某一家提供商的接口。
两件事的变更节奏完全不同:方向我们定,能力会换。写在一起,换一家搜索服务就得改一遍方向表。
同理,源是横向的:一个 RSS 可以覆盖好几个子域,所以它单独一张表,不挂在子域下面。

X 的两条路

框架内
→
停在 X · 出提示词
→
由 Agent 跑出结果
独立跑
→
配好接口
→
自己调模型
为什么留两条
在已经能做判断的框架里(比如带 Agent 的对话框),不需要再配一把 key —— 它跑到 X 就停,把提示词交出来,人贴给 Agent 就行。
要无人值守地跑,就得配接口自己调。
两条路共用同一份提示词模板,不是两套逻辑。
停在 X 是正常停点,不是失败。退出码是 0。

可复现

runs/{班次}/ run.json 这一班跑了什么 config/ 当时的配置快照 a-plan.md 任务单 prompt.md 给模型的提示词 x.json 判定结果 page.html 生成的页面 report.txt 检查报告 deploy.json 部署记录
为什么配置要快照
跑到一半有人改了配置,这一班该按改前的算还是改后的算?
快照让每一班的产出都能复现 —— 三个月后回看「这页为什么长这样」,答案就在那个目录里。
配置里的接口 key 不落快照,只留模式、地址、模型名。

现在的状态

骨架跑通了
六个模块全链走通,已经用真页跑过整条链(扫描 → 判定 → 组装 → 检查 → 部署 → 验收)。
值域收成了单一源,X 的两条路都验证过。
2026-11-05 · Python 版先跑,等稳定了再考虑换语言。
还没做的
块类型还是固定的几种,加一种新块要改代码 —— 应该改成「定义里加一条,代码不用动」。
覆盖面还不如 2.0,目前是能跑通,不是能替代。
最脆的一环是 X 的判断质量:它判错,后面五个模块会忠实执行一个错的决定。