给 Claude Code 做了个本地桌面工作台,对接官方 OTLP / hooks - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
zhnd18
V2EX    分享创造

给 Claude Code 做了个本地桌面工作台,对接官方 OTLP / hooks

  •  1
     
  •   zhnd18
    zhnd 9 天前 1208 次点击

    最近一直在重度用 Claude Code ,边用边有一个挺强烈的感受:

    Claude Code 本身已经很强了,但围绕它的很多能力还是比较散。

    一部分信息在终端里,一部分配置在本地,一部分要自己翻文件,一部分干脆没有一个顺手的入口。尤其是当你开始高频使用之后,很多问题会变得越来越具体:

    • 今天到底用了多少?
    • 钱花在哪些模型、哪些 session 上?
    • 哪些工具调用最频繁,成功率怎么样?
    • cache 到底有没有帮我省 token / 省钱?
    • 哪些 session 特别重,过两天怎么快速复盘?
    • usage 怎么查得更方便一点?
    • skills / marketplace / 插件这些东西能不能别全靠手动折腾?
    • Claude Code 的 hook 事件能不能直接给桌面通知?

    所以我做了个本地桌面应用,叫 Lumo 。

    desktop

    先说我觉得最重要的点,也是我自己比较在意、和别的工具差异最大的点:

    Lumo 是 OTLP 采集,而不是去读 Claude Code 生成的本地 json 文件,也不是解析终端输出

    它走的是 Claude Code 官方支持的监控链路:

    • OTLP logs
    • OTLP metrics
    • hooks

    也就是 Claude Code 原生就支持的 telemetry / hook 能力。Lumo 在本地起一个 daemon ,接收这些官方事件,然后写入本地 SQLite ,再由桌面应用把它展示出来。

    所以它的数据采集方式不是“旁路扒数据”,而是直接接官方暴露出来的观测入口。

    这一点我觉得很关键。

    因为如果只是去扫本地 json ,或者解析 CLI 输出,短期内当然也能做出一些统计,但问题是这种方式天然会有几个麻烦:

    • 数据结构依赖实现细节,容易变
    • 很多信息拿不到,或者只能靠猜
    • 后面想扩展成更完整的工作台会比较别扭
    • 稳定性和可信度都一般

    而直接走官方 telemetry / hooks ,事情就会顺很多:

    • 数据来源更正
    • 粒度更细
    • 扩展能力更自然
    • 接入方式也更正规

    对我来说,这个点甚至比 UI 漂不漂亮更重要。

    目前 Lumo 做的事情,大概可以分成几块。

    1. Usage 可以直接查 Claude 官方 usage ,包括当前额度、weekly limits 、extra usage 这些。 这个能力看起来不花哨,但实际挺高频。尤其是你开始认真控制使用成本的时候,会反复看。

    2. Sessions 可以按项目看 Claude Code 的 session ,进详情后能看到会话内容、工具调用、工具结果、失败情况、涉及文件这些。 如果你平时 session 很长,过两天想回头看当时到底发生了什么,这一块会比直接翻原始记录舒服很多。

    3. Overview / Tools / Performance 这一块是分析面板,能看:

    cost token session 数 代码改动 模型分布 tool 调用频次 tool 成功率 平均耗时 cache hit rate error rate peak hours session length 分布

    我自己做这块,不是为了“做点图表”,而是因为 Claude Code 用久了之后,很多优化问题其实都落在这里: 到底是模型选得不对,还是 session 习惯有问题,还是某些工具特别耗时,还是 cache 根本没起作用。

    1. Skills 可以直接管理 Claude Code 的 skills ,包括全局和项目级的。 这个能力做进去之后,至少不用老在目录和配置之间来回跳了。

    2. Marketplace / Plugin 可以加 source 、同步 marketplace 、安装和卸载 plugin 。 这部分我自己日常会用到,所以也放进来了。相比手动处理,桌面端统一管理还是顺手很多。

    3. 桌面通知 Claude Code 的 hook 事件可以接到 Lumo ,然后走系统桌面通知。 对我自己来说这个很实用,有些状态变化没必要一直盯着终端看。

    4. Wrapped 这个算是顺手做的,用来做阶段性总结和分享还挺合适。

    desktop

    划重点,整个链路是 本地优先 的:

    • 不需要账号
    • 没有云端 dashboard
    • 没有第三方 analytics
    • 数据默认都在本机

    Lumo 现在还在持续迭代,但至少目前已经把我自己最常用、最想收拢的几块做进来了。

    项目地址: https://github.com/zhnd/lumo

    如果你也在高频用 Claude Code ,欢迎试试。

    也欢迎直接提意见,尤其是这几类我会比较关注:

    你最想看的 Claude Code 指标是什么

    你更在意: usage / 成本,还是 tools / 效率 / session 复盘 除了现在这些,你觉得 Claude Code 还缺什么桌面侧能力

    13 条回复    2026-03-20 10:25:00 +08:00
    v9912ex
        1
    v9912ex  
       9 天前 via iPhone
    很好的项目, 已 star, 请求 x64.dmg
    zhnd18
        2
    zhnd18  
    OP
       9 天前
    @v9912ex 后续安排
    zhnd18
        3
    zhnd18  
    OP
       9 天前   1
    @v9912ex 已支持,欢迎下载使用: https://github.com/zhnd/lumo/releases
    hitrip
        4
    hitrip  
       9 天前
    Mac Mini M4
    hitrip
        5
    hitrip  
       9 天前
    没仔细读 readme ,已解决
    zhnd18
        6
    zhnd18  
    OP
       9 天前
    @hitrip 后续可能的话我添加证书来优化
    dododook
        7
    dododook  
       9 天前
    大佬 Claude 怎么使用安全?
    zhnd18
        8
    zhnd18  
    OP
       9 天前
    @dododook 当代码助手的话,不要把敏感信息直接丢进去,给 AI 的权限要控制,另外 review 好自动生成的代码,应该就没什么问题
    tadashiyui
        9
    tadashiyui  
       9 天前 via iPhone
    码住,很实用
    gap
        10
    gap  
       8 天前
    不错,设计很清爽
    yzld2002
        11
    yzld2002  
       8 天前
    赞,很棒的思路,比扫文件舒服多了,也放心很多
    Anadem
        12
    Anadem  
       4 天前
    会支持 windows 嘛?
    zhnd18
        13
    zhnd18  
    OP
       4 天前
    @Anadem 已经提上计划啦,也欢迎参与项目
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5227 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 03:57 PVG 11:57 LAX 20:57 JFK 23:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86