import type { EmotionTag } from "@kokorone/shared"; // K-4 發言權分配:各因素的權重與門檻。 export const SPEAKING_THRESHOLD = 0.25; export const NAMED_BOOST = 0.6; // 被點名/被提問幾乎必回 export const BASELINE_WEIGHT = 0.3; export const TOPIC_RELEVANCE_WEIGHT = 0.25; export const EMOTION_WEIGHT = 0.15; export const RELATIONSHIP_WEIGHT = 0.15; // 剛發言者衝動下降;被冷落的角色衝動值隨連續沉默輪數累積(有上限)。 export const SPEAK_COOLDOWN_PENALTY = 0.35; export const SILENT_STREAK_BONUS_PER_TURN = 0.05; export const SILENT_STREAK_BONUS_CAP = 0.3; export const EMOTION_SPEAKING_MODIFIER: Record = { CALM: 0, JOY: 0.3, // 愉悅多話 SAD: -0.3, // 低落沉默 ALERT: 0.1, // 警戒時會出聲反應 SHY: -0.1, // 害羞會退縮 GRUMPY: -0.2, // 彆扭故意不接話 }; // K-2 群聊矜持:在群聊中,實際傳入生成上下文的親密度會被下修,讓模板系統自然選到更收斂的回應。 export const GROUP_RESERVE_INTIMACY_PENALTY = 35; // 傲嬌式反向表達在群聊中「人前更嘴硬」,額外多下修一些。 export const TSUNDERE_EXTRA_GROUP_PENALTY = 15; // K-6 角色自聊 export const SELF_CHAT_MAX_TURNS = 12; export const STALL_CHECK_WINDOW = 3; // 檢查最近幾輪是否開始空轉 export const TOPIC_TWIST_LINES = [ "對了,說到這個,我突然想到另一件事……", "欸,先別說這個了,你們聽說了嗎——", "話說回來,今天發生了一件蠻好玩的事。", ]; export const SELF_CHAT_WRAP_UP_LINES = ["好啦,先聊到這裡吧,晚點再聊!", "時間也差不多了,先這樣吧~"];