适配个人开发者的「PARA + 原子化笔记」知识架构

This commit is contained in:
心平气和 2025-12-31 19:40:56 +08:00
parent f2c17a64ce
commit 6b02473dfb
40 changed files with 719 additions and 46 deletions

3
.obsidian/app.json vendored
View File

@ -4,5 +4,6 @@
"attachmentFolderPath": "attachments", "attachmentFolderPath": "attachments",
"showLineNumber": true, "showLineNumber": true,
"trashOption": "local", "trashOption": "local",
"promptDelete": false "promptDelete": false,
"alwaysUpdateLinks": true
} }

View File

@ -1 +1,4 @@
[] [
"dataview",
"templater-obsidian"
]

View File

@ -17,6 +17,6 @@
"repelStrength": 10, "repelStrength": 10,
"linkStrength": 1, "linkStrength": 1,
"linkDistance": 250, "linkDistance": 250,
"scale": 1, "scale": 0.8099376787739266,
"close": false "close": false
} }

27
.obsidian/plugins/dataview/data.json vendored Normal file
View File

@ -0,0 +1,27 @@
{
"renderNullAs": "\\-",
"taskCompletionTracking": false,
"taskCompletionUseEmojiShorthand": false,
"taskCompletionText": "completion",
"taskCompletionDateFormat": "yyyy-MM-dd",
"recursiveSubTaskCompletion": false,
"warnOnEmptyResult": true,
"refreshEnabled": true,
"refreshInterval": 2500,
"defaultDateFormat": "MMMM dd, yyyy",
"defaultDateTimeFormat": "h:mm a - MMMM dd, yyyy",
"maxRecursiveRenderDepth": 4,
"tableIdColumnName": "File",
"tableGroupColumnName": "Group",
"showResultCount": true,
"allowHtml": true,
"inlineQueryPrefix": "=",
"inlineJsQueryPrefix": "$=",
"inlineQueriesInCodeblocks": true,
"enableInlineDataview": true,
"enableDataviewJs": true,
"enableInlineDataviewJs": true,
"prettyRenderInlineFields": true,
"prettyRenderInlineFieldsInLivePreview": true,
"dataviewJsKeyword": "dataviewjs"
}

View File

