Introduction

The DeepSeek Harness (DSH) ecosystem emphasizes plugin-based extensibility; the community directory is a separate site and is not equivalent to the official app store.

For developers using AgentTeams, whether a task is completed usually still requires manually checking the status. dsh-captain-call is a DeepSeek Harness Web GUI plugin: when an AgentTeams team member completes a task, the desktop assistant GINKA calls the Daisy Captain with a WeChat-style incoming call interface, announcing over voice who it is and whether it was completed on time as required.

What is it

dsh-captain-call is maintained by Daisy2048 and is licensed under the MIT license.

It solves the task completion notification issue in the DSH Web GUI scenario: after a task is completed, a full-screen incoming call interface appears on the page; after answering, the plugin uses TTS to announce whether the task was completed, whether it was on time, and how long it took.

Repository address:

https://github.com/Daisy2048/dsh-captain-call

Core Features

Incoming Call Interface and Ringtone

The plugin provides a WeChat-style full-screen incoming call UI, including a blurred avatar background, a white card, the caller’s name, a green answer button, and a red hang up button.

When an incoming call occurs, it first attempts to play the ringtone. If the browser’s autoplay policy intercepts the ringtone, you can click the button on the interface to enable it; during the call, any click on the page will also trigger the ringtone. If the audio encounters an anomaly, the plugin falls back to Web Audio synthesized prompts.

Answering, Announcing, and Task Status

You must click the green button to answer; there is no auto-answer.

After answering, the plugin uses TTS in Chinese to announce whether the task ‘{subject}’ was completed, whether it was on time, and how long it took. The voice content, salutations, and scripts are all configurable.

The plugin calculates the task duration based on the createdAt to updatedAt in team.json; if the task fails, the failure status will be announced.

TTS Engine and Status Check

TTS prioritizes the local ONNX Chinese voice Kokoro-82M-zh; on failure, it falls back to msedge-tts; and finally to the browser’s system voice.

The current TTS engine status can be viewed at the following path:

/plugins/dsh-captain-call/state
tts.engine

Model files are distributed with the plugin at:

models/

Voice mapping can be adjusted via the following configuration items:

voiceMapJson
voiceMapEdgeJson

Voice Reply and Fallback

Clicking “Voice Reply” directly requests browser microphone permissions.

When voice recognition is not supported, the plugin automatically falls back to typing replies. After converting speech to text, the plugin replies using the team member’s persona and the real task status, and archives the full conversation in the background for the real team member agent.

Desktop Assistant and Two-Way Calling

There is a GINKA desktop assistant widget in the bottom right corner of the page. After expanding the panel, you can view the address book, test incoming calls, toggle the mute switch, and view the recent 20 call logs.

The address book supports clicking a team member to initiate a call, forming a two-way voice call.

Deduplication and Uninstallation

On first load, the plugin marks historical completed tasks as a baseline and does not replay old incoming calls; only newly completed tasks during operation trigger incoming calls.

After records are persisted, restarting will not trigger repeated incoming calls.

When the plugin is uninstalled, it cleans up DOM, CSS, timers, audio, and microphone streams.

Installation and Enablement

The following commands will first pull the repository, then restore local model files, and finally install to the DSH Web profile. Model files are not committed with git, so the model recovery script must be run first. There are inconsistencies regarding model size in existing materials, so this article does not provide a definitive value.

git clone https://github.com/Daisy2048/dsh-captain-call.git
cd dsh-captain-call
./scripts/download-models.ps1
dsh plugin --profile web add .
# Restart dsh web after refreshing the page to take effect
dsh web

After execution, restart dsh web and refresh the page to enable the plugin.

Typical Usage and Configuration

The typical usage workflow is as follows:

  1. When a new task is completed or failed in AgentTeams, a WeChat-style incoming call interface appears on the page.

  2. During the call, if the ringtone is intercepted by the browser, you can click the button to enable it; answering requires clicking the green button.

  3. After answering, TTS announces whether the task was completed, whether it was on time, and how long it took.

  4. Click “Voice Reply” to request microphone permissions for voice conversation; if voice recognition is not supported, it will automatically fall back to typing replies.

  5. In the GINKA panel in the bottom right corner, you can view the address book, test incoming calls, toggle the mute switch, and view the recent 20 call logs.

The plugin supports overriding the following configuration items via cordis.patch.yml:

cordis.patch.yml
bossName
bossTitle
pollMs
speechRate
greeting
timingOk
timingFailed
ringText
bossAvatar
fallbackAvatar
avatarMapJson

These configuration items are used to adjust the captain’s name, salutations, polling interval, speech rate, opening script, on-time/failed scripts, ringtone text, avatar mapping, and more.

Applicable Scenarios and Notes

Suitable for scenarios where AgentTeams is used in the DSH Web GUI and one wishes to follow up on task completion status via voice incoming calls.

The plugin runs with the permissions of the current dsh process. Before installing, check the source code, license, and material authorization instructions. The code license is MIT; avatar and ringtone materials are copyrighted by their respective authors and are for personal local use only; they must be replaced with your own or authorized materials before public release.

You also need to pay attention to the following limitations:

  • Browser autoplay policies may intercept ringtones or TTS without gestures; playback can be restored after any click on the page, and the answer button can also serve as a gesture entry point.
  • Voice recognition (SpeechRecognition) is only supported in Chromium-based browsers; other browsers will automatically fall back to typing replies.
  • When the browser requests microphone access for the first time, a system authorization bar will pop up; this is a browser security mechanism and cannot be bypassed.
  • Notifications are based on disk state polling and do not inject Cordis events or reach model requests.
  • The first load will mark historical completed tasks as a baseline and will not replay old incoming calls.

Conclusion

The value of dsh-captain-call is to change the task completion status of AgentTeams from “manual checking” to “voice incoming call reporting”: incoming calls, answering, announcing, voice replies, and two-way calls can all be completed within the DSH Web GUI.

GitHub repository:

https://github.com/Daisy2048/dsh-captain-call

The directory page link is:

https://www.skillhub.cn/plugins/Daisy2048/dsh-captain-call

The directory page address comes from plugin clues and has not been confirmed in the currently scraped materials; please refer to the plugin publisher’s page for accuracy before use.