deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
Codex-style side chat for DeepSeek Harness (DSH): an independent, agentic chat in a right-side panel, isolated per main conversation. Forked from heartmove/dsh-side-chat (MIT).
中文文档:README.zh.md
sendImmediately now defaults to off; "Continue active side chat" appends to the existing draft instead of replacing it.dsh-sidechat (settings namespace, record file, bundle ids).Everything else matches upstream.
dsh plugin --profile web add github:realpkuasule/dsh-sidechat
Git installs build from source on install. pnpm ≥ 10 blocks the package's build script until allowed, so the first add fails with an "Ignored build scripts" hint — copy the exact package key it prints into the profile's pnpm-workspace.yaml:
onlyBuiltDependencies:
- dsh-sidechat
Then re-run the add. Restart dsh web and hard-refresh the page (Cmd/Ctrl+Shift+R).
dsh plugin --profile web add ./dsh-sidechat
The checkout is linked, so local edits apply without reinstalling.
dsh-side-notify adds active push-to-main: a floating "Notify main agent" pill and /notify, /to-main commands that deliver a message straight to the main agent as its next turn.
dsh plugin --profile web add github:realpkuasule/dsh-side-notify
DSH Settings → 侧边聊天 (Side chat):
| Setting | Default | Description |
|---|---|---|
lookupDefault |
off | Default state of the "look up workspace / parent when needed" switch for new chats. |
sendImmediately |
off | When on, selections are sent immediately with defaultPrompt appended; when off, they are staged in the input. |
defaultPrompt |
(empty) | Prompt appended to immediately-sent selections. |
bringMode |
draft |
Where brought-back content lands: into the composer draft, or as a collapsed context row. |
Every side chat is an ordinary DSH session whose meta.parentSession links it to the conversation that started it; it is archived immediately so it never appears in the session list or subagent catalog. The host half (/sidechat/api JSON routes) creates and drives those sessions through the live agent (agent.followup), inheriting the launching conversation's composition, and brings replies back through agent.inject or the composer input. The client half is a portal-mounted React panel that talks to the host routes over same-origin POSTs guarded by the same loopback / trusted-authority fence as the DSH API gateway.
pnpm install
pnpm build # tsc -p tsconfig.build.json && tsdown → lib/
pnpm typecheck
lib/ holds the artifacts: lib/index.js (host), lib/client.js (profile channel), lib/client-registry.js (plugin-registry channel). The prepare script runs the same tsdown build, so GitHub installs build from source.
src/
index.ts host: /sidechat/api routes, session/agent lifecycle, transcript folding
wire.ts request/response helpers
trust-fence.ts loopback / trusted-authority request fence
settings-shared.ts preference vocabulary shared by host and client
context-types.ts Cordis Context type augmentations
client/
index.tsx client: panel, composer, settings section, floating menus
api.ts client↔host API types
locales.ts zh/en dictionaries
client.module.css panel/composer/settings styles
layout.css #root margin-right driven by panel width
cordis.patch.yml bundle patch layer (dsh.bundle.patch)
dsh.plugin.json external plugin manifest
tsdown.config.ts bundle config (client externals + CSS inlining)
MIT. Forked from heartmove/dsh-side-chat (MIT); the trust fence is a plain-JS port of the upstream copy.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。