2026-03-26

03月26日

一、今日完成情况

  • PPT工作完成,包括技术架构的插入、代码修改写入数据库截图,作为效果展示
  • 完成excalidraw 字体切换和插入的问题,折腾了半天,还是手动配置字体把,虽然不灵活,只能将就了,都怪我不懂js语法。
  • 完成服务器企业微信发送消息的AI机器人 架构设计

二、今日感悟

  • 核心业务数据​:
    • PPT完成,来到实验室配置excalidraw插件字体。
  • ​今日工作总结:​
    • 完成PPT三页制作(技术架构图插入、代码效果截图展示),从33%推进至100%
    • 解决Excalidraw字体问题,批量导入失败后采用手动配置方案(受JS语法限制)
    • 完成个人学习管家项目架构设计,包括资源分工、技术方案、实施路径四个部分
    • 确定轻量化技术栈:腾讯云2核4G + DeepSeek API + Obsidian(Git) + MongoDB
    • 设计双知识库架构:Obsidian存储静态知识(99_AI_Knowledge_Base/)+ MongoDB存储动态对话和任务状态
  • ​明日工作计划:​
    • 服务器环境搭建:SSH连接腾讯云,创建目录结构(obsidian_vault/scripts/logs)
    • 配置Git同步:配置SSH Key,Clone Obsidian仓库,编写自动同步脚本(sync_vault.sh)
    • 编写Python知识检索器(retriever.py):实现第一个可独立测试的知识库读取功能
    • MongoDB部署:安装MongoDB,编写测试脚本验证插入/读取对话记录功能
    • 创建Obsidian知识库目录(99_AI_Knowledge_Base/),添加测试笔记并推送到GitHub
  • **​今日学习成长:​
    • 今天还是梳理了AI机器人管家的实现方案,甚至长期来看,他会越来越懂我,未来在长远一点,他就是第一个为我两声定做的操作系统,训练这样一个AI是让我操作系统更上一个层次的好方法。

三、备注

完成PPT剩余两页

  • 分解第二页、第三页的核心内容
  • 设计内容逻辑与第一页的衔接方案
  • 确保整体PPT叙事连贯、技术表达准确

解决Excalidraw字体问题

  • 方案A:分析今日失败原因,修正Base64编码脚本
  • 方案B:采用单字体逐一导入(人工操作)
  • 预计耗时:1-2小时

待定:

  • 异步并发的学习,提上日程。
  • 确定写入数据和读数据,所对应的数据库是哪几个,我接下来要从哪几个数据库当中抽数据

四、个人学习管家项目架构

设备 / 资源 最终分工 不使用原因
腾讯云 2 核 4G 核心运行:脚本 / 定时任务 / Git 同步 / JSON 存储 主力设备,仅运行轻量服务
DeepSeek API 唯一 AI 大脑(解析 / 规划 / 反馈 / 写作) 国内最稳,适配统一接口
Obsidian+GitHub 双向同步笔记(本地↔云端) 数据持久化,自动同步
Mac / 游戏本 脚本调试 / 查看笔记 不参与核心运行
实验室 A100 进阶备用(后期笔记爆炸再启用) 现阶段完全不需要,极简优先

1、背景

我早就想要实现一个AI个人管家了,因为自己平时学习不够上心,而且在一个学习的项目连续性不够,断断续续的效率就很低,因此我需要有个人经常提醒我接下来做什么,这个做的事情是为接下来的项目和面试准备的,不是我实验室必须要做的事情。

因为实验室必须要做的,上课必须要交的作业,都是不需要AI提醒的,QQ群和老师会找上门来。

可是面向就业的,当前锦上添花的事情,在未来是决定我就业去向的重中之重,因此,我需要搭建未来面向就业的AI管家,可以满足我连续的,系统的学习一个项目,并且和AI反馈,AI实时修改整合我的工作量。

而且,AI需要有实时提醒我的效果,如果提醒不了我,那就没有用,而且AI的提醒需要频繁,个性化。如果我说,我当前实验室的项目是主要矛盾,AI就会知道,我当前有更重要的事情,从而提醒的频率会低一些。

2、架构设计

在需求方面的设计完成之后,我就需要设计这个产品了。

当然巧妇难为无米之炊,我需要根须当前我的资源,可以配置的AI,来选择使用什么方案。

那么主要有,AI的选择,数据库的选择,用户交互的逻辑,AI的提示词等方面。因为我访问的是API,因此,我无法使用大模型微调的方式,修改模型。因为我是轻量的云服务器,因此无法使用向量数据库来存储大量的数据,当然我自己的数据量并不大,AI可以看完的。

