d4551/deepseek-harness--packages-client-ui-goal ↗★ 4
@deepseek-ai/dsh-client-ui-goal
Session goal surface: GoalBar docked above the composer, read from the goal session projection 适合需在 Web 中查看并管理当前会话目标的用户,变更经目标服务并内联显示拒绝
같은 패키지 이름의 다른 저장소
- deepseek-ai/deepseek-harness--packages-client-ui-goal
- whitelonng/dshcode--packages-client-ui-goal
- fufankeji/deepseek-harness-studio--packages-client-ui-goal
- op7418/pilot-harness--packages-client-ui-goal
- See-Sol-Lab/DeepSeekGUI--packages-client-ui-goal
- peiyuwang54/deepseek-harness-cli--packages-client-ui-goal
설치
검증된 bundle이 없거나 호환성 검사에 실패했습니다. 먼저 저장소 설명을 읽어 주세요. 전체 README 읽기 ↗
description: "Goal surface for the Web GUI: the composer-context strip that shows the current goal and edits, pauses, resumes, or clears it; for users and maintainers of the goal experience." kind: "package-reference"
@deepseek-ai/dsh-client-ui-goal
English | 中文
Summary
This package renders the goal surface in the Web GUI: a strip in the composer-context stack that shows the current goal of the session and offers edit, pause, resume, and clear actions. It reads the live goal from the host-computed projection and routes every mutation through the goal service, surfacing rejections inline. It also projects each durable /goal command run as a Command input bubble in the chat, so a goal command entered by the user or the model appears in the transcript. Goal creation is outside this plugin. The shipped Web presets other than minimal mount /goal in their agent scope.
Table of Contents
- Use this package
- Understand the implementation
- Further Exploration
- Model Experience
- Known Limitations and Deferred Work
- Dev Note
Use this package
Mount this plugin alongside ui-conversation and the goal domain package; the strip then appears as the second card in the composer-context stack (after Todo, before Queue) whenever the session has a goal. An active goal offers pause; a paused one offers resume; edit rewrites the objective; clear removes the goal and suppresses the strip until the projection catches up.
The command-input bubble
Each durable /goal run projects as a right-aligned monospace user-style bubble labeled Command input (or 指令输入), rendered before the generic command result row. It carries no timestamp, copy, or branch actions, and reloading reconstructs it from the run.
Failures
A rejected mutation surfaces the Remote error inline on the strip; loading, absent, completed, and successfully cleared goals render nothing.
Understand the implementation
Implementation internals — click to expand
The strip is projection-mode: the live goal arrives through useProjection('goal') (seeded by the history tail page and updated by session/projection frames), so the plugin owns no domain store, refresh chain, or event listener. The inject face carries only the four mutation verbs through ctx.remote.goals; each reads the CAS ref from the session's current projected value at call time, and the RPC's compare-and-set is the staleness guard. The strip single-flights mutations synchronously because a pending render cannot fence same-frame clicks. The command-input projection is a separate Conversation Definition that builds a command-input Chat Node before the generic command result Node; it never creates user/message or a model turn.
Further Exploration
Read these pages when the goal surface is not enough. They move from the browser strip to the goal domain and the slots it fills.
- dsh-goal — the goal domain, projection, and
/goalcommand this surface reads and mutates. - ui-conversation — declares the
conversation.input.dockslot and owns the composer. - Client package map — adjacent browser UI packages.
Model Experience
Indirectly, through the goals/edit, goals/pause, goals/resume, and goals/clear mutations the strip routes; the host GoalService owns the model-visible goal context message those mutations queue.
KV Cache effect
None unless the queued goal context is admitted. An admitted context extends the history tail like any other message; an insertion discarded before admission does not affect the cache.
Known Limitations and Deferred Work
These limits define the current goal surface. They are current package constraints, not a goal-domain comparison or a task backlog.
- Durable phase only — the projection omits process-local activation, so the strip cannot distinguish an active-but-disarmed goal from an armed one; resume re-arms through the RPC side. There is no host-live activation channel.
- Preset-independent host state — switching an active session to
minimalleaves its host-owned goal intact./goaland goal tools disappear, while this strip can still edit, pause, resume, or clear the goal.
Dev Note
Working context for maintainers — click to expand
None.