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}}

## 环境信息

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

## 问题描述

### 现象

描述遇到了什么问题。

### 错误信息

```text
粘贴错误日志
```

## 排查过程

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

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

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

## 根因分析

解释问题的根本原因。

## 解决方案

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

## 预防措施

-

## 相关链接

- [官方文档]()
- [相关 Issue]()

工作流三:技术学习笔记

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

技术学习模板:

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

# {{tech}} 学习笔记

## 概述

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

## 核心概念

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

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

## 快速上手

### 安装

```bash
# 安装命令
```

### Hello World

```javascript
// 最简示例
```

## 常用操作

| 操作 | 代码 | 说明 |
|------|------|------|

## 最佳实践

1. 

## 常见陷阱

1. 

## 与其他技术对比

| 维度 | {{tech}} | [[替代方案]] |
|------|----------|-------------|

## 学习资源

- [官方文档]()
- [推荐教程]()

## 下一步

- [ ]

推荐插件组合

必装插件

插件用途优先级
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 同步团队空间
  • 非敏感内容可导出为静态站点部署

相关资源