1. 1. 1. 图形化界面 Claudia
    1. 1.1. 1.1 特性一览
      1. 1.1.1. 展示每日花销
      2. 1.1.2. 可视化编辑全局规则文件
      3. 1.1.3. 可视化安装 MCP
      4. 1.1.4. Checkpoint 回滚备份
      5. 1.1.5. 智能体
    2. 1.2. 1.2 安装步骤
      1. 1.2.1. Windows
      2. 1.2.2. Mac
    3. 1.3. 1.3 界面介绍
    4. 1.4. 1.4 项目使用
      1. 1.4.1. 亮点一:拖拽图片到对话框
      2. 1.4.2. 亮点二:预览窗口
    5. 1.5. 1.5 智能体使用
    6. 1.6. 1.6 规则使用
    7. 1.7. 1.7 数据统计
  2. 2. 2. 初相识(新手引导)
    1. 2.1. 2.1 第一个应用
  3. 3. 3. 小技巧合集
    1. 3.1. 3.1 换行
    2. 3.2. 3.2 粘贴图片
    3. 3.3. 3.3 # 符号添加 CLAUDE.md 文件内容
  4. 4. 4. Github 相关操作
    1. 4.1. 4.1 方式一:Github 网页艾特直接解决 PR 问题
      1. 4.1.1. 第一步:执行 /install-github-app 命令
      2. 4.1.2. 第二步:选择安装的目录
      3. 4.1.3. 第三步:配置授权
      4. 4.1.4. 第四步:安装 Github 工作流
      5. 4.1.5. 第五步:创建 Token
      6. 4.1.6. 第六步:使用 Github Actions 工作流
      7. 4.1.7. 第七步:手机 Github 工作流上使用
        1. 4.1.7.1. 步骤一:进入仓库页面,选择「议题」进入
        2. 4.1.7.2. 步骤二:没有议题,可以创建一个议题
        3. 4.1.7.3. 步骤三:评论区
        4. 4.1.7.4. 步骤四:等待完成
    2. 4.2. 4.2 方式二:自定义命令-解决 Github ISSUE
      1. 4.2.1. 前提条件:安装 gh 客户端
      2. 4.2.2. Github 创建 issue
      3. 4.2.3. /fix-issue 解决问题
  5. 5. 5. Git WorkTree 多开项目
    1. 5.1. 5.1 下载安装 Conductor
    2. 5.2. 5.2 添加你的代码仓库
    3. 5.3. 5.3 添加工作空间
    4. 5.4. 5.4 指挥你的 AI 团队
    5. 5.5. 5.5 提交 PR
    6. 5.6. 5.6 小技巧
      1. 5.6.1. 设置自定义模型
      2. 5.6.2. 轻松管理 MCP
      3. 5.6.3. Slash Commands 管理
      4. 5.6.4. Sub Agents 管理
      5. 5.6.5. 小细节
  6. 6. 6. StatusLine
    1. 6.1. 6.1 最快速上手(30秒搞定)
    2. 6.2. 6.2 进阶自定义(打造专属界面)
      1. 6.2.1. 步骤一:创建配置文件
      2. 6.2.2. 步骤二:添加状态栏配置
      3. 6.2.3. 步骤三:创建你的专属脚本
    3. 6.3. 6.3 高级技巧
      1. 6.3.1. 显示使用统计
      2. 6.3.2. Git 大师(团队协作神器)
    4. 6.4. 6.4 更多实用配置
      1. 6.4.1. 实时监控资源
      2. 6.4.2. 自定义表情包
      3. 6.4.3. 一些小技巧
    5. 6.5. 6.5 实战案例
      1. 6.5.1. 案例一:显示 token 用量
      2. 6.5.2. 案例二:股票显示

Claude Code:高级功能(二)

系列导航

  1. 安装与配置
  2. 入门使用
  3. 高级功能
  4. 高级功能(二)(本文)
  5. SlashCommands
  6. Hooks
  7. Agents(子代理)
  8. MCP
  9. Plan 模式
  10. Skills 技能
  11. 头脑风暴(Superpowers)

1. 图形化界面 Claudia

当前不稳定,可以尝鲜使用下

参考地址:https://gist.github.com/Kirchlive/184cdd96a56bfd7a6c67997836495f3c

先来说下这个项目有哪些特点。

1.1 特性一览

展示每日花销

有每日花费展示,看来 21 号干的很猛呀,单日就干了快 300 刀的花费,一天就把一个月的钱赚回来了。

