Skip to content

程序员技术笔记库案例

本案例展示如何用 Obsidian 构建一个适合程序员/开发者的技术笔记库,将散落在各处的代码片段、技术文档、踩坑记录统一管理,形成可复用的知识体系。

适用人群

  • 软件开发者 / 工程师
  • 需要管理大量代码片段和技术文档
  • 有技术选型、问题排查、学习新技术的需求
  • 希望将技术经验结构化沉淀

目录结构

text
DevVault/
├── 📥 Inbox/                # 快速收集
├── 💻 Languages/            # 编程语言
│   ├── Python/
│   ├── TypeScript/
│   ├── Rust/
│   └── Go/
├── 🔧 Frameworks/           # 框架与库
│   ├── React/
│   ├── Vue/
│   └── Node.js/
├── 🏗️ Architecture/         # 架构设计
│   ├── Design Patterns/
│   ├── Microservices/
│   └── Database/
├── 🐛 Troubleshooting/      # 问题排查
│   ├── Docker/
│   ├── Git/
│   └── Linux/
├── 📋 Snippets/             # 代码片段
│   ├── Python/
│   ├── Shell/
│   └── SQL/
├── 📖 Learning/             # 学习笔记
│   ├── Books/
│   └── Courses/
├── 🚀 Projects/             # 项目文档
├── 🗓️ Daily/                # 工作日志
├── 📋 Templates/            # 模板
└── 📊 Stats/                # 统计

核心工作流

工作流一:代码片段管理

将常用代码片段结构化保存,随时可检索复用。

代码片段模板:

markdown
---
type: snippet
language: {{language}}
category: {{category}}
tags: [snippet, {{language}}]
created: {{date}}
---

# {{title}}

## 说明

简要描述这个代码片段的用途。

## 代码

```{{language}}
{{code}}

使用场景

注意事项

相关片段

  • [[]]

**代码片段索引(Dataview):**

```dataview
TABLE 
  language AS "语言",
  category AS "分类",
  file.ctime AS "创建时间"
FROM "Snippets"
SORT language ASC, category ASC

工作流二:问题排查记录

记录踩坑经历,避免重复踩坑,也方便团队参考。

Bug 记录模板:

markdown
---
type: troubleshooting
severity: {{severity}}  # critical/high/medium/low
status: {{status}}      # open/resolved
environment: {{env}}
tags: [bug, {{tech_stack}}]
created: {{date}}
resolved: 
---

# {{title}}

## 环境信息

- 操作系统:
- 技术栈版本:
- 相关工具:

## 问题描述

### 现象

描述遇到了什么问题。

### 错误信息

粘贴错误日志


## 排查过程

1. **尝试 1**:...
   - 结果:失败
   
2. **尝试 2**:...
   - 结果:失败

3. **最终方案**:...
   - 结果:成功 ✅

## 根因分析

解释问题的根本原因。

## 解决方案

```bash
# 解决命令或代码

预防措施

相关链接


### 工作流三:技术学习笔记

学习新技术时的结构化笔记方法。

**技术学习模板:**

```markdown
---
type: learning
tech: {{tech}}
level: {{level}}  # beginner/intermediate/advanced
status: #seedling
tags: [learning, {{tech}}]
created: {{date}}
---

# {{tech}} 学习笔记

## 概述

一句话描述这个技术是什么。

## 核心概念

### 概念 1
- 定义:
- 为什么重要:
- 代码示例:

### 概念 2
- 定义:
- 为什么重要:
- 代码示例:

## 快速上手

### 安装

```bash
# 安装命令

Hello World

javascript
// 最简示例

常用操作

操作代码说明

最佳实践

常见陷阱

与其他技术对比

维度[[替代方案]]

学习资源

下一步

  • [ ]

## 推荐插件组合

### 必装插件

| 插件 | 用途 | 优先级 |
|------|------|--------|
| Dataview | 查询代码片段和笔记 | ⭐⭐⭐⭐⭐ |
| Templater | 模板自动化 | ⭐⭐⭐⭐⭐ |
| Obsidian Git | 版本控制与备份 | ⭐⭐⭐⭐⭐ |
| Tasks | 任务追踪 | ⭐⭐⭐⭐ |
| Code Editor Shortcuts | 代码编辑增强 | ⭐⭐⭐⭐ |
| QuickAdd | 快速添加内容 | ⭐⭐⭐⭐ |

### 进阶插件

| 插件 | 用途 |
|------|------|
| Excalidraw | 架构图、流程图 |
| Mermaid | 内嵌图表 |
| Shell Commands | 执行终端命令 |
| Commander | 自定义命令按钮 |
| Projects | 项目管理 |
| DB Folder | 数据库视图 |

## 实用 Dataview 查询

### 按语言查找代码片段

```dataview
TABLE 
  category AS "分类",
  file.ctime AS "创建时间"
