--- created: 2026-05-04 type: workflow tags: [Claude Code, Git, Obsidian, 开发流程, 存档, 自动化] --- # Claude Code 开发全流程存档方案 > 每步提交 Git + 全程存档 Obsidian,打造可追溯的 AI 开发工作流 > 归档时间:2026-05-04 --- ## 📌 目标 1. Claude Code **每完成一个开发步骤**,自动提交 Git 2. 整个开发过程(对话 + 代码变更 + 决策)**实时存档到 Obsidian** 3. 形成**可回溯、可搜索、可复盘**的 AI 开发知识库 --- ## 🏗️ 整体架构 ``` Claude Code (开发) │ ├── 1. 每步完成后 → git commit (自动) │ │ │ └── commit message 包含步骤描述 │ ├── 2. 对话记录 → 导出 Markdown → Obsidian (自动) │ │ │ └── 按项目/日期归档 │ ├── 3. 代码变更 → git diff → 存档笔记 (自动) │ │ │ └── 记录"改了什么 + 为什么改" │ └── 4. 开发日志 → 每日汇总笔记 → Obsidian (自动) │ └── 包含决策、踩坑、复盘 ``` --- ## 🔧 工具清单 | 工具 | 用途 | 必选 | |------|------|------| | **Git** | 代码版本控制 | ✅ | | **Claude Code** | AI 编码助手 | ✅ | | **Obsidian** | 知识库管理 | ✅ | | **obs(obsidian-headless CLI)** | 命令行写 Obsidian 笔记 | ✅ | | **pre-commit** | Git 钩子,自动触发存档 | ⚠️ 可选 | | **git-changelog** | 生成变更日志 | ⚠️ 可选 | | **Claude Code 的 `--output-format json`** | 结构化对话输出 | ✅ | --- ## 📋 实施方案 ### 方案一:Claude Code + Git 自动提交(推荐) #### 1. Claude Code 配置 在项目的 `CLAUDE.md` 中写入指令: ```markdown # CLAUDE.md - 项目级 Claude Code 指令 ## 开发流程要求 每次完成代码修改后,必须执行以下操作: 1. **git add + commit**: ```bash git add -A git commit -m "[AI-Step] {简短描述}" ``` 2. **记录开发日志**: - 用 `obs` 命令写入 Obsidian 开发日志 - 格式:`obs obs今天日记 {内容}` 3. **commit message 规范**: - `[AI-Step]` - 普通开发步骤 - `[AI-Fix]` - Bug 修复 - `[AI-Feature]` - 新功能 - `[AI-Refactor]` - 重构 - `[AI-Test]` - 测试相关 ## 示例 用户:帮我修复这个登录 Bug Claude: 1. 分析问题... 2. 修改 auth.js... 3. git add -A && git commit -m "[AI-Fix] 修复登录 token 过期问题" 4. 记录到开发日志... ``` #### 2. Git Hook 自动存档 在项目 `.git/hooks/post-commit` 中添加: ```bash #!/bin/bash # post-commit 钩子:每次 commit 后自动存档到 Obsidian COMMIT_MSG=$(git log -1 --pretty=%B) COMMIT_HASH=$(git log -1 --pretty=%h) COMMIT_DATE=$(git log -1 --pretty=%ci) CHANGED_FILES=$(git diff-tree --no-commit-id --name-only -r HEAD) # 获取变更统计 STATS=$(git diff --stat HEAD~1 HEAD 2>/dev/null || echo "Initial commit") # 写入 Obsidian 开发日志 TODAY=$(date +%Y-%m-%d) LOG_DIR="/obsidian/开发日志/${TODAY}" mkdir -p "$LOG_DIR" # 追加到今日开发日志 cat >> "$LOG_DIR/开发日志.md" << EOF ### $(date +%H:%M) - ${COMMIT_MSG} - **Commit**: \`${COMMIT_HASH}\` - **时间**: ${COMMIT_DATE} - **变更文件**: $(echo "$CHANGED_FILES" | sed 's/^/ - /') - **变更统计**: \`\`\` ${STATS} \`\`\` --- EOF echo "✅ 已存档到 Obsidian: $LOG_DIR/开发日志.md" ``` #### 3. 启用 Git Hook ```bash cd /path/to/your/project chmod +x .git/hooks/post-commit ``` --- ### 方案二:完整对话导出 + 存档 #### 1. Claude Code 对话导出 ```bash # 方式 A:使用 Claude Code 内置导出 claude export --output json > /tmp/claude-session.json # 方式 B:直接从数据库导出 python3 << 'PYEOF' import sqlite3 import json import os from datetime import datetime DB_PATH = os.path.expanduser("~/.claude/conversations.db") OBSIDIAN_PATH = "/obsidian/ClaudeCode开发日志/" conn = sqlite3.connect(DB_PATH) conn.row_factory = sqlite3.Row # 获取最新会话 cursor = conn.cursor() cursor.execute(""" SELECT * FROM conversations ORDER BY updated_at DESC LIMIT 1 """) conv = cursor.fetchone() # 获取消息 cursor.execute(""" SELECT * FROM messages WHERE conversation_id = ? ORDER BY created_at ASC """, (conv['id'],)) messages = cursor.fetchall() # 生成 Markdown today = datetime.now().strftime('%Y-%m-%d') filename = f"{today}-{conv['title'] or 'session'}.md" filepath = os.path.join(OBSIDIAN_PATH, filename) os.makedirs(OBSIDIAN_PATH, exist_ok=True) with open(filepath, 'w', encoding='utf-8') as f: f.write(f"# {conv['title']}\n\n") f.write(f"> 日期:{today}\n\n") f.write("---\n\n") for msg in messages: role = "🤖 Claude" if msg['role'] == 'assistant' else "👤 我" f.write(f"### {role}\n\n") f.write(f"{msg['content']}\n\n") f.write("---\n\n") print(f"✅ 已导出: {filepath}") conn.close() PYEOF ``` #### 2. 用 obs 命令直接写入 ```bash # 每次开发步骤完成后 obs obs今天日记 "完成了用户模块开发,git commit: [AI-Feature] 添加用户注册接口" # 或者创建专题笔记 obs obs创建笔记 "用户模块开发记录" " ## 用户需求 - 支持手机号注册 - 支持邮箱验证 - 密码加密存储 ## 实现过程 1. 设计数据库 schema 2. 编写 API 接口 3. 添加单元测试 4. 修复 CORS 问题 ## 关键决策 - 选择 bcrypt 而非 md5 加密 - 使用 JWT 而非 session ## 踩坑 - Redis 连接池未关闭导致内存泄漏 - CORS 配置遗漏 " ``` --- ### 方案三:Obsidian 插件配合 #### 必装插件 | 插件 | 作用 | |------|------| | **Templater** | 自动填充开发日志模板 | | **Dataview** | 按标签/日期查询开发记录 | | **Git** | Obsidian vault 自动同步 Git | | **Calendar** | 日历视图查看每日开发记录 | | **QuickAdd** | 快速创建开发笔记 | #### Templater 模板:开发日志 ```markdown <%* const today = tp.date.now("YYYY-MM-DD"); const project = await tp.system.prompt("项目名称"); const task = await tp.system.prompt("本次任务"); %> # 开发日志 - <%= today %> ## 项目:<%= project %> ### 任务:<%= task %> **开始时间**:<% tp.date.now("HH:mm") %> **结束时间**: --- ## 开发过程 ### 步骤 1: **Git Commit**:`[AI-Step] ` **变更内容**: **遇到问题**: **解决方案**: --- ## 复盘总结 ### 做得好的: ### 需要改进的: ### 下次注意: --- ## Git 变更记录 ```bash git log --oneline --since="<%= today %> 00:00" --until="<%= today %> 23:59" ``` --- *<% tp.date.now("YYYY-MM-DD HH:mm:ss") %> 记录* ``` #### Dataview 查询:按项目查看开发记录 ```dataview TABLE 项目, 任务, file.ctime as "创建时间" FROM "开发日志" WHERE 项目 != null SORT file.ctime DESC ``` --- ## 🔄 完整工作流示例 ``` 用户:帮我开发一个用户管理模块 ↓ Claude Code: 1. 分析需求,创建文件 2. git add -A && git commit -m "[AI-Step] 初始化用户模块" ↓ post-commit 钩子触发: → 写入 Obsidian 开发日志 → 记录变更文件列表 ↓ Claude Code: 3. 编写 API 接口 4. git add -A && git commit -m "[AI-Feature] 添加用户注册/登录 API" ↓ post-commit 钩子触发: → 追加到 Obsidian 开发日志 → 记录 diff 统计 ↓ ... 循环直到完成 最终:Obsidian 中有完整的开发过程记录 Git 中有每步的代码变更 ``` --- ## 📂 Obsidian 目录结构 ``` /obsidian/开发日志/ ├── 2026-05-04/ │ ├── 开发日志.md # 当日汇总 │ ├── 用户模块开发记录.md # 专题笔记 │ └── 数据库设计记录.md ├── 2026-05-05/ │ └── ... └── _templates/ └── 开发日志模板.md /obsidian/ClaudeCode对话/ ├── 2026-05-04-用户模块开发.md ├── 2026-05-04-Bug修复记录.md └── ... ``` --- ## ⚡ 一键初始化脚本 ```bash #!/bin/bash # setup-dev-workflow.sh - 一键配置开发存档工作流 PROJECT_DIR=$1 if [ -z "$PROJECT_DIR" ]; then echo "用法: ./setup-dev-workflow.sh /path/to/project" exit 1 fi cd "$PROJECT_DIR" # 1. 创建 CLAUDE.md cat > CLAUDE.md << 'EOF' # 开发流程要求 - 每完成一个步骤,执行 git add -A && git commit -m "[AI-Step] 描述" - 用 obs 命令记录开发日志 - commit 前缀:[AI-Step] [AI-Fix] [AI-Feature] [AI-Refactor] [AI-Test] EOF # 2. 创建 Git Hook mkdir -p .git/hooks cat > .git/hooks/post-commit << 'HOOK' #!/bin/bash COMMIT_MSG=$(git log -1 --pretty=%B) COMMIT_HASH=$(git log -1 --pretty=%h) CHANGED=$(git diff-tree --no-commit-id --name-only -r HEAD) TODAY=$(date +%Y-%m-%d) LOG="/obsidian/开发日志/${TODAY}" mkdir -p "$LOG" echo "### $(date +%H:%M) | \`${COMMIT_HASH}\` | ${COMMIT_MSG}" >> "$LOG/开发日志.md" echo " 文件: $(echo $CHANGED | tr '\n' ', ')" >> "$LOG/开发日志.md" echo "---" >> "$LOG/开发日志.md" HOOK chmod +x .git/hooks/post-commit # 3. 创建 Obsidian 目录 mkdir -p /obsidian/开发日志/_templates mkdir -p /obsidian/ClaudeCode对话 echo "✅ 开发存档工作流已配置!" echo " - CLAUDE.md: $PROJECT_DIR/CLAUDE.md" echo " - Git Hook: $PROJECT_DIR/.git/hooks/post-commit" echo " - Obsidian: /obsidian/开发日志/" ``` --- ## 💡 进阶技巧 ### 1. 生成开发报告 ```bash # 查看某天所有 commit git log --oneline --since="2026-05-04" --until="2026-05-05" # 统计代码变更量 git log --since="2026-05-04" --pretty=format: --stat | tail -1 # 生成变更日志 git log --oneline --graph --all > /obsidian/开发日志/变更日志.md ``` ### 2. 自动关联 Git 与 Obsidian 在 Obsidian 笔记中嵌入 Git commit: ```markdown ## 代码变更 - `[commit:abc1234](https://github.com/user/repo/commit/abc1234)` - 修复登录问题 - `[commit:def5678](https://github.com/user/repo/commit/def5678)` - 添加单元测试 ``` ### 3. 复盘笔记模板 ```markdown # 项目复盘 - {{项目名}} ## 时间线 - 开始:{{日期}} - 结束:{{日期}} - 总 commit 数:`git log --oneline | wc -l` ## 关键决策 ## 踩坑记录 ## 经验教训 ## 可复用代码/模式 ``` --- *研究归档,2026-05-04 | Claude Code 开发全流程存档方案*