用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/OmniStormX/SmartNPC --skill hermes-langfuse-ops命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | hermes-langfuse-ops |
| description | Hermes Agent 的 Langfuse 可观测性配置与排障。当用户提到 Langfuse trace 看不到、Hermes 观测配置、plugin 加载失败、环境变量注入等问题时使用。 |
Hermes Agent 通过内置 plugin observability/langfuse 将 LLM 调用、工具调用链路上报到 Langfuse。
明文凭证一律不进仓库。本机 Langfuse key 写到下面任意一处:
~/.hermes/.envexport.env(已 .gitignore)仓库内只允许出现占位符:
HERMES_LANGFUSE_PUBLIC_KEY=pk-lf-...
HERMES_LANGFUSE_SECRET_KEY=sk-lf-...
HERMES_LANGFUSE_BASE_URL=https://cloud.langfuse.com
面板地址:https://cloud.langfuse.com
Plugin 通过 os.environ.get("HERMES_LANGFUSE_PUBLIC_KEY") 读取凭证。Hermes 的 .env 文件加载机制 不会 在所有模式下自动将变量 export 到 os.environ(gateway 模式下 reload_env() 可能未被调用)。
必须在启动 hermes 的 shell 中显式 export 环境变量,确保它们存在于进程的 os.environ 中:
export HERMES_LANGFUSE_PUBLIC_KEY='pk-lf-...'
export HERMES_LANGFUSE_SECRET_KEY='sk-lf-...'
export HERMES_LANGFUSE_BASE_URL='https://cloud.langfuse.com'
hermes -p <profile> gateway run --accept-hooks
仅写入 ~/.hermes/.env 或 ~/.hermes/profiles/<npc>/.env 是 不够的。
参见 scripts/launch_hermes_wsl.sh——在脚本头部 export 变量,然后 setsid hermes ... 启动 gateway。子进程自动继承父进程环境。
~/.hermes/hermes-agent/plugins/observability/langfuse/plugin.yaml 清单文件config.yaml 中声明 plugins.enabled: [observability/langfuse]hermes -p <npc> plugins list 应显示 observability/langfuse | enabledhermes-agent 0.14.0 的 pip 包不含 plugin.yaml,且 bundled plugins 目录扫描有深度限制。Workaround 见 deploy/hermes/scripts/entrypoint.sh——在 $PROFILE_DIR/plugins/langfuse/ 创建 plugin.yaml + symlink __init__.py。
Langfuse SDK v4.x 使用 OTLP 协议导出 spans,langfuse/langfuse:2 Docker 镜像不支持 OTLP(返回 404)。需要:
langfuse/langfuse:3(支持 OTLP),或https://cloud.langfuse.com,已原生支持)nohup ... & 不够:WSL 中 bash -c 退出时会杀掉子进程组。必须用 setsid 使 gateway 脱离终端会话。bash -lc 很慢:login shell 加载 .bashrc/.profile 需要额外 3-5s。用 bash -c + 显式 export PATH 代替。$HOME 在 bash -c 中未设置:需要手动 export HOME=/home/synchen。当 Langfuse 面板看不到 trace 时:
确认 plugin 已加载:
hermes -p <npc> plugins list | grep langfuse
# 应显示 "enabled"
确认进程环境变量:
pid=$(pgrep -f 'hermes.*-p <npc>.*gateway')
cat /proc/$pid/environ | tr '\0' '\n' | grep LANGFUSE
# 必须看到 PUBLIC_KEY / SECRET_KEY / BASE_URL
独立验证 SDK 连通性:
~/.hermes/hermes-agent/venv/bin/python /mnt/d/SmartNPC/scripts/test_langfuse.py
开启 debug 日志:
export HERMES_LANGFUSE_DEBUG=true
hermes -p <npc> gateway run --accept-hooks 2>&1 | grep -i langfuse
检查 Langfuse 项目匹配:确认面板上选对了 project(API key 对应的 project)。
| 文件 | 作用 |
|---|---|
scripts/launch_hermes_wsl.sh | WSL 原生启动脚本(export 凭证 + setsid) |
scripts/test_langfuse.py | 独立 Langfuse SDK 连通性测试(不依赖 Hermes) |
scripts/test_hermes_langfuse_plugin.py | Hermes plugin hook 模拟测试 |
hermes/profiles/_master/.env | Profile 模板中的 Langfuse 配置(渲染到各 NPC) |
deploy/hermes/scripts/entrypoint.sh | Docker 部署的 plugin 发现 workaround |
deploy/hermes/docker-compose.langfuse.yml | 自建 Langfuse v2 stack(已知不兼容 SDK v4) |
run-wsl.bat | 一键启动脚本(WSL 原生 Hermes 模式) |