文件最后提交记录最后更新时间
fix(plugins): remove unreachable hermes tools → Langfuse path The langfuse plugin is hooks-only (no toolsets), so it never appears in hermes tools — that menu iterates _get_effective_configurable_toolsets() (= CONFIGURABLE_TOOLSETS + plugin-registered toolsets), and "langfuse" is in neither. The TOOL_CATEGORIES["langfuse"] setup wizard (with its post_setup: "langfuse" hook that pip-installs the SDK and writes plugins.enabled) was reachable only when a toolset key "langfuse" got enabled, which can't happen — so it's been dead code, and the docs that promised "Setup (interactive): hermes tools → Langfuse Observability" were silently broken. Right home for that wizard is hermes plugins (e.g. auto-running a plugin's post-setup hook on enable), which is a generic plugin-setup mechanism worth designing properly rather than shoehorning langfuse back into hermes tools. Until that exists, point users at the working manual flow. Code: - Delete TOOL_CATEGORIES["langfuse"] (24 lines) — unreachable. - Delete the post_setup_key == "langfuse" branch in _run_post_setup (29 lines) — only caller was the deleted TOOL_CATEGORIES entry. Docs / comments (point at the manual flow + interactive hermes plugins): - plugins/observability/langfuse/README.md: collapse the two-option setup section to the single working flow. - plugins/observability/langfuse/plugin.yaml: update description. - plugins/observability/langfuse/__init__.py: update module docstring. - hermes_cli/config.py: update inline comment above the LANGFUSE_* env-var allow-list. - website/docs/user-guide/features/built-in-plugins.md: collapse "Setup (interactive)" + "Setup (manual)" into one accurate block. - website/docs/reference/environment-variables.md: update the cross-reference in the Langfuse env-vars section. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 19 天前
fix(plugins): remove unreachable hermes tools → Langfuse path The langfuse plugin is hooks-only (no toolsets), so it never appears in hermes tools — that menu iterates _get_effective_configurable_toolsets() (= CONFIGURABLE_TOOLSETS + plugin-registered toolsets), and "langfuse" is in neither. The TOOL_CATEGORIES["langfuse"] setup wizard (with its post_setup: "langfuse" hook that pip-installs the SDK and writes plugins.enabled) was reachable only when a toolset key "langfuse" got enabled, which can't happen — so it's been dead code, and the docs that promised "Setup (interactive): hermes tools → Langfuse Observability" were silently broken. Right home for that wizard is hermes plugins (e.g. auto-running a plugin's post-setup hook on enable), which is a generic plugin-setup mechanism worth designing properly rather than shoehorning langfuse back into hermes tools. Until that exists, point users at the working manual flow. Code: - Delete TOOL_CATEGORIES["langfuse"] (24 lines) — unreachable. - Delete the post_setup_key == "langfuse" branch in _run_post_setup (29 lines) — only caller was the deleted TOOL_CATEGORIES entry. Docs / comments (point at the manual flow + interactive hermes plugins): - plugins/observability/langfuse/README.md: collapse the two-option setup section to the single working flow. - plugins/observability/langfuse/plugin.yaml: update description. - plugins/observability/langfuse/__init__.py: update module docstring. - hermes_cli/config.py: update inline comment above the LANGFUSE_* env-var allow-list. - website/docs/user-guide/features/built-in-plugins.md: collapse "Setup (interactive)" + "Setup (manual)" into one accurate block. - website/docs/reference/environment-variables.md: update the cross-reference in the Langfuse env-vars section. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 19 天前
fix(plugins): remove unreachable hermes tools → Langfuse path The langfuse plugin is hooks-only (no toolsets), so it never appears in hermes tools — that menu iterates _get_effective_configurable_toolsets() (= CONFIGURABLE_TOOLSETS + plugin-registered toolsets), and "langfuse" is in neither. The TOOL_CATEGORIES["langfuse"] setup wizard (with its post_setup: "langfuse" hook that pip-installs the SDK and writes plugins.enabled) was reachable only when a toolset key "langfuse" got enabled, which can't happen — so it's been dead code, and the docs that promised "Setup (interactive): hermes tools → Langfuse Observability" were silently broken. Right home for that wizard is hermes plugins (e.g. auto-running a plugin's post-setup hook on enable), which is a generic plugin-setup mechanism worth designing properly rather than shoehorning langfuse back into hermes tools. Until that exists, point users at the working manual flow. Code: - Delete TOOL_CATEGORIES["langfuse"] (24 lines) — unreachable. - Delete the post_setup_key == "langfuse" branch in _run_post_setup (29 lines) — only caller was the deleted TOOL_CATEGORIES entry. Docs / comments (point at the manual flow + interactive hermes plugins): - plugins/observability/langfuse/README.md: collapse the two-option setup section to the single working flow. - plugins/observability/langfuse/plugin.yaml: update description. - plugins/observability/langfuse/__init__.py: update module docstring. - hermes_cli/config.py: update inline comment above the LANGFUSE_* env-var allow-list. - website/docs/user-guide/features/built-in-plugins.md: collapse "Setup (interactive)" + "Setup (manual)" into one accurate block. - website/docs/reference/environment-variables.md: update the cross-reference in the Langfuse env-vars section. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 19 天前
README.md

Langfuse Observability Plugin

This plugin ships bundled with Hermes but is opt-in — it only loads when you explicitly enable it.

Enable

pip install langfuse
hermes plugins enable observability/langfuse

Or check the box in the interactive hermes plugins UI.

Required credentials

Set these in ~/.hermes/.env:

HERMES_LANGFUSE_PUBLIC_KEY=pk-lf-...
HERMES_LANGFUSE_SECRET_KEY=sk-lf-...
HERMES_LANGFUSE_BASE_URL=https://cloud.langfuse.com   # or your self-hosted URL

Without the SDK or credentials the hooks no-op silently — the plugin fails open.

Verify

hermes plugins list                 # observability/langfuse should show "enabled"
hermes chat -q "hello"              # then check Langfuse for a "Hermes turn" trace

Optional tuning

HERMES_LANGFUSE_ENV=production       # environment tag
HERMES_LANGFUSE_RELEASE=v1.0.0       # release tag
HERMES_LANGFUSE_SAMPLE_RATE=0.5      # sample 50% of traces
HERMES_LANGFUSE_MAX_CHARS=12000      # max chars per field (default: 12000)
HERMES_LANGFUSE_DEBUG=true           # verbose plugin logging

Disable

hermes plugins disable observability/langfuse