@ -1,7 +1,7 @@
{ {
"aiProviders": { "aiProviders": {
"main": "id-1766822455151", "main": "id-1766815906291",
"embedding": "id-1766822455151", "embedding": "id-1766815906291",
"vision": null "vision": null
}, },
"defaults": { "defaults": {

178
.obsidian/plugins/quickadd/data.json vendored Normal file
View File

@ -0,0 +1,178 @@
{
"choices": [
{
"id": "85d22e6c-843e-4c44-8a46-daa90247d88a",
"name": "TEST",
"type": "Template",
"command": true,
"templatePath": "templates/Bug修复模板.md",
"fileNameFormat": {
"enabled": true,
"format": "{{DATE:}}-Bug-{{name}}"
},
"folder": {
"enabled": true,
"folders": [
"templates"
],
"chooseWhenCreatingNote": false,
"createInSameFolderAsActiveFile": false,
"chooseFromSubfolders": false
},
"appendLink": false,
"openFile": true,
"fileOpening": {
"location": "tab",
"direction": "vertical",
"mode": "default",
"focus": true
},
"fileExistsMode": "Increment the file name",
"setFileExistsBehavior": false
},
{
"id": "3d9a4f39-8353-4714-8d03-bd0fca5ef9ef",
"name": "T_C",
"type": "Capture",
"command": true,
"appendLink": false,
"captureTo": "{{DATE:YYYY-MM-DD}}.md",
"captureToActiveFile": false,
"activeFileWritePosition": "cursor",
"createFileIfItDoesntExist": {
"enabled": true,
"createWithTemplate": true,
"template": "templates/学习模板.md"
},
"format": {
"enabled": true,
"format": "{{TIME:HH:mm}} {{value}}"
},
"insertAfter": {
"enabled": false,
"after": "",
"insertAtEnd": false,
"considerSubsections": false,
"createIfNotFound": false,
"createIfNotFoundLocation": "top"
},
"newLineCapture": {
"enabled": false,
"direction": "below"
},
"prepend": false,
"task": false,
"openFile": false,
"fileOpening": {
"location": "tab",
"direction": "vertical",
"mode": "default",
"focus": true
},
"templater": {
"afterCapture": "none"
}
}
],
"inputPrompt": "single-line",
"devMode": false,
"templateFolderPath": "",
"announceUpdates": "all",
"version": "2.9.4",
"globalVariables": {},
"onePageInputEnabled": true,
"disableOnlineFeatures": true,
"enableRibbonIcon": true,
"showCaptureNotification": true,
"showInputCancellationNotification": false,
"enableTemplatePropertyTypes": false,
"ai": {
"defaultModel": "Ask me",
"defaultSystemPrompt": "As an AI assistant within Obsidian, your primary goal is to help users manage their ideas and knowledge more effectively. Format your responses using Markdown syntax. Please use the [[Obsidian]] link format. You can write aliases for the links by writing [[Obsidian|the alias after the pipe symbol]]. To use mathematical notation, use LaTeX syntax. LaTeX syntax for larger equations should be on separate lines, surrounded with double dollar signs ($$). You can also inline math expressions by wrapping it in $ symbols. For example, use $$w_{ij}^{\text{new}}:=w_{ij}^{\text{current}}+etacdotdelta_jcdot x_{ij}$$ on a separate line, but you can write \"($eta$ = learning rate, $delta_j$ = error term, $x_{ij}$ = input)\" inline.",
"promptTemplatesFolderPath": "",
"showAssistant": true,
"providers": [
{
"name": "OpenAI",
"endpoint": "https://api.openai.com/v1",
"apiKey": "",
"models": [
{
"name": "text-davinci-003",
"maxTokens": 4096
},
{
"name": "gpt-3.5-turbo",
"maxTokens": 4096
},
{
"name": "gpt-3.5-turbo-16k",
"maxTokens": 16384
},
{
"name": "gpt-3.5-turbo-1106",
"maxTokens": 16385
},
{
"name": "gpt-4",
"maxTokens": 8192
},
{
"name": "gpt-4-32k",
"maxTokens": 32768
},
{
"name": "gpt-4-1106-preview",
"maxTokens": 128000
},
{
"name": "gpt-4-turbo",
"maxTokens": 128000
},
{
"name": "gpt-4o",
"maxTokens": 128000
},
{
"name": "gpt-4o-mini",
"maxTokens": 128000
}
],
"autoSyncModels": false,
"modelSource": "modelsDev"
},
{
"name": "Gemini",
"endpoint": "https://generativelanguage.googleapis.com",
"apiKey": "",
"models": [
{
"name": "gemini-1.5-pro",
"maxTokens": 1000000
},
{
"name": "gemini-1.5-flash",
"maxTokens": 1000000
},
{
"name": "gemini-1.5-flash-8b",
"maxTokens": 1000000
}
],
"autoSyncModels": false,
"modelSource": "modelsDev"
}
]
},
"migrations": {
"migrateToMacroIDFromEmbeddedMacro": true,
"useQuickAddTemplateFolder": true,
"incrementFileNameSettingMoveToDefaultBehavior": true,
"mutualExclusionInsertAfterAndWriteToBottomOfFile": true,
"setVersionAfterUpdateModalRelease": true,
"addDefaultAIProviders": true,
"removeMacroIndirection": true,
"migrateFileOpeningSettings": true,
"setProviderModelDiscoveryMode": true
}
}

107
.obsidian/plugins/quickadd/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,12 @@
{
"id": "quickadd",
"name": "QuickAdd",
"version": "2.9.4",
"minAppVersion": "1.6.0",
"description": "Quickly add new pages or content to your vault.",
"author": "Christian B. B. Houmann",
"authorUrl": "https://bagerbach.com",
"fundingUrl": "https://www.buymeacoffee.com/chhoumann",
"helpUrl": "https://quickadd.obsidian.guide/docs/",
"isDesktopOnly": false
}

1
.obsidian/plugins/quickadd/styles.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,38 @@
{
"command_timeout": 5,
"templates_folder": "templates",
"templates_pairs": [
[
"",
""
]
],
"trigger_on_file_creation": false,
"auto_jump_to_cursor": false,
"enable_system_commands": false,
"shell_path": "",
"user_scripts_folder": "",
"enable_folder_templates": true,
"folder_templates": [
{
"folder": "",
"template": ""
}
],
"enable_file_templates": false,
"file_templates": [
{
"regex": ".*",
"template": ""
}
],
"syntax_highlighting": true,
"syntax_highlighting_mobile": false,
"enabled_templates_hotkeys": [
""
],
"startup_templates": [
""
],
"intellisense_render": 1
}

3
.obsidian/templates.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"folder": "templates"
}

View File

@ -4,34 +4,73 @@
"type": "split", "type": "split",
"children": [ "children": [
{ {
"id": "bcc68500aa57ead2", "id": "872056d650ad64c5",
"type": "tabs", "type": "split",
"children": [ "children": [
{ {
"id": "929d66922c9fed66", "id": "b7f8453c26dad860",
"type": "leaf", "type": "tabs",
"state": { "dimension": 55.5767397521449,
"type": "markdown", "children": [
"state": { {
"file": "README.md", "id": "35a84624930309b8",
"mode": "source", "type": "leaf",
"source": false, "state": {
"backlinks": true, "type": "markdown",
"backlinkOpts": { "state": {
"collapseAll": false, "file": "01-项目/2025-Obsidian知识架构/项目总结.md",
"extraContext": false, "mode": "source",
"sortOrder": "alphabetical", "source": false,
"showSearch": false, "backlinks": true,
"searchQuery": "", "backlinkOpts": {
"backlinkCollapsed": false, "collapseAll": false,
"unlinkedCollapsed": true "extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
}
},
"icon": "lucide-file",
"title": "项目总结"
} }
}, }
"icon": "lucide-file", ]
"title": "README" },
} {
"id": "a7ba81908abe065f",
"type": "tabs",
"dimension": 44.4232602478551,
"children": [
{
"id": "a7af372f6707ce4a",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "05-原子化笔记本/MaixCam-触摸屏分辨率.md",
"mode": "source",
"source": false,
"backlinks": true,
"backlinkOpts": {
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
}
},
"icon": "lucide-file",
"title": "MaixCam-触摸屏分辨率"
}
}
]
} }
] ],
"direction": "horizontal"
} }
], ],
"direction": "vertical" "direction": "vertical"
@ -64,7 +103,7 @@
"type": "search", "type": "search",
"state": { "state": {
"query": "", "query": "",
"matchingCase": false, "matchingCase": true,
"explainSearch": false, "explainSearch": false,
"collapseAll": false, "collapseAll": false,
"extraContext": false, "extraContext": false,
@ -196,6 +235,7 @@
}, },
"left-ribbon": { "left-ribbon": {
"hiddenItems": { "hiddenItems": {
"templater-obsidian:Templater": false,
"switcher:打开快速切换": false, "switcher:打开快速切换": false,
"graph:查看关系图谱": false, "graph:查看关系图谱": false,
"canvas:新建白板": false, "canvas:新建白板": false,
@ -209,23 +249,44 @@
"zk-prefixer:创建时间戳笔记": false "zk-prefixer:创建时间戳笔记": false
} }
}, },
"active": "929d66922c9fed66", "active": "35a84624930309b8",
"lastOpenFiles": [ "lastOpenFiles": [
"202512271849.md", "01-项目/2025-Obsidian知识架构/项目配置.md",
"未命名 3.md", "01-项目/2025-MaixCam竞赛版/项目需求.md",
"README.md", "01-项目/2025-MaixCam竞赛版/项目配置.md",
"未命名 4.md", "02-领域/MaixCam/领域知识地图.md",
"未命名 5.md", "01-项目/2025-MaixCam竞赛版/项目Bug清单.md",
"未命名 2.md", "05-原子化笔记本/MaixCam-自定义开机启动画面.md",
"未命名 1.md", "templates/模板-原子化笔记.md",
"05-原子化笔记本/MaixCam-触摸屏分辨率.md",
"00-临时碎片文件夹/20251231-备忘-MaixCam修改开机启动画面logo.md",
"快速检索.md",
"00-临时碎片文件夹/251231-Bug-MaixCam竞赛版-直线算法功能缺陷.md",
"templates/模板-学习笔记.md",
"02-领域/DataView/领域知识地图.md",
"02-领域/MaixCam",
"02-领域/MaixPy/领域知识地图.md",
"未命名.md", "未命名.md",
"attachments/Recording 20251227184533.m4a", "02-领域/知识架构/领域知识地图.md",
"attachments/Recording 20251227184524.m4a", "01-项目/2025-MaixCam竞赛版/项目总结.md",
"未命名", "00-临时碎片文件夹/20251231-需求-MaixCam竞赛版-开机Logo更换.md",
"202512271845.md", "00-临时碎片文件夹/20251231-需求-MaixCam竞赛版-程序控制-检测框配置.md",
"202512271846.md", "00-临时碎片文件夹/20251231-需求-MaixCam竞赛版-参数调试-检测框配置.md",
"00-临时碎片文件夹/灵感-知识架构-目录配置.md",
"05-原子化笔记本/DataView-文件夹下”需求“开头的文件.md",
"05-原子化笔记本/知识架构-目录配置.md",
"05-原子化笔记本/知识架构-标签配置.md",
"templates/模板-需求.md",
"接口文档-用户数据查询.md",
"attachments/Pasted image 20251231090751.png",
"attachments", "attachments",
"202512271844.md", "01-项目/2025-MaixCam竞赛版/需求子文件",
"未命名.base" "02-领域/DataView",
"01-项目/2025-MaixCam竞赛版",
"02-领域/OpenCV",
"02-领域/MaixPy",
"01-项目/2025-MaixCam竞赛版",
"02-领域/知识架构",
"01-项目/2025-Obsidian知识架构"
] ]
} }

