description: "Per-message feedback for the Web GUI: the Like/Dislike pair and optional note in the finalized assistant message's action row; for users and maintainers of the feedback experience."
English | 中文
This package adds per-message feedback to the Web GUI: a Like/Dislike pair plus an optional note, contributed as the feedback entry of the finalized assistant message's action strip. It renders on the closing assistant message of each turn — earlier steps of a multi-step turn produce tool rows rather than a rateable body. One controller per Session backs every message control in that Session, so a single list read seeds the whole transcript. Feedback is a sidecar: ratings and notes never enter the session log, the model context, or telemetry.
Mount this plugin alongside ui-conversation; the Like/Dislike pair then appears in the action row of each turn's closing assistant message, between copy and branch. Clicking the recorded rating retracts the feedback; switching sides carries the existing note forward. The note editor is a dialog popover anchored under its trigger, so the row keeps its single line whether the editor is open or closed.
A rating or list-load failure shows inline in the row; a note-save failure shows inside the popover, which stays open so the draft can be corrected. Only finalized messages reach the slot — an interruption-frozen partial carries no messageId and therefore no feedback controls.
Read these pages when the feedback surface is not enough. They move from the browser strip to the sidecar backend and the conversation shell.
None, as feedback is a sidecar that never enters the append-only Session log, the model context, or telemetry; no rating or note is ever visible to the model.
None; no feedback mutation touches the history tail.
These limits define the current feedback surface. They are current package constraints, not a general rating comparison or a task backlog.
maxNoteBytes (8192 in the Web bundle) and the Host rejects an oversized note with note-too-large. The editor does not pre-check the limit, so an oversized note fails on save rather than while typing.messageId.