From ab6070e8e3c7ba9b8eae9a12649590bded089f9d Mon Sep 17 00:00:00 2001 From: Linghong Date: Sat, 22 Aug 2026 04:31:52 +0000 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E5=8A=A0=E5=9B=9E=E5=81=9A?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit master 的直连 Codex 改造把 HomeAgentMode 和「做游戏 / 做素材 / 做方案」模式栏 整个删了,合并后 startMode 在前端没有 planning 的来源,只能写死 direct-build。 立项策划链路的后端、prompt、澄清卡、审批卡都还在,但从首页够不着,CI 上 home.suite.ts 的两条 routes 做方案 用例也因此找不到按钮而挂。 不把三选一搬回来(那是 master 主动收掉的产品形态),只在输入框工具栏加一个 「做方案」开关:选中时 startMode 走 planning、提交按钮文案切成「进入立项策划」、 占位文案换成方案口径;不选中时与 master 的直连默认完全一致。 createHomeDraft / createHomeDraftAutomatically 改为由调用方传 startMode, 删掉 HOME_DRAFT_START_MODE 这个占位常量。 Co-Authored-By: Claude Opus 5 --- .../app-shell/useHomeProjectCreation.ts | 20 +++---- .../src/view/home/index.tsx | 55 ++++++++++++++++--- 2 files changed, 56 insertions(+), 19 deletions(-) diff --git a/apps/ai-game-creator-shell/src/features/app-shell/useHomeProjectCreation.ts b/apps/ai-game-creator-shell/src/features/app-shell/useHomeProjectCreation.ts index d8dd02110..84e470c91 100644 --- a/apps/ai-game-creator-shell/src/features/app-shell/useHomeProjectCreation.ts +++ b/apps/ai-game-creator-shell/src/features/app-shell/useHomeProjectCreation.ts @@ -44,12 +44,6 @@ type UseHomeProjectCreationOptions = { rememberRecentWorkspace: (projectPath: string) => void; }; -// 首页的「做游戏 / 做素材 / 做方案」模式选择随 HomeAgentMode 一起被 master 的直连 -// Codex 改造删掉了,`startMode` 在前端因此暂时没有 `planning` 的来源。立项策划链路 -// 的代码全部保留(后端、prompt、澄清卡、审批卡都在),只是 UI 入口待产品侧重新定; -// 在那之前首页统一按直接构建进入。 -const HOME_DRAFT_START_MODE: ProjectStartMode = 'direct-build'; - export function useHomeProjectCreation({ setStatus, setLauncherView, @@ -454,7 +448,10 @@ export function useHomeProjectCreation({ pendingNonEmptyProject !== null, ); - async function createHomeDraft(draft: HomeDraft) { + async function createHomeDraft( + draft: HomeDraft, + startMode: ProjectStartMode, + ) { const invoke = resolveTauriInvoke(); if (!invoke) { throw new Error('需要在 Tauri App 内运行'); @@ -470,11 +467,14 @@ export function useHomeProjectCreation({ selectedPath, draft.prompt, draft.attachments, - HOME_DRAFT_START_MODE, + startMode, ); } - async function createHomeDraftAutomatically(draft: HomeDraft) { + async function createHomeDraftAutomatically( + draft: HomeDraft, + startMode: ProjectStartMode, + ) { const invoke = resolveTauriInvoke(); if (!invoke) { throw new Error('需要在陶泥儿客户端内运行'); @@ -489,7 +489,7 @@ export function useHomeProjectCreation({ result, draft.prompt, draft.attachments, - HOME_DRAFT_START_MODE, + startMode, ); setStatus('已创建工作区,正在开始智能创作'); return '已创建工作区并进入项目开发'; diff --git a/apps/ai-game-creator-shell/src/view/home/index.tsx b/apps/ai-game-creator-shell/src/view/home/index.tsx index d8aa95000..f60c95354 100644 --- a/apps/ai-game-creator-shell/src/view/home/index.tsx +++ b/apps/ai-game-creator-shell/src/view/home/index.tsx @@ -1,8 +1,15 @@ -import { FolderKanban, FolderOpen, Plus, Sparkles } from 'lucide-react'; +import { + FileText, + FolderKanban, + FolderOpen, + Plus, + Sparkles, +} from 'lucide-react'; import type { FormEvent } from 'react'; import { useRef, useState } from 'react'; import BRAND_ICON from '../../../../../packages/shared/src/icons/taonier-product-ip.png'; +import type { ProjectStartMode } from '../../app/types'; import RichInputArea, { UploadButton } from './components/RichInputArea'; import { richTextToAttachments, @@ -24,7 +31,10 @@ type HomeViewProps = { status: string; onStatusChange: (status: string) => void; recentProjectRows: readonly HomeProjectRow[]; - onCreateDraftAutomatically: (draft: HomeDraft) => Promise; + onCreateDraftAutomatically: ( + draft: HomeDraft, + startMode: ProjectStartMode, + ) => Promise; onProjectsOpen: () => void; onProjectOpen: (path: string) => void; onProjectPick: () => void; @@ -46,6 +56,13 @@ export default function HomeView({ ); const [homeCreationBusy, setHomeCreationBusy] = useState(false); const homeCreationBusyRef = useRef(false); + // 首页只保留「做方案」一个开关:做游戏 / 做素材 沿用 master 的直连默认,走 + // direct-build;立项策划要委派子 Agent、挂澄清 pending、过 GDD 审批,只能由 + // planning 起链,所以必须在建项目之前就把 startMode 定下来。 + const [planningSelected, setPlanningSelected] = useState(false); + const startMode: ProjectStartMode = planningSelected + ? 'planning' + : 'direct-build'; async function createFromHome() { if (homeCreationBusyRef.current) { @@ -62,10 +79,10 @@ export default function HomeView({ onStatusChange('正在创建工作区'); try { onStatusChange( - await onCreateDraftAutomatically({ - prompt, - attachments: referencedAttachments, - }), + await onCreateDraftAutomatically( + { prompt, attachments: referencedAttachments }, + startMode, + ), ); } catch (error) { onStatusChange(error instanceof Error ? error.message : String(error)); @@ -110,18 +127,38 @@ export default function HomeView({ > { void createFromHome(); }} >
- + + + +