qoderwake 命令行工具完整参考:守护进程、认证、配置与存储、Waker、项目、MCP、Skill、权限、IM 通道、会话、群会话、SOP、消息/Run/Trace、自动化、记忆、Teams、插件等全部命令与参数。
这是什么
qoderwake 是 QoderWake 的本地命令行工具 + 常驻守护进程(daemon)。它在本机拉起一个 daemon,管理数字员工(Waker)、项目、会话、IM 通道、定时任务、记忆等,并提供一个本地 Web 控制台(Console)。CLI 本身是 daemon 的瘦客户端:绝大多数命令都是把请求转发给本地 daemon 的 HTTP 接口。
基本形态
| 全局选项 | 说明 |
|---|---|
-v, --version | 打印版本 |
-h, --help | 打印帮助;对任意子命令追加 --help 查看该命令用法 |
快速上手
首次使用先安装 CLI。macOS / Linux 使用命令行一键安装:
qoderwake,重新打开终端,或使用完整路径 ~/.qoderwake/bin/qoderwake。
安装完成后:
提示:status返回的是结构化 JSON,包含device(设备在线状态)、sessions(会话总数/运行中)、agents(本地 Waker 数)、tasks(内部 cron 任务健康度)。
核心概念模型
理解这几个对象及其层级关系,是用好 CLI 的前提。
- Waker(数字员工):核心实体,id 前缀
ag_。历史上叫 worker / agent,命令worker是waker的隐藏别名,--worker-id、--agent-id是--waker-id的兼容别名。一个 Waker 拥有自己的项目、MCP、Skill、记忆和权限。 - Project(项目):代码仓库或工作区绑定。分两类:Waker 私有项目(需
--waker-id)与 公共项目(--public,不属于任何 Waker)。project onboard会克隆/软链仓库并做初始化分析,为项目记忆打底。 - Session(会话/运行):一个 Waker 的单次运行单元,id 前缀
sess_。隔离维度 = Waker + 工作区 + sessionId。产出 artifacts、文件变更、事件流。 - Conversation(会话内核, convId):新一代统一通信/执行节点,由
conversation_id+kind(default/group_conversation/group_thread)标识。承载消息、投递、Run、附件。messages、runs命令都作用于此。 - Group(群会话):容纳多个群会话的容器,可从某条消息派生 Thread。
channel是群的“单会话受限”形态。 - Run / Task:Run 是会话的一次执行帧(
runs list/cancel);Task 是被 Trace 跟踪的生命周期工作单元。 - Trace(任务链路):把
trace_id → agent_id / session_id / task_id / run_id串起来,并计算排队/派发/执行/总耗时,是跨对象的可观测性连接点。 - Automation(自动化):定时(cron)或一次性(时间戳)触发的任务,id 前缀
tr_;旧命令名为trigger。一次执行是一个rn_run。 - Channel(IM 通道):钉钉/飞书/微信等入站 IM 绑定。Pairing 是通道-用户配对握手,带审批流。
- SOP(标准作业规程):
skill_kind=sop的协作技能,三层结构——profile(稳定目录身份)、release(不可变、带版本与摘要)、template(可编辑白盒qoder-sop-template/v1JSON)。可按顺序绑定到群。 - Skill / MCP / Plugin / Extension:Skill 是 Waker 能力包(git 版本化,可 diff/rollback);MCP 是每个 Waker 的外部工具服务器;Plugin 是本地进程内的触发器/事件源插件;Extension 是本地 qodercli 扩展运行时清单(只读)。
- Memory(记忆):两种作用域——
agent(按 Waker 的长期记忆)与project(需--project-id)。支持预览(dream)、快照、diff、回滚、导入导出。 - Teams / Mission / RoleRun:Team 是项目内临时成员集合;Mission 是权威的任务生命周期实体;RoleRun 是成员在某个已提交计划版本下的执行记录。
teams diagnose生成只读诊断。
全局约定与通用参数
多数命令共享一组通用参数,理解一次即可全局复用:
| 参数 | 含义 |
|---|---|
--waker-id <id> | 指定数字员工。省略时对多数命令为必填;--worker-id / --agent-id 是其兼容别名 |
--format <table|json> | 输出格式,默认 table;部分命令只支持 json/text/markdown |
--json | 直接输出原始 JSON,等价于 --format json,适合脚本解析 |
--file <path> / --json-file <path> | 从文件读取长文本或 JSON 入参,避免 shell 转义 |
--dry-run / 无 -y, --yes | 写操作先给预览/diff,加确认标记后才真正落盘 |
--project-id <id> | 项目作用域操作时指定项目 |
- 所有命令都支持
-h, --help,本手册的参数即来自各命令的--help。 - 破坏性/写操作(模板 update/rollback/delete、memory rollback/import 等)默认只预览,必须显式加
-y/--yes/--apply才执行。 - CLI 只是 daemon 的瘦客户端,运行绝大多数命令前需先
qoderwake start拉起 daemon。
守护进程管理
start — 启动 daemon
| 选项 | 说明 |
|---|---|
--host <host> | 监听地址。默认仅本地回环;指定为对外地址会触发外网暴露确认 |
--port <port> | 监听端口或 auto,默认 19820(CN region 默认 19830) |
--foreground | 前台运行(不 detach),便于观察日志 |
--open | 启动后自动打开浏览器 Console |
--no-keepalive | 启动 detached daemon 但不注册操作系统级 keepalive 服务 |
--mock | 使用内嵌 mock 网关,无需登录(仅限 --foreground),用于本地体验/调试 |
-y, --yes | 非交互确认外网暴露 |
stop / restart
restart 参数与 start 基本一致;--force 用于确认「替换后的实例只在本地可用」的场景。
status — 守护进程状态
device(设备在线状态)、sessions(会话总数 / 运行中)、agents(本地 Waker 数)、tasks(内部 cron 任务健康度)。
portal — 打开本地控制台
认证与账号
login — 登录
| 选项 | 说明 |
|---|---|
--method <method> | 登录方式:browser(默认,浏览器授权)、token(交互粘贴 PAT)、file(从文件读 PAT) |
--token-file <path> | --method file 时读取个人访问令牌(PAT)的文件路径 |
--qoder-cli-path / --qodercli-path | 遗留 no-op,浏览器登录已由 qoderwake 自身托管 |
logout / whoami
配置与存储
qoderwake 有三个相互独立的配置存:config(daemon 应用配置,config.json)、settings(用户偏好,settings.json)、permission(每个 Waker 的四段式权限,见 Permission(权限守护)章节)。
config — daemon 应用配置
settings — 用户偏好
settings init --storage 选择存储后端:sqlite(默认)或 file。
storage — 存储后端迁移
| 选项 | 说明 |
|---|---|
--from <backend> | 源后端:sqlite 或 file |
--to <backend> | 目标后端:sqlite 或 file |
--switch | 迁移成功后自动把 settings.storage.backend 切到目标后端 |
--switch 时只复制数据、不改当前后端。
backup — 升级前备份
恢复前务必 qoderwake stop,否则会因 daemon 占用存储而失败。
Waker(数字员工)
基础增删改查
--template-id / --template-json <path> / --template-zip <path>(三选一作模板来源)、--name、--description、--workspace <path>(省略则用 daemon 托管工作区)、--session-timeout <seconds>。
export 关键选项:--out <path> 写到文件;--full 全量导出(含项目/触发器/记忆/连接器/权限);--include-secrets 含敏感 env 与 token;--include-runs 含触发器运行历史。--waker-id 与 --full 同时省略可导出全部 Waker。
waker update — 按字段更新
name、description、avatar、coreCapabilities、workStyles、deliveryCommitments、skill、mcp、identity、persona、bible。
- 列表/JSON 类字段(coreCapabilities/workStyles/deliveryCommitments/skill/mcp)支持
--append追加而非覆盖。 - 文本类字段(identity/persona/bible)同样支持
--append;可用--file从文件读入。 avatar的--file为图片文件路径。
waker template — 私有模板
把一个成型 Waker 固化为可复用、可版本化的私有模板:
save支持--dry-run预览快照/被剔除字段/配额,--idempotency-key重试安全。update/rollback/delete默认只打印 diff/计划,加-y, --yes才真正写入。list --mine时才能用--page/--page-size分页。
项目(project)
项目分两类:Waker 私有项目(需 --waker-id)与 公共项目(--public,不属于任何 Waker)。
| 选项 | 说明 |
|---|---|
--public | 面向公共项目(不带 waker) |
--name / --description | 项目名 / 描述 |
--path <path> | 文件系统源路径 |
--git-url <url> | git 仓库 URL |
--local-path <path> | git 源的本地路径 |
--label <label> | 上下文源标签 |
--initializer-command <cmd> | 初始化 shell 命令 |
--initializer-timeout <s> | 初始化超时(秒) |
list可用--include-public把公共项目并入 Waker 项目列表,--include-public-scope used|all控制只含已用还是全部。onboard会克隆/软链仓库并做初始化分析,为项目记忆打底。- 所有项目命令都兼容遗留的
--worker-id别名。
MCP(外部工具接入)
每个 Waker 可挂载若干 MCP Server(stdio / http / sse 三种传输)。
| 选项 | 说明 |
|---|---|
--json <json> / --json-file <path> | 直接导入 MCP JSON |
--name / --description | 名称 / 描述 |
--command <cmd> / --args <a,b,c> / --env <json> | stdio 传输:命令 / 逗号分隔参数 / JSON 环境变量 |
--http-url <url> / --transport stdio|http|sse | HTTP/SSE 地址与传输类型 |
--headers <json> / --header KEY=VALUE | HTTP/SSE 请求头(--header 可重复) |
--oauth-client-metadata-url / --oauth-client-id / --oauth-client-secret | OAuth 客户端元数据与凭据 |
--oauth-token-auth-method / --oauth-scope / --oauth-resource-metadata-url | OAuth token 端认证方式 / scope / 受保护资源元数据 |
Skill(能力包)
Skill 是 Waker 的能力包,git 版本化,可 diff / rollback。
skill search返回的SKILL_ID+DOWNLOAD_URL可直接喂给skill add --install-url。skill manage的--action可为create/patch/edit/write_file/remove_file,作用于单个 Waker 或会话(--waker-id与--conversation-id二选一),支持--dry-run校验。
Permission(权限守护)
每个 Waker 的权限由四个独立段组成:tool-guard(工具拦截)、file-guard(文件拦截)、builtin-tools(内置工具)、model-security(模型安全)。
tool-guard / file-guard / builtin-tools / model-security,均接受 --json 或 --json-file。
builtin 只读目录:
建议先permission get --json导出现状,在此基础上修改后再用patch <section>只更新变动段,避免update整体覆盖造成其他段丢失。
IM 通道与配对(channel)
通道生命周期
钉钉通道注册(扫码)
pairing — 通道-用户配对
外部 IM 身份与通道的配对握手,带审批流:
Extension(本地扩展运行时)
只读查看本地 qodercli 扩展运行时清单:
会话(session)
Session 是 Waker 的单次运行单元(id 前缀 sess_),产出 artifacts、文件变更与事件流。
session create/send可用--events-json <json>或--events-json-file <path>传入控制器事件数组。session artifacts的--include-file-changes可分页,配合--file-changes-limit/--file-changes-cursor。session trajectory生成去敏的轨迹,默认写入sessions/redacted/<sessionId>.md(--no-write-memory可关,--force覆盖,--out指定输出文件);可用--scope agent|project写入对应作用域记忆。
群会话(group)
--waker/--sop/--param均可重复;--sop可带@version,按传入顺序绑定。
group sop — 群的有序 SOP 绑定
SOP 系统目录(sop)
SOP(标准作业规程)是 skill_kind=sop 的协作技能,三层结构:profile(稳定目录身份)→ release(不可变版本)→ template(可编辑白盒 JSON)。
sop build的--set k=v可重复,用于注入模板参数;输出的就是安装时实际生成的 skill 目录。
消息 / Run / Trace
messages — 会话消息
| 选项 | 说明 |
|---|---|
--text <t> | 消息文本(除非用 --file) |
--mention <idOrName> | 唤醒会话成员(可重复) |
--private-to <idOrName> | 仅对发送者+指定成员可见(可重复) |
--reply-to <seqOrId> | 引用早先消息 |
--if-latest <seq> | 仅当这仍是你能看到的最新消息时才发送 |
--intent <intent> | 意图:chat / ask / notify / request_action |
--image <path> / --file <path> | 附件(均可重复) |
--model <model> | 唤醒 Waker 的模型覆盖 |
--wait / --timeout <secs> | 等待本消息触发的唤醒运行完成(默认 120s) |
claim/read 是一对幂等读取机制:claim拿一个稳定分页(返回 claimId),read再精确标记该 claim 中 1..N 条为已读。
runs — 会话运行帧
trace — 任务链路观测
--source:console/cli/api/trigger/im/work/dingtalk/dingtalk-user/dingtalk-ai-assistance/unknown。--status:arrived/created/queued/dispatching/running/success/failed/cancelled/timeout。--limit范围 1..1000,默认 50。
自动化(automation)
定时(cron)或一次性(时间戳)触发的任务(id 前缀 tr_,旧命令名 trigger);一次执行是一个 rn_ run。
| 选项 | 说明 |
|---|---|
--schedule-type <type> | cron(周期性)或 one-time(单次 ISO 8601 时间戳) |
--cron <expr> | 5 段 cron 表达式(--schedule-type=cron 时必填) |
--cron-preset <preset> | daily / weekly / monthly / custom(默认 custom) |
--run-at <timestamp> | ISO 8601 时间戳(one-time 时必填) |
--timezone <tz> | IANA 时区(默认本地或 Asia/Shanghai) |
--prompt <p> / --prompt-file <path> | 任务 prompt(二选一) |
--project-id <pid> | 可选本地项目绑定 |
--model <model> | qodercli 模型(默认 auto) |
--enabled <bool> | 是否启用(默认 true) |
--idempotency-key <key> | 重试复用创建操作键 |
--file-system read|read-write|none、--network true|false、--run-commands true|false、--command-allow-list <a,b,c>(空串清空)、--pull-config-json/--pull-config-file、--permissions-json/--permissions-file;调度字段可改 --schedule-type / --cron / --cron-preset(update 额外支持 hourly)/ --run-at / --timezone。
inspect run 用于诊断,可 --include-prompt 并用 --events-limit / --comments-limit / --outbox-limit(1-200)控制各表行数。
记忆(memory)
两种作用域:agent(按 Waker 的长期记忆,默认)与 project(需 --project-id)。所有子命令均支持 --scope agent|project,--agent-id 是 --waker-id 的弃用别名。
update/remove是受护的文本范围操作,需--old-text精确匹配,可带--expected-hash(来自 memory_search 的守卫哈希)与--reason;--dry-run先预览。rollback/import默认只 dry-run,加--apply才写入(且会先建回滚/导入前快照)。- project 作用域可额外传
--project-name/--project-root以定位上下文与 transcript。 show --view可选index/topics/sessions/all(long_term/daily为兼容别名)。
Teams(团队运行时)
只读诊断 Teams / Mission 运行时数据:
- 可按 Mission / 用户意图关联链 / RoleRun / ExecutorCommand 聚焦一条诊断链。
插件(plugin)
Plugin 是本地进程内加载的触发器/事件源插件。
plugin scheduled-task — 声明式定时任务注册表
诊断与维护
| 选项 | 说明 |
|---|---|
[traceId] / --trace-id <id> | 按 trace id 或 session id 搜索日志 |
--keyword <kw> | 按关键词搜索 |
--level <level> | 最低级别:debug / info / warn / error |
--qodercli | 只看 qodercli 调试日志 |
--clean | 结构化日志只显示原始消息 |
--limit <n> | 限制行数(默认 200) |
-f, --follow | 跟随输出新日志 |
排障推荐先用qoderwake status看 daemon 健康度,再用qoderwake log --level error --limit 100定位错误;需官方支持时用qoderwake feedback打包日志。
环境变量
以下为面向使用者、可直接设置的常用环境变量(来自源码 core/paths.ts、core/user-auth.ts、cli/index.ts 等):
| 环境变量 | 作用 |
|---|---|
QODERWAKE_HOME | 覆盖 qoderwake 主目录(默认 ~/.qoderwake,CN region 为 ~/.qoderwake-cn) |
QODER_ENV | 运行环境:daily / test / 空(即 prod)。日常开发需 export QODER_ENV=daily |
QODER_PERSONAL_ACCESS_TOKEN | 无头(headless)环境下的个人访问令牌(PAT) |
QODER_PERSONAL_ACCESS_TOKEN_FILE | 从文件读 PAT(优先于上行) |
QODER_USER_INFO | env 认证的用户信息 JSON |
QODER_MACHINE_ID | 设备机器码(机器绑定) |
QODERCLI_PATH | 指定 qodercli 可执行文件路径 |
QODERWAKE_SETTINGS_PATH | 覆盖 settings.json 路径 |
QODERWAKE_DEFAULT_WORKSPACE | 覆盖默认工作区目录 |
QODERWAKE_LOG_LEVEL | 日志级别(设为 debug 开启详细日志) |
QODERWAKE_ENDPOINT_BASE_URL | 覆盖服务端 endpoint 基地址(私有化/VPC) |
QODER_CONFIG_DIR | 覆盖 CLI 配置目录 |
还有大量QODER_*/QODERWAKE_*内部变量(如QODERWAKE_DAEMON_URL、QODER_AGENT_ID、各种 hook 超时)由 daemon 向子进程注入,无需手动设置。
目录结构(~/.qoderwake)
qoderwake 的所有本地状态集中在主目录下(可用 QODERWAKE_HOME 覆盖):
| 路径 | 内容 |
|---|---|
qoderwake | CLI / daemon 主二进制 |
bin/ | 其他可执行文件 |
qodercli/ | QoderWake 托管的 qodercli 配置与技能目录 |
config/ | daemon 应用配置(config.json)与 settings.json |
data/ | 业务数据(sqlite / file 后端:Waker/项目/会话/记忆等) |
logs/ | 日志(qoderwake.log 等,qoderwake log 读的就是这里) |
plugins/ | 已安装插件 |
extensions/ | 本地扩展运行时 |
runtimes/ / runtime-resources/ / resources/ | 运行时与内置资源 |
backups/ | 升级前自动备份(qoderwake backup 管理) |
state/ / run/ | 运行状态与进程/端口信息 |
tools/ / tmp/ / .tmp/ | 工具与临时文件 |
.auth | 登录凭据 |
.installed-version / .qodercli-version | 已安装版本标记 |
常见工作流
从零启动到可用
创建一个数字员工并绑项目
配置 MCP 与 Skill
创建定时自动化
群会话 + 消息驱动
观测与诊断
排障速查
| 现象 | 建议 |
|---|---|
| 命令报错「daemon 不可达」 | 先 qoderwake status;未起则 qoderwake start;端口被占用 qoderwake start --port auto |
| 未登录 / 401 | qoderwake whoami 确认;重新 qoderwake login;headless 用 QODER_PERSONAL_ACCESS_TOKEN(_FILE) |
| 定位错误 | qoderwake log --level error --limit 100;按链路 qoderwake log <traceId>;实时 -f |
| qodercli 行为异常 | qoderwake log --qodercli;必要时用 QODERCLI_PATH 指定正确二进制 |
| 升级后回滚 | qoderwake stop → qoderwake backup list → qoderwake backup restore <id> |
| 想切换存储后端 | qoderwake storage migrate --from file --to sqlite --switch |
| 需官方支持处理 | qoderwake feedback --message "..." 上传本地日志 |

