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:
@@ -298,3 +298,30 @@ class CharacterGenResult(BaseModel):
|
||||
default_factory=list,
|
||||
description="生成的角色卡清单;无则空列表",
|
||||
)
|
||||
|
||||
|
||||
# ---- 创作工具箱 · 脑洞生成器结构化输出(T6 通用生成器框架 · brainstorm)----
|
||||
|
||||
|
||||
class Idea(BaseModel):
|
||||
"""单条脑洞:前提 + 钩子 + 适配题材(创作工具箱最简生成器产物)。
|
||||
|
||||
纯预览产物——不映射任何业务表、不入库(`brainstorm_spec.writes=[]`,不变量 #3)。
|
||||
`genre_fit` 可缺(作者未限定赛道时由模型留空)。
|
||||
"""
|
||||
|
||||
premise: str = Field(description="一句话脑洞/设定前提")
|
||||
hook: str = Field(description="抓人钩子:为何让读者想追读")
|
||||
genre_fit: str | None = Field(default=None, description="适配题材/赛道(可缺)")
|
||||
|
||||
|
||||
class IdeaListResult(BaseModel):
|
||||
"""脑洞生成器结构化产出:一组脑洞(T6 · 通用生成器框架首个最简生成器)。
|
||||
|
||||
声明式只读(不变量 #3):纯预览,端点同步返回,不写任何业务表(仅记 ledger)。
|
||||
"""
|
||||
|
||||
ideas: list[Idea] = Field(
|
||||
default_factory=list,
|
||||
description="生成的脑洞清单;无则空列表",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user