Преглед на файлове

扩展配置outputMode、状态机intent阶段、消息类型字段

Mochocyang преди 3 месеца
родител
ревизия
bfce26f2c1
променени са 3 файла, в които са добавени 22 реда и са изтрити 1 реда
  1. 12 0
      src/lib/novel/outline-section-configs.ts
  2. 5 1
      src/lib/novel/outline-workflow-state.ts
  3. 5 0
      src/stores/outline-chat-store.ts

+ 12 - 0
src/lib/novel/outline-section-configs.ts

@@ -9,12 +9,15 @@ export type OutlineSectionGenerationKey =
   | "foreshadowingPlan"
   | "foreshadowingPlan"
   | "locationsOutline"
   | "locationsOutline"
 
 
+export type OutlineOutputMode = "per_chapter" | "per_item" | "single"
+
 export interface OutlineSectionGenerationConfig {
 export interface OutlineSectionGenerationConfig {
   key: OutlineSectionGenerationKey
   key: OutlineSectionGenerationKey
   title: string
   title: string
   englishTitle: string
   englishTitle: string
   englishFileName: string
   englishFileName: string
   requestHint: string
   requestHint: string
+  outputMode: OutlineOutputMode
 }
 }
 
 
 export const OUTLINE_SECTION_GENERATION_CONFIGS: OutlineSectionGenerationConfig[] = [
 export const OUTLINE_SECTION_GENERATION_CONFIGS: OutlineSectionGenerationConfig[] = [
@@ -24,6 +27,7 @@ export const OUTLINE_SECTION_GENERATION_CONFIGS: OutlineSectionGenerationConfig[
     englishTitle: "Chapter Outlines",
     englishTitle: "Chapter Outlines",
     englishFileName: "chapter-outlines.md",
     englishFileName: "chapter-outlines.md",
     requestHint: "根据已有总纲、分卷大纲与章节推进需要,生成或完善章节细纲,明确每章目标、冲突、转折和结尾钩子。",
     requestHint: "根据已有总纲、分卷大纲与章节推进需要,生成或完善章节细纲,明确每章目标、冲突、转折和结尾钩子。",
+    outputMode: "per_chapter",
   },
   },
   {
   {
     key: "characterBriefs",
     key: "characterBriefs",
@@ -31,6 +35,7 @@ export const OUTLINE_SECTION_GENERATION_CONFIGS: OutlineSectionGenerationConfig[
     englishTitle: "Character Briefs",
     englishTitle: "Character Briefs",
     englishFileName: "character-briefs.md",
     englishFileName: "character-briefs.md",
     requestHint: "根据已有大纲和项目记忆,整理主要人物的小传、动机、弧线、关系网络与当前状态。",
     requestHint: "根据已有大纲和项目记忆,整理主要人物的小传、动机、弧线、关系网络与当前状态。",
+    outputMode: "per_item",
   },
   },
   {
   {
     key: "organizationsOutline",
     key: "organizationsOutline",
@@ -38,6 +43,7 @@ export const OUTLINE_SECTION_GENERATION_CONFIGS: OutlineSectionGenerationConfig[
     englishTitle: "Faction Notes",
     englishTitle: "Faction Notes",
     englishFileName: "organizations.md",
     englishFileName: "organizations.md",
     requestHint: "根据已有大纲和项目记忆,补完组织、势力、阵营目标、关系、冲突与剧情作用。",
     requestHint: "根据已有大纲和项目记忆,补完组织、势力、阵营目标、关系、冲突与剧情作用。",
+    outputMode: "per_item",
   },
   },
   {
   {
     key: "powerSystem",
     key: "powerSystem",
@@ -45,6 +51,7 @@ export const OUTLINE_SECTION_GENERATION_CONFIGS: OutlineSectionGenerationConfig[
     englishTitle: "Power System",
     englishTitle: "Power System",
     englishFileName: "power-system.md",
     englishFileName: "power-system.md",
     requestHint: "根据已有大纲和项目记忆,整理力量体系、等级规则、修炼路径、限制、代价与剧情作用。",
     requestHint: "根据已有大纲和项目记忆,整理力量体系、等级规则、修炼路径、限制、代价与剧情作用。",
+    outputMode: "per_item",
   },
   },
   {
   {
     key: "goldenFinger",
     key: "goldenFinger",
@@ -52,6 +59,7 @@ export const OUTLINE_SECTION_GENERATION_CONFIGS: OutlineSectionGenerationConfig[
     englishTitle: "Golden Finger",
     englishTitle: "Golden Finger",
     englishFileName: "golden-finger.md",
     englishFileName: "golden-finger.md",
     requestHint: "根据已有大纲和项目记忆,整理金手指/系统/外挂的规则、触发条件、成长路径、限制与剧情作用。",
     requestHint: "根据已有大纲和项目记忆,整理金手指/系统/外挂的规则、触发条件、成长路径、限制与剧情作用。",
+    outputMode: "per_item",
   },
   },
   {
   {
     key: "backgroundSetting",
     key: "backgroundSetting",
@@ -59,6 +67,7 @@ export const OUTLINE_SECTION_GENERATION_CONFIGS: OutlineSectionGenerationConfig[
     englishTitle: "Background Setting",
     englishTitle: "Background Setting",
     englishFileName: "background-setting.md",
     englishFileName: "background-setting.md",
     requestHint: "根据已有大纲和项目记忆,整理世界观背景、时代风貌、文化习俗、历史沿革与核心设定规则。",
     requestHint: "根据已有大纲和项目记忆,整理世界观背景、时代风貌、文化习俗、历史沿革与核心设定规则。",
+    outputMode: "single",
   },
   },
   {
   {
     key: "geographySetting",
     key: "geographySetting",
@@ -66,6 +75,7 @@ export const OUTLINE_SECTION_GENERATION_CONFIGS: OutlineSectionGenerationConfig[
     englishTitle: "Geography Setting",
     englishTitle: "Geography Setting",
     englishFileName: "geography-setting.md",
     englishFileName: "geography-setting.md",
     requestHint: "根据已有大纲和项目记忆,整理地理区域划分、重要地点、地域特色、势力分布地图。",
     requestHint: "根据已有大纲和项目记忆,整理地理区域划分、重要地点、地域特色、势力分布地图。",
+    outputMode: "per_item",
   },
   },
   {
   {
     key: "foreshadowingPlan",
     key: "foreshadowingPlan",
@@ -73,6 +83,7 @@ export const OUTLINE_SECTION_GENERATION_CONFIGS: OutlineSectionGenerationConfig[
     englishTitle: "Foreshadowing Plan",
     englishTitle: "Foreshadowing Plan",
     englishFileName: "foreshadowing-plan.md",
     englishFileName: "foreshadowing-plan.md",
     requestHint: "根据已有大纲和项目记忆,整理伏笔的埋设、推进、回收节奏与对应章节节点。",
     requestHint: "根据已有大纲和项目记忆,整理伏笔的埋设、推进、回收节奏与对应章节节点。",
+    outputMode: "per_item",
   },
   },
   {
   {
     key: "locationsOutline",
     key: "locationsOutline",
@@ -80,5 +91,6 @@ export const OUTLINE_SECTION_GENERATION_CONFIGS: OutlineSectionGenerationConfig[
     englishTitle: "Location Notes",
     englishTitle: "Location Notes",
     englishFileName: "locations.md",
     englishFileName: "locations.md",
     requestHint: "根据已有大纲和项目记忆,整理重要地点、地点规则、所属势力与剧情作用。",
     requestHint: "根据已有大纲和项目记忆,整理重要地点、地点规则、所属势力与剧情作用。",
+    outputMode: "per_item",
   },
   },
 ]
 ]

+ 5 - 1
src/lib/novel/outline-workflow-state.ts

@@ -1,5 +1,7 @@
 export type OutlineWorkflowStage =
 export type OutlineWorkflowStage =
   | "idle"
   | "idle"
+  | "intent_analysis"
+  | "waiting_user_input"
   | "collecting_requirements"
   | "collecting_requirements"
   | "sufficiency_check"
   | "sufficiency_check"
   | "generation_plan"
   | "generation_plan"
@@ -20,7 +22,9 @@ export interface OutlineWorkflowState {
 }
 }
 
 
 const ALLOWED_TRANSITIONS: Record<OutlineWorkflowStage, OutlineWorkflowStage[]> = {
 const ALLOWED_TRANSITIONS: Record<OutlineWorkflowStage, OutlineWorkflowStage[]> = {
-  idle: ["collecting_requirements"],
+  idle: ["intent_analysis", "collecting_requirements"],
+  intent_analysis: ["sufficiency_check", "waiting_user_input"],
+  waiting_user_input: ["sufficiency_check"],
   collecting_requirements: ["sufficiency_check"],
   collecting_requirements: ["sufficiency_check"],
   sufficiency_check: ["generation_plan", "collecting_requirements"],
   sufficiency_check: ["generation_plan", "collecting_requirements"],
   generation_plan: ["waiting_user_confirm"],
   generation_plan: ["waiting_user_confirm"],

+ 5 - 0
src/stores/outline-chat-store.ts

@@ -4,6 +4,8 @@ import { normalizePath } from "@/lib/path-utils"
 import type { AgentRunRecord } from "@/lib/agent/types"
 import type { AgentRunRecord } from "@/lib/agent/types"
 import type { ReferenceToken } from "@/lib/reference/types"
 import type { ReferenceToken } from "@/lib/reference/types"
 import { useWikiStore } from "@/stores/wiki-store"
 import { useWikiStore } from "@/stores/wiki-store"
+import type { IntentClarityResult } from "@/lib/novel/outline-intent-clarity"
+import type { NextStepRecommendation } from "@/lib/novel/outline-next-step"
 
 
 export type OutlineMultiAgentStatus =
 export type OutlineMultiAgentStatus =
   | "planning"
   | "planning"
@@ -59,6 +61,9 @@ export interface OutlineChatMessage {
   showThinkingProcess?: boolean
   showThinkingProcess?: boolean
   isAgentRunning?: boolean
   isAgentRunning?: boolean
   attachedReferences?: ReferenceToken[]
   attachedReferences?: ReferenceToken[]
+  intentPhase?: "intent_analysis" | "generation" | "waiting_user_input"
+  intentClarityResult?: IntentClarityResult | null
+  nextStepRecommendation?: NextStepRecommendation | null
 }
 }
 
 
 export interface OutlineChatConversation {
 export interface OutlineChatConversation {