mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-28 06:51:16 +08:00
docs: document rich requires_env format and install-time prompting
Updates the plugin build guide and features page to reflect the interactive env var prompting added in PR #5470. Documents the rich manifest format (name/description/url/secret) alongside the simple string format.
This commit is contained in:
@@ -44,8 +44,12 @@ This tells Hermes: "I'm a plugin called calculator, I provide tools and hooks."
|
|||||||
Optional fields you could add:
|
Optional fields you could add:
|
||||||
```yaml
|
```yaml
|
||||||
author: Your Name
|
author: Your Name
|
||||||
requires_env: # gate loading on env vars
|
requires_env: # gate loading on env vars; prompted during install
|
||||||
- SOME_API_KEY # plugin disabled if missing
|
- SOME_API_KEY # simple format — plugin disabled if missing
|
||||||
|
- name: OTHER_KEY # rich format — shows description/url during install
|
||||||
|
description: "Key for the Other service"
|
||||||
|
url: "https://other.com/keys"
|
||||||
|
secret: true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Step 3: Write the tool schemas
|
## Step 3: Write the tool schemas
|
||||||
@@ -336,13 +340,35 @@ def register(ctx):
|
|||||||
If your plugin needs an API key:
|
If your plugin needs an API key:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# plugin.yaml
|
# plugin.yaml — simple format (backwards-compatible)
|
||||||
requires_env:
|
requires_env:
|
||||||
- WEATHER_API_KEY
|
- WEATHER_API_KEY
|
||||||
```
|
```
|
||||||
|
|
||||||
If `WEATHER_API_KEY` isn't set, the plugin is disabled with a clear message. No crash, no error in the agent — just "Plugin weather disabled (missing: WEATHER_API_KEY)".
|
If `WEATHER_API_KEY` isn't set, the plugin is disabled with a clear message. No crash, no error in the agent — just "Plugin weather disabled (missing: WEATHER_API_KEY)".
|
||||||
|
|
||||||
|
When users run `hermes plugins install`, they're **prompted interactively** for any missing `requires_env` variables. Values are saved to `.env` automatically.
|
||||||
|
|
||||||
|
For a better install experience, use the rich format with descriptions and signup URLs:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# plugin.yaml — rich format
|
||||||
|
requires_env:
|
||||||
|
- name: WEATHER_API_KEY
|
||||||
|
description: "API key for OpenWeather"
|
||||||
|
url: "https://openweathermap.org/api"
|
||||||
|
secret: true
|
||||||
|
```
|
||||||
|
|
||||||
|
| Field | Required | Description |
|
||||||
|
|-------|----------|-------------|
|
||||||
|
| `name` | Yes | Environment variable name |
|
||||||
|
| `description` | No | Shown to user during install prompt |
|
||||||
|
| `url` | No | Where to get the credential |
|
||||||
|
| `secret` | No | If `true`, input is hidden (like a password field) |
|
||||||
|
|
||||||
|
Both formats can be mixed in the same list. Already-set variables are skipped silently.
|
||||||
|
|
||||||
### Conditional tool availability
|
### Conditional tool availability
|
||||||
|
|
||||||
For tools that depend on optional libraries:
|
For tools that depend on optional libraries:
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ Project-local plugins under `./.hermes/plugins/` are disabled by default. Enable
|
|||||||
| Inject messages | `ctx.inject_message(content, role="user")` — see [Injecting Messages](#injecting-messages) |
|
| Inject messages | `ctx.inject_message(content, role="user")` — see [Injecting Messages](#injecting-messages) |
|
||||||
| Ship data files | `Path(__file__).parent / "data" / "file.yaml"` |
|
| Ship data files | `Path(__file__).parent / "data" / "file.yaml"` |
|
||||||
| Bundle skills | Copy `skill.md` to `~/.hermes/skills/` at load time |
|
| Bundle skills | Copy `skill.md` to `~/.hermes/skills/` at load time |
|
||||||
| Gate on env vars | `requires_env: [API_KEY]` in plugin.yaml |
|
| Gate on env vars | `requires_env: [API_KEY]` in plugin.yaml — prompted during `hermes plugins install` |
|
||||||
| Distribute via pip | `[project.entry-points."hermes_agent.plugins"]` |
|
| Distribute via pip | `[project.entry-points."hermes_agent.plugins"]` |
|
||||||
|
|
||||||
## Plugin discovery
|
## Plugin discovery
|
||||||
|
|||||||
Reference in New Issue
Block a user