HeyBobChan/canon-deepseek-harness-plugin
@canonmsg/deepseek-harness-plugin adds Canon as a channel inside a DeepSeek Harness (DSH) profile. Canon becomes an additional surface beside the normal DSH Web UI; this bundle does not replace DSH's Web, session, approval, tool, or persistence rows.
catalog 简介 / catalog descriptioncatalog description:Canon integration plugin for DeepSeek Harness
项目介绍Project Overview
这是把 Canon 接入 DeepSeek Harness 配置的插件,作为 Web UI 之外的消息通道。它桥接会话、流式回复、工具活动、一次性审批及中断/新会话信号;DSH 仍掌管模型、工具、权限与持久化。适合想用 Canon 审批并联系 DSH 代理时使用。注意仅测试 DSH 0.1.1-rc.2,附件暂为文本占位。
This plugin adds Canon as a messaging channel inside a DeepSeek Harness profile, alongside the normal Web UI. It bridges conversations, streamed assistant text, tool activity, one-shot approval cards, and interrupt, stop, or new-session signals; DSH still owns the model, tools, permissions, persistence, and execution. Use it to approve and message a DSH agent from Canon. It is tested only with DSH 0.1.1-rc.2, and attachments remain text placeholders.
请帮我了解并安装插件:【canon-deepseek-harness-plugin】【https://github.com/HeyBobChan/canon-deepseek-harness-plugin】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile my-dsh-profile add @canonmsg/deepseek-harness-plugin
把 HeyBobChan/canon-deepseek-harness-plugin 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
Canon for DeepSeek Harness
@canonmsg/deepseek-harness-plugin adds Canon as a channel inside a DeepSeek
Harness (DSH) profile. Canon becomes an additional surface beside the normal
DSH Web UI; this bundle does not replace DSH's Web, session, approval, tool, or
persistence rows.
Use the Canon app at canonmail.com to approve your agent and message it after setup.
The plugin uses DSH's public ctx.agents and session-event contracts. DSH owns
the model, tools, permissions, persistence, and execution environment; Canon
only adapts messages, visible activity, one-shot approvals, and runtime signals.
Requirements
- Node.js 22.19 or newer (or Node 24+)
- DeepSeek Harness
0.1.1-rc.2 - A Canon agent registered with client type
deepseek-harness
DSH is a developer preview and warns that breaking changes are expected. Canon
therefore pins the direct DSH service APIs to the exact tested 0.1.1-rc.2
line rather than advertising a broad prerelease range.
Register the Canon agent
canon-dsh-register \
--name "My DSH Agent" \
--description "Coding agent in DeepSeek Harness" \
--phone "+15551234567" \
--profile my-dsh
After Canon approval, install the published bundle into a selected DSH profile:
dsh plugin --profile my-dsh-profile add @canonmsg/deepseek-harness-plugin
DSH's plugin manager recognizes dsh.bundle.patch and adds the package to that
profile's ordered bundle list automatically. Check the composed row without
booting the agent:
CANON_AGENT=my-dsh dsh --profile my-dsh-profile --dump-config
Confirm that row canon-dsh is present and enabled. Then start DSH from the
project workspace:
cd /path/to/project
CANON_AGENT=my-dsh dsh --profile my-dsh-profile
The Canon profile (my-dsh) and DSH profile (my-dsh-profile) are separate
concepts. The first selects Canon credentials. The second selects the DSH
bundle stack.
Configuration
The bundle row reads these environment expressions:
| Variable | Purpose | Default |
|---|---|---|
CANON_AGENT |
Canon profile in ~/.canon/agents.json |
empty; Canon auto-selects only when exactly one matching profile is available |
CANON_DSH_WORKSPACE |
Absolute DSH workspace root | DSH invocation directory |
DSH_PROVIDER |
Optional provider route for Canon-created agents | DSH model settings/default selection |
DSH_MODEL |
Optional model for Canon-created agents | DSH model settings/default selection |
CANON_DSH_DISABLED |
Set to 1 to disable only the Canon row |
enabled |
DSH_PROVIDER and DSH_MODEL must be supplied together. Omit both to use the
profile's normal model selection.
What the bridge supports
- One durable DSH session per Canon conversation, resumed from DSH's event-sourced session log after restart.
- A Canon message batch mapped to one immutable DSH user message.
- Visible assistant text streaming.
- Runtime activity for DSH turns and tool calls/results without exposing raw tool arguments.
- One-shot Canon approval cards for DSH approval requests.
- Interrupt, stop-and-drop, and new-session signals.
Canon interrupt aborts the active DSH turn with keepInbox: true. Stop-and-drop
uses DSH's default cancellation behavior and clears queued inbox work. New
session advances Canon's durable generation mapping without deleting the old
DSH event log.
Canon's conversation-to-session map is stored under CANON_HOME (normally
~/.canon), never inside the project workspace.
Approval semantics
DSH requests carry a tool name, optional call correlation, and a reason; they do not carry raw tool arguments. Canon does not fabricate arguments.
The mapping preserves DSH's closed vocabulary:
- explicit Canon allow →
allowed-once - explicit Canon denial by a human →
rejected - DSH/Canon request abort →
cancelled - timeout, transport failure, missing responder, or indeterminate result →
unavailable
unavailable is never treated as permission. Canon session rules are disabled
for this bridge because DSH has only one-shot grants.
Current limitations
- Canon attachments are represented as safe text placeholders; they are not yet converted into native DSH image attachments.
- DSH user questions remain owned by the selected DSH surface. They are not conflated with Canon approval cards.
- Provider/model, permission mode, effort, workspace selection, execution mode, session-state snapshots, rich cards, and steering/interleave are not advertised as Canon controls until the bridge can validate and enforce each control end to end.
- The initial package is tested against DSH
0.1.1-rc.2only.
Troubleshooting
- Run
CANON_AGENT=<profile> dsh --profile <dsh-profile> --dump-config. - Confirm row id
canon-dshand package name@canonmsg/deepseek-harness-plugin. - Set
CANON_DSH_DISABLED=0or unset it if the row is disabled. - Check that
~/.canon/agents.jsoncontains the selected profile withclientType: "deepseek-harness". - Start DSH from the intended project directory or set
CANON_DSH_WORKSPACEto its absolute path.
Development
npm install
npm run check
The bundle patch intentionally inserts only canon-dsh; it does not replace or
deep-merge any DSH-owned row.
DeepSeek Harness is in developer preview. This repository pins the exact DSH release it is tested against; compatibility updates are reviewed and released explicitly rather than inferred from a broad prerelease range.
nexu-io/open-design
freestylefly/awesome-gpt-image-2
anywhere-labs/dsh-desktop
walkinglabs/learn-harness-engineering
awesome-dsh-plugin/awesome-dsh-plugin
MemTensor/MemOS