Yanwai
Analyze chat emotion and context with Jev while keeping reply generation and sending under user control.
Analyze chat emotion and context with Jev while keeping reply generation and sending under user control.
Yanwai sends a current chat message and bounded prior context to Jev as a structured state. In the first round, Jev returns Choice distributions for scene, emotion, conversation progress, and applicable intent facts. When the first-round profile yields relevant reading cards or candidate actions, the app sends a second Jev request to review emotion and speech act and to select relevant readings or actions. Kotlin validates the returned option IDs and probability distributions, and the app displays emotion probabilities plus any supported interpretation or action. It can also run an emotion-only Choice request.
Choose the main emotion expressed by the target message at the time it was sent, using related prior context and allowing an unclear result.
The source-defined connector-check example uses target message “这还差不多。” and two earlier messages: the other person asks whether the user forgot their weekend meal plan, and the user replies that they remember and will send the restaurant and time tomorrow. AnalysisState builds the target message, speaker, available timestamp and timezone metadata, bounded earlier context, and context-coverage fields from the AnalysisInput; this summary does not assert runtime-derived timestamps or metadata values.
The chat hook reads visible message rows and gathers earlier context. AnalysisState filters and bounds context, then adds speaker, message source, available time information, and coverage metadata to the state.
JevProtocol sends scene, emotion, progress, and applicable intent questions together against that state. Each is a Choice with repository-defined option IDs and descriptions.
Kotlin checks the returned answer type, choice ID, probability keys, and probability totals. It uses the profile to determine which reading cards or actions could apply.
When candidates exist, JevProtocol asks Jev to review emotion and speech act, choose applicable readings and actions, and check each candidate action’s source-text prerequisite. If no candidate reading or action applies, the app uses the first-round result.
The app only accepts a selected action when its candidate remains permitted and its support check is affirmative. It renders emotion probabilities and any validated interpretation or suggestion in the message analysis card; display toggles affect presentation only.
The app treats emotional and conversational interpretations as bounded choices with probability distributions, not generated diagnoses. Its second round independently rechecks the first-pass labels and validates action prerequisites against the conversation, including suppressing advice that would continue after a refusal or request to pause.