可视化编辑全局规则文件

可视化安装 MCP

Checkpoint 回滚备份

最重要的是还能创建备份,我俗称时光机,就像打游戏一样,可以创建备份。

有时候如果效果不好,那就可以从存档恢复

智能体

也可以创造智能体,对,你没听错,Claude Code 也可以创建智能体

1.2 安装步骤

那接下来就是看如何使用,由于项目前期还在开发中,目前官方还不提供安装包,就需要自己编译。

如果需要自己编译的朋友可以按照下面的流程开始,

如果你不想编译,后台加我给你安装包,直接使用。

Windows

  • 安装 rust 环境

下载地址:https://www.rust-lang.org/zh-CN/tools/install

  • 安装 bun

安装地址:https://bun.sh/docs/installation

1
npm install -g bun
  • 其他

下载地址:https://visualstudio.microsoft.com/visual-cpp-build-tools/

下载地址:https://developer.microsoft.com/en-us/microsoft-edge/webview2/

下载完后,按照步骤一步一步完成既可以。

  • 编译

下载代码

1
2
git clone https://github.com/getAsterisk/claudia.git
cd claudia

编译

1
2
bun install
bun run tauri build

安装包所在位置

1
2
# Windows
./src-tauri/target/release/claudia.exe

Mac

基本环境

1
2
3
4
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
curl -fsSL https://bun.sh/install | bash

brew install pkg-config

编译安装

1
2
git clone https://github.com/getAsterisk/claudia.git
cd claudia

编译命令

1
2
bun install
bun run tauri build

安装完成后,直接会弹出安装的框,直接安装就可以了。

如果你不想编译,联系:zhihui10110,可以发送给你哦

1.3 界面介绍

打开界面,印入眼帘的就是如下图所示的。

整体大概功能就是主界面的智能体和项目

  • 项目:主要就是你的工作区域
  • 智能体:主要就是智能体相关功能
  • 使用展示:会展示相关的使用信息,按照项目、时间粒度
  • 规则文件:就是 CLAUDE.md 文件,可以直接界面配置修改。
  • MCP 配置:主要就是 MCP 的配置,图形化界面配置
  • Claudia 的设置:这个产品的配置信息

1.4 项目使用

点击项目进来,就可以看见以前的项目,这个是读取了

点击中间的「New Claude Code session」的就可以创建项目了。

下一步就是输入提示词了,但是输入提示词之前,可以选择模型

还可以选择思考的深度,每个意思大概就是在面,思考的深度逐渐加深。

我记得之前在命令行默认如果没有提示词的话,是不思考的。

Auto

Think:思考下

Think Hard:努力思考下

Think Harder:深度思考

Ultrathink:洪荒之力思考

其实到上面的使用还是很简单的吧,如果大家用过 Cursor 等产品的话,这些是差不多的。

有个小细节,每次对话完,都会给你显示花费了多少钱、耗费多长时间、总共的 token 多少。

这类有几个亮点我们可以来看看

亮点一:拖拽图片到对话框

直接把图片拖拽到对话框就可以了。

然后输入提示词就可以了

比如,你有错误信息,或者是你想调试的,都可以截图拖拽到这个框里,让 AI 帮你搞定。

亮点二:预览窗口

右侧就有预览窗口,输入地址就可以访问了。

最主要是看右上角的 Send to Claude,可以很轻松的直接截图发到对话框。

这样就不需要切换浏览期,截图然后保存到本地,然后复制路径,粘贴到终端。这样的路径太长。

而现在一个按钮操作就完成了。

可能还有 bug,我这个截图弄的是官方的。看来目前还不是太稳定。

1.5 智能体使用

主页面就是 agent 的列表。

没有的话,可以创建一个,步骤就如下图。

这里大家看到有个 Sandbox,也就是沙箱,执行的时候是在单独的一个环境里执行的。不会影响到宿主机的环境。

回到智能体页面,就可以运行这个智能体。

然后就到下一步:进行一些设置后。就可以点击运行按钮。

初始化后,就开始运行了。

1.6 规则使用

直接打开 CLAUDE.md 文件,直接就是图形化界面编辑框。输入你的规则文字就可以。

1.7 数据统计

数据统计的这个面板还是蛮好看的

看到没,已经使用 800 多刀的 token 的价值,使劲跑起来,必须物超所值

可以按照不同的维度看

2. 初相识(新手引导)

