Socialist-Sister / dsh-collaboration

Listed

Multi-agent collaboration suite for DeepSeek Harness: specialist roster with on-demand dispatch, roundtable, model comparison and a multimodal vision bridge — models via the official provider flow.

mainModelTool View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:Socialist-Sister/dsh-collaboration

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 02eddf7Synced Aug 18, 2026

dsh-collaboration

Multi-Agent Collaboration Suite for DeepSeek Harness

A user-configured roster of specialists with on-demand dispatch — models come from the official provider flow, teamwork comes from here.

English · 中文

License: MIT Release CI

team tool-team tool-model-compare tool-vision tool-image-inbox


Contents

What is this

Inspired by the multi-agent workbench idea of oh-my-openagent, rebuilt on DeepSeek Harness native mechanisms:

  • Model providers are connected through the official Settings → Models → "Add provider" flow (this suite bundles NO model adapters — zero conflict with the official catalog);
  • This suite organizes the team: specialist roster, on-demand dispatch, roundtable review, model comparison, and a multimodal vision bridge.

Features

FeaturePackageNotes
Specialist roster@dsh-collaboration/teamTen pre-defined identities (main/planner/coder/debugger/reviewer/researcher/critic/writer/looker/painter), each with a duty; per-identity models configured in settings.yaml, applied live; empty = follow the session model. Identities are templates that can be hired as PERSISTENT specialist instances (with clones). v0.4: the child-scoped team_help tool lets a specialist ask another specialist for help through the main agent
Team console@dsh-collaboration/tool-teamteam_call hires persistent specialists (instances clones one identity, tasks gives each clone its own task); team_message follow-ups/relays (star topology, v0.4 relay routing); team_status live board; team_close dismisses; roundtable one-shot parallel panel
Model comparison@dsh-collaboration/tool-model-compareOne prompt to several models in parallel, answers side by side
Vision bridge@dsh-collaboration/tool-visionA text-only main agent sends images to a vision-capable model and works from the text analysis
Image inbox@dsh-collaboration/tool-image-inboxAn invisible paste bridge: pasting an image in a collaboration session stores it as a workspace file and puts the path in the draft — no button, works for text-only main agents, routed to looker/vision
One-line presetconfig/agent-presets/collaborationFull standard toolset + the tools above (display name: 协同模式 / Collaboration Mode)

How it works

Official Settings → Models: deepseek-official + user-added providers (OpenAI-compatible, …)
        │  registered routes
        ▼
collaboration-team roster (settings.yaml)  ←──  each identity: duty + optional model
        │  host service collaborationTeam
        ▼
Main agent (Collaboration preset)
  ├─ team_call     → hire persistent specialist instances (with clones) → report / settlement notices
  ├─ team_message  → follow up or relay to any instance (specialists ask each other via team_help, you relay)
  ├─ team_status   → live team board; team_close → dismiss an instance
  ├─ model_compare → same prompt across models, side by side
  └─ vision        → images to a vision model → text analysis back

Team topology

