Skip to content
Archives

Archives

All posts ordered by publication date.

26

2026

从 Loop 到 Graph:Agent 开始学习如何协作

Graph Engineering 不是又一个框架名,而是一种组织复杂 Agent 任务的方式:把任务拆成节点,用边决定顺序和分支,用状态保存进度、产物和失败位置。

从 WordPress 到 Astro:这次我为什么这样选

这次重做个人站,我没有追求最多的功能,而是围绕写作、作品展示和 VPS 运维重新确定了一套足够简单、可以长期维护的技术栈。

编辑器加 AI,还是 agent 当主角:我跑过 Zed、Cursor、ZCode 之后的分野

圈内 2026 年在聊一批 AI-native GUI 工具,常常混着说。这篇不转述,记我实机用过 Zed、Cursor、ZCode 之后,对'编辑器加 AI'和'agent 为中心'这条分野的真实体感,以及它怎么治了我'一条线升级'的误区。

我不 prompt 了,我开始写 loop

圈内 2026 年 6 月在聊 Loop Engineering——'别再亲自 prompt agent,去设计替你 prompt 的 loop'。这篇不转述概念,记我用 /goal + Stop hook 真跑了一遍 39 篇博客改造之后,对'写 loop'这件事形成的判断。

241 天、39 篇:从'我知道'到'我经历过'

写这篇时首页翻页时钟显示已在线 241 天。从去年十月开博到现在三十九篇,是一条完整的成长线。趁这个节点回头看看——变的是技术栈,不变的是什么。

我为什么还在做自己的个人网站

这里不是一份静态简历,而是我把正在学习、使用和判断的东西整理成可访问记录的地方。

把自建服务发到公网之前:域名、源码和管理入口会泄露什么

公开一个链接后,别人看到的不只是页面。域名、历史 DNS、源站端口、前端代码和管理入口会连成一条暴露链,发布前应逐层检查。

Tunnel 让服务能访问,Access 决定谁能访问

Cloudflare Tunnel 把内网服务接到公网,但它不负责识别访问者。公开主页、管理后台、OAuth 回调和部署接口需要按路径建立不同边界。

容器镜像拉不下来时:从代理、同步到离线交付

有网、受限网和完全离线环境需要的不是同一条命令。把镜像获取当成交付链路,才能在代理缓存、私有仓库和 save/load 之间选对方案。

VLESS + REALITY 一定要用 443 吗?端口选择与复用边界

VLESS + REALITY 不绑定 443 端口。真正需要弄清的是端口可达性、监听冲突、反代复用和 Cloudflare 代理边界,而不是把 443 当成协议要求。

别再把 VLESS、REALITY 和 Xray 当成一件事:代理栈分层

VMess、VLESS、Trojan、TLS、REALITY、XTLS 和 Xray 经常被放在一张对比表里,但它们不在同一层。先把实现、协议、传输和握手拆开,选型才不会混乱。

部署不是一串步骤:我把它拆成了八件事

每加一个新服务该想什么?我把部署拆成八个独立的面——可达、守护、防护、可观测、配置密钥、变更、数据、运维入口。这篇解释框架怎么来、每面问什么,以及为什么分面比抄清单更贴自己的规模。

读到 Karpathy 的 LLM Wiki 时,我对照了自己的 RAG

2026 年 4 月 Karpathy 发了个叫 llm-wiki 的 gist,圈里开始聊'RAG 要被取代了吗'。这篇不转述它,记我读到其中等规模的示例后,回头量了自己的知识库,发现自己之前把 RAG 当默认答案是过度工程,以及最后形成的判断。

我把什么交给了 AI,边界在哪:用 AI 搭子的半年复盘

这大半年身边一直有个 AI 搭子。它帮我省了很多时间,也差点让我变懒。这篇不讲'怎么用 AI',讲我把什么交给了它、边界划在哪、两次栽跟头之后我形成的规则。

拿 YouTube 架构当镜子:照我这套小站差距在哪