启动,选择主题模式

登录

登录

授权

复制code

粘贴到终端上

提示你登录成功

继续

继续

进入到界面

2.1 第一个应用

text
1
创建一个极其漂亮的todolist应用,极致炫酷,创建完后帮我启动

命令行输入提示词

下面就会有提示你需要操作。如果你还不知道怎么选择,就默认第一个

第一个:每次操作都会有提示

第二个:默认mkdir npm init 操作就不会确认

第三个:直接取消本地任务

创建任务过程中,还有很多需要你操作的

3. 小技巧合集

3.1 换行

Claude Code 里面使用 ctrl+j (mac+windows 都可以)可以换行,终于不用反斜杠 \ 换行了

3.2 粘贴图片

ctrl+v,mac 适用

windows:

用软件:https://github.com/jeejeeguan/windows-to-wsl2-screenshots/tree/master

用 vscode(cursor) 插件

3.3 # 符号添加 CLAUDE.md 文件内容

/memory 可以编辑 CLAUDE.md 文件,项目和全局的都可以

4. Github 相关操作

4.1 方式一:Github 网页艾特直接解决 PR 问题

第一步:执行 /install-github-app 命令

第二步:选择安装的目录

默认就是当前这个项目目录

第三步:配置授权

会弹出网页

点击安装就可以了。

继续安装

第四步:安装 Github 工作流

下一步就是看到有两个工作流

上下按键,然后空格可以选择

我这里就都选择了。

第五步:创建 Token

有两种方式,我选择了第一种

就会弹出网页如下:

授权完成后,就看到终端界面开始安装了

安装完成后如下:

按回车继续就退出安装流程,并提示已经安装成功。

并且网页会弹出一个 github 的 PR 请求。

这个 PR 请求就是创建 Claude Code 的工作流的。

点击下方的「Create pull request」就可以了。

可以看看其实就是在项目目录下添加了 .github/workflows 的文件夹

并且添加了两个 yml 的配置文件

最后别忘记了合并这个 PR 到主分支上去,不然后面的 @claude 功能会没有感知到,也会没有任何反应。

第六步:使用 Github Actions 工作流

结合看 Github Actions 的工作流,这个才是今天的重头戏。

可以看到在 Github 上有个 issue 的记录

那么我们如何完成他了?

很简单:直接 issue 的对话框挨 @claude 完成功能就可以

等一会儿就可以看到下面就显示任务列表了。

这个时候 claude code 其实已经就在给我们干活了。

到这里基本就完事了。

下面就可以创建 PR 操作。

因为我们之前还配置了 Code Review 的工作流

当提交 PR 后,这个工艺流就开始工作了。

最重要的就是我突然想到,如果只是评论区回复,那么我也可以在手机上使用

第七步:手机 Github 工作流上使用

注意国区的苹果现在不能下载 Github App 了,建议使用港区或者美区的下载。

步骤一:进入仓库页面,选择「议题」进入

步骤二:没有议题,可以创建一个议题

如果有议题,可以直接进入下一步

步骤三:评论区

直接评论里面 @claude 回复提示词实现这个功能

步骤四:等待完成

在发完提示词后,我就开始来写文章。

如果你是在路上,或者其他地方,完全可以实现移动办公

这个比我之前发的 VibeTunne 手机使用 cc 还更方便

有了 Github 工作流的加持,随时随地卷起来。

那么怎么配置这个流程了,下面来手摸手的教你

跟着我一起做就行了。

4.2 方式二:自定义命令-解决 Github ISSUE

前提条件:安装 gh 客户端

地址:https://github.com/cli/cli/tree/v2.76.2

1
2
## mac安装
brew install gh

Github 创建 issue

/fix-issue 解决问题

直接使用 /fix-issue 的自定义命令就可以,后面接上 issue 的序号就可以。

1
/fix-issue 1

5. Git WorkTree 多开项目

官方推荐

要求:人对项目的掌控力度,对并发要执行工作的需求粒度

以前的工作方式:你 + 1个Claude Code = 单线程工作

  • 效率有限,任务排队
  • 频繁的上下文切换
  • 复杂项目需要分多次处理

现在有了Conductor:你 + 5个Claude Code = 并行作战!

  • 多个任务同时进行
  • 每个代理专注自己的事情
  • 效率提升不是1+1=2,而是1×5的倍增!

那么接下来,我来手把手教你怎么用这个神器!

5.1 下载安装 Conductor

