DeepSeek Harness: Community Plugins

Last updated: 2026-08-31

DSH vs Traditional

Plugin Architecture

Agent Teams

DSH's "everything is a plugin" is not just a technical architecture — it's an ecosystem vision. The official team provides core tools, while the community contributes unlimited possibilities. From database operations to API integration, from code analysis to automated deployment, community plugins continuously expand DSH's capability boundaries.

💡 Tip: Community plugins vary in quality. Always evaluate security before installing — review source code, check maintenance status, examine dependencies. Installing without review is like giving a stranger the key to your front door.

📋 Prerequisites: Completed 06-tools.md, familiar with tools and plugin basics

1. What You'll Learn


2. Plugin Marketplace and Discovery

(1) Ways to Discover Plugins

DSH has no centralized plugin marketplace. Plugins are discovered through:

Channel Description URL
GitHub Topic Repositories tagged dsh-plugin github.com/topics/dsh-plugin
Official Docs Recommended plugin list docs.deepseek.com/dsh/plugins
Community Forum User sharing and discussion community.deepseek.com
npm Search Packages with @dsh-plugin/ prefix npmjs.com/search?q=@dsh-plugin

(2) Plugin Naming Convention

Community plugins follow a unified naming convention:

TEXT 📖 Display only
npm package name: @dsh-plugin/plugin-name
GitHub repository name: dsh-plugin-name
Configuration reference name: plugin-name

Examples:

TEXT 📖 Display only
npm: @dsh-plugin/database    → GitHub: dsh-plugin-database
npm: @dsh-plugin/git-enhanced → GitHub: dsh-plugin-git-enhanced
npm: @dsh-plugin/docker      → GitHub: dsh-plugin-docker

(3) Searching Community Plugins

▶ Example 1: Search Plugins with GitHub CLI

BASH
# Search repos with dsh-plugin topic
gh repo list --topic dsh-plugin --limit 20

# Sort by stars
gh search repos "dsh-plugin" --sort stars --limit 20

▶ Example 2: Search Plugins with npm

BASH
# Search dsh plugin packages
npm search @dsh-plugin

# View specific plugin details
npm info @dsh-plugin/database

3. Installing Community Plugins

(1) Installation Methods

DSH supports three plugin installation methods:

Method Command Description
npm Install dsh plugin add @dsh-plugin/name Auto-download from npm
GitHub Install dsh plugin add github:user/repo Install from GitHub
Local Path dsh plugin add ./path/to/plugin Install locally developed plugin

▶ Example 3: Installing a Database Plugin

BASH
# Install from npm
dsh plugin add @dsh-plugin/database

# Installation output
📦 Installing @dsh-plugin/database@1.2.0...
✅ Plugin installed successfully!

Available tools:
  - database.query: Execute SQL queries
  - database.migrate: Run database migrations
  - database.schema: Inspect database schema

(2) Installing from Source

BASH
# Install from GitHub repository
dsh plugin add github:alice/dsh-plugin-redis

# Install specific branch
dsh plugin add github:alice/dsh-plugin-redis#feature/cluster-support

# Install specific version tag
dsh plugin add github:alice/dsh-plugin-redis#v2.1.0

(3) Managing Installed Plugins

▶ Example 4: Plugin Management Commands

BASH
# List installed plugins
dsh plugin list

# Output
📦 Installed Plugins:
  @dsh-plugin/database   v1.2.0  ✅ enabled
  @dsh-plugin/redis      v2.1.0  ✅ enabled
  @dsh-plugin/git-enhanced v0.8.0 ⚠️ disabled

# Disable plugin (without uninstalling)
dsh plugin disable @dsh-plugin/redis

# Enable plugin
dsh plugin enable @dsh-plugin/redis

# Uninstall plugin
dsh plugin remove @dsh-plugin/database

# Update plugin
dsh plugin update @dsh-plugin/database

(4) Managing Plugins via Configuration File

Plugins can also be managed through the configuration file:

YAML
# dsh.config.yaml
plugins:
  # npm plugin
  - name: "@dsh-plugin/database"
    version: "^1.2.0"
    enabled: true
    config:
      default_connection: "postgresql://localhost/mydb"
  
  # GitHub plugin
  - name: "@dsh-plugin/redis"
    source: "github:alice/dsh-plugin-redis"
    version: "v2.1.0"
    enabled: true
    config:
      host: "localhost"
      port: 6379
  
  # Local plugin
  - name: "my-custom-tool"
    source: "./plugins/my-custom-tool"
    enabled: true

