跳到正文
cccskills
免费在 GitHub 公开中文介绍

cli

本指南介绍 LobeHub CLI(`@lobehub/cli`)的命令结构、认证和工作区规则,以及如何新增或维护命令。还涵盖表格与 JSON 输出、设置文件位置和连接本地开发服务器的流程。

原文查看原文说明

LobeHub CLI (@lobehub/cli) development guide — commands, subcommands, architecture.

lobehub/lobehub星标 83,512(GitHub 83,512 + cccskills 0)

实测评分 未实测

查看安装方法

适用场景

  • 为 CLI 添加命令或子命令
  • 了解认证和工作区规则
  • 实现表格或 JSON 输出
  • 连接本地开发服务器试用命令

中文介绍

功能

本指南说明 LobeHub CLI(@lobehub/cli)的结构,以及如何添加和维护命令。它列出了登录、智能体、任务、文件、知识库、模型和技能等命令组的用途。指南通过示例介绍如何创建命令文件、在入口文件中注册命令、输出表格或 JSON、获取认证令牌,以及处理确认提示。内容还包括工作区选择规则、设置文件的保存位置,以及连接本地开发服务器并运行 CLI 的步骤。

适用场景

需要确认新功能应加到现有 CLI 的哪个位置,或希望各命令遵循相同的输出和认证方式时,可以参考本指南。它也适用于需要区分本地与生产环境设置,并想按照文档中的运行示例进行开发的情况。

使用示例

  • “说明如何为这个 CLI 添加一个新的子命令。”
  • “让这个列表命令的 JSON 输出遵循现有格式。”
  • “整理连接开发服务器并试用命令的方法。”

注意事项

CLI 可通过 Node.js 或 Bun 运行。使用本地开发服务器的流程包括启动服务器和进行认证。

本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。

文档检查

AI 根据 SKILL.md 的内容检查了需要注意的操作和使用前提。评分只依据实际运行的结果(实测对比)。

安全性发送数据、删除文件、执行命令等是否有说明
B部分不足资料涉及认证和服务器连接,但节选未完整说明确认保护措施。
安装难易度所需工具和 API 密钥是否少且有说明
B部分不足资料要求 Node.js 或 Bun;使用本地服务器还需启动服务并认证。

不计入评分。 由 AI(OpenAI Codex)于 2026年10月26日 评估。仅供参考,安装前请同时查看原文。

如果您认为评估有误,请申请复核

请写明哪一项有误以及原因。无需登录。我们会对照 SKILL.md 重新评估,并在此处更新结果。

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

包含的文件(11)

  • SKILL.md17.0 KB
  • agents/openai.yaml43 B
  • references/agent.md9.0 KB
  • references/conversation.md4.1 KB
  • references/generate.md14.1 KB
  • references/goal.md9.4 KB
  • references/knowledge.md8.0 KB
  • references/memory.md3.5 KB
  • references/models-providers.md5.7 KB
  • references/search-config.md7.7 KB
  • references/skills-plugins.md3.7 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

LobeHub CLI Development Guide

Overview

LobeHub CLI (@lobehub/cli) is a command-line tool for managing and interacting with LobeHub services. Built with Commander.js + TypeScript.

  • Package: apps/cli/
  • Entry: apps/cli/src/index.ts
  • Binaries: lh, lobe, lobehub (all aliases for the same CLI)
  • Build: tsup
  • Runtime: Node.js / Bun

Architecture

