# 诺丁汉大学CS与AI笔记库：一个自动化知识管理系统的实践

> 本文介绍了一个开源的计算机科学与人工智能课程笔记库，展示了如何通过Obsidian、S3存储、cron定时任务和GitHub CI/CD构建自动化的个人知识管理系统。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-05-23T23:00:10.000Z
- 最近活动: 2026-05-23T23:21:23.677Z
- 热度: 154.7
- 关键词: 知识管理, Obsidian, GitHub Pages, Jekyll, 自动化, 笔记系统, 计算机科学, 人工智能, 学习资源, 开源
- 页面链接: https://www.zingnex.cn/forum/thread/csai
- Canonical: https://www.zingnex.cn/forum/thread/csai
- Markdown 来源: ingested_event

---

## 原作者与来源

- **原作者/维护者：** Draggie306
- **来源平台：** GitHub
- **原始项目名称：** nottingham-cs-notes
- **原始链接：** https://github.com/Draggie306/nottingham-cs-notes
- **在线访问：** https://notes.oling.dev
- **发布时间：** 2026年5月23日
- **关联项目：** iBaguette Cheat Sheets（https://ibaguette.com/cheatsheets）

---

## 项目概述：从个人笔记到开源知识库

这是一个诺丁汉大学计算机科学与人工智能本科（BSc Hons Computer Science with Artificial Intelligence）课程笔记的开源仓库。作者将自己两年学习期间积累的Obsidian笔记库通过自动化流程同步到GitHub，并部署为静态网站供所有人访问。

该项目不仅是一个学习资源的分享，更是一个展示现代知识管理工作流的范例——它结合了Obsidian的强大编辑能力、云存储的同步便利性、定时任务的自动化以及CI/CD的持续部署，构建了一个完整的个人知识管理系统。

---

## 课程内容与结构

### 第一年课程模块

**第一学期：**
- **COMP1001** - 计算机科学家数学1（离散数学）
- **COMP1005** - 编程与算法（ANSI C）
- **COMP1054** - 汇编语言编程（理论与ARM32汇编）
- **COMP1055** - 网络（理论与C语言实现）
- **COMP1056** - 计算机体系结构（理论与硬件描述语言）

**第二学期：**
- **COMP1003** - 软件工程导论（理论）
- **COMP1004** - 数据库与接口（SQL、HTML、CSS和JS）
- **COMP1008** - 人工智能基础（理论）
- **COMP1009** - 编程范式（理论、Java和Haskell）
- **COMP1043** - 计算机科学家数学2（线性代数）

### 第二年课程模块

**第一学期：**
- **COMP2007** - 操作系统与并发（C语言和理论）
- **COMP2013** - 开发可维护软件（Java和理论）
- **COMP2065** - 形式推理导论（Lean 4）

**第二学期：**
- **COMP2001** - 人工智能方法（20学分）
- **COMP2004** - 人机交互导论（理论）
- **COMP2012** - 语言与计算（理论、Lean 4）
- **COMP2054** - 算法、数据结构与效率（理论）

**全年模块：**
- **COMP2002** - 软件工程小组项目

### 其他内容

- **GEOG1037** - 地球：探索物理环境（环境变化）
- **杂项文件夹** - 成绩、笔记、家庭实验室文档、草稿和反馈

---

## 技术架构：自动化知识管理流水线

该项目的核心亮点在于其自动化的同步与部署流程。整个系统由三个主要组件构成：

### 1. Obsidian + Remotely Save：实时笔记同步

Obsidian是一款基于Markdown的本地优先笔记应用，以其强大的双向链接和图谱视图著称。作者使用Remotely Save插件，将Obsidian笔记库每5分钟自动同步到一个S3兼容的对象存储桶。

这种设计确保了：
- **本地优先：** 所有数据首先保存在本地，保证隐私和离线访问
- **实时备份：** 每5分钟自动同步到云端，防止数据丢失
- **跨设备访问：** 可在任何设备上通过Obsidian访问最新笔记

### 2. 家庭服务器 + cron：定时同步到Git

作者在家庭服务器上设置了一个cron定时任务，每天午夜执行以下操作：

```bash
0 0 * * * cd /mnt/mega/uni-notes-git/ && \
  /usr/bin/rclone sync --exclude .git/ --exclude .github/ r2:notes . -v && \
  /usr/bin/git add . && \
  /usr/bin/git commit -m "[cron] auto commit: update notes" && \
  /usr/bin/git push &>> /mnt/mega/notes_sync.log
```

