mirror of
https://github.com/lobehub/lobe-chat.git
synced 2026-06-14 03:30:19 +00:00
47b6f3503a
* ✨ feat(hermes): implement hermes agent chain logic Replace the broken HTTP gateway approach with direct CLI spawn (matching openclaw's architecture). Hermes chat -q --quiet outputs session_id + response to stdout — we capture it and relay via sendAutoNotify/sendDoneSignal, no buildNotifyProtocol injection needed. - heteroTask (CLI): spawn hermes chat -q --quiet [--resume <id>], capture stdout, persist session_id to ~/.lobehub/hermes-sessions.json per topicId, kill concurrent same-topic tasks by PID before spawning - GatewayConnectionCtr (desktop): mirror CLI logic, store hermes session IDs in-memory hermesSessionMap, remove unused HTTP gateway helpers - getAgentProfile: implement hermes profile fetch via `hermes profile list` + SOUL.md description parsing - checkPlatformCapability: fix hermes check to use `hermes --version` instead of non-existent HTTP /health endpoint Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * 🐛 fix(hermes): fix CodeQL incomplete sanitization and tilde path expansion - readHermesSoulDescription: loop comment-stripping regex until stable to prevent residual `<!--` from malformed/nested sequences (CodeQL High) - getHermesProfilePath: expand leading `~` via os.homedir() before fs.join in case hermes profile show returns a tilde-prefixed path (CLI + desktop) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * 🐛 fix(hermes): strip residual angle brackets to satisfy CodeQL sanitization check After stripping HTML comments, add .replaceAll(/[<>]/g, '') inside the loop to ensure no partial `<!--` delimiters survive, resolving the CodeQL 'Incomplete multi-character sanitization' High warning. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * ✨ feat(platform-agent): enable Hermes + add Amp/OpenCode as coming-soon platforms - Enable Hermes in CreatePlatformAgent (remove from COMING_SOON_PLATFORMS) - Add Amp and OpenCode to REMOTE_HETEROGENEOUS_AGENT_CONFIGS (coming-soon disabled) - Extend RemoteHeterogeneousAgentType and HeterogeneousProviderConfig.type - Use isRemoteHeterogeneousType() in HeterogeneousAgentStatusCard to future-proof remote agent detection guard (removes hardcoded openclaw/hermes check) - Export isRemoteHeterogeneousType from heterogeneous-agents/client entrypoint - Broaden agentType to string in device-gateway-client (AgentRunRequestMessage, dispatchAgentRun) so new remote types pass without package updates - Add i18n keys for amp/opencode platform descriptions (en-US, zh-CN) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * 🐛 fix(test): add isRemoteHeterogeneousType to heterogeneous-agents/client mock --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@lobehub/cli
LobeHub command-line interface.
Local Development
| Task | Command |
|---|---|
| Run in dev mode | bun run dev -- <command> |
| Build the CLI | bun run build |
Link lh/lobe/lobehub into your shell |
bun run cli:link |
| Remove the global link | bun run cli:unlink |
bun run buildonly generatesdist/index.js.- To make
lhavailable in your shell, runbun run cli:link. - After linking, if your shell still cannot find
lh, runrehashinzsh.
Custom Server URL
By default the CLI connects to https://app.lobehub.com. To point it at a different server (e.g. a local instance):
| Method | Command | Persistence |
|---|---|---|
| Environment variable | LOBEHUB_SERVER=http://localhost:4000 bun run dev -- <command> |
Current command only |
| Login flag | lh login --server http://localhost:4000 |
Saved to ~/.lobehub/settings.json |
Priority: LOBEHUB_SERVER env var > settings.json > default official URL.
Shell Completion
Install completion for a linked CLI
| Shell | Command |
|---|---|
zsh |
source <(lh completion zsh) |
bash |
source <(lh completion bash) |
Use completion during local development
| Shell | Command |
|---|---|
zsh |
source <(bun src/index.ts completion zsh) |
bash |
source <(bun src/index.ts completion bash) |
- Completion is context-aware. For example,
lh agent <Tab>shows agent subcommands instead of top-level commands. - If you update completion logic locally, re-run the corresponding
source <(...)command to reload it in the current shell session. - Completion only registers shell functions. It does not install the
lhbinary by itself.
Quick Check
which lh
lh --help
lh agent <TAB>