Files
writing-agent/src/config/default-orchestrator.ts

58 lines
2.6 KiB
TypeScript
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.
import type { SkillIndexEntry, SkillStartupMode, ActiveSkillSnapshot } from "../types/runtime.js";
/** 新建作品时自动加载的能力库(用户不再选 skill 包) */
export const DEFAULT_ORCHESTRATOR_ID = "world-simulator";
/**
* 首屏引导兜底(包内 orchestrator.md `uiPrompt` 优先)。
* 词汇与 design-intake A1/A2 对齐:站位 + 系统扮演/输出/交互。
*/
export const DEFAULT_UI_PROMPT = `请用你自己的话描述想做什么——没有必填项,下面只是帮你找思路的提示。
【你扮演什么】(可对照,也可不按表)
· 单角代入:我就是一个固定角色
· 代理操控:我有角色,但常发 () 指令指挥
· 旁观/实验:我不扮演谁,看或记录推演
· 写手/统筹:我定方向,要成稿或助手式分段(长文 / 爽文也走这条)
· 多角切换:我轮流扮演不同身份
【系统要给你什么】(输出与交互,不是文风问卷)
· 回合对话:你一句,系统回一段可见结果
· 助手分段:先大纲/细纲,你再填表或改设定,再按章/段写正文
· 只要事实摘要 / 要可读叙事 / 要状态表…
【输入约定】可选用括号区分:
· () 圆括号:用户指令/要求,不可写成角色对白
· "" 双引号:角色在世界内说的话
· 【】方括号:角色在世界内的行动
未加标记时默认可视为世界内输入;语义明显是元话语按指令处理。
【核心体验】若愿意可带一句:你最想反复感到的是什么——没有也没关系,我会从描述里察觉。
示例丧尸世界但我不会被感染1v1 网恋;都市爽文先写大纲再按章开写;坠机求生;思想实验旁观三方选择……`;
export function resolveDefaultOrchestratorId(
available: SkillIndexEntry[],
): string {
if (available.some((s) => s.name === DEFAULT_ORCHESTRATOR_ID)) {
return DEFAULT_ORCHESTRATOR_ID;
}
if (available.length === 0) {
throw new Error("registry 中没有可用 orchestrator");
}
return available[0].name;
}
/** 兼容旧快照world-simulator 默认 agent-firstUI 引导 → 用户输入 → Agent 调 Skill */
export function effectiveStartupMode(
skill: Pick<ActiveSkillSnapshot, "name" | "startupMode">,
): SkillStartupMode {
if (skill.startupMode === "agent-first" || skill.startupMode === "intake") {
return skill.startupMode;
}
// 旧 frontmatter design-intake bootstrap 已废弃,等同 agent-first
if (skill.startupMode === "design-intake") return "agent-first";
if (skill.name === DEFAULT_ORCHESTRATOR_ID) return "agent-first";
return "intake";
}