Claude Code JSONL 的使用小結(jié)
基于 src/types/logs.ts、src/utils/sessionStorage.ts、src/hooks/useLogMessages.ts 源碼分析。 實際 transcript 樣本:~/.claude/projects/-Users-zhanghongkui-Documents-cc-haha-main/964aa807-*.jsonl
1. JSONL 文件是什么
每次與 Claude Code agent 對話,都會在以下路徑產(chǎn)生一個 JSONL 文件:
~/.claude/projects/<project-dir-hash>/<sessionId>.jsonl
- 文件名 = sessionId(UUID,如 964aa807-99e0-46c8-a293-a9aed7702390)
- 格式 = 每行一個 JSON 對象(JSON Lines)
- 寫入時機 = 每次 REPL 渲染新消息后,通過 React useEffect 異步寫入
2. 寫入流程:在 TUI 交互的哪一步發(fā)生
用戶輸入 prompt 并回車 │ ▼ handlePromptSubmit() src/utils/handlePromptSubmit.ts:120 │ ▼ executeUserInput() src/utils/handlePromptSubmit.ts:396 │ ▼ processUserInput() src/utils/processUserInput/processUserInput.ts:85 ├─ 斜杠命令 → processSlashCommand() ├─ Bash 模式 → processBashCommand() └─ 普通文本 → processTextPrompt() → createUserMessage() │ ▼ onQuery() REPL.tsx 中定義 │ ▼ query() 生成器循環(huán) src/query.ts:219 ├─ API 調(diào)用(通過 copilot-api 代理) ├─ 流式接收 text / thinking / tool_use ├─ 執(zhí)行工具 → 發(fā)回結(jié)果 └─ Turn 完成 │ ▼ setMessages(updatedMessages) React state 更新 │ ▼ React 重新渲染 REPL │ ▼ useLogMessages() useEffect 觸發(fā) src/hooks/useLogMessages.ts:19 ← ★ 關(guān)鍵觸發(fā)點 │ ▼ recordTranscript(newMessages) src/utils/sessionStorage.ts:1408 ├─ 1. 去重:跳過已在 messageSet 中的 UUID ├─ 2. 清洗:cleanMessagesForLogging() 剝離僅 UI 的數(shù)據(jù) │ ▼ Project.insertMessageChain() src/utils/sessionStorage.ts:993 ├─ 3. 首次 user/assistant 消息 → materializeSessionFile() │ 創(chuàng)建 JSONL 文件,刷新緩沖的前導(dǎo)條目 ├─ 4. 每條消息:加蓋元數(shù)據(jù)戳(sessionId, cwd, version, gitBranch) │ ▼ Project.appendEntry() src/utils/sessionStorage.ts:1128 ├─ 5. 去重:UUID 已存在則跳過 ├─ 6. 遠(yuǎn)程持久化:persistToRemote()(如果啟用) │ ▼ Project.enqueueWrite() src/utils/sessionStorage.ts:606 ├─ 7. 推入內(nèi)存寫隊列(最多緩沖 50 條或 1 秒后刷新) │ ▼ drainWriteQueue() → appendToFile() src/utils/sessionStorage.ts:645 │ ▼ appendEntryToFile() src/utils/sessionStorage.ts:2572 └─ 8. fs.appendFileSync(path, jsonLine + '\n') ← 實際磁盤寫入
緩沖策略
enqueueWrite() ← 立即返回 Promise(不阻塞 UI) │ ▼ scheduleDrain() ← 調(diào)度微任務(wù)(合并多次快速寫入為一次刷新) │ ▼ drainWriteQueue() ← 條目批量打包成塊(MAX_CHUNK_BYTES) │ 每個塊 = 一次 fs.appendFileSync 調(diào)用 ▼ appendToFile() ← 實際的同步磁盤 I/O(在微任務(wù)上運行,不阻塞渲染幀)
配置參數(shù):
- 內(nèi)存緩沖上限:50 條
- 刷新間隔:1 秒
- 條目先合并成大塊再寫入,減少 fs.appendFileSync 調(diào)用次數(shù)
3. JSONL 存在的五個目的
目的 1:會話恢復(fù) (--resume/--continue)
這是最主要的原因。 JSONL 是恢復(fù)會話的唯一數(shù)據(jù)源。
- loadFullLog() 讀取 JSONL 文件
- buildConversationChain() 沿 parentUuid 鏈表重建完整對話樹
- REPL 原樣恢復(fù)——所有消息、工具調(diào)用、結(jié)果都被還原
沒有這個文件,每次 Ctrl+C 或關(guān)閉終端都會丟失整個對話。
目的 2:Transcript 展示與搜索
- /context — 從 transcript 可視化 token 使用量
- /export — 導(dǎo)出對話到文件
- Transcript 搜索(Ctrl+R)— 索引和高亮匹配
- 統(tǒng)計追蹤 — token 計數(shù)、turn 計數(shù)
目的 3:會話元數(shù)據(jù)與選擇器
JSONL 存儲不屬于對話消息的元數(shù)據(jù)條目:
- mode — normal / plan 模式
- permission-mode — default / accept-edits / plan / bypass
- ai-title — 自動生成的會話標(biāo)題
- custom-title — 用戶通過 /rename 設(shè)置的名稱
- tag — 會話標(biāo)簽
- last-prompt — 在 --resume 選擇器中展示
- pr-link — 關(guān)聯(lián)的 GitHub PR
目的 4:子 Agent 側(cè)鏈持久化
當(dāng) AgentTool 生成子 agent 時,子 agent 的對話寫入獨立的側(cè)鏈 JSONL:
<sessionId>/agents/<agentId>.jsonl
isSidechain 標(biāo)志區(qū)分主線程和 agent 側(cè)鏈消息:
// src/utils/sessionStorage.ts:1224-1228 const isAgentSidechain = entry.isSidechain && entry.agentId !== undefined const targetFile = isAgentSidechain ? getAgentTranscriptPath(asAgentId(entry.agentId!)) : sessionFile
目的 5:遠(yuǎn)程持久化與多設(shè)備同步
當(dāng)啟用 ENABLE_SESSION_PERSISTENCE 時,每條條目也通過 persistToRemote() 發(fā)送到后端,實現(xiàn)跨機器會話連續(xù)性。
4. 所有 22 種 JSONL Entry 類型詳解
完整的 Entry 聯(lián)合類型(src/types/logs.ts:297):
export type Entry = | TranscriptMessage // 4 種子類型:user, assistant, attachment, system | SummaryMessage // type: 'summary' | CustomTitleMessage // type: 'custom-title' | AiTitleMessage // type: 'ai-title' | LastPromptMessage // type: 'last-prompt' | TaskSummaryMessage // type: 'task-summary' | TagMessage // type: 'tag' | AgentNameMessage // type: 'agent-name' | AgentColorMessage // type: 'agent-color' | AgentSettingMessage // type: 'agent-setting' | PRLinkMessage // type: 'pr-link' | FileHistorySnapshotMessage // type: 'file-history-snapshot' | AttributionSnapshotMessage // type: 'attribution-snapshot' | QueueOperationMessage // type: 'queue-operation' | SpeculationAcceptMessage // type: 'speculation-accept' | ModeEntry // type: 'mode' | WorktreeStateEntry // type: 'worktree-state' | ContentReplacementEntry // type: 'content-replacement' | ContextCollapseCommitEntry // type: 'marble-origami-commit' | ContextCollapseSnapshotEntry // type: 'marble-origami-snapshot'
外加一種在實際 transcript 中觀察到但不在上述 union 中的類型:
- permission-mode — 權(quán)限模式變更通知
5. 分類詳解
第一類:對話消息(4 種子類型)
這些是 TranscriptMessage 的子類型——它們攜帶 parentUuid 形成鏈表,buildConversationChain() 依靠此鏈表在 --resume 時重建對話。
user
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 用戶在 TUI 中輸入 prompt 并回車 |
| 代碼路徑 | handlePromptSubmit() → processUserInput() → createUserMessage() → recordTranscript() |
| 包含字段 | message.content(文本/圖片塊)、permissionMode、parentUuid、origin.kind(human/bridge/queued_command)、promptSource |
{
"type": "user",
"parentUuid": "...",
"uuid": "750ccbae-...",
"message": {
"role": "user",
"content": "explain the architecture..."
},
"permissionMode": "default",
"origin": { "kind": "human" },
"promptSource": "typed",
"userType": "external",
"entrypoint": "cli",
"cwd": "/Users/zhanghongkui/Documents/cc-haha-main",
"sessionId": "964aa807-...",
"version": "2.1.183",
"gitBranch": "HEAD"
}本質(zhì):你的每一次提問。
assistant
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | LLM 返回的每一次響應(yīng)(包括中間 tool_use 步驟和最終文本回復(fù)) |
| 代碼路徑 | query() 循環(huán) → API streaming → setMessages() → useLogMessages() → recordTranscript() |
| 包含字段 | message.content(text、tool_use 塊)、message.usage(token 消耗)、message.stop_reason、message.model |
{
"type": "assistant",
"parentUuid": "750ccbae-...",
"uuid": "b917be23-...",
"message": {
"role": "assistant",
"content": [
{ "type": "text", "text": "Let me explore the codebase..." },
{ "type": "tool_use", "id": "toolu_...", "name": "codegraph_explore", "input": {...} }
],
"usage": { "input_tokens": 50000, "output_tokens": 1200 },
"stop_reason": "tool_use",
"model": "deepseek-v4-pro"
}
}本質(zhì):AI 的每一次回復(fù)。一個 turn 可能產(chǎn)生多條 assistant 條目(每輪 API 調(diào)用一條)。
system
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 系統(tǒng)注入的上下文信息,用于告知模型狀態(tài)變化而非響應(yīng)用戶 |
| 代碼路徑 | createSystemMessage() → recordTranscript() |
| 包含字段 | message.content 包含 <system-reminder> 標(biāo)簽 |
{
"type": "system",
"parentUuid": "...",
"message": {
"role": "user",
"content": "<system-reminder>Content was truncated to fit context limit...</system-reminder>"
}
}本質(zhì):系統(tǒng)注入的提醒信息——內(nèi)容截斷通知、權(quán)限變更、工具搜索結(jié)果持久化提示等。
attachment
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | Agent/Tool/MCP 列表有變化時,增量或全量通告給模型 |
| 代碼路徑 | getDeferredToolsDeltaAttachment() / getAgentListingDeltaAttachment() / getMcpInstructionsDeltaAttachment() → createAttachmentMessage() |
| 包含字段 | attachment.type(agent_listing_delta / tool_listing_delta / mcp_instructions_delta)、attachment.addedTypes、attachment.addedLines、attachment.removedTypes、attachment.isInitial |
{
"type": "attachment",
"parentUuid": "750ccbae-...",
"attachment": {
"type": "agent_listing_delta",
"addedTypes": ["claude", "Explore", "Plan", "general-purpose", ...],
"addedLines": ["- claude: Catch-all for any task...", ...],
"isInitial": true,
"showConcurrencyNote": true
}
}本質(zhì):向模型通告可用工具、Agent 類型、MCP 指令的增量變更。
第二類:會話元數(shù)據(jù)(6 種類型)
這些條目沒有 parentUuid——不參與對話鏈表。由 reAppendSessionMetadata() 反復(fù)追加到 JSONL 末尾,保證它們在文件尾部 16KB 窗口內(nèi),以便 --resume 快速讀取。
ai-title
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | Claude Code 自動基于首條用戶消息生成會話標(biāo)題 |
| 代碼路徑 | AI 標(biāo)題生成 → saveAiGeneratedTitle() → appendEntryToFile() |
| 優(yōu)先級 | 低于 custom-title(用戶重命名會覆蓋 AI 標(biāo)題) |
{
"type": "ai-title",
"sessionId": "964aa807-...",
"aiTitle": "Understanding Claude Code Architecture"
}custom-title
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 用戶執(zhí)行 /rename "新標(biāo)題" |
| 代碼路徑 | /rename 命令 → saveCustomTitle() → appendEntryToFile() |
{
"type": "custom-title",
"sessionId": "964aa807-...",
"customTitle": "My Architecture Study"
}last-prompt
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 每次用戶提交新 prompt 后寫入,覆蓋前一個值 |
| 代碼路徑 | insertMessageChain() → this.currentSessionLastPrompt = ... → reAppendSessionMetadata() → 寫入 |
| 展示位置 | claude --resume 選擇器中展示(截斷到 200 字符) |
{
"type": "last-prompt",
"sessionId": "964aa807-...",
"lastPrompt": "explain the architecture of this project"
}tag
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 用戶執(zhí)行 /tag <標(biāo)簽名> |
| 代碼路徑 | /tag 命令 → saveTag() → appendEntryToFile() |
agent-name/agent-color/agent-setting
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 為 Agent 設(shè)置自定義名稱/顏色/配置 |
| 代碼路徑 | /rename(agent 模式)或 Agent 設(shè)置變更 |
第三類:工具與權(quán)限狀態(tài)(5 種類型)
mode
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 會話模式變更:normal ↔ coordinator |
| 代碼路徑 | 模式切換 → reAppendSessionMetadata() |
{
"type": "mode",
"sessionId": "964aa807-...",
"mode": "normal"
}permission-mode
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 權(quán)限模式變更,每次寫入一條新記錄 |
| 模式值 | default(每次需確認(rèn))、acceptEdits(自動接受編輯)、bypassPermissions(跳過所有權(quán)限)、plan(計劃模式) |
{
"type": "permission-mode",
"sessionId": "964aa807-...",
"permissionMode": "default"
}注意:此類型隨 user/assistant 消息序列化,因此一次對話中會出現(xiàn)多次。
file-history-snapshot
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 每個 turn 結(jié)束時,對當(dāng)前文件狀態(tài)做快照 |
| 代碼路徑 | executeUserInput() → fileHistoryMakeSnapshot() → insertFileHistorySnapshot() |
| 用途 | --resume 時恢復(fù)文件編輯歷史;/context 展示文件變更 |
{
"type": "file-history-snapshot",
"messageId": "750ccbae-...",
"snapshot": {
"messageId": "...",
"trackedFileBackups": {},
"timestamp": "2026-06-19T04:21:13.170Z"
},
"isSnapshotUpdate": false
}content-replacement
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 大文件內(nèi)容被替換為 stub(占位符)以節(jié)省 context window |
| 代碼路徑 | Content replacement 強制執(zhí)行 → insertContentReplacement() |
| 用途 | Resume 時重放以保持 prompt cache 穩(wěn)定性 |
attribution-snapshot
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 追蹤 Claude Code 對每個文件貢獻(xiàn)的字符數(shù) |
| 用途 | Git commit 歸屬追蹤(哪些字符是 Claude 寫的) |
第四類:高級功能(6 種類型,大部分僅 ant 內(nèi)網(wǎng)可見)
summary
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 手動 /compact 或自動 compact 時生成對話摘要 |
| 代碼路徑 | compactConversation() → 生成 summary → appendEntry() |
| 用途 | 存儲 compact 時生成的摘要 |
task-summary
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 后臺定期 fork 主線程,生成當(dāng)前任務(wù)的摘要 |
| 觸發(fā)頻率 | 每 5 步或每 2 分鐘 |
| 用途 | claude ps 展示當(dāng)前 agent 正在做什么 |
queue-operation
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 命令隊列有操作變更(入隊/出隊/取消) |
| 代碼路徑 | insertQueueOperation() |
speculation-accept
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 推測性 token 生成被接受(性能優(yōu)化) |
| 用途 | 追蹤推測加速節(jié)省的時間 |
worktree-state
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 進(jìn)入/退出 git worktree 時持久化狀態(tài) |
| 代碼路徑 | EnterWorktree / ExitWorktree → saveWorktreeState() |
{
"type": "worktree-state",
"sessionId": "...",
"worktreeSession": {
"originalCwd": "...",
"worktreePath": "...",
"worktreeName": "...",
"worktreeBranch": "...",
"sessionId": "..."
}
}pr-link
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | 將會話關(guān)聯(lián)到 GitHub Pull Request |
| 代碼路徑 | PR 關(guān)聯(lián)操作 → linkSessionToPR() |
marble-origami-commit/marble-origami-snapshot
| 屬性 | 值 |
|---|---|
| 觸發(fā)行為 | Context Collapse(上下文折疊)系統(tǒng)的持久化 |
| 代碼路徑 | recordContextCollapseCommit() / recordContextCollapseSnapshot() |
| 用途 | 恢復(fù)折疊的上下文段——commit 是追加的(回放所有),snapshot 是最后寫入生效 |
6. 實際 Transcript 樣本分析
你的 transcript 964aa807-...jsonl 的類型分布:
類型 出現(xiàn)次數(shù) 說明 ───────────────────────────────────────────────────── assistant 64 AI 的每次響應(yīng)(含工具調(diào)用的中間步驟) user 35 你的每次輸入 permission-mode 15 權(quán)限模式(隨消息序列化寫入) mode 15 會話模式(隨元數(shù)據(jù)刷新重復(fù)寫入) ai-title 15 AI 生成的標(biāo)題(每次元數(shù)據(jù)刷新重寫) last-prompt 14 最近一次 prompt(每次元數(shù)據(jù)刷新重寫) system 7 系統(tǒng)注入提醒 file-history-snapshot 7 每個 turn 結(jié)束的文件快照 attachment 6 工具/Agent/MCP 列表通告
未出現(xiàn)在你 transcript 中的類型(需要特定操作觸發(fā)):
- custom-title — 需要執(zhí)行 /rename
- tag — 需要執(zhí)行 /tag
- agent-name/color/setting — 需要 Agent 配置
- summary — 需要 compact
- task-summary — 需要 ant 內(nèi)網(wǎng)
- queue-operation — 需要 ant 內(nèi)網(wǎng)
- speculation-accept — 需要 ant 內(nèi)網(wǎng)
- worktree-state — 需要 worktree 操作
- pr-link — 需要關(guān)聯(lián) PR
- attribution-snapshot — 需要 ant 內(nèi)網(wǎng)
- content-replacement — 需要 ant 內(nèi)網(wǎng)
- marble-origami-* — 需要 ant 內(nèi)網(wǎng)
7. 去重與鏈表機制
parentUuid 鏈表
每條 user、assistant、system、attachment 消息都攜帶 parentUuid,指向前一條鏈參與者消息:
user (uuid: A, parentUuid: null) ↑ assistant (uuid: B, parentUuid: A) ↑ assistant (uuid: C, parentUuid: B) ← tool_use 響應(yīng) ↑ user (uuid: D, parentUuid: C) ← tool_result ↑ assistant (uuid: E, parentUuid: D) ← 繼續(xù) ↑ ...
--resume 時 buildConversationChain() 沿鏈表從葉子走到根,重建完整對話。
UUID 去重
appendEntry() 在寫入前檢查 UUID 是否已存在:
// src/utils/sessionStorage.ts:1242-1243
const isNewUuid = !messageSet.has(entry.uuid)
if (isAgentSidechain || isNewUuid) {
void this.enqueueWrite(targetFile, entry)
if (!isAgentSidechain) {
messageSet.add(entry.uuid)
}
}
isChainParticipant 過濾
并非所有消息都參與鏈表。isChainParticipant() 過濾掉進(jìn)度消息和臨時事件,只有 user、assistant、attachment、system 以及 compact boundary 消息才更新 parentUuid 指針。
8. 寫入優(yōu)先級總結(jié)
┌──────────────────────────────────────────────────────┐ │ 高頻寫入(每條消息都寫) │ │ ├─ user / assistant / system / attachment │ │ ├─ permission-mode(隨消息序列化) │ │ └─ file-history-snapshot(每個 turn 結(jié)束) │ │ │ │ 中頻寫入(每個 turn / compact 時寫) │ │ ├─ last-prompt(覆蓋寫入) │ │ └─ mode(切換時寫) │ │ │ │ 低頻寫入(用戶主動操作時寫) │ │ ├─ custom-title, tag(/rename, /tag) │ │ ├─ agent-name, agent-color, agent-setting │ │ ├─ summary(compact 時) │ │ ├─ pr-link(關(guān)聯(lián) PR 時) │ │ └─ worktree-state(進(jìn)入/退出 worktree 時) │ │ │ │ 僅在 ant 內(nèi)網(wǎng)(USER_TYPE === 'ant') │ │ ├─ task-summary(后臺 fork 生成) │ │ ├─ queue-operation(命令隊列變更) │ │ ├─ speculation-accept(推測加速追蹤) │ │ ├─ content-replacement(內(nèi)容替換持久化) │ │ ├─ attribution-snapshot(代碼歸屬追蹤) │ │ └─ marble-origami-commit / snapshot(上下文折疊) │ └──────────────────────────────────────────────────────┘
9. 關(guān)鍵源文件索引
| 文件 | 內(nèi)容 |
|---|---|
| src/types/logs.ts | 所有 Entry 類型定義(22 種) |
| src/utils/sessionStorage.ts | JSONL 寫入核心邏輯:appendEntry()、insertMessageChain()、recordTranscript()、drainWriteQueue()、appendEntryToFile() |
| src/hooks/useLogMessages.ts | React hook —— 監(jiān)聽 messages[] 變化并觸發(fā) recordTranscript() |
| src/screens/REPL.tsx | REPL 組件 —— 調(diào)用 useLogMessages() |
| src/utils/handlePromptSubmit.ts | 用戶輸入處理 —— handlePromptSubmit() → executeUserInput() |
| src/utils/processUserInput/processUserInput.ts | 輸入路由 —— text / slash / bash 命令 |
| src/query.ts | 核心 query 生成器循環(huán) |
到此這篇關(guān)于Claude Code JSONL 的使用小結(jié)的文章就介紹到這了,更多相關(guān)Claude Code JSONL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章