单机能服务几百人,YouTube 服务几十亿。拿它当教材可以,只学概念就变成纯资料。这篇把它当镜子——照出我这套小站每一层差距在哪、哪些该补、哪些这规模根本不该碰。

一个请求的七层旅程:把我会的技术串成一套系统

学过的技术像拼图。这篇把它们串成一张图:一个请求从浏览器到数据库再回来,经过的每一层都是亲手搭过的。串起来之后,对「系统」的理解变了什么,出了问题又该从哪层查起。

从'抄下来'到'讲得出':我摸索出来的笨办法

大半年学了一堆东西,回头看真正记住的都不是抄过的,而是讲出来过的。这篇不讲方法论,讲我怎么从'狗熊掰玉米'改过来的,以及为什么慢反而是另一种快。

从「开端口放行」到「主动出站」:我换用 Cloudflare Tunnel 之后多想了什么

把域名接进 Cloudflare、用 Tunnel 做零端口发布。重点不是怎么配,而是我当初怎么理解可达、后来哪里想偏了,以及「主动出站」之后我对整套工作流怎么重新分了面。

GitHub Actions:手动迟早翻车,但自动化也要管密钥

每次改完代码手动 SSH 拉代码、重启服务,改一行文案也得走一遍流程。这篇不讲 Actions 大全,讲我为什么判定手动迟早翻车、第一次 pipeline 红了怎么查,以及密钥纪律。

Let's Encrypt:免费证书,和它逼我接受的「自动续期」心智

有了域名和反代,最后一步是 HTTPS。这篇不讲 certbot 大全,讲 90 天有效期逼我接受的心智,以及为什么续期必须先 dry-run 演练。

Nginx 反向代理:站在所有服务前面的门卫,和那个末尾斜杠

服务跑在 8000、8080,直接暴露既难看又难管。这篇不讲配置大全,讲浏览器不该直连后端、proxy_pass 末尾斜杠那个绊脚点,以及「先验后发」的 reload 纪律。

把 Spring Boot 容器化部署:串成一条链,和那次「能跑不懂」的债

学了 Java、Docker、Nginx,这篇把它们串成一条部署链。不讲部署清单,讲多阶段构建那次我借的、后来还的债,以及端口只绑回环这个防护判断。

ufw + fail2ban:把门关严实,两层各挡一类

SSH 加固之后,网络层是最后一块。这篇不讲怎么配大全,讲我为什么用两层、它们各挡什么,以及「启用前先放行 SSH」的活路纪律。

systemd:从「能用」到「能信赖」,中间差一个守护

一开始我用 nohup 裸跑程序,关掉终端还能跑,但进程崩了不会自己起来。这篇不讲 unit 大全,讲我为什么判定「裸跑不算上线」,以及守护这一面站的位置。

我每天真的会敲的那几条 Linux 命令

Linux 命令成千上万,日常管服务器真正高频的就那么几组。这篇不堆大全,只记我每天真的会敲的,以及为什么是这几组——对应「喘不喘、谁占了、日志说什么」三件事。

SSH 加固:把钥匙留在自己手里

VPS 一接公网,几分钟内就有人来试密码。这篇不讲 SSH 大全,讲我为什么选 ed25519、为什么改端口值得,以及「改配置别关当前会话」的退路纪律。

买人生第一台 VPS:我在挑什么,到手先做什么

代码写了几个月一直跑在本机。这篇不讲 VPS 怎么买,讲我作为练手机在挑什么、为什么不上高配,以及到手那三件事的顺序我为什么这么排。

Docker Compose:为什么我不手敲一串 docker run

真实项目很少只有一个容器。这篇不讲 Compose 语法大全,讲我用手敲 docker run 翻过什么车、为什么把整套服务写进一个 yml,以及那条差点把数据删没了的教训。

Docker:治「我机器上能跑」这桩老案子

装服务装到后面,系统里 Python、Java 各种库混在一起,依赖打架。这篇不讲 Docker 命令大全,讲它到底在解决什么——以及为什么我说它是 venv 那条线的延续。

深夜的 bug、咖啡馆的下午:关于'跳过最直接的线索'