AI 永久记住你的背景:JSON 画像每次调用 API 注入,无遗忘;
处理 Markdown 笔记:纯文本处理,无需向量库;
API 模型迭代画像:不微调模型,只更新本地 JSON 文件;
双向同步:企微发消息→AI 记笔记,弥补手动记录缺失;
动态规划:读取日程 / 外部路径,实时修改学习要求;
轻量化运行:2 核 4G 服务器轻松运行,无卡顿。

3、迭代设计

需求plus:我会时不时和AI交互,因此AI是需要我知道最近在干嘛,我和AI交互的内容是应该被保存下来的,这样AI就会知道,最近我因为什么事情,导致XX 学习进度被推迟了,需要针对性的修改任务。

总结:AI需要知道我和他的对话记录,至少最近两周的对话记录是需要读取的。

需求plus:AI需要使用一个外置的学习进度,比如说代码随想录当中、学校论坛当中,有许多当前的同学java上手的路径,这个是需要AI精确读取的,因为只是依靠AI现有的储备,还是无法这么有针对性的,根据当前的就业形势和学习方法,帮我给出建议,因此是不是需要一个外置数据库。

总结:我其实需要两方面的知识库,一个是我对话记录,一个是我觉得重要的,直接放在笔记里,让AI自己去读,所以两个数据库都是需要的Obsidian的文件夹、MongoDB结合起来完成的。

Pasted image 20260326211925

4、最终敲定方案

工具 负责内容 性质 你的操作
Obsidian (Git) 外置知识库 + 个人学习笔记 静态,你是唯一编辑者 本地写笔记,整理资料,Push 到 GitHub
MongoDB 对话历史 + 任务状态机 动态,程序自动读写 不需要你操作,Python 脚本在后台维护
核心理念:
  • Obsidian 是你的 “大脑外挂”:你觉得什么重要,就往里丢什么。
  • MongoDB 是程序的 “日记本”:记录 AI 跟你说了什么,任务完成了没有。

第一步:Obsidian 仓库的目录结构设计(约定大于配置)

在你的 Obsidian 本地仓库里,专门建一个文件夹用来给 AI 看。

  • Python 脚本只读取 99_AI_Knowledge_Base/ 目录下的 .md 文件。
  • 你想让 AI 知道什么,就把文件(或链接)整理到这个文件夹里。

第二步:服务器上的部署与 Git 自动同步

SSH 连上腾讯云,我们把之前的目录结构细化。

cd ~/personal_ai mkdir -p {obsidian_vault,scripts,logs}

Clone 你的 Obsidian 仓库

cd ~/personal_ai/obsidian_vault git clone git@github.com:你的用户名/你的Obsidian仓库.git . # 确保服务器能通过 SSH Key 拉取代码

编写自动拉取脚本 (scripts/sync_vault.sh)

#!/bin/bash
cd ~/personal_ai/obsidian_vault
git fetch --all
git reset --hard origin/main  # 强制覆盖,保证服务器是最新的
echo "Vault synced at $(date)" >> ~/personal_ai/logs/sync_log.txt

设置 Crontab 定时同步

  • 每小时同步一次,或者你每次在本地 Push 完后手动去服务器跑一下脚本(初期开发建议手动)。

第三步:Python 知识检索器 (scripts/retriever.py)

编写python代码,设计检索规则,让python可以选择性的从Obsidian当中,获取到你想要的信息,比如说时间线安排,项目建议等等。

暴力读取 + 关键词模糊匹配 的方案可以考虑,不过这个从长计议,不需要立马想清楚,因为使用向量数据库的方式是非常简单的,使用语义相关性就可以了。

第四步:MongoDB 的极简设计(只存动态数据)

MongoDB 只需要两个 Collection,结构越简单越好。

  1. conversations(存对话,用于上下文回忆):
    • 字段:user_id, role, content, timestamp
  2. task_lifecycle(存任务状态,用于排班):
    • 字段:user_id, task_desc, status, created_at, updated_at, ai_comment
流程图

5、简单上手路径

  1. 本地 Obsidian 操作
    • 建好 99_AI_Knowledge_Base 文件夹,放几篇测试笔记进去,Push 到 GitHub。
  2. 服务器测试 Git Pull
    • 确保服务器能顺利 Clone 并看到你的笔记文件。
  3. retriever.py
    • 这是第一个可以独立测试的脚本,跑通读取本地文件并打印内容。
  4. 接 MongoDB
    • 写个简单的测试脚本,插入一条对话再读出来。

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 kipleyarch@gmail.com
Obsidian