首先访问官网:https://conductor.build

当然现在优先支持的是mac平台。windows 平台应该也是在开发了。

如果你是 Intel 的 mac,请点击下面的那个链接下载

5.2 添加你的代码仓库

打开软件,映入的就是首页。

现在最新版本的是可以支持本地项目了,我上次还只能是支持 Github 上远端仓库的项目。

可以看到我打开了我的一个项目。

并且开了四个工作空间。

重点来了:Conductor会自动使用Git Worktrees技术,为每个Claude Code代理创建独立的工作空间!

你不需要:

  • ❌ 手动配置Git工作树
  • ❌ 重新安装依赖包
  • ❌ 担心不同代理之间的冲突

Conductor全自动帮你搞定!

细心的朋友们不知道看见没,每个工作空间的名称是 conductor 自动置顶的,而且是城市名称。

Dallas、Beijing、Conakry、Kiev

5.3 添加工作空间

这里的工作空间其实就是对于先添加的一个新的 git worktrees。

这里要说的也是,这个git worktrees 是官方的最佳实践里面推荐的针对一个项目并行任务的流程。

点击「New workspace」或者使用快捷键「Command + N」创建一个新的工作空间

会自动创建 git worktrees 目录,然后你入到一个新的工作空间。

不得不说这个产品的考究做的还是不错。

主要就是分为上面截图的区域。

还很亲切的也做了终端区域,如果你需要一些终端操作,可以很方便的。

5.4 指挥你的 AI 团队

这个时候,你就像一个项目经理一样,可以:

  • 实时监控:看到每个代理在干什么
  • 状态跟踪:哪个代理完成了,哪个遇到问题
  • 代码审查:查看所有代理的工作成果
  • 统一管理:所有变更都能看到

小贴士:记住,你现在不是程序员,你是AI团队的指挥官

并且很贴心做了快捷键,Command+1、2、3、4 就可以跨速切换各个小团队

快速切换。

然后迅速指导工作干活。

右侧的 git 区域也是最近添加的

打开以后,很亲切的可以看到代码的对比

左侧就是修改的文件列表。

这样之前喜欢看修改了哪些代码的福音呀。

5.5 提交 PR

这个工作空间的代码改的还可以的话

那么就可以进行 PR 提交

但就是有个小问题,怎么没有识别到我的 gh 客户端了

我在本地的终端执行是没有问题的。

之前加载 node 也是,看来的他的环境变量的加载还需要再优化下。

有跑通的可以评论区吼一声,看下怎么弄好。

5.6 小技巧

设置自定义模型

如果你想使用智谱 GLM4.5、Kimi K2、Qwen Coder

现在不用配置文件,不用设置环境变量。

直接就可以设置自定义的 API 模型使用。

轻松管理 MCP

轻松管理 MCP。

不过现在还只有 Linear,Figma 这几个

后面相信会更多。

Slash Commands 管理

对话框里也是可以直接提示

Sub Agents 管理

还有很贴切的 Sub Agents 管理

这个版本添加了编辑、新增的功能

之前我用的时候,还只能查看。

也是通过 @ 符号就可以直接弹出来

小细节

有通知

还有自动 compact 选项的比例

6. StatusLine

6.1 最快速上手(30秒搞定)

最简单的方法,直接在 Claude Code 里输入:

1
/statusline 显示模型名称、当前目录和git分支

对,就这么简单!Claude 会自动帮你配置好。

可以看到是调用了内置的 statusline-setup 的 subagent 来帮你处理的。

可以看到官方也在使用 subagent 的案例来写更多的功能。详细可以见我之前的文章:

退出 claude code 后,重新进入,就可以看到如下显示

6.2 进阶自定义(打造专属界面)

如果你想要更炫酷的效果,那就得手动配置了。

步骤一:创建配置文件

打开终端,编辑配置文件:

1
vim ~/.claude/settings.json

步骤二:添加状态栏配置

1
2
3
4
5
6
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh"
}
}

步骤三:创建你的专属脚本

创建 ~/.claude/statusline.sh 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
input=$(cat)

# 获取各种信息
model=$(echo "$input" | jq -r '.model.display_name')
dir=$(echo "$input" | jq -r '.workspace.current_dir' | xargs basename)

# Git分支信息
git_branch=""
if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
branch=$(git branch --show-current)
git_branch=" | 🌿 $branch"
fi