apps/cli/src/
├── index.ts                  # Entry point — parses argv, invokes program.ts
├── program.ts                # Builds the Commander program, registers every command
├── api/
│   ├── acceptance/           # `lh acceptance`: review loop, rounds (run/), plans, criteria, rubrics; `lh verify` aliases
│   ├── client.ts             # tRPC client (type-safe backend API)
│   └── http.ts               # Raw HTTP utilities
├── auth/
│   ├── credentials.ts        # Encrypted credential storage (AES-256-GCM)
│   ├── identity.ts           # Account fingerprint for machine-local state
│   ├── refresh.ts            # Token auto-refresh
│   └── resolveToken.ts       # Token resolution (flag > stored)
├── commands/                 # All CLI commands (one file per command group)
│   ├── agent.ts              # Agent CRUD + run
│   ├── agent-group.ts        # Agent group CRUD
│   ├── agent-signal/         # Inspect and trigger Agent Signal source events
│   ├── artifact.ts           # Publish local HTML pages as artifacts
│   ├── bot.ts                # Bot integrations (channels, access policies, messengers)
│   ├── completion.ts         # Shell completion script output
│   ├── config.ts             # whoami, usage
│   ├── connect.ts            # Device gateway connection + daemon
│   ├── device.ts             # Manage connected devices
│   ├── doc.ts                # Document management
│   ├── doctor.ts             # Machine diagnostics (runtime, endpoints, credentials, readiness)
│   ├── eval.ts               # Evaluation workflows & benchmarks
│   ├── file.ts               # File management
│   ├── generate/             # Content generation (text/image/video/tts/asr)
│   ├── goal.ts               # Long-horizon Goal Graphs
│   ├── hetero.ts             # Run heterogeneous agent CLIs, stream their output
│   ├── kb.ts                 # Knowledge base management
│   ├── login.ts              # OIDC Device Code Flow / API key auth
│   ├── logout.ts             # Clear credentials
│   ├── man.ts                # CLI manual pages
│   ├── memory.ts             # User memory management
│   ├── message.ts            # Message management
│   ├── migrate/              # Import data from external tools (OpenClaw, ChatGPT, Claude, etc.)
│   ├── model.ts              # AI model management
│   ├── notify.ts             # Send a callback message to a topic to trigger the agent
│   ├── plugin.ts             # Plugin management
│   ├── project.ts            # Goal-oriented project management
│   ├── provider.ts           # AI provider management
│   ├── search.ts             # Global search
│   ├── session-group.ts      # Agent session group management
│   ├── skill.ts              # Agent skill management
│   ├── status.ts             # Gateway connectivity check
│   ├── task/                 # Agent task management (assignees, checkpoints, deps, review)
│   ├── thread.ts             # Message thread management
│   ├── topic.ts              # Conversation topic management
│   ├── trace/                # Inspect and replay recorded agent execution traces
│   ├── update.ts             # Self-update to the latest published version
│   ├── user.ts               # User account & settings
│   └── workspace.ts          # Workspace list/scope/members/usage/audit
├── daemon/
│   └── manager.ts            # Background daemon process management
├── tools/
│   ├── shell.ts              # Shell command execution (for gateway)
│   └── file.ts               # File operations (for gateway)
├── settings/
│   └── index.ts              # Persistent settings (~/.lobehub/)
├── utils/
│   ├── logger.ts             # Logging (verbose mode)
│   ├── format.ts             # Table output, JSON, timeAgo/timeUntil, truncate
│   └── agentStream.ts        # WebSocket streaming for agent runs and task follow
└── constants/
    └── urls.ts               # Official server & gateway URLs

Command Groups

CommandAliasDescription
lh login-Authenticate via OIDC Device Code Flow or API key
lh logout-Clear stored credentials
lh connect-Device gateway connection & daemon management
lh device-Manage connected devices
lh status-Quick gateway connectivity check
lh doctor-Diagnose machine readiness (runtime, endpoints, credentials, scope, device, agent)
lh agent-Agent CRUD, run, status
lh agent-group-Agent group CRUD
lh agent-signal-Inspect and trigger Agent Signal source events
lh hetero-Run heterogeneous agent CLIs (Claude Code, Codex, etc.), stream their output
lh goal-Run long-horizon Goal Graphs
lh project-Manage goal-oriented projects
lh task-Manage agent tasks (assignees, checkpoints, deps, review)
lh thread-Manage message threads
lh trace-Inspect and replay recorded agent execution traces
lh acceptance-Delivery acceptances: review loop, rounds, per-run check plans, criteria, rubrics
lh verify-Deprecated alias of lh acceptance commands
lh eval-Manage evaluation workflows and benchmarks
lh generategenContent generation (text, image, video, tts, asr, download)
lh doc-Document CRUD, batch-create, parse, topic linking
lh file-File list, view, delete, recent
lh artifact-Publish local HTML pages as artifacts
lh kb-Knowledge base CRUD, folders, docs, upload, tree view
lh memory-User memory CRUD + extraction
lh message-Message list, search, delete, count, heatmap
lh topic-Topic CRUD + search + recent
lh notify-Send a callback message to a topic and trigger the agent to process it
lh migrate-Import data from external tools (OpenClaw, ChatGPT, Claude, etc.)
lh bot-Manage bot integrations (channels, access policies, messengers)
lh skill-Skill CRUD + import (GitHub/URL/market)
lh model-Model CRUD, toggle, batch-toggle, clear
lh provider-Provider CRUD, config, test, toggle
lh plugin-Plugin install, uninstall, update
lh search-Global search across all types
lh session-group-Manage agent session groups
lh workspacewsWorkspace list, scope switch, members, invites, usage
lh user-Manage user account and settings
lh whoami-Current user info (including the resolved workspace scope)
lh usage-Monthly/daily usage statistics
lh man-Show a manual page for the CLI or a subcommand
lh completion-Output shell completion script
lh update-Update the CLI to the latest published version

