Xinqi Bao's Git
dfaa2034309de4cdbb4caaa3003c426b130a8c73
4 # ============================================================
6 # ============================================================
7 MODEL
=$
(echo "$input" | jq
-r '.model.display_name')
8 PCT
=$
(echo "$input" | jq
-r '.context_window.used_percentage // 0' | cut
-d.
-f1)
9 COST
=$
(echo "$input" | jq
-r '.cost.total_cost_usd // 0' |
xargs printf '%.2f')
10 ADDED
=$
(echo "$input" | jq
-r '.cost.total_lines_added // 0')
11 REMOVED
=$
(echo "$input" | jq
-r '.cost.total_lines_removed // 0')
12 API_MS
=$
(echo "$input" | jq
-r '.cost.total_api_duration_ms // 0')
13 API_TOTAL_S
=$
((API_MS
/ 1000))
14 CWD
=$
(echo "$input" | jq
-r '.cwd')
15 BRANCH
=$
(git
-C "$CWD" --no-optional-locks branch
--show-current 2>/dev
/null
)
17 # ============================================================
19 # ============================================================
21 C_MODEL
='\033[1;37m' # 粗体白 - 模型名
22 C_CWD
='\033[1;34m' # 粗体蓝 - 工作目录
23 C_BRANCH
='\033[36m' # 青色 - git 分支
24 C_COST
='\033[33m' # 黄色 - 花费
25 C_DUR
='\033[35m' # 紫色 - 时长
26 C_ADD
='\033[32m' # 绿色 - 新增行
27 C_DEL
='\033[31m' # 红色 - 删除行
28 C_DIM
='\033[90m' # 灰色 - 进度条空白段
30 # 上下文颜色: < 70% 绿 | 70-89% 黄 | >= 90% 红
31 if [ "$PCT" -ge 90 ]; then C_CTX
='\033[31m'
32 elif [ "$PCT" -ge 70 ]; then C_CTX
='\033[33m'
33 else C_CTX
='\033[32m'; fi
35 # ============================================================
37 # ============================================================
39 FILLED
=$
((PCT
* BAR_WIDTH
/ 100))
40 EMPTY
=$
((BAR_WIDTH
- FILLED
))
41 BAR
="${C_CTX}$(printf "%${FILLED}s" | tr ' ' '▓')${C_DIM}$(printf "%${EMPTY}s" | tr ' ' '░')${R}"
43 # ============================================================
44 # 分段构建 - 注释掉 seg_xxx 行即可关闭对应段
45 # ============================================================
48 add
() { [ -n "$OUT" ] && OUT
="${OUT}${SEP}"; OUT="${OUT}$1"; }
51 seg_model="${C_MODEL}${MODEL}"
54 # [2] 工作目录 (~ 缩写, 最后两级)
55 SHORT_CWD=$(echo "$CWD" | sed "s|^
$HOME|~|
" | awk -F/ '{if(NF<=2)print $0; else printf "%s
/%s
",$((NF-1)),$NF}')
56 seg_cwd="${C_CWD}${SHORT_CWD}${R}"
60 if [ -n "$BRANCH" ]; then
61 seg_git="${C_BRANCH}⎇ ${BRANCH}${R}"
66 seg_ctx="${BAR} ${C_CTX}${PCT}%%${R}"
70 seg_cost="${C_COST}\$${COST}${R}"
74 seg_lines="${C_ADD}+${ADDED}${R} ${C_DEL}-${REMOVED}${R}"
77 # [7] API 耗时 (自动进位: s -> m s -> h m s)
78 if [ "$API_TOTAL_S" -ge 3600 ]; then
79 seg_dur=$(printf "${C_DUR}%dh
%dm
%ds
${R}" $((API_TOTAL_S/3600)) $((API_TOTAL_S%3600/60)) $((API_TOTAL_S%60)))
80 elif [ "$API_TOTAL_S" -ge 60 ]; then
81 seg_dur=$(printf "${C_DUR}%dm
%ds
${R}" $((API_TOTAL_S/60)) $((API_TOTAL_S%60)))
83 seg_dur=$(printf "${C_DUR}%d.
%ds
${R}" "$API_TOTAL_S" $(( (API_MS%1000)/100 )))
87 # ============================================================
89 # ============================================================