2026-03-20

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.iodocker-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. 创建并编辑代理配置文件

使用你喜欢的编辑器(如 nanovim)创建配置文件:

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 ProxyHttps 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的选项,我还以为只有这个功能呢:

Pasted image 20260320222623

下面选择这个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文件。

Pasted image 20260320223616

这里使用我们自己编写的脚本,按下browse,就可以检测到了,然后再script文件夹当中,其实是可以自动检测到的,我们选择就可以了,然后按下保存。

绑定快捷键

  • 设置 → 快捷键
  • 搜索 QuickAdd: 创建日期文件夹(或你起的宏名)

然后我这里QucikAdd统一使用的是option(alt)+ 按键 的形式,因为这次的快捷键是快捷生成python笔记的作用,因此是 option + P就可以了。

Pasted image 20260320223354

效果展示如上,非常丝滑。虽然我这里只是一个非常简单的功能,可是我才发现这个插件的灵活性远高于我的想象,其给了我们超高的自主性,因为代码完全可以自主编写,可以玩的方法也有很多,我现在开一个小坑,看看还有什么“花里胡哨”的功能,或许可以满足我的需求,提高生产力。

八、Obsidian笔记语法–双向链接

今天学习了obsidian双向链接的基本使用方法,记录一下方便查看:

  • 链接到某一篇笔记:[[ ]]
  • 链接到某一篇笔记中的某个标题:[[ # ]]
  • 链接到某一篇笔记中的某个段落(块):[[ # ^ ]]
  • 为链接创建定义(关键词):[[ | 关键词]]
  • 链接到外部文件如印象笔记:[关键词](链接)

这么重要的内容我居然到今天才知道天哪,早就该知道了,这样就可以优化笔记跳转了呀。


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