第 30 期:Dify 插件开发与 Marketplace 发布

Updated on 4/6/2026

[Translation Pending]\n\n## Plugin 生态

graph TB
    subgraph "Dify Plugin 类型"
        Plugin[Plugin] --> Tool[🔧 Tool 工具类]
        Plugin --> Model[🤖 Model 模型类]
        Plugin --> Extension[🧩 Extension 扩展类]
        
        Tool --> T1[搜索工具]
        Tool --> T2[数据处理工具]
        
        Model --> M1[自定义模型接入]
        Model --> M2[模型代理/网关]
        
        Extension --> E1[Moderation 内容审核]
        Extension --> E2[External Data 外部数据源]
    end

开发环境搭建

# 安装 Dify Plugin CLI
pip install dify-plugin-daemon

# 初始化插件项目
dify plugin init my-awesome-plugin
cd my-awesome-plugin

# 项目结构
# my-awesome-plugin/
# ├── manifest.yaml          # 插件清单
# ├── README.md              # 插件说明
# ├── _assets/               # 图标等资源
# │   └── icon.svg
# ├── provider/              # Provider 定义
# │   └── my_provider.yaml
# └── tools/                 # 工具实现
#     ├── my_tool.yaml        # 工具描述
#     └── my_tool.py          # 工具逻辑

开发一个 GitHub Star 查询工具

manifest.yaml

version: 0.0.1
type: plugin
author: your-name
name: github-stats
label:
  en_US: GitHub Stats
  zh_Hans: GitHub 统计
description:
  en_US: Query GitHub repository statistics
  zh_Hans: 查询 GitHub 仓库统计数据
icon: _assets/icon.svg
created_at: 2026-04-05

tools/github_stars.yaml

identity:
  name: github_stars
  author: your-name
  label:
    en_US: GitHub Stars Lookup
    zh_Hans: GitHub Star 查询
description:
  human:
    en_US: Look up star count and other stats for a GitHub repository
    zh_Hans: 查询 GitHub 仓库的 Star 数量等统计信息
parameters:
  - name: repo
    type: string
    required: true
    label:
      en_US: Repository
      zh_Hans: 仓库
    description:
      en_US: "GitHub repository in format: owner/repo"
      zh_Hans: "GitHub 仓库名,格式: owner/repo"
output:
  type: object

tools/github_stars.py

from typing import Any
from dify_plugin import Tool
from dify_plugin.entities.tool import ToolInvokeMessage
import requests

class GitHubStarsTool(Tool):
    def _invoke(self, tool_parameters: dict[str, Any]) -> ToolInvokeMessage:
        repo = tool_parameters["repo"]
        
        try:
            response = requests.get(
                f"https://api.github.com/repos/{repo}",
                headers={"Accept": "application/vnd.github.v3+json"},
                timeout=10
            )
            
            if response.status_code == 404:
                return self.create_text_message(f"仓库 {repo} 不存在")
            
            data = response.json()
            
            stats = {
                "name": data["full_name"],
                "description": data["description"],
                "stars": data["stargazers_count"],
                "forks": data["forks_count"],
                "open_issues": data["open_issues_count"],
                "language": data["language"],
                "created_at": data["created_at"],
                "updated_at": data["updated_at"],
                "license": data.get("license", {}).get("spdx_id", "Not specified")
            }
            
            text = (
                f"📊 **{stats['name']}**\n"
                f"📝 {stats['description']}\n\n"
                f"⭐ Stars: {stats['stars']:,}\n"
                f"🍴 Forks: {stats['forks']:,}\n"
                f"🐛 Open Issues: {stats['open_issues']:,}\n"
                f"💻 Language: {stats['language']}\n"
                f"📜 License: {stats['license']}\n"
                f"📅 Created: {stats['created_at'][:10]}"
            )
            
            return self.create_text_message(text)
            
        except Exception as e:
            return self.create_text_message(f"查询失败: {str(e)}")

本地测试

# 启动测试服务器
dify plugin dev

# 在 Dify 后台 → Settings → Plugins → 安装本地插件
# 输入: http://localhost:5003

打包与发布到 Marketplace

# 打包为 .difypkg 文件
dify plugin package ./my-awesome-plugin

# 输出: my-awesome-plugin-0.0.1.difypkg

# 发布到 Dify Marketplace
# 1. 访问 https://marketplace.dify.ai
# 2. 注册开发者账号
# 3. 上传 .difypkg 文件
# 4. 填写发布信息
# 5. 提交审核
graph LR
    Dev[开发] --> Test[本地测试]
    Test --> Package[打包 .difypkg]
    Package --> Submit[提交 Marketplace]
    Submit --> Review[官方审核]
    Review --> Publish[上架发布]
    Publish --> Users[全球用户安装使用]

恭喜!

🎉 你已经完成了 Dify 全攻略 30 期教程的学习!

回顾你掌握的技能:

  • ✅ 从零部署 Dify 平台
  • ✅ 构建可视化 AI Workflow
  • ✅ 企业级 RAG 知识库
  • ✅ 多模式 Agent 智能体
  • ✅ 生产环境高可用架构
  • ✅ 插件开发与 Marketplace 发布

你已经从 Dify 初学者蜕变为 Agentic Workflow 的践行者!