Claude Code上下文智能監(jiān)控與自動處理完整指南
使用Claude Code進(jìn)行大型項目開發(fā)時,你一定遇到過這些問題:質(zhì)量下降,重復(fù)工作,強制中斷等,這不是Claude變笨了,而是上下文窗口被填滿了,所以本文給大家介紹了Claude C2026-06-18
Claude Code 入門教程之從零到獨立完成項目的詳細(xì)過程
Claude Code 是 Anthropic 推出的終端原生 AI 編程代理,能直接讀取文件、執(zhí)行命令和規(guī)劃任務(wù),而非普通聊天機器人,本文介紹Claude Code 入門教程之從零到獨立完成項目的詳2026-06-18
Opencode Go接入Claude Code的實現(xiàn)步驟
本文主要介紹了Opencode Go接入Claude Code的實現(xiàn)步驟,文中通過圖文示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)2026-06-18
2026年Claude Code 編輯器集成教程:VS Code和JetBrains完整配置
CLI 是 Claude Code 的核心入口,但很多開發(fā)者日常還是待在 IDE 里,VS Code、Cursor、JetBrains 系列其實都可以接入 Claude Code,讓 AI 直接結(jié)合當(dāng)前文件、選中代碼和項目2026-06-17
Claude Code 是 Anthropic 公司推出的一款命令行 AI 編程代理工具,它能讓開發(fā)者直接在終端中與 AI 對話,本指南將系統(tǒng)性地介紹 Claude Code 的核心概念、安裝流程、操作技2026-06-16
Claude Code中使用Spec Kit的實現(xiàn)步驟
在 Claude Code 中使用 Spec Kit(由 GitHub 官方推出的規(guī)格驅(qū)動開發(fā)工具包),可以實現(xiàn)“先寫規(guī)范、再生成代碼”的高質(zhì)量 AI 編程流程,下面就來詳細(xì)的介紹一下2026-06-16
詳解Claude Code Router 接入過程的爬坑記錄
本文詳細(xì)記錄了安裝Claude-code-router(CCR)過程中遇到的五個關(guān)鍵問題及其解決方案,包括配置文件錯誤、API路徑不完整、代理設(shè)置不當(dāng)、settings.json沖突以及Warp終端上下2026-06-16
Claude Code 是 Anthropic 推出的命令行 AI 編程助手,通過插件(Plugin)系統(tǒng),你可以為 Claude Code 擴展各種專業(yè)技能——本文從代碼審查到前端設(shè)計,從安全審計到數(shù)學(xué)競2026-06-14
這篇文章主要為大家介紹了Claude自動運行方法大全,詳述AutoMode、Shift+Tab及白名單策略,推薦AutoMode為最安全便捷方案,適用于日常開發(fā)與團(tuán)隊環(huán)境安全高效運行,需要的朋友2026-06-12
我每天使用Claude Code大約一個月,注意到我的~/.claude目錄占了1.3GB,沒有自動清理,會議數(shù)據(jù)不斷堆積,下面小編就和大家分享一下如何使用腳本清理Claude Code緩存信息吧2026-06-12











