Files
writer-work-flow/packages/agents/ww_agents/__init__.py
Yaojia Wang 1652ad9d20 feat(backend): AI 反问澄清预检端点——refine 侧结构化 clarify(WFW-9 M1,路线A 两阶段)
润色「再沟通」意见含糊时先反问给选项(路线A:问题走独立非流式 JSON 预检端点,正文仍走
既有 refine 一字不改)。新增:
- ClarifyDecision/ClarifyQuestion/ClarifyOption 结构化 schema(既有 output-schema 处,供
  producer 与端点共用);clarify_refine.md 教条(含糊→need_clarification+≤1问+2–4锚定选项+
  自由输入;明确→verification 放行;防循环);注册 clarify_refine_spec(analyst 档,#24)+
  SCHEMA_CATALOG + 重生成金标准。
- clarify_node:build_clarify_request 纯函数(缓存前缀不含易变) + run_clarify(gateway.run
  结构化,判别/校验失败确定性回退 need_clarification=false,只读不写库)。
- POST /projects/{id}/chapters/{no}/refine/clarify → ClarifyDecision(analyst 网关,404/503,
  末尾 commit 记账)。**既有 refine 端点/RefineRequest/Response 完全未改**。
门禁绿:ruff/mypy 227/pytest 900(+test_clarify_spec/_node/style clarify)/alembic 无漂移。
2026-07-08 08:47:13 +02:00

166 lines
3.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""ww-agents内置 Agent 声明AgentSpec+ 结构化输出 schemaC6
对齐 ARCH §5.1AgentSpec/ §5.4I/O 契约)/ §6.1(冲突分类)/ §6.2 §6.4(伏笔/节奏)。
"""
from __future__ import annotations
from .prompt_loader import PromptNotFoundError, load_craft_doctrine, load_prompt
from .schema_catalog import SCHEMA_CATALOG, output_schema_for
from .schemas import (
Blurb,
BlurbResult,
BookTeardownResult,
CharacterCard,
CharacterGenResult,
CharacterizationIssue,
CharacterizationReview,
CharacterRelation,
ClarifyDecision,
ClarifyOption,
ClarifyQuestion,
Conflict,
ConflictType,
ContinuationResult,
ContinuityReview,
DeAiResult,
DetailedOutlineResult,
ForeshadowReview,
ForeshadowSuggestion,
ForeshadowWindow,
GlossaryResult,
GlossaryTerm,
GoldenFinger,
GoldenFingerResult,
Idea,
IdeaListResult,
NameListResult,
NameSuggestion,
Opening,
OpeningResult,
OutlineChapter,
OutlineResult,
PaceIssue,
PaceReview,
PolishResult,
ProjectPlanResult,
Scene,
StyleDimension,
StyleDriftReview,
StyleDriftSegment,
StyleFingerprintResult,
Title,
TitleListResult,
WorldEntityCard,
WorldGenResult,
)
from .specs import (
REVIEW_RESERVED_NAMES,
SPECS,
AgentSpec,
blurb_spec,
book_title_spec,
brainstorm_spec,
character_gen_spec,
characterization_spec,
clarify_refine_spec,
continue_spec,
continuity_spec,
de_ai_spec,
expand_spec,
fine_outline_spec,
foreshadow_spec,
glossary_spec,
golden_finger_spec,
name_spec,
opening_spec,
outliner_spec,
pace_spec,
project_plan_spec,
refiner_spec,
style_drift_spec,
style_extract_spec,
teardown_spec,
worldbuilder_spec,
)
__all__ = [
"REVIEW_RESERVED_NAMES",
"SCHEMA_CATALOG",
"SPECS",
"AgentSpec",
"Blurb",
"BlurbResult",
"BookTeardownResult",
"CharacterCard",
"CharacterGenResult",
"CharacterizationIssue",
"CharacterizationReview",
"CharacterRelation",
"ClarifyDecision",
"ClarifyOption",
"ClarifyQuestion",
"Conflict",
"ConflictType",
"ContinuationResult",
"ContinuityReview",
"DeAiResult",
"DetailedOutlineResult",
"ForeshadowReview",
"ForeshadowSuggestion",
"ForeshadowWindow",
"GlossaryResult",
"GlossaryTerm",
"GoldenFinger",
"GoldenFingerResult",
"Idea",
"IdeaListResult",
"NameListResult",
"NameSuggestion",
"Opening",
"OpeningResult",
"OutlineChapter",
"PromptNotFoundError",
"OutlineResult",
"PaceIssue",
"PaceReview",
"PolishResult",
"ProjectPlanResult",
"Scene",
"StyleDimension",
"StyleDriftReview",
"StyleDriftSegment",
"StyleFingerprintResult",
"Title",
"TitleListResult",
"WorldEntityCard",
"WorldGenResult",
"blurb_spec",
"book_title_spec",
"brainstorm_spec",
"character_gen_spec",
"characterization_spec",
"clarify_refine_spec",
"continue_spec",
"continuity_spec",
"de_ai_spec",
"expand_spec",
"fine_outline_spec",
"foreshadow_spec",
"glossary_spec",
"golden_finger_spec",
"load_craft_doctrine",
"load_prompt",
"name_spec",
"opening_spec",
"outliner_spec",
"output_schema_for",
"pace_spec",
"project_plan_spec",
"refiner_spec",
"style_drift_spec",
"style_extract_spec",
"teardown_spec",
"worldbuilder_spec",
]