View File

@ -0,0 +1 @@
- 触摸屏菜单错位 -- [[MaixCam-触摸屏分辨率]]

View File

@ -0,0 +1,4 @@
[项目工作空间](https://zentao.juecha.fun/index.php?m=project&f=index&project=44)

View File

@ -0,0 +1 @@
适配个人开发者的「PARA + 原子化笔记」知识架构

View File

@ -0,0 +1,6 @@
软件Obisian + 第三方插件
同步Git 版本记录 + 云存储备份
- 目录配置 -> [[知识架构-目录配置]]
- 标签配置 -> [[知识架构-标签配置]]

View File

@ -0,0 +1,2 @@
- [[DataView-文件夹下”需求“开头的文件]]

View File

@ -0,0 +1,4 @@
## ui 界面相关
- [[MaixCam-触摸屏分辨率]]
- [[MaixCam-自定义开机启动画面]]

View File

@ -0,0 +1,2 @@
1. [[知识架构-目录配置]]
2. [[知识架构-标签配置]]

View File

@ -0,0 +1,18 @@
#领域/DataView
## 模板变更
- 20251230(`v1.0.0`):模板创建
# 核心定义
```plain
编写一个 dataviewObsidian插件 查询的示例,查询出指定文件夹下所有“需求”开头的文件
```
```dataview
table
from "00-临时碎片文件夹"
where startswith(file.name, "需求")
```

View File

@ -0,0 +1,13 @@
#领域/MaixCam
## 核心定义
创建自定义图片替换 `/boot/logo.jpeg`
分辨率552x368
格式:.jpeg
## 最小实现代码
```bash
# 上传 new_logo.jpeg 到 /root/new_logo.jpeg
/boot/make-logo.sh /root/new_logo.jpeg /boot/logo.jpeg
```

View File

@ -0,0 +1,35 @@
#领域/MaixCam
## 核心定义
触摸屏支持分辨率为 552 x 368 分辨率,菜单控件的更新操作和屏幕显示之间不建议插入其他代码,以免菜单显示错位
## 最小实现代码
```python
from maix import touchscreen
ts = touchscreen.TouchScreen()
x, y, pressed = ts.read()
```
## 样例程序
```python
from maix import touchscreen, app, time, display, image
ts = touchscreen.TouchScreen()
disp = display.Display()
img = image.Image(disp.width(), disp.height())
def menu_update(img):
    img.draw_string(8, 12, "< Exit", image.COLOR_WHITE)
    img.draw_rect(0, 0, 100, 100,  image.COLOR_WHITE, 2)
while not app.need_exit():
    x, y, pressed = ts.read()
    if x > 0 and x < 100 and y > 0 and y < 100:
        app.set_exit_flag(True)
   
    menu_update(img) # 更新菜单
    disp.show(img) # 屏幕显示
```

View File

@ -0,0 +1,20 @@
#领域/知识架构 #知识点/配置
### 1. 标签分类与格式(仅使用以下标签,不新增)
| | | | |
| -------- | ---------------------------- | -------------- | ------------------------ |
| 标签类型 | 标签格式示例 | 适用文件类型 | 核心规则 |
| 临时碎片类型标签 | #临时/Bug#临时/灵感#临时/备忘#临时/杂记 | 00-临时碎片下所有文件 | 仅选1个不叠加固定4类不新增 |
| 资源类型标签 | #资源/待学#资源/灵感#资源/工具#资源/资料 | 03-资源下所有文件 | 仅选1个不叠加固定4类不新增 |
| 领域标签 | #领域/Flask/路由#领域/数据库/SQLite | 05-原子化笔记、03-资源 | 格式「#领域/主领域/细分场景」;精准到细分场景 |
| 知识点类型标签 | #知识点/Bug解决#知识点/配置#知识点/经验 | 05-原子化笔记 | 仅选1个不叠加固定3类不新增 |
| 归档标签 | #归档 | 04-归档下所有文件 | 原有标签+#归档;便于筛选归档内容 |
### 2. 标签使用规则(硬性要求)
1. 每个文件最多添加「2个标签」类型标签+领域标签),不堆砌;
2. 原子化笔记必须包含「领域标签+知识点类型标签」;
3. 临时碎片必须包含「临时类型标签」(无需领域标签);
4. 资源必须包含「资源类型标签+领域标签」;
5. 归档文件在原有标签基础上添加「#归档」标签,不删除原有标签。