Workspace Scope

Every command runs against one scope, resolved in this order:

  1. an explicit --workspace <id> on the commands that take it
  2. the LOBEHUB_WORKSPACE_ID env var
  3. the scope persisted by lh workspace use <id|slug>
  4. personal content (no workspace)

The persisted scope is bound to the account and server it was chosen under. If either changes — a different lh login, a --server switch — it is ignored and reported as stale rather than attaching a workspace header the new identity has no membership in. lh logout clears it. lh whoami and lh workspace current both print which of the four sources is in effect.

API-key auth carries no local account identity, so there is nothing to bind a saved scope to — those callers pass LOBEHUB_WORKSPACE_ID instead.

Adding a New Command

1. Create Command File

Create apps/cli/src/commands/<name>.ts:

import type { Command } from 'commander';
import { getTrpcClient } from '../api/client';
import { outputJson, printTable, truncate } from '../utils/format';

export function register<Name>Command(program: Command) {
  const cmd = program.command('<name>').description('...');

  // Subcommands
  cmd
    .command('list')
    .description('List items')
    .option('-L, --limit <n>', 'Maximum number of items', '30')
    .option('--json [fields]', 'Output JSON, optionally specify fields')
    .action(async (options) => {
      const client = await getTrpcClient();
      const result = await client.<router>.<procedure>.query({ ... });
      // Handle output
    });
}

2. Register in Entry Point

In apps/cli/src/index.ts:

import { registerNewCommand } from './commands/new';
// ...
registerNewCommand(program);

3. Add Tests

Create apps/cli/src/commands/<name>.test.ts alongside the command file.

Conventions

Output Patterns

All list/view commands follow consistent patterns:

  • --json [fields] - JSON output with optional field filtering
  • --yes - Skip confirmation for destructive ops
  • -L, --limit <n> - Pagination limit (default: 30)
  • -v, --verbose - Verbose logging

Table Output

const rows = items.map((item) => [item.id, truncate(item.title, 40), timeAgo(item.updatedAt)]);
printTable(rows, ['ID', 'TITLE', 'UPDATED']);

JSON Output

if (options.json !== undefined) {
  const fields = typeof options.json === 'string' ? options.json : undefined;
  outputJson(items, fields);
  return;
}

Authentication

Commands that need auth use getTrpcClient() which auto-resolves tokens:

const client = await getTrpcClient();
// client.router.procedure.query/mutate(...)

Confirmation Prompts

import { confirm } from '../utils/format';
if (!options.yes) {
  const ok = await confirm('Are you sure?');
  if (!ok) return;
}

Storage Locations

FilePathPurpose
Credentials~/.lobehub/credentials.jsonEncrypted tokens (AES-256-GCM)
Settings~/.lobehub/settings.jsonCustom server/gateway URLs
Workspace~/.lobehub/active-workspaceActive scope + the account/server it is bound to
Daemon PID~/.lobehub/daemon.pidBackground process PID
Daemon Status~/.lobehub/daemon.status.jsonConnection status JSON
Daemon Log~/.lobehub/daemon.logDaemon output log

The base directory (~/.lobehub/) can be overridden with the LOBEHUB_CLI_HOME env var (e.g. LOBEHUB_CLI_HOME=.lobehub-dev for dev mode isolation).

Key Dependencies

  • commander - CLI framework
  • @trpc/client + superjson - Type-safe API client
  • @lobechat/device-gateway-client - WebSocket gateway connection
  • @lobechat/local-file-shell - Local shell/file tool execution
  • picocolors - Terminal colors
  • ws - WebSocket
  • diff - Text diffing
  • fast-glob - File pattern matching

Development

Running in Dev Mode

Dev mode uses LOBEHUB_CLI_HOME=.lobehub-dev to isolate credentials from the global ~/.lobehub/ directory, so dev and production configs never conflict.

# Run a command in dev mode (from apps/cli/)
cd apps/cli && bun run dev -- <command>

# This is equivalent to:
LOBEHUB_CLI_HOME=.lobehub-dev bun src/index.ts <command>

Connecting to Local Dev Server

To test CLI against a local dev server (e.g. localhost:3011):

Step 1: Start the local server

# From cloud repo root
bun run dev
# Server starts on http://localhost:3011 (or configured port)

Step 2: Login to local server via Device Code Flow

cd apps/cli && bun run dev -- login --server http://localhost:3011

This will:

  1. Call POST http://localhost:3011/oidc/device/auth to get a device code
  2. Print a URL like http://localhost:3011/oidc/device?user_code=XXXX-YYYY
  3. Open the URL in your browser — log in and authorize
  4. Save credentials to apps/cli/.lobehub-dev/credentials.json
  5. Save server URL to apps/cli/.lobehub-dev/settings.json

