ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

给Deep Code CLI状态栏加上插件:自定义Git分支、时间与Token用量完整指南

给Deep Code CLI状态栏加上插件:自定义Git分支、时间与Token用量完整指南 给Deep Code CLI状态栏加上插件自定义Git分支、时间与Token用量完整指南【免费下载链接】deepcode-cliDeep Code 是专为 deepseek-v4 模型优化的终端 AI 编码助手支持深度思考、推理强度控制以及 Agent Skills。项目地址: https://gitcode.com/gh_mirrors/de/deepcode-cliDeep Code 是专为 deepseek-v4 模型优化的终端 AI 编码助手除了深度思考与推理强度控制它还内置了状态栏插件机制无需修改任何 CLI 源码只需在settings.json中声明几个 provider就能在输入框下方的状态栏实时显示 Git 分支、当前时间、Token 用量等自定义信息。本文将带你从零完成配置5 分钟搞定一条信息流状态栏。 官方说明文档statusline.md实现源码位于 packages/cli/src/ui/statusline/什么是 Deep Code 状态栏状态栏是终端界面底部的一条信息行展示在输入框下方的快捷键提示行之下。你可以把它理解成可插拔的信息条每个插件项称为一个provider支持command执行外部命令和module加载本地 JS 模块两种类型所有 provider 的输出按声明顺序拼接用分隔符连接渲染支持为每个 provider 单独指定颜色如cyan、#229ac3。配置完成后状态栏行在任何场景下都会显示包括 AI 正在思考、权限确认等不会遮挡 busy 提示。下面是 Deep Code CLI 的终端运行效果状态栏就显示在这类界面的输入框区域下方一键启用最小配置 3 行搞定编辑用户级配置~/.deepcode/settings.json或项目级配置项目根目录/.deepcode/settings.json加入statusline字段完整字段表见 statusline.md{ statusline: { enabled: true, refreshMs: 2000, providers: [ { type: command, id: git, command: git branch --show-current, color: cyan }, { type: command, id: time, command: date %H:%M, color: green } ] } }只需记住 4 个顶层字段字段说明enabled是否启用省略时只要有 provider 即视为启用refreshMs刷新间隔毫秒最小 500默认 2000separator各 provider 之间的分隔符默认 · providersprovider 列表按声明顺序渲染⚠️改完配置需要重启 CLI 才会生效不支持热加载。Provider 类型一command —— 显示 Git 分支与时间command类型会在 shell 中周期执行一条命令取 stdout第一行作为状态栏文本。支持管道、重定向等 shell 语法最灵活、零代码。常用的几个即抄即用命令摘自 statusline.md用途命令Git 当前分支git branch --show-current当前时间date %H:%M节点版本node -v变更文件数git status --porcelain \| wc -l \| xargs -I{} echo {} files changed每个 command provider 还支持这些可选字段详见 statusline.mdcwd执行目录相对路径相对于项目根目录timeoutMs超时毫秒默认 1500超时返回空串color任意 ink 颜色名或十六进制色值。启动后你会看到类似main · 14:32 · 3 files changed的实时状态效果如下Provider 类型二module —— 显示 Token 用量当需要访问 Deep Code 内部数据比如本次会话消耗了多少 Token时用module类型它加载一个本地 JS/MJS 模块调用其默认导出函数返回值作为状态栏文本。在项目的.deepcode/plugins/目录放一个tokens.mjs函数会收到{ projectRoot, session }两个参数export default function tokensProvider({ projectRoot, session }) { if (session?.activeSessionId) { return tokens: ${session.totalTokens}; } return tokens: -; }sessionSessionInfo里可直接取到的关键字段字段含义activeSessionId当前活跃会话 ID无会话时为nullmessageCount当前会话消息总数requestCountLLM API 请求次数totalTokens当前会话累计消耗的 Token 总数在配置中引用它即可{ statusline: { providers: [ { type: module, id: tokens, path: ./.deepcode/plugins/tokens.mjs, color: yellow, timeoutMs: 2000 } ] } } 提示path支持相对路径相对于项目根目录也支持具名导出provider代替default导出。安全限制与行为细节新手必看状态栏插件在设计上做了多重护栏了解它们能帮你快速排错规则详见 statusline.mdmodule 路径白名单模块必须位于项目根目录或用户 home 目录之下超出范围的绝对路径会被拒绝加载防止从任意位置执行代码文本自动清洗每个 segment 只取第一个非空行、去除 ANSI 转义、折叠空白并截断到 40 个字符超出加…——所以别指望在状态栏放长句容错隔离任一 provider 抛错、超时或返回空串只跳过该 segment其余 provider 正常显示配置合并用户级与项目级的providers数组合并渲染用户级在前其余字段以项目级优先command 输出上限stdout 最多读取 4 KB。核心调度逻辑定时拉取、并发 fetch、内容不变不重渲染实现在 manager.ts 的StatusLineManager中感兴趣的可以一读。常见问题FAQQ配置了状态栏却什么都不显示检查providers是否为空空数组视为未启用确认命令在 shell 中单独执行能输出第一行文本然后重启 CLI。Q为什么我的 segment 只有 40 个字符这是刻意设计的上限避免撑破终端。把最重要的信息放在字符串前面即可。Q想给不同 provider 不同颜色在每个 provider 上加color字段颜色名red、cyan…或十六进制#229ac3都行。QToken 数据在哪来的由 module provider 调用时注入的session对象提供无需自己解析日志文件。小结Deep Code CLI 的状态栏插件机制让你用纯 JSON 配置就能扩展终端信息command负责一切shell 能拿到的信息Git 分支、时间、脏文件数module负责需要访问会话数据的信息Token 用量、消息数出错自动隔离、文本自动截断配置合并友好重启即生效。照着本文的 完整示例 抄改一番你也能拥有一个既专业又个性化的 AI 编码终端。【免费下载链接】deepcode-cliDeep Code 是专为 deepseek-v4 模型优化的终端 AI 编码助手支持深度思考、推理强度控制以及 Agent Skills。项目地址: https://gitcode.com/gh_mirrors/de/deepcode-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表