(1) Database Category

Plugin Function Stars Status
@dsh-plugin/database SQL queries, migrations, Schema inspection 2.1k ✅ Active
@dsh-plugin/redis Redis operations, cache management 890 ✅ Active
@dsh-plugin/mongodb MongoDB document operations 650 ✅ Active
@dsh-plugin/prisma Prisma ORM integration 430 ⚠️ Experimental

▶ Example 5: Database Plugin Usage

YAML
# dsh.config.yaml
plugins:
  - name: "@dsh-plugin/database"
    config:
      connections:
        main: "postgresql://localhost/myapp"
        analytics: "postgresql://localhost/analytics"

The Agent can directly query the database:

TEXT 📖 Display only
👤 Alice: Query the 10 most recently registered users from the users table

🤖 Agent:
🔧 Using tool: database.query
  → Connection: main
  → Query: SELECT * FROM users ORDER BY created_at DESC LIMIT 10
  → Results: 10 rows

(2) DevOps Category

Plugin Function Stars Status
@dsh-plugin/docker Docker container management 1.5k ✅ Active
@dsh-plugin/k8s Kubernetes resource operations 980 ✅ Active
@dsh-plugin/ci CI/CD pipeline management 560 ✅ Active
@dsh-plugin/terraform IaC infrastructure management 340 ⚠️ Experimental

(3) Code Quality Category

Plugin Function Stars Status
@dsh-plugin/linter ESLint/Pylint integration 1.8k ✅ Active
@dsh-plugin/test-runner Test running and coverage 1.2k ✅ Active
@dsh-plugin/code-metrics Code complexity analysis 780 ✅ Active
@dsh-plugin/deps-audit Dependency security audit 920 ✅ Active

▶ Example 6: Linter Plugin Usage

TEXT 📖 Display only
👤 Bob: Check code quality in the src/ directory

🤖 Agent:
🔧 Using tool: linter.check
  → Directory: src/
  → Config: .eslintrc.json
  → Results: 12 warnings, 3 errors
  
  Errors:
  - src/utils/format.ts:45 — Unexpected any type
  - src/routes/api.ts:128 — Missing return type
  - src/models/user.ts:23 — Unused import

(4) API Integration Category

Plugin Function Stars Status
@dsh-plugin/github GitHub API operations 2.3k ✅ Active
@dsh-plugin/jira JIRA task management 560 ✅ Active
@dsh-plugin/slack Slack message sending 890 ✅ Active
@dsh-plugin/notion Notion page operations 450 ✅ Active

5. Plugin Security Evaluation

(1) Evaluation Framework

Always perform a security evaluation before installing any community plugin:

100%
graph TD
    A[Discover Plugin] --> B[Review Source Code]
    B --> C[Check Dependencies]
    C --> D[Review Permissions]
    D --> E[Evaluate Maintenance Status]
    E --> F{Security Evaluation Passed?}
    F -->|Yes| G[Install and Use]
    F -->|No| H[Abandon or Fix Before Using]

(2) Evaluation Checklist

Check Item Description Risk Level
Source code review Read main code to confirm no malicious logic 🔴 Critical
Dependency check Verify dependencies in package.json are trustworthy 🔴 Critical
Permission review What file/network/system permissions the plugin requests 🟡 Important
Maintenance status Last update time, Issue response speed 🟡 Important
Community rating GitHub Stars, downloads, user feedback 🟢 Reference
License Open source license type and restrictions 🟢 Reference

(3) Source Code Review Key Points

▶ Example 7: Reviewing Plugin Source Code

BASH
# Clone plugin repository for review
git clone https://github.com/user/dsh-plugin-example.git
cd dsh-plugin-example

# Check main entry file
cat src/index.ts

# Check dependencies
cat package.json | grep -A 20 "dependencies"

# Check for suspicious network requests
grep -r "fetch\|http\|axios\|request" src/

# Check for filesystem operations
grep -r "fs\.\|readFile\|writeFile\|exec\|spawn" src/