FROM "Snippets"
WHERE language = "Python"
SORT category ASC

未解决的问题

dataview
TABLE 
  severity AS "严重程度",
  environment AS "环境",
  file.ctime AS "创建时间"
FROM "Troubleshooting"
WHERE status = "open"
SORT choice(severity = "critical", 1, 
  choice(severity = "high", 2, 
  choice(severity = "medium", 3, 4))) ASC

技术学习进度

dataview
TABLE 
  level AS "水平",
  choice(status = "#evergreen", "✅ 已掌握", 
  choice(status = "#growing", "🔄 学习中", "🌱 入门")) AS "状态"
FROM "Learning"
SORT tech ASC

最近工作日志

dataview
LIST
FROM "Daily"
SORT file.name DESC
LIMIT 7

工作日志实践

每日记录工作内容,积累技术经验:

工作日志模板:

markdown
---
type: daily
date: {{date}}
tags: [daily]
---

# {{date:YYYY-MM-DD}} 工作日志

## 今日完成

- [ ] 

## 技术笔记

### 

## 遇到的问题

### 

## 明日计划

- [ ] 

## 复盘

### 做得好的

- 

### 可以改进的

-

技术选型记录

用结构化方式记录技术选型决策:

markdown
---
type: tech-decision
status: decided/reviewing
date: {{date}}
tags: [decision]
---

# 技术选型:{{title}}

## 背景

为什么要做这个技术选型?

## 候选方案

### 方案 A:{{name}}

| 维度 | 评价 |
|------|------|
| 性能 | ⭐⭐⭐⭐ |
| 生态 | ⭐⭐⭐⭐⭐ |
| 学习成本 | ⭐⭐⭐ |
| 社区活跃度 | ⭐⭐⭐⭐ |

### 方案 B:{{name}}

| 维度 | 评价 |
|------|------|
| 性能 | ⭐⭐⭐⭐⭐ |
| 生态 | ⭐⭐⭐ |
| 学习成本 | ⭐⭐ |
| 社区活跃度 | ⭐⭐⭐ |

## 决策

选择 **方案 A**,理由:

1. 
2. 
3. 

## 评估时间

{{date}} - 评估周期 - 下次复盘时间

与开发工具集成

与 GitHub 集成

通过 Shell Commands 插件快速打开仓库:

bash
# 在 Obsidian 中打开当前笔记对应的 GitHub 仓库
open "https://github.com/$(git -C '${vaultPath}' remote get-url origin | sed 's/.*github.com[:/]\(.*\)\.git/\1/')"

与终端集成

使用 Shell Commands 插件执行常用命令:

bash
# 运行当前项目
npm run dev

# 查看当前目录结构
find . -type f -not -path '*/node_modules/*' -not -path '*/.git/*' | head -30

与 CI/CD 集成

在项目笔记中嵌入构建状态:

markdown
## 项目状态

- 构建状态:[![CI](https://github.com/user/repo/actions/workflows/ci.yml/badge.svg)](https://github.com/user/repo/actions)
- 测试覆盖:82%
- 上次部署:2024-01-15

常见问题

问:代码片段和 GitHub Gist 有什么区别?

答:Obsidian 代码片段的优势在于:

  • 与技术笔记双向链接
  • Dataview 动态查询和组织
  • 本地优先,离线可用
  • 可添加丰富的上下文说明

建议两者结合使用:Obsidian 管理带上下文的片段,Gist 管理可分享的独立代码。

问:如何管理敏感信息(API Key 等)?

答:

  1. 绝不在笔记中明文存储密码和密钥
  2. 使用 .env 文件管理配置,并在 .gitignore 中排除
  3. 如需记录配置方式,使用占位符 YOUR_API_KEY_HERE
  4. 敏感项目笔记放在独立仓库,启用加密

问:如何与团队共享技术笔记?

答:

  • 使用 Obsidian Publish 发布公开知识库
  • 通过 Git 仓库共享,配合 .obsidian/ 配置
  • 使用 Obsidian Sync 同步团队空间
  • 非敏感内容可导出为静态站点部署

相关资源

最后更新:2026年4月10日编辑此页反馈问题