# 组装输出
echo "🤖 $model | 📁 $dir$git_branch | ⏰ $(date +%H:%M)"

别忘了给脚本加执行权限:

1
chmod +x ~/.claude/statusline.sh

看到没?现在你的状态栏已经焕然一新了!

6.3 高级技巧

显示使用统计

如果你想看自己花了多少钱(哈哈哈),可以集成 ccusage 工具:

1
2
3
4
5
6
{
"statusLine": {
"type": "command",
"command": "npx -y ccusage statusline"
}
}

Git 大师(团队协作神器)

适合人群:频繁使用 Git 的团队开发者

创建 ~/.claude/statusline-git.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash
read INPUT

# 解析输入
MODEL=$(echo "$INPUT" | jq -r '.model.display_name')
DIR=$(echo "$INPUT" | jq -r '.workspace.current_dir' | sed "s|$HOME|~|")

# Git 信息(全网首发的完整版)
BRANCH=$(git branch --show-current 2>/dev/null || echo "")
if [ -n "$BRANCH" ]; then
# 获取状态
MODIFIED=$(git status --porcelain 2>/dev/null | grep -c "^ M")
UNTRACKED=$(git status --porcelain 2>/dev/null | grep -c "^??")
STAGED=$(git status --porcelain 2>/dev/null | grep -c "^[AM]")

# 获取远程状态
AHEAD=$(git rev-list --count HEAD @{u} 2>/dev/null | cut -f1)
BEHIND=$(git rev-list --count @{u} HEAD 2>/dev/null | cut -f1)

# 构建 Git 状态字符串
GIT_STATUS="🌿 $BRANCH"
[ "$STAGED" -gt 0 ] && GIT_STATUS="$GIT_STATUS +$STAGED"
[ "$MODIFIED" -gt 0 ] && GIT_STATUS="$GIT_STATUS ~$MODIFIED"
[ "$UNTRACKED" -gt 0 ] && GIT_STATUS="$GIT_STATUS ?$UNTRACKED"
[ "$AHEAD" -gt 0 ] && GIT_STATUS="$GIT_STATUS$AHEAD"
[ "$BEHIND" -gt 0 ] && GIT_STATUS="$GIT_STATUS$BEHIND"
else
GIT_STATUS="📁 no-git"
fi

# 输出带颜色
echo -e "\033[1;36m🤖 $MODEL\033[0m │ \033[1;33m📂 $DIR\033[0m │ \033[1;32m$GIT_STATUS\033[0m"

6.4 更多实用配置

实时监控资源

1
2
3
# 显示内存使用
mem=$(free -h | awk '/^Mem:/ {print $3"/"$2}')
echo "💾 $mem | $model | $dir"

自定义表情包

你甚至可以根据时间显示不同表情:

1
2
3
4
5
6
7
8
9
10
hour=$(date +%H)
if [ $hour -lt 12 ]; then
emoji="☀️"
elif [ $hour -lt 18 ]; then
emoji="🌤️"
else
emoji="🌙"
fi

echo "$emoji $(date +%H:%M) | $model | $dir"

一些小技巧

  1. 性能优化:避免在脚本里执行耗时命令,不然会卡
  2. 测试脚本:可以这样测试你的脚本:
1
echo '{"model":{"display_name":"Test"}}' | ./statusline.sh
  • 即时生效:修改后立即生效,不用重启 Claude Code!

6.5 实战案例

案例一:显示 token 用量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/bin/bash

# 读取输入
input=$(cat)

# 解析基础信息
model=$(echo "$input" | jq -r '.model.display_name')
current_dir=$(echo "$input" | jq -r '.workspace.current_dir')
dir_name=$(basename "$current_dir")
session_id=$(echo "$input" | jq -r '.session.id // empty' | cut -c1-6)
if [ -z "$session_id" ]; then
# 如果没有session_id,使用目录名作为fallback
session_id=$(echo "$current_dir" | sed 's/\//_/g')
fi

# 时间表情
hour=$(date +%H)
if [ $hour -lt 6 ]; then
time_emoji="🌙"
elif [ $hour -lt 12 ]; then
time_emoji="☀️"
elif [ $hour -lt 18 ]; then
time_emoji="🌤️"
elif [ $hour -lt 22 ]; then
time_emoji="🌆"
else
time_emoji="🌙"
fi

