站点简介
这里是我的个人技术学习空间,用来整理日常开发与运维过程中遇到的问题、验证过的方案和读源码时的笔记。
内容主要围绕三条线:后端服务的接口与任务编排、把服务部署到服务器上的那一层工程实践、以及 AI Agent 这类新东西在真实业务里怎么落地。写作原则是只记录自己动手跑通过的东西,尽量写清「为什么这样做」和「哪里会踩坑」,不转抄文档。
分类
最新笔记
-
自建 Gitea 与 Nginx 反向代理:从 502 到可访问
在 2 核 2G 的轻量云服务器上用 Nginx 前置 Gitea,记录端口规划、反向代理头设置,以及 502 的几条常见排查路径。
-
FastAPI + LangGraph:把 Agent 编排拆成可观测的节点
状态图里每个节点只做一件事,用统一的 trace 字段把一次会话串起来,调试和回放才变得可行。
-
CentOS 7 上给 Gitea 配 Git 2.x:源码编译踩坑记录
系统自带的 git 1.8 不满足要求,从镜像下载源码编译 2.43,记录 GCC 版本与老依赖带来的三类失败。
-
同一套 DAO 兼容 SQLite 与 PostgreSQL 的几条约定
个人部署用 SQLite、团队部署用 PostgreSQL,抽象层其实只需要在占位符、自增主键和时间类型上做统一。
-
Vite dev server 的 allowedHosts:域名反代访问 403 的成因
Vite 5 之后默认只放行本机 Host,前面挂一层 Nginx 或内网穿透时,要在 server 配置里显式加白名单。
-
Agent 可观测性:一次会话该记录哪些字段
会话标识、轮次、节点名、耗时、token 用量、工具调用参数与结果,缺一项排查时就得靠猜。
-
mitmproxy + Frida 定位客户端请求签名的一般流程
先抓包看请求形态,再静态定位签名函数,最后动态验证。三步走比一上来硬啃二进制高效得多。
-
systemd 托管自建服务:重启策略与日志落盘
Restart=always 配合 RestartSec,journald 与文件日志各有取舍,注意 User 与工作目录的权限边界。
-
Master-Worker 集群的调度与心跳设计
同质 Worker 的心跳分级、任务租约与超时回收,是集群在节点抖动时不重复执行任务的关键。
-
LangGraph 状态机里的重试与超时控制
重试放在节点内还是边上有讲究,跨节点的重试需要把中间状态一并持久化,否则回放会失真。
-
SQLite 在中等写入量下的 WAL 调优
开启 WAL 并调整 synchronous 与 busy_timeout 之后,单机写入阻塞的情况明显减少。
-
Let's Encrypt 签发失败的常见原因排查清单
HTTP-01 走不通先看公网是否被劫持或跳转;DNS-01 则重点检查 API 凭据权限与解析生效时间。