Skip to content
FunCoding

Search

Search docs, Skills and MCP

Daemon 状态与日志

选择轻量状态、按需磁盘扫描和轮转日志,避免把未知结果当清理成功。

This page has not been translated into English yet. The original Chinese version is shown below.

优先使用轻量实时状态,再在具体问题出现时读取完整诊断或磁盘历史。某些看似统计的接口会扫描全部本地会话文件,不适合紧密轮询。

状态选择

路由内容与成本
GET /daemon/status默认 summary,仅内存状态,不为诊断启动 ACP
GET /daemon/status?detail=full会话、ACP、auth flow、工作区和日志器细节
GET /session/:id/status单 live 会话的 clientCount、hasActivePrompt 等;不存在为 404
GET /workspace/mcp、/skills、/providerslive ACP 快照;空闲未初始化时 initialized: false,不主动启动
GET /workspace/envdaemon 环境摘要,始终 initialized: true,不查询 ACP
GET /workspace/preflightdaemon 检查始终有值,空闲 ACP 项为 not_started

/session/:id/status 的 createdAt 是 live 创建时间。当前协议中的 updatedAt 是可选的 daemon 活动水位:只有本 bridge 中实际进入运行的 prompt 产生正式终态后才推进,排队、心跳和流式 chunk 不推进;恢复后首次终态之前可缺失,也不证明 transcript 已落盘。完整列表还可合并更晚的持久时间,因此状态与列表不能按字节等同。

session/resources 返回该 live session 自己 Config 中已脱敏的 Skill/MCP 状态,适合 worktree 或有效目录与基础工作区不同的情况;不含工作区 MCP 认证、池、预算和发现错误详情。先检查 session_resources。

目录统计与轮询

/workspace/:id/session-info 及复数工作区对应接口返回持久 active/archived/total 和可用的 live 数量。它扫描会话 JSONL,始终标 expensive: true、cost: disk_scan;truncated: true 时持久数量仅是下界。未信任 secondary 的统计不查询 live bridge,因此可省略 live。

该接口适合手动刷新,不要每次侧栏渲染或定时快速调用。分页目录用 sessions,实时数量用 daemon/status。Web Shell live-state 默认每 5 秒刷新;QWEN_SESSION_LIVE_STATE_POLL_INTERVAL_MS 可设 1000–2147483647 的整数毫秒,非法回退 5000,修改后重启 daemon 并刷新页面。它不改变完整目录轮询。

环境和预检

env 仅显示白名单秘密变量是否存在,不返回值;proxy 去除凭据并缩为 host:port。preflight 的 Node、CLI、目录、rg、git、npm 检查直接来自 daemon,认证、MCP、Skill、provider、工具、egress 需 live child。

预检错误类别包括 missing_binary、auth_env_error、init_timeout、restore_timeout、protocol_error、missing_file、parse_error、blocked_egress。没有 child 时应显示未开始,不应误报全部配置缺失。LSP 状态在没有 --experimental-lsp 时返回 enabled: false 和空 server 列表。

稳定日志与轮转

默认日志为 ${QWEN_RUNTIME_DIR or ~/.qwen}/debug/daemon/daemon.log,每条记录有本次启动随机 runId 和 PID。macOS/Linux 可持续跟随轮转:

tail -F ~/.qwen/debug/daemon/daemon.log

日志追加生命周期、路由错误、ACP stderr;QWEN_SERVE_DEBUG=1 增加 bridge 诊断。stderr 仍保留,文件不是替代输出。

单文件到约 10 MiB 前轮转,每个 family 留 4 个 archive;单记录最多 256 KiB,待写队列最多 4 MiB。压力、轮转或文件系统失败可能丢失文件副本,full status 提供健康状态及丢弃记录/字节数。

同一日志 namespace 只能有一个稳定 owner,并发 daemon 使用 debug/daemon/runs/run-/daemon.log,以启动输出和 full status 的路径为准。正常清理后约 100 MiB 的目标不是硬总量上限:仍活跃或未过失效条件的 fallback 会保留。没有按年龄过期。

排障记录的含义

Standalone session creation failed 记录 sessionId、phase、safe reason、dispatchState、cleanupOutcome;子会话另记录 parent 为 relatedSessionId。write_not_confirmed 不指出具体文件系统原因,unknown 不证明清理成功,quarantine 也不等于回滚。

需要独立历史时使用不同 QWEN_RUNTIME_DIR。新目录 0700、文件 0600;QWEN_DAEMON_LOG_FILE=0(亦接受 false/off/no)关闭文件日志而不影响 stderr。不要对活动 daemon.log 做外部 logrotate、删除或截断;可复制、收集但不要修改日志 family。会话 debug 日志与旧 serve-.log 不受这套轮转策略管理。

指标与分布式追踪

OTel 与上述稳定日志分别配置。daemon HTTP、会话、队列、SSE 和 heap 指标见遥测参考;入站 traceparent 与访问日志 traceId 的关系见Trace 关联。