View File

@ -0,0 +1,32 @@
#领域/知识架构 #知识点/配置
```Plain
📂 个人知识体系Obsidian库根目录
├─ 📂 01-项目Projects正在开发/维护的项目(行动导向)
│ ├─ 📂 项目1Flask简易博客真实项目
│ │ ├─ 项目需求.md用原有需求模板
│ │ ├─ 项目配置.md用原有配置模板
│ │ ├─ 项目Bug清单.md关联原子化Bug笔记
│ │ └─ 项目总结.md关联所有相关知识点
│ └─ 📂 项目2Python Todo工具真实项目
├─ 📂 02-领域Areas长期深耕的技术领域知识导向
│ ├─ 📂 领域1Flask关联该领域所有原子化笔记
│ ├─ 📂 领域2Python基础
│ ├─ 📂 领域3Web开发HTTP、HTML、CSS
│ └─ 📂 领域4数据库SQLite、MySQL
├─ 📂 03-资源Resources待学习/参考的资料(素材导向)
│ ├─ 待学教程Flask高级特性.md关联领域1
│ ├─ 工具手册Git常用命令.md跨领域通用
│ └─ 灵感库:个人项目创意.md
├─ 📂 04-归档Archive已完成的项目/过时的知识(沉淀导向)
│ ├─ 归档项目2024-Flask虚拟演练前期虚拟项目
│ └─ 归档知识Python2.x语法过时知识
└─ 📂 05-原子化笔记库Zettelkasten核心所有可复用的单一知识点
├─ 笔记1Flask路由显式声明methods.md领域1
├─ 笔记2HTTP状态码405原因与解决.md领域3
├─ 笔记3SQLite连接check_same_thread参数.md领域4
└─ 笔记4Git提交规范feat/fix/docs.md跨领域
```
- 目录无嵌套(最多 1 层子文件夹如「01-项目 / 2024-Flask Todo 工具」),禁止多层嵌套(如「项目 / Flask/ Todo / 配置」);
- 领域文件夹内仅放 1 个文件:「领域知识地图.md」作用是「聚合该领域所有原子化笔记」仅放链接 + 简短说明,不重复写知识点)

