#!/usr/bin/env sh # usage-stats.sh — 聚合 jsc-hooks 記錄的技能用量。 # 用法: # usage-stats.sh skills [--cli ] # 每個 skill 的使用次數(降冪) # usage-stats.sh chains [--cli ] # 每條 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 ]}"; 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