这个流程的关键细节：
- **rclone同步：** 使用rclone将S3存储桶的笔记同步到本地Git仓库
- **排除.git和.github：** 避免覆盖Git历史记录和GitHub Pages构建设置
- **自动提交推送：** 将所有变更自动提交并推送到GitHub
- **日志记录：** 输出重定向到日志文件便于故障排查

### 3. GitHub Actions + Jekyll：自动构建与部署

GitHub检测到仓库更新后，自动触发Jekyll构建流程：

1. 使用Jekyll将Markdown笔记渲染为静态HTML
2. 处理数学公式、代码高亮等格式
3. 部署到GitHub Pages（notes.oling.dev）

---

## 技术选型分析

### 为什么选择Obsidian？

Obsidian作为知识管理工具具有以下优势：

- **Markdown原生：** 纯文本格式，便于版本控制和长期保存
- **双向链接：** 支持[[WikiLinks]]语法，构建知识图谱
- **插件生态：** 丰富的社区插件，如Remotely Save实现自动同步
- **本地存储：** 数据完全由用户控制，不依赖云服务
- **图谱视图：** 可视化笔记间的关联关系

### 为什么选择S3 + rclone？

- **成本效益：** S3兼容存储（如Cloudflare R2）通常有慷慨的免费额度
- **可靠性：** 对象存储提供高可用性和持久性
- **灵活性：** rclone支持数十种存储后端，便于迁移
- **增量同步：** 只传输变更的文件，节省带宽和时间

### 为什么选择Jekyll？

- **GitHub原生支持：** GitHub Pages内置Jekyll支持
- **静态生成：** 无需服务器端处理，部署简单快速
- **主题丰富：** 大量开源主题可选
- **Liquid模板：** 灵活的模板引擎支持复杂布局

---

## 实际应用价值

### 对学生学习者的价值

1. **课程参考：** 涵盖诺丁汉大学CS与AI专业的核心课程，可作为学习参考
2. **技术栈示例：** 展示了从C、Java到Haskell、Lean 4的多种编程语言学习路径
3. **AI入门：** 人工智能方法和基础课程笔记为AI初学者提供指引

### 对知识管理工作者的价值

1. **工作流参考：** 完整的Obsidian→S3→Git→Jekyll→Pages流程可复制
2. **自动化示例：** cron定时任务和CI/CD配置可作为模板
3. **开源实践：** 展示了如何将个人笔记系统开源分享

### 对技术爱好者的价值

1. **家庭实验室：** 展示了家庭服务器的实际应用场景
2. **云原生工具链：** rclone、S3、GitHub Actions的组合使用
3. **静态网站：** Jekyll构建静态网站的技术实践

---

## 潜在改进方向

虽然当前系统已经相当完善，但仍有一些可以优化的方向：

### 1. 搜索功能增强

目前GitHub Pages的搜索功能有限。可以考虑：
- 集成Algolia DocSearch实现全文搜索
- 使用Lunr.js添加客户端搜索
- 生成搜索索引JSON文件

### 2. 内容结构化

- 添加课程大纲和学习路径图
- 为每门课程添加前置知识要求
- 建立知识点之间的关联图谱

### 3. 协作功能

- 添加评论系统（如utterances或giscus）
- 允许读者提交PR修正错误
- 建立贡献指南和社区规范

### 4. 同步频率优化

- 当前每天午夜同步一次，可考虑：
- 使用Webhook实现实时触发
- 在Obsidian保存时触发同步
- 添加手动同步按钮

---

## 总结与启示

这个诺丁汉大学CS与AI笔记库项目展示了一个完整的现代知识管理工作流。它不仅仅是学习笔记的集合，更是一个技术实践案例：

1. **本地优先原则：** 使用Obsidian保持数据的本地控制和所有权
2. **自动化思维：** 通过cron和CI/CD消除重复性手动操作
3. **开源精神：** 将个人学习资源开放，惠及更广泛的社区
4. **持续迭代：** 从iBaguette的Cheat Sheets进化到更系统的课程笔记

对于希望建立个人知识管理系统的读者，该项目提供了一个经过验证的参考架构。无论是学生、终身学习者还是知识工作者，都可以从中获得启发，构建适合自己的知识管理工作流。
