引用留注
Quote selected assistant text into your next request — a standalone plugin for DeepSeek Harness.
이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.
업스트림에서 중국어 README를 제공하지 않아 저장소 원본 내용을 표시합니다.
dsh-annotation-plugin
Quote selected assistant text into your next request — a standalone plugin for DeepSeek Harness.
This plugin ships both halves of the feature in one npm package:
- Host half (
dsh.bundle+cordis.patch.yml): anannotationplugin that records quotes as log-only session events (annotation/added/annotation/removed), exposes a Typert Remote (record/list/discard), and materializes pending quotes into the model-facing message batch atagent/pre-step. - Browser half (
dsh.client): a quote button on each assistant message and a floating, collapsible pending-quote card above the composer.
Install
Requires a DeepSeek Harness profile that composes @deepseek-ai/dsh-base (the official base layer provides session, agent, web and the client runtime).
From npm (recommended)
dsh plugin --profile <name> add dsh-annotation-plugin
The published package ships prebuilt artifacts, so nothing builds at install time.
From GitHub
A git install fetches sources, not built artifacts — the package's prepare script (tsdown) builds lib/ after checkout, and pnpm refuses to run a git dependency's prepare until you explicitly allow it. The first add fails and dsh prints the exact package key to allow:
dsh plugin --profile <name> add github:you/dsh-annotation-plugin
# → pnpm refuses to run the prepare script; copy the package key it prints
# into the profile's pnpm-workspace.yaml, then re-run the add:
# <profile dir>/pnpm-workspace.yaml
allowBuilds:
dsh-annotation-plugin: true
dsh plugin --profile <name> add github:you/dsh-annotation-plugin # re-run
That allowance is permission to execute the package's code on your machine at install time, outside any sandbox the agent runs under. Only allow packages whose source you trust, and pin a commit so a later push cannot silently change what runs:
dsh plugin --profile <name> add github:you/dsh-annotation-plugin#<sha>
If you would rather not ask users for the allowance, install the npm build instead (or distribute a tarball from pnpm pack — neither needs any build permission).
The bundle layer inserts the annotation plugin row; the client-modules table picks up the dsh.client declaration and loads the browser bundle in the Web GUI.
Usage
- Select text in an assistant message.
- Click the quote button (✎) in the message action strip — the selection is recorded and a floating card appears above the composer: Quotes · N ▴.
- Click the card to expand the quoted-text list; use ✕ on a row to cancel that quote.
- Send your message — the pending quotes are materialized as quoted context for the model and the card disappears.
Requirements
| Package | Version |
|---|---|
@deepseek-ai/dsh-base | ^0.1.0-rc.5 |
react (host web bundle) | ^18.2.0 |
Peer dependencies (@deepseek-ai/dsh-session, @deepseek-ai/dsh-client-ui-conversation, …) are satisfied by the profile's dependency tree.
Development
pnpm install
pnpm build # tsdown: lib/index.mjs (node half) + lib/client.js (browser bundle)
pnpm test # vitest (jsdom client specs)
pnpm typecheck
Regenerating the Remote contribution
src/remote.ts is a committed copy of the Typert-generated descriptors. After changing any @Remote method signature in src/index.ts, regenerate it (e.g. from the official checkout: pnpm run build:lib:host, then copy packages/session/annotation/lib/typert.remote-client.js into src/remote.ts and adapt the package ids). An out-of-date descriptor silently strips fields on the client — the classic "schema missing a field" failure.
Notes
- The Host half uses the namespace plugin form (
name/inject/applynamed exports). Do not add anexport default— the Loader'sunwrapExportswould discard the namespace. - The browser half mounts its own Typert Remote contribution (
ctx.remote.$mount) because the published@deepseek-ai/dsh-api-remotesdoes not carry the annotation namespace. - The
discardRemote export maps to theremovemethod (method: "discard",implementation: "remove"); keep the generated descriptor in sync.
License
MIT
보안 및 설치 증거
이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.
공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.
GitHub 메타데이터에서 라이선스가 감지되지 않았습니다.
최근 180일 내 코드 업데이트가 있습니다.
재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.
검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.
missing-license