Files
chill_notes/wiki/AI工程/ClaudeCode开发全流程存档方案.md
2026-05-04 11:02:13 +08:00

10 KiB
Executable File
Raw Permalink Blame History

created, type, tags
created type tags
2026-05-04 workflow
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 知识库管理
obsobsidian-headless CLI 命令行写 Obsidian 笔记
pre-commit Git 钩子,自动触发存档 ⚠️ 可选
git-changelog 生成变更日志 ⚠️ 可选
Claude Code 的 --output-format json 结构化对话输出

📋 实施方案

方案一Claude Code + Git 自动提交(推荐)

1. Claude Code 配置

在项目的 CLAUDE.md 中写入指令:

# CLAUDE.md - 项目级 Claude Code 指令

## 开发流程要求

每次完成代码修改后,必须执行以下操作:

1. **git add + commit**
   ```bash
   git add -A
   git commit -m "[AI-Step] {简短描述}"
  1. 记录开发日志

    • obs 命令写入 Obsidian 开发日志
    • 格式:obs obs今天日记 {内容}
  2. 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

cd /path/to/your/project
chmod +x .git/hooks/post-commit

方案二:完整对话导出 + 存档

1. Claude Code 对话导出

# 方式 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 命令直接写入

# 每次开发步骤完成后
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 模板:开发日志

<%*
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
└── ...

一键初始化脚本

#!/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. 生成开发报告

# 查看某天所有 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

## 代码变更

- `[commit:abc1234](https://github.com/user/repo/commit/abc1234)` - 修复登录问题
- `[commit:def5678](https://github.com/user/repo/commit/def5678)` - 添加单元测试

3. 复盘笔记模板

# 项目复盘 - {{项目名}}

## 时间线
- 开始:{{日期}}
- 结束:{{日期}}
- 总 commit 数:`git log --oneline | wc -l`

## 关键决策

## 踩坑记录

## 经验教训

## 可复用代码/模式

研究归档2026-05-04 | Claude Code 开发全流程存档方案