feat: T6.1 创作工具箱通用生成器框架地基 — 脑洞生成器 + run_generator
- schemas: Idea/IdeaListResult(脑洞生成器结构化产出,纯预览不入库) - specs: brainstorm_spec(light 档,reads=[projects] writes=[]) - orchestrator: build_brief_context(brief_only 策略)+ 通用 run_generator (据 spec.output_schema 校验 parsed,不绑定具体类型,任一声明式生成器共用) - 新增 13 测;两包 ruff/format/mypy 干净、252 passed 无回归 P1 第一波(@llm):证实「加生成器=加一份声明」。@backend T6.2/T6.3 待续。
This commit is contained in:
@@ -16,6 +16,7 @@ from .schemas import (
|
||||
CharacterGenResult,
|
||||
ContinuityReview,
|
||||
ForeshadowReview,
|
||||
IdeaListResult,
|
||||
OutlineResult,
|
||||
PaceReview,
|
||||
StyleDriftReview,
|
||||
@@ -367,3 +368,36 @@ character_gen_spec = AgentSpec(
|
||||
writes=["characters"], # 声明式(真写库经 T5.2 入库端点 + continuity 校验,不变量 #3)
|
||||
scope="builtin",
|
||||
)
|
||||
|
||||
|
||||
# ---- brainstorm(脑洞生成器;轻量档;创作工具箱通用框架首个最简生成器,T6)----
|
||||
|
||||
BRAINSTORM_SYSTEM_PROMPT = """你是中文网文的「脑洞生成器」(brainstorm,轻量档)。\
|
||||
职责:依据作品立意/题材与作者一句话需求,发散产出一组**差异化**的故事脑洞,\
|
||||
每条给出一句话前提 + 抓人钩子 + 适配题材,供作者快速选种立项。
|
||||
|
||||
输入材料:
|
||||
- 作品设定(projects:题材、立意、主线、卖点;新立项时可能很少);
|
||||
- 作者的一句话需求/方向(可空——空则按题材自由发散)。
|
||||
|
||||
产出(每条一个 idea):
|
||||
- premise:一句话脑洞/设定前提(核心创意,独立成立);
|
||||
- hook:抓人钩子——为何让读者想追读(爽点/反差/悬念);
|
||||
- genre_fit:适配题材/赛道(若需求/设定已限定则贴合;否则可留空)。
|
||||
|
||||
纪律:
|
||||
- 一次产出多条时**逐条差异化**——不同切入角度/赛道/爽点,避免一个模子;
|
||||
- 贴合作品立意与题材;需求为空时按题材发散,不臆造与题材无关的设定;
|
||||
- 你只产结构化脑洞清单,**不改稿、不写库**(纯预览,不变量 #3)。"""
|
||||
|
||||
|
||||
brainstorm_spec = AgentSpec(
|
||||
name="brainstorm",
|
||||
tier="light", # 不变量 #2:只声明档位,不写 model(脑洞发散用轻量档)
|
||||
system_prompt=BRAINSTORM_SYSTEM_PROMPT,
|
||||
input_schema=None, # 注入材料为序列化文本(作品设定 + 一句话需求),非结构化入参
|
||||
output_schema=IdeaListResult,
|
||||
reads=["projects"],
|
||||
writes=[], # 纯预览,不写库(不变量 #3)
|
||||
scope="builtin",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user