description: "Free-text session feedback through a /feedback command, for users and maintainers choosing, composing, or debugging feedback capture."
English | 中文
dsh-command-feedback lets a user tell the harness what they think of a session: type /feedback plus a remark, and the remark is recorded and acknowledged. Recording is immediate and never starts model work, so it is safe at any point in a conversation — the model neither sees the remark nor is interrupted by it. The acknowledgement names the session and the anonymous user. The command ships with the Web client and needs no configuration; headless, ACP, and JSON-RPC entry points do not provide slash commands and cannot run it.
Users can record feedback from the Web client out of the box: the /feedback command ships with the standard dsh base, needs no configuration, and works in any conversation. A custom app gets the same command by mounting the command registry and this plugin together.
/feedback commandType /feedback followed by your remark and send it. A successful entry is acknowledged with the receiving session id and the anonymous user id:
| Input | Result |
|---|---|
/feedback the diff view is unreadable |
Record the remark and acknowledge with two lines: Feedback recorded for session {sessionId} and Anonymous user: {userId}. |
/feedback |
A usage error: Feedback text is required. Usage: /feedback <text>. Whitespace-only input counts as empty. |
Surrounding whitespace is trimmed, but the remark is otherwise kept exactly as typed: no truncation, case folding, or command parsing — /feedback /plan felt slow records that literal text. Each command records its own entry; nothing is merged or replaced.
Feedback does not have to come from the slash command: any UI, hook, or host integration can record a remark directly, with the same guarantees and without a model turn. A custom app that wants the slash command mounts the command registry plus this plugin:
- id: commands
name: '@deepseek-ai/dsh-commands'
- id: command-feedback
name: '@deepseek-ai/dsh-command-feedback'
The Web client ships the command. Headless mode, ACP automation, and JSON-RPC provide no slash commands, so /feedback is unavailable there.
Read these pages when the package-level contract is not enough. They cover the command registry, persistence, and identity facts this capture path relies on.
recordInput semantics./feedback captureNothing. The slash input, feedback/record, and the acknowledgement are absent from model requests. The feedback event and registry lifecycle records are log-only and carry no surfaceOp, so they never reach the ordered surface, deriveMessages(), or a system prompt. Recording feedback during a turn does not change that turn's remaining requests.
Zero direct token effect. Neither an accepted entry nor a usage error adds model tokens, in the recording turn or any later one.
Independent of the model request path. Recording appends to the session log only, leaving an already-reusable request prefix untouched. Nothing this package contributes can invalidate cache reuse.
These limits define where /feedback is a poor fit or behaves differently than a user might expect. They are current package constraints, not a task backlog.
feedback/record.ctx.sessions.flush(session)./feedback on a still-blank session records the event but shows no acknowledgement row. Recording feedback after the first message renders normally./feedback is unavailable there.