# 时间追踪
START_FILE="/tmp/claude_session_${session_id}"
if [ ! -f "$START_FILE" ]; then
date +%s > "$START_FILE"
fi
START_TIME=$(cat "$START_FILE")
CURRENT_TIME=$(date +%s)
ELAPSED=$((CURRENT_TIME - START_TIME))
HOURS=$((ELAPSED / 3600))
MINUTES=$(((ELAPSED % 3600) / 60))
TIME_TRACK=$(printf "%02d:%02d" $HOURS $MINUTES)

# 获取 ccusage 费用信息
# 将输入传递给 ccusage statusline 并解析输出
ccusage_output=""
if command -v ccusage &> /dev/null; then
ccusage_output=$(echo "$input" | ccusage statusline 2>/dev/null || echo "")
elif command -v npx &> /dev/null; then
ccusage_output=$(echo "$input" | npx -y ccusage statusline 2>/dev/null || echo "")
elif command -v bun &> /dev/null; then
ccusage_output=$(echo "$input" | bun x ccusage statusline 2>/dev/null || echo "")
fi

# 从 ccusage 输出中提取费用信息
if [ -n "$ccusage_output" ]; then
# 提取 session 费用(例如:$0.23 session)
session_cost=$(echo "$ccusage_output" | grep -oE '\$[0-9]+\.[0-9]+ session' | head -1)
# 提取今日费用(例如:$1.23 today)
daily_cost=$(echo "$ccusage_output" | grep -oE '\$[0-9]+\.[0-9]+ today' | head -1)
# 提取燃烧率(例如:$0.12/hr)
burn_rate=$(echo "$ccusage_output" | grep -oE '\$[0-9]+\.[0-9]+/hr' | head -1)
fi

# Git 信息
cd "$current_dir" 2>/dev/null
git_branch=$(git branch --show-current 2>/dev/null || echo "")
git_status=""
if [ -n "$git_branch" ]; then
# 检查是否有未提交的更改
if [ -n "$(git status --porcelain 2>/dev/null)" ]; then
git_status="*"
fi
# 截断分支名(最多15个字符)
git_branch=$(echo "$git_branch" | cut -c1-15)
fi

# 模型图标
case "$model" in
*"Opus"*)
model_emoji="🎭"
;;
*"Sonnet"*)
model_emoji="🎼"
;;
*"Haiku"*)
model_emoji="🍃"
;;
*)
model_emoji="🤖"
;;
esac

# 组装输出
output=""

# 时间和表情
output+="$time_emoji $(date +%H:%M)"

# 模型
output+=" | $model_emoji $model"

# 目录
output+=" | 📁 $dir_name"

# Git 分支和状态
if [ -n "$git_branch" ]; then
output+=" | 🌿 $git_branch$git_status"
fi

# 时间追踪
output+=" | ⏱️ $TIME_TRACK"

# 费用信息(如果可用)
if [ -n "$session_cost" ] || [ -n "$daily_cost" ] || [ -n "$burn_rate" ]; then
output+=" | 💰"
[ -n "$session_cost" ] && output+=" $session_cost"
[ -n "$daily_cost" ] && output+=" / $daily_cost"
[ -n "$burn_rate" ] && output+=" | 🔥 $burn_rate"
fi

# 输出最终结果
echo "$output"

效果就是:

再来个文字版的:

☀️ 08:16 | 🎭 Opus 4.1 | 📁 cc-demo | 🌿 master* | ⏱️ 00:03 | 💰 / $14.76 today | 🔥 $6.45/hr

是不是很贴心?一眼就能看到所有信息!

案例二:股票显示

今天的整体,其实很简单,写好脚本就行。

并且也是 Claude Code 帮我写的。

不过需要注册下下面三个网站,获取下 key 就行:

https://fixer.io

https://marketstack.com

https://www.alphavantage.co

然后把代码里的替换下就行

your_api_key 的地方有三处,都需要换掉。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#!/bin/bash

