開發 Session Review 開發紀錄
2026年3月27日
[Image]
好,我已經充分了解 session 資料的結構了。讓我整理一下可行性分析:
可以拿到的資料
| 資料 | 可行性 | 來源 |
|---|---|---|
| Session 名稱 | 可以 | ***/*.json 中的 name 欄位 |
| 對話內容(使用者/助手) | 可以 | .jsonl 檔中 type: "user" 和 type: "assistant" 的 message.content |
| (c) 使用了多少工具 | 可以 | assistant 訊息中 content.type == "tool_use" 可統計工具名稱與次數 |
| (b) 持續了多長時間 | 可以 | system.subtype == "turn_duration" 有 durationMs,加上首尾 timestamp 可算總時長 |
| (a) Token 使用量 | 拿不到 | JSONL 中沒有存 token 數、cost 等欄位(全部是 null) |
| (d) 改善建議 | 可以 | 我可以根據對話內容分析後產出建議 |
我的計畫
Token 使用量在本地 session 檔中沒有記錄,但我可以用訊息文字長度來估算(或直接標示「無法取得」)。其他資訊都可以精確取得。
我可以做一個 Astro 頁面或獨立 HTML 工具,讀取指定 session 的 JSONL,渲染成 iMessage 風格的對話介面,右側面板顯示統計資訊和改善建議。
你希望我:
- 做成 Astro 頁面放在你的 codotx 網站裡(例如
/session-review) - 做成獨立的 HTML 工具(單一檔案,本地開啟即可使用)
- 做成 CLI 腳本 產出靜態 HTML
哪種方式你比較想要?另外,Token 部分你要我用文字長度估算,還是直接略過?
放在我的 codotx,路徑是 /memory/session-name,token 幫我估算,然後我希望可以把這個結果 embed 在文章裡面,我希望可以這樣使用:輸入斜線 session-review session-name,就能自動整理出來,這個介面的風格請幫我比照現有的網站,然後資訊欄位幫我加入初始的使用者需求
全部完成。以下是建置成果的總結:
成果
建立的檔案
| 檔案 | 用途 |
|---|---|
scripts/parse-session.mjs |
解析 Claude Code session JSONL,產出 JSON |
src/pages/memory/[id].astro |
iMessage 風格對話回顧頁面 |
src/data/sessions/ |
Session JSON 資料目錄 |
***/SKILL.md |
/session-review skill 定義 |
使用方式
/session-review 電子書閱讀
輸入 session 名稱後,skill 會:
- 執行
node scripts/parse-session.mjs "<name>"解析對話 - 分析內容產出改善建議,寫入 JSON
npm run build產出頁面
頁面路徑:/memory/<session-slug>/
頁面功能
- 左側對話面板:iMessage 風格,使用者在右(深色泡泡)、Claude 在左(淺色泡泡),markdown 正確渲染
- 右側資訊面板(sticky 可滾動):
- 初始需求
- Session 統計(Token 估算、工作時長、對話回合、工具呼叫)
- 工具使用分佈(長條圖)
- 改善建議
新增依賴
marked— markdown 解析(用於腳本端將 assistant 回覆轉 HTML)
給我頁面連結
很棒,請把對話中一些敏感資訊(像是路徑)隱藏起來。
另外,如果檔案太長或是對話框裡的內容太多,請調整為:
1. 預設僅顯示 4 到 5 行
2. 多加一個「點擊展開」的連結,不要一次全部顯示
兩項修改都完成了:
- 敏感資訊隱藏 —
~→~、localhost:4321→localhost、[Image]→[Image]、UUID session ID →*** - 長內容折疊 — 超過約 4-5 行的訊息泡泡和初始需求區塊預設折疊,底部有漸層遮罩 + 「展開全文」連結,展開後變為「收合」
[Image]
[Image]
完成。泡泡樣式已改為:
- 使用者:黃底(
--c-accent)黑字,右下角小尾巴 - Claude:灰底(
#e9e9eb)黑字,左下角小尾巴 - 圓角 18px,padding 加大,更貼近 iMessage 風格
[Image]
完成。標題改為「電子書閱讀 開發紀錄」,淺色背景,頭像、標題、日期都垂直水平置中對齊。
路徑名稱,幫我用英文命名
完成。路徑已改為英文:/memory/ebook-reader/
使用方式:
不指定 --slug 時會自動從 session name 產生(只保留英文字母和數字)。
不要用黑色,太重了
改成跟 Claude 回覆泡泡同色的淺灰底(#e9e9eb),黑字,跟白色對話區域有區隔但不會太重。
[Image]
完成。右側面板的卡片樣式已移除(無背景、無圓角、無陰影),改為用底線分隔各區塊。
[Image]
完成。改動:
- 右側面板加上 padding —
.info-card之間有gap和padding-bottom間距 - 手機版收合功能(< 1000px):
- 預設隱藏面板內容,只顯示「Session 統計」toggle 按鈕
- 點擊按鈕展開面板,以浮層覆蓋在對話串上
- 點擊外部區域自動收合
- 桌面版(>= 1000px):toggle 按鈕隱藏,面板照常顯示
[Image]
完成。手機版的「Session 統計」按鈕改為 position: fixed,固定在畫面右下角(膠囊圓角 + 陰影),點擊後面板從底部右側浮出覆蓋在對話上方。
[Image]
完成。桌面版右側面板加上 padding: var(--sp-md) 內距,文字不會再貼到螢幕邊緣。
[Image]
完成。已移除所有區塊的 border-bottom 水平線(包括 .info-card 之間和 .info-card-title 下方的)。
[Image]
完成。每個區塊標題(初始需求、Session 統計、工具使用分佈、改善建議)加上淺灰背景 + 圓角,視覺上更容易區分各區塊。
[Image]
完成。手機版展開面板加上 background: #ffffff(確保不透明白底)、border 邊框、z-index: 9999,不會再跟對話內容重疊。
[Image]
完成:
- 標題和 Session 按鈕底色加深為
#e0e0e0 - 手機版資訊視窗
max-height從70vh提高到85vh
[Image #18] 聊天串底色使用白色
完成:
- 標題底色用負 margin 延伸到面板滿版寬
- 聊天串底色改為純白
#ffffff
[Image]
完成:
- 改善建議區塊與標題的上方間距加大(
margin-top: var(--sp-md)) - 建議卡片左上、左下圓角改為 0(
border-radius: 0 var(--radius-md) var(--radius-md) 0),左邊保持黃色直線邊框
[Image]
完成。標題與下方內容之間的間距加大為 var(--sp-lg)(24px)。
[Image]
完成。桌面版面板的 padding 改為 0 var(--sp-md),移除了上方多餘的間距,「初始需求」標題會直接貼齊面板頂部。