After login, all subsequent bun run dev -- <command> calls will use the local server.

Step 3: Run commands against local server

cd apps/cli && bun run dev -- task list
cd apps/cli && bun run dev -- task create -i "Test task" -n "My Task"
cd apps/cli && bun run dev -- agent list

Troubleshooting:

  • If login returns invalid_grant, make sure the local OIDC provider is properly configured (check OIDC_* env vars in .env)
  • If you get UNAUTHORIZED on API calls, your token may have expired — run bun run dev -- login --server http://localhost:3011 again
  • Dev credentials are stored in apps/cli/.lobehub-dev/ (gitignored), not in ~/.lobehub/

Switching Between Local and Production

# Dev mode (local server) — uses .lobehub-dev/
cd apps/cli && bun run dev -- <command>

# Production (app.lobehub.com) — uses ~/.lobehub/
lh <command>

The two environments are completely isolated by different credential directories.

Build & Test

# Build CLI
cd apps/cli && bun run build

# Unit tests
cd apps/cli && bun run test

# E2E tests (requires authenticated CLI)
cd apps/cli && bunx vitest run e2e/kb.e2e.test.ts

# Link globally for testing (installs lh/lobe/lobehub commands)
cd apps/cli && bun run cli:link

Detailed Command References

See references/ for each command group:

  • Agent: references/agent.md (CRUD, run, status)
  • Goals: references/goal.md (planning turn, state, events, lifecycle, decisions)
  • Content Generation: references/generate.md (text, image, video, tts, asr, download)
  • Knowledge & Files: references/knowledge.md (kb, file, doc)
  • Conversation: references/conversation.md (topic, message)
  • Memory: references/memory.md (memory management, extraction)
  • Skills & Plugins: references/skills-plugins.md (skill, plugin)
  • Models & Providers: references/models-providers.md (model, provider)
  • Search & Config: references/search-config.md (search, whoami, usage, workspace)

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

acceptance

免费有简介

通过实际操作产品验证交付内容,记录用户可查看的证据,并发布验收报告。可检查已有验证计划或创建检查项,选择合适的操作界面,并使用 `lh` CLI 发布结果。

  • 实际检查更改后的产品行为
  • 收集截图或其他验证证据
  • 编写验证计划和报告
lobehub/lobehub8.4万2026年10月26日 更新

add-model-provider

免费有简介

本技能指导在 LobeHub 中接入 AI 模型提供商,涵盖运行时、模型信息、设置、品牌展示、文档和验收,并帮助判断新增模型是否需要新的提供商集成。

  • 为 LobeHub 接入新的 AI 模型提供商
  • 更新提供商设置说明或介绍
  • 判断添加模型是否需要新的提供商集成
lobehub/lobehub8.4万2026年10月26日 更新

add-setting-env

免费有简介

本技能指导如何用服务器端环境变量设置用户偏好默认值,涵盖变量校验、服务器配置、写入用户状态,以及更新 `.env.example` 和自托管文档。

  • 通过环境变量设置用户偏好默认值
  • 将设置接入服务器配置和用户状态
  • 更新环境变量示例及文档
lobehub/lobehub8.4万2026年10月26日 更新

agent-runtime-hooks

免费有简介

说明如何在智能体执行步骤、工具调用、人工审批、上下文压缩和子智能体调用时注册钩子。钩子可观察事件、模拟本地工具结果,也可通过 Webhook 按配置策略允许或拒绝工具调用。

  • 记录智能体步骤和错误
  • 测试时模拟工具结果
  • 通过 Webhook 允许或拒绝工具调用
lobehub/lobehub8.4万2026年10月26日 更新

agent-signal

免费有简介

此技能用于为智能体设计事件驱动的后台工作流,划分来源、信号、动作和策略的职责,并处理异步交接、去重、执行范围、完成记录与运行观测。

  • 添加事件触发的后台任务
  • 将工作移出对话请求
  • 防止动作重复执行
lobehub/lobehub8.4万2026年10月26日 更新

agent-testing-bot

免费有简介

本技能在 macOS 桌面聊天应用中测试机器人频道:打开应用、进入频道或联系人、发送消息、等待回复并截图。支持 Discord、Slack、Telegram、微信、飞书和 QQ;iMessage 使用 BlueBubbles 桥接。

  • 检查真实 Discord 频道中的机器人回复
  • 测试 Slack 或 Telegram 的对话流程
  • 记录 macOS 应用中的操作结果
lobehub/lobehub8.4万2026年10月26日 更新

查看 lobehub 的全部技能

报告此技能的问题