# Check for environment variable access
grep -r "process\.env" src/

(4) Plugin Permission System

DSH plugins must declare their required permissions:

TYPESCRIPT
// Plugin permission declaration
export default definePlugin({
  name: 'dsh-plugin-example',
  permissions: [
    'fs.read',        // Read files
    'fs.write',       // Write files
    'network.outbound', // Outbound network requests
    'shell.execute',  // Execute Shell commands
    'env.read'        // Read environment variables
  ],
  // ...
});

When installing, DSH shows the permission requests:

TEXT 📖 Display only
📦 Installing @dsh-plugin/example@1.0.0

⚠️ This plugin requests the following permissions:
  ✅ fs.read        — Read files in workspace
  ⚠️ network.outbound — Make outbound HTTP requests
  🔴 shell.execute  — Execute shell commands

Continue installation? (y/n)

6. Plugin Development and Publishing

(1) Plugin Development Template

▶ Example 8: Creating a Plugin Using the Template

BASH
# Use the official template
npx @deepseek-ai/create-dsh-plugin my-plugin

# Output
📁 Creating plugin: my-plugin
  ├── src/
  │   └── index.ts
  ├── package.json
  ├── tsconfig.json
  └── README.md

✅ Plugin scaffolded! Run:
  cd my-plugin
  npm install
  npm run dev

(2) Plugin Project Structure

TEXT 📖 Display only
dsh-plugin-my-plugin/
├── src/
│   ├── index.ts          # Plugin main entry
│   ├── tools/            # Tool definitions
│   │   └── my-tool.ts
│   └── services/         # Service definitions
│       └── my-service.ts
├── package.json
├── tsconfig.json
├── dsh-plugin.yaml       # Plugin metadata
└── README.md

(3) Publishing to npm

BASH
# Build
npm run build

# Publish
npm publish --access public

# Add GitHub Topic
# In GitHub repository settings, add topic: dsh-plugin

(4) dsh-plugin.yaml Metadata

YAML
name: dsh-plugin-my-plugin
version: 1.0.0
description: "A custom DSH plugin for database operations"
author: "Alice"
license: "MIT"
repository: "https://github.com/alice/dsh-plugin-my-plugin"
keywords:
  - dsh-plugin
  - database
  - tools
permissions:
  - fs.read
  - network.outbound
compatibility:
  dsh: ">=0.5.0"

❓ FAQ

Q Are community plugins officially reviewed?
A No. DSH community plugins are published by developers independently and are not officially reviewed. Always evaluate security yourself before installing.
Q What should I do if a plugin causes errors after installation?
A First disable the plugin (dsh plugin disable), then check the error logs. If it's a compatibility issue, try installing a compatible version or contact the plugin author.
Q Can multiple plugins conflict with each other?
A Possibly. If two plugins register tools with the same name, DSH uses the first one loaded. You can control load order with the priority field in configuration.
Q Can I use private plugins within my company?
A Yes. Use dsh plugin add ./path/to/plugin to install local plugins, or configure an internal npm registry.
Q How do I update plugins?
A Run dsh plugin update <name> to update a single plugin, or dsh plugin update --all to update all plugins. We recommend backing up your workspace before updating.
Q How can I tell if a plugin is still maintained?
A Check the GitHub repository's most recent commit date, Issue response speed, and npm publish frequency. Plugins with no updates in over 6 months should be used with caution.

📖 Summary


📝 Exercises

1. ⭐ Basic: Search the dsh-plugin topic on GitHub, list 3 plugins that interest you most, and describe their functionality and why you'd want to use them.

2. ⭐⭐ Intermediate: Install a community plugin (e.g., @dsh-plugin/database), configure the connection information, and have the Agent query a piece of data through the plugin. Record the installation and configuration process.

3. ⭐⭐⭐ Challenge: Develop a simple DSH plugin (e.g., a "current time query" tool), use the create-dsh-plugin template to create the project, write the tool logic, install it locally, and have the Agent successfully invoke it.

Web-Tutorial.com

Web-Tutorial Tech Team

A team of developers maintaining programming tutorials. Each tutorial is written and reviewed by developers with expertise in that field. We work to keep our content accurate and reliable — if you spot an issue, please let us know.

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