03月20日
一、今日完成情况
- 快速在ubuntu部署docker CLI,并且快速把dify工作流部署上。–尚未了解如何监控Google邮箱的方法。
- 了解并发和异步的基本概念,正在完成当中~~~ 尚未完全理解
- 尝试快捷键在Obsidian当中创建快捷键,失败,QuickAdd插件无法实现。成功,使用自定义脚本实现。
- 部署14B模型,并且完成基本的尝试,下一步是测试数据抽取的效率和时间。
- 了解IRK框架的信息梳理价值,我需要思考未来对于我信息整理的意义
- 配置完成一个QuickAdd,实现快捷键复制选中文件路径,我早就想要实现了,因为在终端当中我需要管理很麻烦如果没有快捷键。option + command + C实现复制。
二、今日感悟
- 核心业务数据:
- 稀碎,事情干的稀碎,一点都不系统化,单线程总是被中断切回,效率极低,一事无成。
- 今日工作总结:
- 稀碎,没啥好总结的,我先干完一件事情再说,先把Obsidian的JavaScript语法导入学习,从而实现自动化快捷键的自定义吧。
- 今天观看了圆方的公众号,关于自己的能量管理有了新的理解。之前仅仅是对于时间管理有感觉,现在对于自己的精力管理也是有了解的了,自己的精力是有限的,没有精力的情况下,时间再多都是没质量的,因此自己需要有意识的节约精力,减少耗能的决策和选择。
- 明日工作计划:
- 需要陪客人,上午可以看一下大模型并发抽取数据。
- 今日学习成长:
- 无
三、备注
- 已完成–完成GLM和KiMi模型 opencode相关CLI的测试,查看其效果/codex openai 产品business尝试,对比效果。 截止日期:无
- 预定–华尔街AI发展推演没有系统化了解,导出为图谱的形式,导出笔记,进行理解。 截止日期:3月20日 预计时间:1h
- 预定–老大的论文阅读还是没有完成,这里需要花点时间梳理其算法逻辑。 截止日期:3月22日 预计时间:~~
- 预定–完成dify工作流本地游戏本部署服务。
- 预定–完成Google自动检测邮件,并且实现自动化脚本
- 预定–完成实验室项目数据抽取,打通同步抽取线程
- 预定–完成国内云服务器中转配合nomachine,实现稳定的访问,我这个节点需要打通来,然后测评一下3M带宽的效果,是否会卡顿。
- 预定–关于异步async背后的原理完全不清楚,需要梳理清楚图谱,作为笔记[[2026-03-20 15.55.08-异步并发示意图.excalidraw]]
- 预定–测试不少于3个的QuickAdd高阶用法,查看是否可以成为生产力 –正在完成 1/3
四、docker快速部署
docker到目前为止我已经部署了不少于10次了,从一开始看文档,安装桌面版,联网报错,解决很久,到现在,我只需要快速使用CLI配置,配置代理文件夹,直接打通网络,使用3min就完成了。 ^19d7fb
我还是成长了,一年前,我还在死磕docker的桌面版网络问题,一年后的今天,我三下五除二就搞定了。这个是需要沉淀的,是通过和linux朝夕相处,最后找到的熟悉感。
现在我记录一下快速部署的指令,未来如果搞不懂了,什么地方出问题了,重新安装也只需要3min。
以下是在 Ubuntu 24.04 (Noble Numbat) 上安装 Docker Engine 的标准指令:
1. 卸载旧版本(可选)
如果你的系统之前安装过旧版本的 Docker(如 docker.io 或 docker-doc),建议先清理:
Bash
sudo apt-get remove docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc
2. 设置 Docker 仓库
我们需要先安装必要的依赖,并添加 Docker 的官方 GPG 密钥和软件源。
Bash
# 更新索引并安装依赖
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg -y
# 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 将 Docker 软件源添加到 Apt sources
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 再次更新索引
sudo apt-get update
3. 安装 Docker 组件
这一步会安装最新的 Docker Engine、命令行工具(CLI)、容器运行时以及 Docker Compose 插件。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
4. 开发者必做:免 sudo 配置
默认情况下,运行 docker 命令需要 sudo 权限。为了开发方便,我们通常将当前用户加入 docker 用户组:
# 创建 docker 用户组(通常安装时已自动创建)
sudo groupadd docker
# 将当前用户加入该组
sudo usermod -aG docker $USER
# 激活组更改(或者直接注销并重新登录系统)
newgrp docker
5. 验证安装
运行经典的 hello-world 镜像来确认一切正常:
docker run hello-world
为什么开发者偏爱 CLI 而非 Desktop?
| 特性 | Docker Engine (CLI) | Docker Desktop (Linux) |
|---|---|---|
| 架构 | 原生运行,直接调用宿主机内核 | 运行在虚拟机中 (QEMU/KVM) |
| 性能 | 极高性能,资源占用极低 | 有额外的虚拟化开销 |
| 网络 | 与宿主机网络直接互通,配置简单 | 经过虚拟网桥,复杂网络调试麻烦 |
| 一致性 | 与服务器、CI/CD 环境操作完全一致 | 仅适合本地开发演示 |
6. 创建 Docker 服务的配置目录
sudo mkdir -p /etc/systemd/system/docker.service.d
7. 创建并编辑代理配置文件
使用你喜欢的编辑器(如 nano 或 vim)创建配置文件:
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
8. 写入代理配置
将以下内容粘贴进去(请确保端口与你的 7897 一致):
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7897"
Environment="HTTPS_PROXY=http://127.0.0.1:7897"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
注意:如果你是在宿主机(Ubuntu)上直接运行代理软件,使用
127.0.0.1通常没问题。如果你在虚拟机或复杂的网络环境中,可能需要换成宿主机的局域网 IP。
9. 刷新配置并重启 Docker
你需要告诉 systemd 配置文件变了,并重启服务生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
10. 验证是否生效
你可以通过以下命令查看 Docker 的环境变量:
docker info | grep Proxy
如果能看到 Http Proxy 和 Https Proxy 的输出,说明配置成功了。现在再试一次:
docker run hello-world
方法 A(最快):执行 newgrp docker。这会在当前终端立即刷新权限。把用户加入 docker 组在功能上等同于授予了 root 权限。因为 Docker 容器可以挂载宿主机的根目录。
newgrp docker
五、docker 快速部署dify项目:
1. 启动项目(“加入”项目)
如果你是拿到别人的代码(带 docker-compose.yaml),最常用的就是这一组:
| 命令 | 说明 |
|---|---|
docker compose up -d |
最常用。在后台启动整个项目的所有服务。 |
docker compose ps |
查看当前项目下所有容器的运行状态。 |
docker compose logs -f |
实时查看项目日志(排错必用)。 |
docker run -d --name <名> <镜像> |
启动一个独立的孤立容器(不属于 Compose 项目)。 |
2. 停止与删除项目(“清理”空间)
A. 针对 Docker Compose 项目
开发者最容易堆积垃圾镜像和容器,这组指令是保持系统清爽的关键:
# 停止并删除项目中的容器、网络(但保留镜像和挂载的数据卷)
docker compose down
# 彻底删除:停止容器,并删除镜像、网络、以及【匿名数据卷】
docker compose down --rmi all -v
B. 针对单容器
# 停止容器
docker stop <容器ID或名称>
# 删除容器
docker rm <容器ID或名称>
# 删除镜像
docker rmi <镜像ID或名称>
3. 开发者“一键回血”指令(高频必记)
有时候折腾久了,系统里全是无用的中间镜像和停止的容器,直接用这招:
# 自动清理所有:已停止的容器、未使用的网络、悬空的镜像(<none> 镜像)
docker system prune
# 如果想连没用的数据卷(Volume)也一起删了(慎用,数据会丢)
docker system prune -a --volumes
六:qwen 14B模型
启动方式:
VLLM_USE_V1=0 CUDA_VISIBLE_DEVICES=1 python -m vllm.entrypoints.openai.api_server --model /root/models/Qwen3-30B-A3B-Instruct-2507 --served-model-name qwen3 --tensor-parallel-size 1 --gpu-memory-utilization 0.9 --max-model-len 8192 --trust-remote-code --enforce-eager --host 0.0.0.0 --port 8000
七、QuickAdd插件创建文件夹目录
1、背景
我需要再学习python的时候,使用快捷键在Obsidian当中创建文件夹,可是每次都要手动点击,我现在需要达成的目标就是,快捷键创建以日期为名字的 文件夹路径,节约我的时间,接下来我要开始实践了。
2、实践方法梳理
使用QuickAdd插件当中的,macro插件即可,我当时找了半天没找到,只看到template的选项,我还以为只有这个功能呢:
下面选择这个macro功能之后,我们需要编辑js脚本,使用AI编写的这个创建文件夹的方法代码:
module.exports = async (params) => {
// ================== 【修改这里】 ==================
const baseDir = "你的对应目录"; // 例如:"Daily" 或 "Archives" 或留空 ""(根目录)
const dateFormat = "YYYY-MM-DD"; // 修改格式:YYYY-MM-DD / YYYY/MM/DD / YYYY年MM月DD日 等
// ================================================
const dateFolderName = moment().format(dateFormat); // 当前日期
let folderPath = dateFolderName;
if (baseDir) {
folderPath = `${baseDir}/${dateFolderName}`;
}
const vault = app.vault;
if (!vault.getAbstractFileByPath(folderPath)) {
await vault.createFolder(folderPath);
new Notice(`✅ 已创建日期文件夹:${folderPath}`, 3000);
} else {
new Notice(`文件夹已存在:${folderPath}`, 3000);
}
};
唯一需要修改的就是这里的目录创建位置,位置修改为相对路径,因此我这里修改为我的笔记/编程/python, 修改完毕之后,我们开始创建macro文件。
这里使用我们自己编写的脚本,按下browse,就可以检测到了,然后再script文件夹当中,其实是可以自动检测到的,我们选择就可以了,然后按下保存。
绑定快捷键
- 设置 → 快捷键
- 搜索 QuickAdd: 创建日期文件夹(或你起的宏名)
然后我这里QucikAdd统一使用的是option(alt)+ 按键 的形式,因为这次的快捷键是快捷生成python笔记的作用,因此是 option + P就可以了。
效果展示如上,非常丝滑。虽然我这里只是一个非常简单的功能,可是我才发现这个插件的灵活性远高于我的想象,其给了我们超高的自主性,因为代码完全可以自主编写,可以玩的方法也有很多,我现在开一个小坑,看看还有什么“花里胡哨”的功能,或许可以满足我的需求,提高生产力。
八、Obsidian笔记语法–双向链接
今天学习了obsidian双向链接的基本使用方法,记录一下方便查看:
- 链接到某一篇笔记:[[ ]]
- 链接到某一篇笔记中的某个标题:[[ # ]]
- 链接到某一篇笔记中的某个段落(块):[[ # ^ ]]
- 为链接创建定义(关键词):[[ | 关键词]]
- 链接到外部文件如印象笔记:[关键词](链接)
这么重要的内容我居然到今天才知道天哪,早就该知道了,这样就可以优化笔记跳转了呀。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 kipleyarch@gmail.com