Every identity can be hired multiple times as separate instances (reviewer#1, reviewer#2, …). The main agent is the star hub — all traffic flows through it.

                     ┌─────────────────────┐
                     │   Main agent (you)  │
                     │     the star hub    │
                     └──────────┬──────────┘
        team_call hires  ·  team_message relays (both directions)
     ┌──────────────┬────────────┼────────────┬──────────────┐
     ▼              ▼            ▼            ▼              ▼
 planner#1      coder#1      looker#1      writer#1      reviewer#2   …
     │              │            │            │              │
     └───────────── report / settlement notices ────────────┘

Specialists never talk to each other directly. When one needs another — for example researcher asking looker to read an image — the request circles through the main agent:

researcher#1 ── team_help ──►  main agent receives [team-relay]
      ▲                             │
      │                             ▼  team_message → looker#1
      │                             │
      └──── team_message ◄────  looker#1 reports the answer

Images with a text-only main agent

The composer's image-attachment path is gated by the current model's inputModalities: DeepSeek text-only routes declare no image modality, so pasted images are rejected at admission — looker or not. tool-image-inbox solves this INSIDE the policy, with a paste-as-usual experience:

Paste an image in a collaboration session
  → an invisible client bridge intercepts the paste (no button, no UI)
  → the image is stored as a workspace file (.dsh-inbox/)
  → "[图片: <path>]" appears in the draft; press Enter
  → the main agent routes the path to the vision tool or hires looker
  → looker configured: normal image analysis; not configured: the agent hints how to set it up

Non-collaboration sessions and text-only pastes are untouched. Alternatives: drop the image into the workspace folder and name the path, or switch the session to a vision route (e.g. zai / glm-5v-turbo) and paste natively.

The specialist roster

Ten pre-defined identities, each with its own specialty. The tool surface is tiered by duty: research-type identities get read-only tools, execution identities get shell/file/skill tools, visual identities get read + vision.

idNameSpecialtyTool surface
main主代理 (Main agent)Coordinates the whole effort: first analyzes the task structure and clarifies the division of labor, then dispatches via team_call; integrates specialist reports and makes the final call — never executes specialists' core work itselfFull session toolset (never hired as an instance)
planner规划师 (Planner)Splits complex goals into steps and milestones with dependencies, ordering, and acceptance criteriaRead-only: read/glob/grep/web_search
coder工程师 (Engineer)Writes production code, lands features, fixes defects; follows the project's existing style and conventionsExecution: pwsh/read/write/edit/glob/grep/web_search/skill/todo_write
debugger调试员 (Debugger)Hunts bugs: reads errors and logs, produces minimal reproductions and fix plansExecution: pwsh/read/glob/grep/edit
reviewer审查员 (Reviewer)Reviews code and designs for security holes, edge cases, performance, and maintainability risksRead-only: read/glob/grep/web_search
researcher研究员 (Researcher)Researches technology, competitors, and facts; cites sources in its conclusionsRead-only: read/glob/grep/web_search
critic评论家 (Critic)Challenges assumptions, hunts blind spots, plays devil's advocate — hardens the plan before it shipsRead-only: read/glob/grep/web_search
writer写手 (Writer)Writes docs, reports, READMEs, and copy — precise language, clear structureExecution: read/write/edit/glob/grep
looker观察员 (Looker)Multimodal analysis of images, screenshots, and UIs: describes layouts, extracts text, spots visual issuesVisual: read/read_image/vision
painter画家 (Painter)Image creation and generation: turns a description into visual assets or conceptsVisual: read/vision

Repository layout

packages/
  host/team/                     Specialist roster (settings.yaml-configurable)
  tools/tool-team/               team_call dispatch + roundtable
  tools/tool-model-compare/      Same-prompt model comparison
  tools/tool-vision/             Multimodal vision bridge
  tools/tool-image-inbox/        Invisible image-paste bridge for text-only mains
config/
  agent-presets/collaboration/   Ready-to-use agent preset
docs/                            Installation & usage guide
scripts/                         Validation scripts

Quick start

Full guide: docs/installation.md.

  1. Install the five packages into the DSH profile workspace:

    pnpm add -w @dsh-collaboration/team @dsh-collaboration/tool-team @dsh-collaboration/tool-model-compare @dsh-collaboration/tool-vision @dsh-collaboration/tool-image-inbox
    

    Before npm publication, grab the .tgz assets from Releases.

  2. Insert the host rows (cordis.patch.yml):

    - insert:
        - id: collaboration-team
          name: '@dsh-collaboration/team'
        - id: collaboration-image-inbox
          name: '@dsh-collaboration/tool-image-inbox'
    
  3. Add model providers via the official Settings → Models → Add provider card:

    ProviderProvider IDEndpointProtocol
    Zhipu GLMzhipuhttps://open.bigmodel.cn/api/paas/v4OpenAI-compatible
    OpenAIopenaihttps://api.openai.com/v1OpenAI-compatible
    Moonshotmoonshothttps://api.moonshot.cn/v1OpenAI-compatible
    OpenRouteropenrouterhttps://openrouter.ai/api/v1OpenAI-compatible
    SiliconFlowsiliconflowhttps://api.siliconflow.cn/v1OpenAI-compatible
  4. Configure the roster + preset: collaboration-team section in settings.yaml (see below); copy config/agent-presets/collaboration into ~/.dsh/.agent-presets/.

  5. Restart DSH → start a new conversation on the Collaboration preset → done.

Roster configuration

collaboration-team:
  agents:
    - { id: main, name: 主代理, role: Coordinates and dispatches specialists }
    - { id: planner, name: 规划师, role: Breaks goals into steps, provider: deepseek-official, model: deepseek-v4-flash }
    - { id: reviewer, name: 审查员, role: Reviews code and designs, provider: deepseek-official, model: deepseek-v4-flash }
    - { id: looker, name: 观察员, role: Vision analysis, provider: zhipu, model: glm-4v-flash }
  • provider = a provider ID added in the official Models page; empty = follow the session model (chat-box selector)
  • Give vision identities (e.g. looker) a vision-capable model, or image tasks fail at runtime
  • Changes apply live — no restart needed

Usage examples

ScenarioWhat the main agent does
Parallel auditsteam_call with instances: 2 hires two reviewer clones, one per module
Follow-up questionteam_message to reviewer#1 about session-fixation attacks
Relay an objectionteam_message critic's objection to planner
Specialist asks specialistresearcher calls team_help for looker; you forward the request and relay the answer back
Group deliberationroundtable with planner, reviewer, critic on one topic
Model comparisonmodel_compare deepseek-v4-pro vs zhipu/glm-4.5 on the same prompt
Read an imagevision sends a screenshot to the vision model and returns text analysis

Development

pnpm install      # install dependencies
pnpm typecheck    # typecheck all packages
pnpm build        # build

Validation

node scripts/e2e-tools.mjs     # drives each tool package's apply() in a fresh process (mirrors preset mount checks)
node scripts/e2e-team-host.mjs # drives the team host service: instance lifecycle + team_help relay
node scripts/check-roster.mjs  # validates the collaboration-team roster in settings.yaml

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

DocumentationDetected

Repository information

Language
TypeScript
License
MIT
Latest release
v0.5.2
Last updated
Aug 16, 2026, 11:50 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.