33 lines
1.1 KiB
Bash
Executable File
33 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env sh
|
||
# usage-stats.sh — 聚合 jsc-hooks 記錄的技能用量。
|
||
# 用法:
|
||
# usage-stats.sh skills [--cli <name>] # 每個 skill 的使用次數(降冪)
|
||
# usage-stats.sh chains [--cli <name>] # 每條 from -> to 呼叫鏈的次數(降冪)
|
||
# 資料: $JSC_HOME/usage/skills.jsonl、chains.jsonl(預設 $HOME/.jsc)
|
||
set -u
|
||
JSC_HOME="${JSC_HOME:-$HOME/.jsc}"
|
||
cmd="${1:?usage: usage-stats.sh skills|chains [--cli <name>]}"; shift
|
||
cli=""
|
||
while [ $# -gt 0 ]; do
|
||
case "$1" in
|
||
--cli) cli="${2:?--cli needs a value}"; shift 2 ;;
|
||
*) shift ;;
|
||
esac
|
||
done
|
||
|
||
by_cli() { # 依 --cli 過濾;未指定就原樣輸出
|
||
if [ -n "$cli" ]; then grep "\"cli\":\"$cli\""; else cat; fi
|
||
}
|
||
rank() { sort | uniq -c | sort -rn | sed 's/^ *\([0-9][0-9]*\) /\1\t/'; }
|
||
|
||
case "$cmd" in
|
||
skills)
|
||
f="$JSC_HOME/usage/skills.jsonl"; [ -f "$f" ] || exit 0
|
||
by_cli < "$f" | sed -n 's/.*"skill":"\([^"]*\)".*/\1/p' | rank ;;
|
||
chains)
|
||
f="$JSC_HOME/usage/chains.jsonl"; [ -f "$f" ] || exit 0
|
||
by_cli < "$f" | sed -n 's/.*"from":"\([^"]*\)".*"to":"\([^"]*\)".*/\1 -> \2/p' | rank ;;
|
||
*)
|
||
echo "unknown command: $cmd" >&2; exit 2 ;;
|
||
esac
|