Publish agent output to Reviso for human review, browse published documents from the sidebar, and find them again from the session that produced them. OAuth is host-mediated: Reviso tokens stay in DSH credentials and the browser only receives short-lived embed sessions. Requires a Reviso account or a compatible self-hosted Reviso server.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-reviso
# from a prebuilt release tarball
dsh plugin --profile web add "https://github.com/reviso-si/reviso-dsh/releases/download/v0.1.1/dsh-reviso-0.1.1.tgz"
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:reviso-si/reviso-dsh
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Reviso lets a coding agent publish its work for human review, then find the same document again from the session that created it. This repository is the DeepSeek Harness (DSH) integration.
What it provides
reviso_publishhost tool: create or update a Reviso document from an agent session without exposing the Reviso access token to the browser.- A Reviso sidebar entry and global document browser.
- A session-scoped Reviso panel with an embedded, read-only document view.
- A same-origin OAuth bridge. Tokens remain in DSH credentials; the browser receives only a short-lived embed URL.
- Host-mediated Open in Reviso and opaque-origin iframe handling.
The Reviso server, CLI, and cross-agent MCP integration live in their own repositories. This package is only the DSH host adapter.
Requirements
- DeepSeek Harness with plugin/profile support.
- A Reviso account or a compatible self-hosted Reviso server.
- Node.js 22 or newer for development.
Install
Add the Reviso market index in Plugins → Discover → Add index source:
https://raw.githubusercontent.com/reviso-si/reviso-dsh/main/market/index.json
Then install Reviso from Discover, or through the DSH plugin manager:
# npm package:
dsh plugin --profile web add dsh-reviso
# pinned release tarball (no npm needed):
dsh plugin --profile web add https://github.com/reviso-si/reviso-dsh/releases/download/v0.1.1/dsh-reviso-0.1.1.tgz
# repository head:
dsh plugin --profile web add github:reviso-si/reviso-dsh
# local checkout, while developing:
dsh plugin --profile web add /absolute/path/to/reviso-dsh
Confirm that the profile composed the plugin:
dsh --profile web --dump-config | grep -A5 dsh-reviso
Then start DSH:
dsh web
Open Reviso from the sidebar and connect the account through the OAuth button. The production embed origin can be pinned in the DSH profile:
- id: reviso-dsh
name: dsh-reviso
config:
embedOrigin: https://reviso-api.fly.dev
When embedOrigin is omitted, the adapter accepts only the authenticated
Reviso server origin. It does not trust an arbitrary origin discovered from API
JSON.
Development
pnpm install --frozen-lockfile
pnpm run check
npm pack --dry-run
pnpm run check runs the unit/integration suite, rebuilds the client bundle,
inspects the packed tarball, and installs that tarball into a temporary prefix
to verify its ESM import. When a local dsh executable is unavailable, the
real Host ToolRuntime integration test reports skip; the public GitHub CI does
not claim to have executed a real Host smoke test in that environment.
The published npm tarball contains 12 files, including index.js, host/
(credentials, errors, generation, and OAuth modules), the rebuilt lib/client.js,
cordis.patch.yml, README.md, SECURITY.md, and docs/client-face-contract.md. Generated client code is validated by the
packed-tarball check.
Security model
- The Reviso access and refresh tokens stay in DSH credentials.
- The browser never receives a
rak_token. - The embed iframe uses
sandbox="allow-scripts"and intentionally runs as an opaque origin. - Iframe messages are accepted only from the current iframe. Because the frame
is intentionally sandboxed without
allow-same-origin, its browser message origin isnull; document identity and URL are still checked against the canonical host URL. - External navigation is performed by the DSH parent after validation. The sandbox does not grant popup or same-origin privileges.
- Embed sessions are short-lived, document-scoped, one-time-code sessions and are revoked when their host surface is closed or replaced.
See SECURITY.md and docs/client-face-contract.md.
Real verification
A live publish check requires a connected Reviso credential and network access:
npm run verify:real
# optional:
npm run verify:real -- --credentials <path> --session-id <id> --title <title>
It uses the same tool runtime and credential provider as DSH, publishes one document, and reads it back through the Reviso session query.
License
MIT. See LICENSE.
Links
More in this category
tt-a1i/archify#integrations/deepseek-harness★ 92724
Generate validated, self-contained interactive architecture, workflow, sequence, data-flow, and lifecycle diagrams from repositories or system descriptions.
dream-num/dsh-univer-office★ 657
Give DeepSeek Harness a real office environment. Univer Office Plugin brings spreadsheets, docs, slides, canvases, relational tables, and more into one runtime — with connected data, validation, versioned changes, and isolated worktrees for multi-agent collaboration.
ECNU/EduWork#dsh-knowledge-studio★ 275
A workspace-based Studio for source-grounded reports, slides, tables, mind maps, quizzes, flashcards, audio and video, using DSH models and shared artifact services. Office generation requires Python 3.12+ with its dependencies and DSH_OFFICE_PYTHON configured; media rendering requires Chromium, and local ASR additionally requires whisper.cpp and a model.
PerryLink/dsh-industry-research★ 215
Deterministic industry research reports for DeepSeek Harness — company and industry research flows produce structured, verifiable reports from staged evidence.
HuanLinOTO/dsh-plugin-mineru★ 51
Expose MineRU document parsing tools to the model.
PolinniZhong/dsh-knit★ 48
Puts the Markdown documents, source files, images and video that already exist anywhere in the session workspace into the DSH sidebar, ranked by relevance to the current conversation. The default lexical mode matches your recent messages against title, summary and body locally with IDF weighting (BM25) — no model calls, no network, nothing leaves the machine. The list comes from scanning the workspace rather than from a recent-files list, so restarting DSH or opening a new session does not empty it. Results are organised into a three-tier reading order (primary / supporting / related) with a verifiable reason on every row — which field matched, which document cites this one — and one click opens an in-place preview: Markdown as rendered text, relative-path images actually drawn, source code with the host's own syntax highlighting, video streamed over HTTP Range. The same Context Pack is exposed to the agent as a knit_docs tool. Later versions added read evidence and lifecycle tracking (attribution is frozen at the moment of reading), pin / exclude (exclusion applies before retrieval, and is undoable), relation evidence (references / imports / tests, with line numbers) and an incremental index reused across restarts. Since v0.23 there is also an optional hybrid mode: it is off by default and only runs once you configure an Ollama or OpenAI-compatible embedding provider yourself. When it runs, what leaves the machine is your query text plus each candidate file's title and summary — a Markdown summary is an excerpt of the body's first paragraph (at most 60 characters), a code file's summary is its workspace-relative directory, and an image or video contributes its file name; full bodies and absolute paths are not sent, and a loopback provider keeps everything on this machine. Since v0.24 it also associates uncommitted changes: a read-only git status (fixed argv, no shell, whitelisted child-process environment) combined with the same reference / import / test / mention evidence shows which files a change is likely to drag along, and it is off by default. The benefit of semantic retrieval still awaits a real-provider run, so no recall improvement is claimed.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.