Quick Decision
Common Questions
Can one plugin combine multiple types?
Can one plugin combine multiple types?
Yes. A Tool plugin can also expose endpoints. For example, a Discord bot plugin sends messages (tool) and receives webhooks (endpoint) in one package. Model plugins are stricter: they cannot bundle tools or endpoints.
Tool vs. Agent Strategy: what's the difference?
Tool vs. Agent Strategy: what's the difference?
A Tool is an individual capability the Agent decides to call (like “search the web”). An Agent Strategy is the reasoning loop itself: the policy that decides which tools to call, in what order, and when to stop. Build a tool unless you’re replacing how Agents think.
Datasource vs. Trigger: both pull from external systems?
Datasource vs. Trigger: both pull from external systems?
Datasource brings documents into a knowledge base for retrieval. Trigger fires a workflow in real time on an upstream event. The same systems can power both, but the consumption pattern differs: indexing vs. event-driven execution.
Extension vs. Tool: when is a plain HTTP endpoint right?
Extension vs. Tool: when is a plain HTTP endpoint right?
Extensions are for the other direction: an outside service calls into Dify. Tools are for Agents/Workflows calling out to a service. Build an Extension when your plugin is the entry point, not the action.
Next Steps
Once you’ve picked a type, set up the CLI and scaffold a project:Install the CLI
Get
dify on your machine and run dify plugin init.Read the manifest spec
Understand the YAML structure every plugin shares.