两篇关于 debug 玄学的合成一篇。它们的底子是同一个偏差:跳过最直接的线索,去查更'高级'的可能。这篇记我浪费的那两个半小时、真正让我冷静的那两分钟,以及后来我刻进直觉的排查优先级。

当过前端被不统一坑过之后,我怎么做后端统一返回

接口能返回数据只是第一步。这篇做两件让接口专业起来的事:统一返回结构、集中处理异常。不讲模板,讲我为什么把它当成给前端的契约,以及「给用户看友好、给自己看堆栈」这条判断。

JPA:白送的 CRUD,和它背后的理解缺口

接口有了,让数据落库。这篇用 Spring Data JPA 接 MySQL。不讲怎么配,讲「继承个接口就白送 CRUD」的爽和险——爽在省事,险在我可能根本不懂它在生成什么 SQL。

25

2025

2025 年终:狗熊掰玉米的一年,和开博两个月

一篇没有代码的年终碎念。回看这一年,我学东西像狗熊掰玉米——学一个丢一个。这篇记我怎么意识到这件事,以及开博两个月这件事怎么治它。

Spring Boot 第一个接口:和 FastAPI 对照着看,框架之上不变的是什么

还记得 Python 那边的 FastAPI 接口吗?这篇写一个 Java 版对照。不讲注解清单,讲两种风格差在哪,以及学第二门后端框架最大的收获——开始看见框架之上不变的那些东西。

看懂一个 Spring Boot 项目的骨架:从「文件夹一堆」到「两样东西」

第一次打开 Spring Boot 项目,文件夹一堆不知道从哪看起。这篇不讲 Maven 大全,讲我怎么从被结构吓到,到抓住 pom.xml 和标准目录,以及「约定优于配置」到底在替我省什么。

从 Python 到 Java 的第一周:别扭的不是语法,是思维方式

决定啃 Java。从 Python 转过来第一周是真的别扭。这篇不讲语法清单,讲别扭底下是什么——不是语法要重学,是从「怎么快点写出来」转到「怎么让结构更清晰、更不容易错」。

写一个有礼貌的小爬虫:能抓和该抓是两件事

Python 阶段收尾写个小爬虫。这篇不讲 requests 和 BeautifulSoup 怎么用,讲我对「爬虫的水平不体现在抓得多猛,而在多有分寸」的判断——能抓不代表该抓。

装饰器与 with:我从「黑魔法」到「原来是省这个」的转弯

装饰器和 with 一开始很像黑魔法。这篇不讲语法细节,讲我怎么从「看不懂这层包装」到想清楚:它们就是把横切的重复逻辑从主流程里剥离。

CRUD:我第一次让接口和数据库对上号的那几个判断

光返回死数据不算后端。这篇给接口接上 SQLite。不讲 CRUD 怎么写,讲我为什么选 SQLite 练手、Pydantic 模型替我管了什么,以及「占位符不是图省事」从第一天就该刻进去。

为什么这次写接口我选 FastAPI,不是 Flask

Web 框架一搜一大把。Flask 我写过小工具,Django 用 DRF 做过完整 REST API,这次却选了 FastAPI。这篇不讲怎么用,讲我为什么在这个节点选它、它和 Flask 的取舍差在哪。

为什么我坚持每个 Python 项目一个 venv

学 Python 第一件该养成的习惯不是写代码,是管环境。这篇不讲 venv 语法,讲我往全局装包装出事之后,为什么把「每项目一个 venv」当成新建项目的第一条命令。

Git:我什么时候开始怕「改不回去」的

开始写代码最先撞上的不是语法报错,是改了半天发现思路不对想回滚、文件已经覆盖了。这篇不讲命令大全,讲我什么时候开始养成提交习惯、哪次没提交翻的车,以及分支这块我到现在还偏保守。

开博第一篇:一个安静记录折腾的地方

你好,我是 s1oopX。这是这个博客的第一篇。开博理由很简单:我折腾的东西越来越多,脑子越来越不够用——写下来,是为了下次不用从零开始。

s1oopX

Sign in to s1oopX