View File

@ -1 +0,0 @@
# 知识库

View File

@ -0,0 +1,18 @@
#临时/Bug
## 模板变更
- 20251230新增待修订版本
- 20251230模板创建
待修订版本:`xxx-v`
## 一、原始Bug记录
...(原有内容)
## 二、信息检索操作
...(原有内容)
## 三、提问优化内容
...(原有内容)
## 四、AI解答核心内容新增区块极简记录
...(原有内容)

View File

@ -0,0 +1,2 @@
## 最近变更
- 20251230模板创建

View File

@ -0,0 +1,39 @@
#领域/MaixCam
## 模板变更
- 20251230(`v1.0.0`):模板创建
## 核心定义
触摸屏支持分辨率为 552 x 368 分辨率,菜单控件的更新操作和屏幕显示之间不建议插入其他代码,以免菜单显示错位
## 最小实现代码
```python
from maix import touchscreen
ts = touchscreen.TouchScreen()
x, y, pressed = ts.read()
```
## 样例程序
```python
from maix import touchscreen, app, time, display, image
ts = touchscreen.TouchScreen()
disp = display.Display()
img = image.Image(disp.width(), disp.height())
def menu_update(img):
    img.draw_string(8, 12, "< Exit", image.COLOR_WHITE)
    img.draw_rect(0, 0, 100, 100,  image.COLOR_WHITE, 2)
while not app.need_exit():
    x, y, pressed = ts.read()
    if x > 0 and x < 100 and y > 0 and y < 100:
        app.set_exit_flag(True)
   
    menu_update(img) # 更新菜单
    disp.show(img) # 屏幕显示
```

View File

@ -0,0 +1,2 @@
## 最近变更
- 20251230模板创建

View File

@ -0,0 +1,2 @@
## 最近变更
- 20251230模板创建

View File

@ -0,0 +1,28 @@
#临时/备忘
## 模板变更
关联模板:[[模板-需求]]
- 20251231(`v1.0.4`):增加核心信息(需求描述、初步评估、关联资源)
- 20251231(`v1.0.3`):增加关联模板
- 20251230(`v1.0.2`):增加基础信息
- 20251230(`v1.0.1`):增加版本、修订版本字段
- 20251230(`v1.0.0`):模板创建
## 基本信息
### 环境依赖
分界版本:`config-debug-v1.0.4`
### 需求描述
增加**上一个**和**返回**按钮
### 初步评估
在菜单配置项中添加两个固定按钮,并关联点击事件,预估开发 1 工时
### 关联资源
- [[01-项目/2025-MaixCam竞赛版/项目需求|项目需求]]

14
快速检索.md Normal file
View File

@ -0,0 +1,14 @@
# 核心定义
```plain
编写一个 dataviewObsidian插件 查询的示例,查询出指定文件夹下所有“需求”开头的文件
```
```dataview
LIST
FROM "00-临时碎片文件夹"
```