跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

状态栏命令与 JSON 输入

用脚本格式化 stdin 状态,处理缺失字段、刷新定时与五秒超时。

Command 模式把结构化会话状态写入命令 stdin,并把 stdout 最多两行显示在 footer。它适合自定义格式,不能把昂贵任务直接放入频繁刷新路径。

最小例子

以下配置需要已有 jq,只显示模型名:

{
  "ui": {
    "statusLine": {
      "type": "command",
      "command": "jq -r '.model.display_name'",
      "respectUserColors": false,
      "hideContextIndicator": false
    }
  }
}

respectUserColors 默认 false,true 保留命令 ANSI 颜色。命令输出不会自动分析是否已包含上下文,所以 hideContextIndicator 默认 false;重复显示时需自行设置 true。

输入字段

结构内容
session_id、version会话与产品版本
model.display_name当前模型名
context_windowcontext_window_size、used_percentage、remaining_percentage、current_usage、total_input_tokens、total_output_tokens
workspace.current_dir当前工作目录
git.branch仅仓库内提供 git 对象
worktree活动 worktree 的 name、path、branch、original_cwd、original_branch
metrics.models每模型 API 次数/错误/耗时与 prompt、completion、total、cached、thoughts token
metrics.filestotal_lines_added、total_lines_removed
vim.mode启用 Vim 时的 INSERT / NORMAL

worktree 仅在对应活动 worktree 上下文提供,不能假设对象总存在。current_usage 来自上次 API 的当前上下文,累计输入输出另有字段。读取 git.branch 可直接用输入,不必每次再执行 Git。

stdin 只能消费一次。复杂脚本先保存 input=$(cat),再解析同一变量;不要串联多次独立读取 stdin 并期待每次都有完整 JSON。

刷新与 shell

一般状态变动会触发运行;时钟、外部配额等不伴随 agent 事件的数据可设 refreshInterval,单位秒,最小一秒。

macOS/Linux 使用 /bin/sh,Windows 默认 cmd.exe。脚本使用 Bash 专有语法时应明确调用 bash,不要假定 sh 或 cmd 支持。复杂逻辑可放脚本文件,在 command 中引用。

超过五秒的命令会被终止,失败时状态栏清空。先用合法 JSON 手动测试脚本,确认字段缺失时仍能输出;频繁调用的重工作应另做缓存,状态栏只读取结果。

配置必须位于 ui.statusLine,根级 statusLine 不生效。它与Hook 执行器的 shell、超时和输出协议不同,不能照搬 Hook 参数。