跳到正文
dsh-market 浏览插件 GitHub EN

philmingdao/anno#dsh-native

面向编码代理的本地优先 HTML 审阅与标注工作区:在浏览器编辑器中打开文件的隔离副本,收集文本修改、格式调整与元素/区域评注,并把持久的交接(handoff)交还给代理认领和落实。

Star 数 ★ 0 分类 工具与能力 收录于 2026-08-22

安装

在 DeepSeek Harness 里通过 dsh-market 安装

dsh plugin --profile web add dshmarket

或使用命令行

dsh plugin --profile web add github:philmingdao/anno#path:/adapters/dsh-native

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络。请先审阅源码,并尽量锁定 commit(github:owner/repo#sha)。

README

该插件的 README 只有英文版本。

@philmingdao/anno-dsh-native is a native DeepSeek Harness plugin for Anno — a local-first HTML review, editing, and annotation workspace for coding agents.

Unlike @philmingdao/anno-dsh, which bridges the MCP server through the official DSH MCP client, this package runs Anno in-process: the local review HTTP server, the on-disk session store, and the six html_review_* model tools all live inside the Harness process. There is no MCP layer, no child npx process, and no separate server to launch.

What it provides

  • A loopback-only HTTP review server (127.0.0.1, ephemeral port).

  • Persistent review sessions under $ANNO_DATA_DIR (default ~/.anno/sessions); the source file is never overwritten and outputs are versioned (-reviewed.html, -reviewed-v2.html, …).

  • Six model tools, registered with DSH's native tool registry:

    • html_review_start_session
    • html_review_get_session
    • html_review_claim_handoff
    • html_review_mark_handoff_sent
    • html_review_list_sessions
    • html_review_register_final
  • A tool:anno system-prompt section that teaches the agent the start → review → claim → resolve workflow.

Requirements

  • DeepSeek Harness >=0.1.0-rc.6 <0.2.0
  • Node.js 22 or newer

Install

The package is a DSH profile bundle: dsh plugin add installs it and applies its cordis.patch.yml, which inserts the anno-native row into the profile (host) composition.

dsh plugin --profile web add @philmingdao/anno-dsh-native
# or from a source checkout:
dsh plugin --profile web add ./adapters/dsh-native

Then start Harness normally:

dsh web

The tools appear as html_review_* (no MCP namespace prefix). Because the row sits on the host plane, every agent on that profile shares one review server and one session store.

Source checkout

npm install
cd adapters/dsh-native
npm test
dsh plugin --profile web add "$(pwd)"

Use a temporary --dsh-home when testing without changing your normal profiles.

Use

Ask Harness to open or review an HTML file. It calls html_review_start_session with the absolute source path and opens the returned review_url for the user.

When the user clicks 提交给 Agent in the browser editor, the review server prepares the handoff and pushes it straight back into the originating agent conversation: the plugin captures the calling agent when the session is created and, on submission, queues an ordinary follow-up turn (agent.followup) carrying the full review — in-place text edits, format changes, element/area annotations, and page notes — so the agent claims the handoff immediately and resolves it into a verified standalone HTML file via html_review_register_final, without any manual polling.

The receiving turn's prompt instructs the agent to call html_review_claim_handoff first (durable receipt), then html_review_get_session to reload the full session and apply the edits and annotations against the draft HTML, then html_review_register_final. The in-process push is best-effort: if the originating agent is no longer live, the handoff is still persisted on disk and the agent can claim it through the ordinary html_review_* tools.

Architecture

DSH profile composition
  -> @philmingdao/anno-dsh-native  (cordis plugin + bundle patch)
    -> anno-core.js                (HTTP server + on-disk session/review/handoff store, node-only)
    -> index.js                    (registers html_review_* tools + tool:anno prompt section)

lib/anno-core.js is deliberately free of DSH imports and is unit-tested directly (npm test). It exposes an onHandoff hook (invoked by the HTTP generate endpoint with the full review payload) and a hasHostTarget predicate (reported as has_host_target on the session projection) so the host binding can deliver handoffs without the core depending on any host runtime.

lib/index.js is the thin Cordis binding that injects tools, systemPrompt, and agents, starts the server as a fiber-owned effect, and registers the tools using raw JSON-Schema definitions directly against the tools registry. It captures the calling agent on html_review_start_session and, through onHandoff, delivers the submission back as an agent.followup notice. It imports no @deepseek-ai/dsh-tools (or any other DSH package) — the follow-up user message is built from the same shape createUserMessage produces, using only node:crypto — so the package keeps zero external dependencies and loads from any location (including a link:-installed source checkout).

Configuration

The anno-native row accepts:

Field Default Meaning
host dsh Host kind stamped on session records.
dataDir $ANNO_DATA_DIR or ~/.anno Root for persisted review sessions.
assetsDir package assets/ Directory holding editor.html / handoff.html.

Uninstall

dsh plugin --profile web remove @philmingdao/anno-dsh-native

Existing review sessions under the data directory are left in place.

License

MIT. The editor UI is the same Anno asset set; see the repository root for the bundled font's SIL Open Font License.

内容来自项目 README(GitHub)↗

评论

评论存放在 GitHub Discussions。用 GitHub 账号登录后可发表评论或点表情。