dsh-moss-livev0.1.1
hudsonhuang/dsh-moss-live
dsh plugin --profile web add github:hudsonhuang/dsh-moss-live#e4f5f4865e5966aee9fe16702c9be4d790ce3920
介绍
MOSS-Live full-duplex voice for DeepSeek Harness: speak to your agent, tasks run in subagents, results come back as speech.
标签
概述
dsh-moss-live
Full-duplex voice for DeepSeek Harness.
A phone button next to the composer opens a small call panel. You speak, MOSS-Live answers out loud, and anything that needs real work is delegated to the DSH agent — which figures out how to do it (immediately, in the background, or as a scheduled task) and runs it in a subagent.
you speak ──► MOSS-Live (full duplex, barge-in)
│ dsh_task(objective) ← text only
▼
DSH main agent (decides, clarifies, schedules)
│ spawn
▼
subagent (tools, files, shell, web)
│ final text
▼
MOSS speaks the answer
The wrapper is thin on purpose. Capture, playback, barge-in and playback acknowledgements are MOSS's own browser demo; the harness only adds a local relay that holds the API key, one tool call, and the subagent runner.
How it works
| Layer | Owns | Talks to the next layer with |
|---|---|---|
| MOSS-Live (front) | listening, speaking, interruptions | one async tool call |
| Relay (this plugin) | API key, protocol translation, call log | sessionController.prompt + subagents |
| DSH main agent | clarification, planning, scheduling | child agents |
| Subagents | the actual work | final text |
Two tools are registered on each call session:
dsh_task(objective)— forward one request; the agent decides how to execute it.dsh_tasks()— summarize what is running and what finished.
While a task runs the user keeps talking; results are spoken as they land. A task that outlives MOSS's 120 s tool window gets an immediate "on it" and its result is delivered later as commentary.
Install
Requirements: DeepSeek Harness with a MOSS API key (platform.mosi.cn, model
moss-live-1.0), Node.js ≥ 22.19.
The package is on npm as dsh-moss-live:
npm install dsh-moss-live
Either way you obtain the directory — npm install above, or:
git clone https://github.com/HudsonHuang/dsh-moss-live.git
— install it as a bundle in your DSH profile, using the absolute path:
plugin_manager action=install_bundle target=/absolute/path/to/dsh-moss-live
Or install the DSH plugin market and install from there:
dsh plugin --profile web add dshmarket
Then reload the plugin row if needed, refresh the DSH page, and click the phone button next to the composer.
Put your MOSS key in one of these places:
.moss-api-keyin the plugin directory (one line, mode 600), or- the
apiKeyfield of the plugin config, or - the
MOSS_API_KEYenvironment variable.
Configuration
| Field | Default | Meaning |
|---|---|---|
apiKey | — | MOSS API key (overrides the file/env) |
keyFile | .moss-api-key | Key file, relative to the plugin directory |
listen | 127.0.0.1:17861 | Local relay address |
mossUrl | wss://api.mosi.cn/v1/realtime | Upstream endpoint |
model | moss-live-1.0 | Realtime model |
sessionTimeoutMs | 180000 | How long a task may take before the agent reports back |
Calls are recorded
Every call writes calls/YYYYMMDD-HHMMSS.md (transcript, dispatched tasks, results)
and leaves a single line with that path in the conversation. An append-only
.calls/YYYY-MM-DD.jsonl keeps the raw stream. Both stay local.
Known limits
- One call at a time — the demo relay is single-session by design.
- Microphone permission lives in the parent page. The desktop shell's
dsh-app://origin is not a secure context, so the harness page captures audio and hands the stream to the call page. In a plain browser the call page can capture on its own. - The front model still decides. It is instructed to forward everything except pleasantries, and to clarify before forwarding an under-specified request, but that is a prompt, not a guarantee.
- Results are capped at 2000 characters on the way back to the voice layer.
- MOSS's voice, not DeepSeek's — the mouth is MOSS-Live, the brain is DSH.
Layout
index.js Host half: relay lifecycle, session policy, delegation → subagents
client.js Client half: the phone button and the in-app panel
vendor/runtime/ MOSS browser demo relay (MIT), with the wrapper changes below
vendor/web/ MOSS demo front end + a purpose-built compact call page
test/ Delegation / barge-in end-to-end scripts
Wrapper changes inside vendor/ (everything else is upstream):
runtime/server.mjs— session policy + tools injected aftersession_attached,dsh_task/dsh_taskshandling, delegation torun(), per-call log, pinned token, harness origin allowed.web/js/mic.js— prefer a stream injected by the parent page.web/js/client-demo.js— keep the query string, report real errors, relay override.web/product/embed.html,web/js/embed-app.js,web/product/embed.css— the compact panel UI (new, not upstream).
Credits
Built on @mossai/mosslive 0.1.0 and
its examples/browser-demo (MIT — see vendor/LICENSE). MOSS-Live is a product of
MOSS / OpenMOSS. DeepSeek Harness is a DeepSeek project. This repository is an
independent integration, not affiliated with either.
License
MIT — see LICENSE.
星级评价
基本信息
插件信息来自公开 GitHub 仓库与 SkillHub,版权归原作者所有;安装前请自行审查仓库代码。