# Function to fetch stock price from Yahoo Finance API alternative
fetch_stock_price() {
local symbol=$1
local temp_file=$(mktemp)

# Try Yahoo Finance first with proper headers and timeout
curl -s --max-time 5 \
-H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36" \
"https://query1.finance.yahoo.com/v8/finance/chart/${symbol}" \
-o "$temp_file" 2>/dev/null

if [ $? -eq 0 ] && [ -s "$temp_file" ]; then
local price=$(cat "$temp_file" | jq -r '.chart.result[0].meta.regularMarketPrice // empty' 2>/dev/null)

if [ -n "$price" ] && [ "$price" != "null" ]; then
printf "%.2f" "$price"
rm -f "$temp_file"
return
fi
fi

# Fallback to Alpha Vantage API
rm -f "$temp_file"
temp_file=$(mktemp)
curl -s --max-time 5 \
"https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=${symbol}&apikey=your_api_key" \
-o "$temp_file" 2>/dev/null

if [ $? -eq 0 ] && [ -s "$temp_file" ]; then
local price=$(cat "$temp_file" | jq -r '."Global Quote"."05. price" // empty' 2>/dev/null)
if [ -n "$price" ] && [ "$price" != "null" ]; then
printf "%.2f" "$price"
rm -f "$temp_file"
return
fi
fi

# Final fallback to a simple financial API
rm -f "$temp_file"
temp_file=$(mktemp)
curl -s --max-time 5 \
"https://api.marketstack.com/v1/eod/latest?access_key=your_api_key&symbols=${symbol}" \
-o "$temp_file" 2>/dev/null

if [ $? -eq 0 ] && [ -s "$temp_file" ]; then
local price=$(cat "$temp_file" | jq -r '.data[0].close // empty' 2>/dev/null)
if [ -n "$price" ] && [ "$price" != "null" ]; then
printf "%.2f" "$price"
rm -f "$temp_file"
return
fi
fi

rm -f "$temp_file"
echo "N/A"
}

# Function to format stock display
format_stock() {
local symbol=$1
local price=$2
local icon=$3

if [ "$price" = "N/A" ]; then
echo "${icon} ${symbol}: N/A"
else
echo "${icon} ${symbol}: \$${price}"
fi
}

# Function to fetch exchange rate
fetch_exchange_rate() {
local from=$1
local to=$2
local temp_file=$(mktemp)

# Try to fetch exchange rate
curl -s --max-time 5 \
"https://api.exchangerate-api.com/v4/latest/${from}" \
-o "$temp_file" 2>/dev/null

if [ $? -eq 0 ] && [ -s "$temp_file" ]; then
local rate=$(cat "$temp_file" | jq -r ".rates.${to} // empty" 2>/dev/null)
if [ -n "$rate" ] && [ "$rate" != "null" ]; then
printf "%.3f" "$rate"
rm -f "$temp_file"
return
fi
fi

# Fallback API
rm -f "$temp_file"
temp_file=$(mktemp)
curl -s --max-time 5 \
"https://api.fixer.io/latest?base=${from}&symbols=${to}&access_key=your_api_key" \
-o "$temp_file" 2>/dev/null

if [ $? -eq 0 ] && [ -s "$temp_file" ]; then
local rate=$(cat "$temp_file" | jq -r ".rates.${to} // empty" 2>/dev/null)
if [ -n "$rate" ] && [ "$rate" != "null" ]; then
printf "%.3f" "$rate"
rm -f "$temp_file"
return
fi
fi

rm -f "$temp_file"
echo "N/A"
}

# Main function to generate statusline
generate_statusline() {
# Build statusline components
local statusline=""

# Add model and project info (customize as needed)
statusline="🤖 Sonnet 4 | 📂 Sharptooth | 🌿 main"

# Fetch AAPL stock price
local aapl_price=$(fetch_stock_price "AAPL")
local aapl_formatted=$(format_stock "AAPL" "$aapl_price" "🍎")
statusline="${statusline} | ${aapl_formatted}"

# Fetch TSLA stock price
local tsla_price=$(fetch_stock_price "TSLA")
local tsla_formatted=$(format_stock "TSLA" "$tsla_price" "🚗")
statusline="${statusline} | ${tsla_formatted}"

# Fetch currency exchange rate
local exchange_rate=$(fetch_exchange_rate "AUD" "CNY")
if [ "$exchange_rate" != "N/A" ]; then
statusline="${statusline} | 💰 AUD/CNY: ${exchange_rate}"
else
statusline="${statusline} | 💰 AUD/CNY: N/A"
fi

echo "$statusline"
}

# Function to update statusline continuously
run_statusline() {
while true; do
clear
generate_statusline
sleep 60 # Update every minute
done
}

# Check if running interactively or as a one-shot
if [ "$1" = "--loop" ]; then
run_statusline
else
generate_statusline
fi

🤖 Sonnet 4 | 📂 Sharptooth | 🌿 main | 🍎 AAPL: $227.18 | 🚗 TSLA: $339.03 | 💰 AUD/CNY: 4.686