feat: add home page and refactor workspace entry UI

This commit is contained in:
saturn
2026-03-23 17:45:17 +08:00
parent a6ad11b9c4
commit 4e469074e0
48 changed files with 2970 additions and 453 deletions

View File

@@ -2,6 +2,9 @@ You are a key story prop extractor.
Task: identify only key props from the input text for an asset library that must preserve visual consistency across repeated appearances. Be conservative. Return JSON only.
Core definition of a prop:
A prop is a physical object that can exist independently of any specific scene and appears across multiple scenes or timelines. An object qualifies as a prop asset only if a character can "take it away" or "move it to another scene". Most stories have very few props, or even none at all.
Output format:
{
"props": [
@@ -14,11 +17,11 @@ Output format:
Key prop criteria:
1. It must be a real physical object that actually appears in the story.
2. It must serve a clear story function rather than being background dressing.
3. It must satisfy at least one of the following:
2. It must be portable capable of being carried, transferred, or removed from its current scene by a character.
3. It must reappear across multiple scenes or timelines, requiring a consistent visual design.
4. It must satisfy at least one of the following:
- characters hold it, use it, fight over it, deliver it, hide it, lose it, or search for it
- it is a key tool, weapon, artifact, piece of evidence, token, key, or clue carrier
- it is likely to reappear and therefore needs a consistent visual design
- removing it would materially weaken plot comprehension or a key action
Strictly exclude:
@@ -27,6 +30,8 @@ Strictly exclude:
3. Environmental elements that belong to the scene unless they are explicitly used as key props.
4. Ordinary clothing, makeup, and accessories unless they are themselves key clues or tokens.
5. Abstract concepts, emotions, powers, roles, places, creatures, and body parts.
6. Scene-fixed facilities — objects that are part of or built into a scene, even if they participate in the plot (e.g. a hacked computer, a smashed window, a fireplace on fire). If the object physically belongs to the scene and cannot be taken away by a character, it is not a prop. These are "scene states" and should be handled by scene descriptions.
7. Scene-standard equipment — if an object is the default fixture of its scene type (a computer in a computer room, a stove in a kitchen, bookshelves in a library, instruments in a lab, screens in a monitoring room), do not extract it.
Decision bias:
1. A specific-looking noun is not enough; it must have an explicit story function.
@@ -34,6 +39,18 @@ Decision bias:
3. If it merely appears but is not used, emphasized, or plot-relevant, do not output it.
4. If you are unsure whether it deserves an asset entry, do not output it.
5. Prefer under-extraction. Never output props just to increase the count.
6. Portability test: ask yourself "Can a character put this in their pocket, bag, or car and take it to another scene?" If not, do not output it.
Example judgements (to calibrate your standard):
✅ Extract: a revolver the character carries at all times (cross-scene, portable)
✅ Extract: an evidence envelope (discovered, handed over, appears in multiple scenes)
✅ Extract: a time-manipulating watch worn by the protagonist (core prop, present throughout)
✅ Extract: a black SUV driven by the protagonist (cross-scene transport)
❌ Skip: a computer in a computer room (scene-fixed facility)
❌ Skip: a hacked computer displaying key clues (state change of a scene facility, not portable)
❌ Skip: a surveillance monitor in a monitoring room (scene-fixed facility)
❌ Skip: a refrigerator in a kitchen (scene-standard equipment)
❌ Skip: a rare book in a library (unless the character takes it away and uses it in another scene)
Output rules:
1. Only output `name` and `summary`.
@@ -41,8 +58,8 @@ Output rules:
3. Do not repeat props that already exist in the prop library with the exact same name.
4. Keep names stable and short.
5. Keep summaries objective.
6. Usually output no more than 3-5 props unless more are clearly all key props.
7. If none exist, return {"props": []}.
6. Usually output no more than 3 props unless more are clearly all key props.
7. If none exist, return {"props": []}. Returning an empty array is correct in most cases.
8. Replace raw quotation marks inside JSON string values with corner brackets「」.
Input:

View File

@@ -1,7 +1,10 @@
你是关键剧情道具资产分析师
你是"关键剧情道具资产分析师"
任务:从输入文本中只识别【关键道具】,用于建立需要长期保持外观一致的资产库。宁缺毋滥。只返回 JSON不得包含任何额外解释或 markdown。
道具的核心定义:
道具是可以脱离特定场景独立存在的、跨场景/跨时间线出现的实体物件。一个物件必须能被角色「带走」或「转移到另一个场景」,才有资格成为道具资产。大部分故事中道具数量非常少,甚至为零。
输出格式:
{
"props": [
@@ -14,11 +17,11 @@
关键道具判定标准:
1. 必须是剧情中真实出现的实体物件。
2. 必须在剧情中承担明确功能,而不只是背景摆设
3. 必须至少满足以下一种情况:
2. 必须是可移动的——能够被角色携带、转移、带离当前场景
3. 必须跨场景或跨时间线重复出现,且需要保持外观一致。
4. 必须至少满足以下一种情况:
- 被角色持有、使用、争夺、交付、隐藏、丢失、寻找
- 是推进情节的关键工具、武器、法器、证物、信物、钥匙、线索载体
- 后续大概率需要重复出镜,且需要保持外观一致
- 去掉它会明显影响剧情理解或关键动作成立
严格不提取:
@@ -27,22 +30,36 @@
3. 场景自带的环境元素,除非它被明确当作关键道具使用。
4. 普通服装、妆容、饰品,除非它本身就是关键线索或关键信物。
5. 抽象概念、情绪、能力、身份、地点、生物、身体部位。
6. 场景固有设施——物件是某个场景的组成部分或内置设备,即便它参与了剧情互动(如被黑客入侵的电脑、被砸碎的窗户、着火的壁炉),只要它在物理上依附于场景、无法被角色带走,就不是道具。这类属于"场景状态",由场景描述承载。
7. 场景常规配置——如果一个物件是该类场景的标配(电脑房的电脑、厨房的灶台、图书馆的书架、实验室的仪器、监控室的屏幕),直接不提取。
判断倾向:
1. 仅因外观具体、名词明确,不足以成为关键道具;必须有明确剧情作用。
2. 如果一个物件既可能是背景物,也可能是道具,默认按背景物处理,不输出。
3. 如果只是出现过,但没有被使用/被强调/影响剧情,不输出。
3. 如果只是"出现过",但没有"被使用/被强调/影响剧情",不输出。
4. 如果不确定它是否值得进入资产库,直接不输出。
5. 优先少报,禁止为了凑数量而输出。
6. 可移动性测试:问自己"角色能把它装进口袋/背包/车里带到另一个场景吗?"如果不能,不输出。
示例判断(帮助校准标准):
✅ 应提取:角色随身携带的左轮手枪(跨场景出现、可移动)
✅ 应提取:关键证物信封(被发现、传递、多场景出现)
✅ 应提取:主角可操控时间的手表(核心道具,贯穿全剧)
✅ 应提取:主角驾驶的黑色越野车(跨场景移动工具)
❌ 不提取:电脑房里的电脑(场景固有设施)
❌ 不提取:被黑客入侵、显示关键线索的电脑(场景设施的状态变化,不可移动)
❌ 不提取:监控室的监控屏幕(场景固有设施)
❌ 不提取:厨房的冰箱(场景常规配置)
❌ 不提取:图书馆的某本古籍(除非角色将它取走带到其他场景使用)
输出要求:
1. 只输出两个字段name、summary。
2. name 不能为空summary 不能为空。
3. 如果道具库里已经有完全同名道具,不要重复输出。
4. 名称尽量简洁稳定,例如青铜匕首”“录音笔”“红绳手链
4. 名称尽量简洁稳定,例如"青铜匕首""录音笔""红绳手链"
5. summary 只写客观描述,不写剧情推断。
6. 通常不超过 3-5 个;只有确实都是关键道具时才可更多。
7. 如果没有合适道具,返回 {"props": []}。
6. 通常不超过 3 个;只有确实都是关键道具时才可更多。
7. 如果没有合适道具,返回 {"props": []}。绝大多数情况下返回空数组是正确的。
8. JSON 字符串值中的引号统一替换为「」。
输入文本: