<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>s1oopX</title><link>https://s1oopx.bond/</link><atom:link href="https://s1oopx.bond/rss.xml" rel="self" type="application/rss+xml"/><description>s1oopX 的个人技术站，记录桌面工具、AI 工作流、Web 服务与部署实践。</description><language>zh-cn</language><item><title>从 Loop 到 Graph：Agent 开始学习如何协作</title><link>https://s1oopx.bond/posts/graph-engineering-rethink/</link><guid>https://s1oopx.bond/posts/graph-engineering-rethink/</guid><pubDate>Mon, 27 Jul 2026 10:35:00 GMT</pubDate><description>Graph Engineering 不是又一个框架名，而是一种组织复杂 Agent 任务的方式：把任务拆成节点，用边决定顺序和分支，用状态保存进度、产物和失败位置。</description></item><item><title>从 WordPress 到 Astro：这次我为什么这样选</title><link>https://s1oopx.bond/posts/site-stack-selection/</link><guid>https://s1oopx.bond/posts/site-stack-selection/</guid><pubDate>Sun, 19 Jul 2026 12:10:00 GMT</pubDate><description>这次重做个人站，我没有追求最多的功能，而是围绕写作、作品展示和 VPS 运维重新确定了一套足够简单、可以长期维护的技术栈。</description></item><item><title>编辑器加 AI,还是 agent 当主角:我跑过 Zed、Cursor、ZCode 之后的分野</title><link>https://s1oopx.bond/posts/agent-first-gui-rethink/</link><guid>https://s1oopx.bond/posts/agent-first-gui-rethink/</guid><pubDate>Fri, 10 Jul 2026 15:00:00 GMT</pubDate><description>圈内 2026 年在聊一批 AI-native GUI 工具,常常混着说。这篇不转述,记我实机用过 Zed、Cursor、ZCode 之后,对&apos;编辑器加 AI&apos;和&apos;agent 为中心&apos;这条分野的真实体感,以及它怎么治了我&apos;一条线升级&apos;的误区。</description></item><item><title>我不 prompt 了,我开始写 loop</title><link>https://s1oopx.bond/posts/loop-engineering-rethink/</link><guid>https://s1oopx.bond/posts/loop-engineering-rethink/</guid><pubDate>Thu, 02 Jul 2026 14:30:00 GMT</pubDate><description>圈内 2026 年 6 月在聊 Loop Engineering——&apos;别再亲自 prompt agent,去设计替你 prompt 的 loop&apos;。这篇不转述概念,记我用 /goal + Stop hook 真跑了一遍 39 篇博客改造之后,对&apos;写 loop&apos;这件事形成的判断。</description></item><item><title>241 天、39 篇:从&apos;我知道&apos;到&apos;我经历过&apos;</title><link>https://s1oopx.bond/posts/half-year-review-rethink/</link><guid>https://s1oopx.bond/posts/half-year-review-rethink/</guid><pubDate>Wed, 24 Jun 2026 14:43:00 GMT</pubDate><description>写这篇时首页翻页时钟显示已在线 241 天。从去年十月开博到现在三十九篇,是一条完整的成长线。趁这个节点回头看看——变的是技术栈,不变的是什么。</description></item><item><title>我为什么还在做自己的个人网站</title><link>https://s1oopx.bond/posts/why-i-keep-building-my-site/</link><guid>https://s1oopx.bond/posts/why-i-keep-building-my-site/</guid><pubDate>Wed, 17 Jun 2026 12:00:00 GMT</pubDate><description>这里不是一份静态简历，而是我把正在学习、使用和判断的东西整理成可访问记录的地方。</description></item><item><title>把自建服务发到公网之前：域名、源码和管理入口会泄露什么</title><link>https://s1oopx.bond/posts/public-service-exposure-chain-rethink/</link><guid>https://s1oopx.bond/posts/public-service-exposure-chain-rethink/</guid><pubDate>Thu, 11 Jun 2026 10:20:00 GMT</pubDate><description>公开一个链接后，别人看到的不只是页面。域名、历史 DNS、源站端口、前端代码和管理入口会连成一条暴露链，发布前应逐层检查。</description></item><item><title>Tunnel 让服务能访问，Access 决定谁能访问</title><link>https://s1oopx.bond/posts/cloudflare-tunnel-access-boundary/</link><guid>https://s1oopx.bond/posts/cloudflare-tunnel-access-boundary/</guid><pubDate>Thu, 04 Jun 2026 12:45:00 GMT</pubDate><description>Cloudflare Tunnel 把内网服务接到公网，但它不负责识别访问者。公开主页、管理后台、OAuth 回调和部署接口需要按路径建立不同边界。</description></item><item><title>容器镜像拉不下来时：从代理、同步到离线交付</title><link>https://s1oopx.bond/posts/container-image-delivery-rethink/</link><guid>https://s1oopx.bond/posts/container-image-delivery-rethink/</guid><pubDate>Fri, 29 May 2026 13:05:00 GMT</pubDate><description>有网、受限网和完全离线环境需要的不是同一条命令。把镜像获取当成交付链路，才能在代理缓存、私有仓库和 save/load 之间选对方案。</description></item><item><title>VLESS + REALITY 一定要用 443 吗？端口选择与复用边界</title><link>https://s1oopx.bond/posts/vless-reality-port-rethink/</link><guid>https://s1oopx.bond/posts/vless-reality-port-rethink/</guid><pubDate>Sat, 23 May 2026 15:10:00 GMT</pubDate><description>VLESS + REALITY 不绑定 443 端口。真正需要弄清的是端口可达性、监听冲突、反代复用和 Cloudflare 代理边界，而不是把 443 当成协议要求。</description></item><item><title>别再把 VLESS、REALITY 和 Xray 当成一件事：代理栈分层</title><link>https://s1oopx.bond/posts/proxy-stack-layering-rethink/</link><guid>https://s1oopx.bond/posts/proxy-stack-layering-rethink/</guid><pubDate>Sat, 16 May 2026 13:10:00 GMT</pubDate><description>VMess、VLESS、Trojan、TLS、REALITY、XTLS 和 Xray 经常被放在一张对比表里，但它们不在同一层。先把实现、协议、传输和握手拆开，选型才不会混乱。</description></item><item><title>部署不是一串步骤：我把它拆成了八件事</title><link>https://s1oopx.bond/posts/workflow-facets-rethink/</link><guid>https://s1oopx.bond/posts/workflow-facets-rethink/</guid><pubDate>Sun, 10 May 2026 15:30:00 GMT</pubDate><description>每加一个新服务该想什么？我把部署拆成八个独立的面——可达、守护、防护、可观测、配置密钥、变更、数据、运维入口。这篇解释框架怎么来、每面问什么，以及为什么分面比抄清单更贴自己的规模。</description></item><item><title>读到 Karpathy 的 LLM Wiki 时,我对照了自己的 RAG</title><link>https://s1oopx.bond/posts/llm-wiki-vs-rag-rethink/</link><guid>https://s1oopx.bond/posts/llm-wiki-vs-rag-rethink/</guid><pubDate>Mon, 04 May 2026 14:45:00 GMT</pubDate><description>2026 年 4 月 Karpathy 发了个叫 llm-wiki 的 gist,圈里开始聊&apos;RAG 要被取代了吗&apos;。这篇不转述它,记我读到其中等规模的示例后,回头量了自己的知识库,发现自己之前把 RAG 当默认答案是过度工程,以及最后形成的判断。</description></item><item><title>我把什么交给了 AI,边界在哪:用 AI 搭子的半年复盘</title><link>https://s1oopx.bond/posts/coding-with-ai-rethink/</link><guid>https://s1oopx.bond/posts/coding-with-ai-rethink/</guid><pubDate>Mon, 27 Apr 2026 13:36:00 GMT</pubDate><description>这大半年身边一直有个 AI 搭子。它帮我省了很多时间,也差点让我变懒。这篇不讲&apos;怎么用 AI&apos;,讲我把什么交给了它、边界划在哪、两次栽跟头之后我形成的规则。</description></item><item><title>拿 YouTube 架构当镜子：照我这套小站差距在哪</title><link>https://s1oopx.bond/posts/distributed-youtube-arch-rethink/</link><guid>https://s1oopx.bond/posts/distributed-youtube-arch-rethink/</guid><pubDate>Tue, 21 Apr 2026 12:29:00 GMT</pubDate><description>单机能服务几百人，YouTube 服务几十亿。拿它当教材可以，只学概念就变成纯资料。这篇把它当镜子——照出我这套小站每一层差距在哪、哪些该补、哪些这规模根本不该碰。</description></item><item><title>一个请求的七层旅程：把我会的技术串成一套系统</title><link>https://s1oopx.bond/posts/fullstack-request-flow-rethink/</link><guid>https://s1oopx.bond/posts/fullstack-request-flow-rethink/</guid><pubDate>Wed, 15 Apr 2026 14:22:00 GMT</pubDate><description>学过的技术像拼图。这篇把它们串成一张图：一个请求从浏览器到数据库再回来，经过的每一层都是亲手搭过的。串起来之后，对「系统」的理解变了什么，出了问题又该从哪层查起。</description></item><item><title>从&apos;抄下来&apos;到&apos;讲得出&apos;:我摸索出来的笨办法</title><link>https://s1oopx.bond/posts/how-i-learn-rethink/</link><guid>https://s1oopx.bond/posts/how-i-learn-rethink/</guid><pubDate>Wed, 08 Apr 2026 13:15:00 GMT</pubDate><description>大半年学了一堆东西,回头看真正记住的都不是抄过的,而是讲出来过的。这篇不讲方法论,讲我怎么从&apos;狗熊掰玉米&apos;改过来的,以及为什么慢反而是另一种快。</description></item><item><title>从「开端口放行」到「主动出站」：我换用 Cloudflare Tunnel 之后多想了什么</title><link>https://s1oopx.bond/posts/cloudflare-tunnel-rethink/</link><guid>https://s1oopx.bond/posts/cloudflare-tunnel-rethink/</guid><pubDate>Thu, 02 Apr 2026 14:00:00 GMT</pubDate><description>把域名接进 Cloudflare、用 Tunnel 做零端口发布。重点不是怎么配，而是我当初怎么理解可达、后来哪里想偏了，以及「主动出站」之后我对整套工作流怎么重新分了面。</description></item><item><title>GitHub Actions：手动迟早翻车，但自动化也要管密钥</title><link>https://s1oopx.bond/posts/github-actions-cicd-rethink/</link><guid>https://s1oopx.bond/posts/github-actions-cicd-rethink/</guid><pubDate>Fri, 27 Mar 2026 12:23:00 GMT</pubDate><description>每次改完代码手动 SSH 拉代码、重启服务，改一行文案也得走一遍流程。这篇不讲 Actions 大全，讲我为什么判定手动迟早翻车、第一次 pipeline 红了怎么查，以及密钥纪律。</description></item><item><title>Let&apos;s Encrypt：免费证书，和它逼我接受的「自动续期」心智</title><link>https://s1oopx.bond/posts/lets-encrypt-https-rethink/</link><guid>https://s1oopx.bond/posts/lets-encrypt-https-rethink/</guid><pubDate>Sat, 21 Mar 2026 14:01:00 GMT</pubDate><description>有了域名和反代，最后一步是 HTTPS。这篇不讲 certbot 大全，讲 90 天有效期逼我接受的心智，以及为什么续期必须先 dry-run 演练。</description></item><item><title>Nginx 反向代理：站在所有服务前面的门卫，和那个末尾斜杠</title><link>https://s1oopx.bond/posts/nginx-reverse-proxy-rethink/</link><guid>https://s1oopx.bond/posts/nginx-reverse-proxy-rethink/</guid><pubDate>Sat, 14 Mar 2026 13:54:00 GMT</pubDate><description>服务跑在 8000、8080，直接暴露既难看又难管。这篇不讲配置大全，讲浏览器不该直连后端、proxy_pass 末尾斜杠那个绊脚点，以及「先验后发」的 reload 纪律。</description></item><item><title>把 Spring Boot 容器化部署：串成一条链，和那次「能跑不懂」的债</title><link>https://s1oopx.bond/posts/springboot-docker-deploy-rethink/</link><guid>https://s1oopx.bond/posts/springboot-docker-deploy-rethink/</guid><pubDate>Sun, 08 Mar 2026 13:09:00 GMT</pubDate><description>学了 Java、Docker、Nginx，这篇把它们串成一条部署链。不讲部署清单，讲多阶段构建那次我借的、后来还的债，以及端口只绑回环这个防护判断。</description></item><item><title>ufw + fail2ban：把门关严实，两层各挡一类</title><link>https://s1oopx.bond/posts/ufw-fail2ban-rethink/</link><guid>https://s1oopx.bond/posts/ufw-fail2ban-rethink/</guid><pubDate>Mon, 02 Mar 2026 12:26:00 GMT</pubDate><description>SSH 加固之后，网络层是最后一块。这篇不讲怎么配大全，讲我为什么用两层、它们各挡什么，以及「启用前先放行 SSH」的活路纪律。</description></item><item><title>systemd：从「能用」到「能信赖」，中间差一个守护</title><link>https://s1oopx.bond/posts/systemd-service-rethink/</link><guid>https://s1oopx.bond/posts/systemd-service-rethink/</guid><pubDate>Tue, 24 Feb 2026 14:19:00 GMT</pubDate><description>一开始我用 nohup 裸跑程序，关掉终端还能跑，但进程崩了不会自己起来。这篇不讲 unit 大全，讲我为什么判定「裸跑不算上线」，以及守护这一面站的位置。</description></item><item><title>我每天真的会敲的那几条 Linux 命令</title><link>https://s1oopx.bond/posts/linux-daily-commands-rethink/</link><guid>https://s1oopx.bond/posts/linux-daily-commands-rethink/</guid><pubDate>Tue, 17 Feb 2026 13:12:00 GMT</pubDate><description>Linux 命令成千上万，日常管服务器真正高频的就那么几组。这篇不堆大全，只记我每天真的会敲的，以及为什么是这几组——对应「喘不喘、谁占了、日志说什么」三件事。</description></item><item><title>SSH 加固：把钥匙留在自己手里</title><link>https://s1oopx.bond/posts/ssh-key-hardening-rethink/</link><guid>https://s1oopx.bond/posts/ssh-key-hardening-rethink/</guid><pubDate>Wed, 11 Feb 2026 12:05:00 GMT</pubDate><description>VPS 一接公网，几分钟内就有人来试密码。这篇不讲 SSH 大全，讲我为什么选 ed25519、为什么改端口值得，以及「改配置别关当前会话」的退路纪律。</description></item><item><title>买人生第一台 VPS：我在挑什么，到手先做什么</title><link>https://s1oopx.bond/posts/my-first-vps-rethink/</link><guid>https://s1oopx.bond/posts/my-first-vps-rethink/</guid><pubDate>Thu, 05 Feb 2026 14:58:00 GMT</pubDate><description>代码写了几个月一直跑在本机。这篇不讲 VPS 怎么买，讲我作为练手机在挑什么、为什么不上高配，以及到手那三件事的顺序我为什么这么排。</description></item><item><title>Docker Compose：为什么我不手敲一串 docker run</title><link>https://s1oopx.bond/posts/docker-compose-rethink/</link><guid>https://s1oopx.bond/posts/docker-compose-rethink/</guid><pubDate>Fri, 30 Jan 2026 12:02:00 GMT</pubDate><description>真实项目很少只有一个容器。这篇不讲 Compose 语法大全，讲我用手敲 docker run 翻过什么车、为什么把整套服务写进一个 yml，以及那条差点把数据删没了的教训。</description></item><item><title>Docker：治「我机器上能跑」这桩老案子</title><link>https://s1oopx.bond/posts/docker-intro-rethink/</link><guid>https://s1oopx.bond/posts/docker-intro-rethink/</guid><pubDate>Sat, 24 Jan 2026 14:55:00 GMT</pubDate><description>装服务装到后面，系统里 Python、Java 各种库混在一起，依赖打架。这篇不讲 Docker 命令大全，讲它到底在解决什么——以及为什么我说它是 venv 那条线的延续。</description></item><item><title>深夜的 bug、咖啡馆的下午:关于&apos;跳过最直接的线索&apos;</title><link>https://s1oopx.bond/posts/debug-and-cafe-rethink/</link><guid>https://s1oopx.bond/posts/debug-and-cafe-rethink/</guid><pubDate>Sat, 17 Jan 2026 13:48:00 GMT</pubDate><description>两篇关于 debug 玄学的合成一篇。它们的底子是同一个偏差:跳过最直接的线索,去查更&apos;高级&apos;的可能。这篇记我浪费的那两个半小时、真正让我冷静的那两分钟,以及后来我刻进直觉的排查优先级。</description></item><item><title>当过前端被不统一坑过之后，我怎么做后端统一返回</title><link>https://s1oopx.bond/posts/global-exception-unified-response-rethink/</link><guid>https://s1oopx.bond/posts/global-exception-unified-response-rethink/</guid><pubDate>Sun, 11 Jan 2026 12:41:00 GMT</pubDate><description>接口能返回数据只是第一步。这篇做两件让接口专业起来的事：统一返回结构、集中处理异常。不讲模板，讲我为什么把它当成给前端的契约，以及「给用户看友好、给自己看堆栈」这条判断。</description></item><item><title>JPA：白送的 CRUD，和它背后的理解缺口</title><link>https://s1oopx.bond/posts/spring-data-jpa-mysql-rethink/</link><guid>https://s1oopx.bond/posts/spring-data-jpa-mysql-rethink/</guid><pubDate>Mon, 05 Jan 2026 14:34:00 GMT</pubDate><description>接口有了，让数据落库。这篇用 Spring Data JPA 接 MySQL。不讲怎么配，讲「继承个接口就白送 CRUD」的爽和险——爽在省事，险在我可能根本不懂它在生成什么 SQL。</description></item><item><title>2025 年终:狗熊掰玉米的一年,和开博两个月</title><link>https://s1oopx.bond/posts/2025-year-end-rethink/</link><guid>https://s1oopx.bond/posts/2025-year-end-rethink/</guid><pubDate>Mon, 29 Dec 2025 13:06:00 GMT</pubDate><description>一篇没有代码的年终碎念。回看这一年,我学东西像狗熊掰玉米——学一个丢一个。这篇记我怎么意识到这件事,以及开博两个月这件事怎么治它。</description></item><item><title>Spring Boot 第一个接口：和 FastAPI 对照着看，框架之上不变的是什么</title><link>https://s1oopx.bond/posts/spring-boot-first-rest-api-rethink/</link><guid>https://s1oopx.bond/posts/spring-boot-first-rest-api-rethink/</guid><pubDate>Tue, 23 Dec 2025 13:27:00 GMT</pubDate><description>还记得 Python 那边的 FastAPI 接口吗？这篇写一个 Java 版对照。不讲注解清单，讲两种风格差在哪，以及学第二门后端框架最大的收获——开始看见框架之上不变的那些东西。</description></item><item><title>看懂一个 Spring Boot 项目的骨架：从「文件夹一堆」到「两样东西」</title><link>https://s1oopx.bond/posts/maven-spring-boot-structure-rethink/</link><guid>https://s1oopx.bond/posts/maven-spring-boot-structure-rethink/</guid><pubDate>Wed, 17 Dec 2025 12:20:00 GMT</pubDate><description>第一次打开 Spring Boot 项目，文件夹一堆不知道从哪看起。这篇不讲 Maven 大全，讲我怎么从被结构吓到，到抓住 pom.xml 和标准目录，以及「约定优于配置」到底在替我省什么。</description></item><item><title>从 Python 到 Java 的第一周：别扭的不是语法，是思维方式</title><link>https://s1oopx.bond/posts/python-to-java-week-one-rethink/</link><guid>https://s1oopx.bond/posts/python-to-java-week-one-rethink/</guid><pubDate>Thu, 11 Dec 2025 14:13:00 GMT</pubDate><description>决定啃 Java。从 Python 转过来第一周是真的别扭。这篇不讲语法清单，讲别扭底下是什么——不是语法要重学，是从「怎么快点写出来」转到「怎么让结构更清晰、更不容易错」。</description></item><item><title>写一个有礼貌的小爬虫：能抓和该抓是两件事</title><link>https://s1oopx.bond/posts/python-requests-bs4-rethink/</link><guid>https://s1oopx.bond/posts/python-requests-bs4-rethink/</guid><pubDate>Thu, 04 Dec 2025 12:59:00 GMT</pubDate><description>Python 阶段收尾写个小爬虫。这篇不讲 requests 和 BeautifulSoup 怎么用，讲我对「爬虫的水平不体现在抓得多猛，而在多有分寸」的判断——能抓不代表该抓。</description></item><item><title>装饰器与 with：我从「黑魔法」到「原来是省这个」的转弯</title><link>https://s1oopx.bond/posts/python-decorator-context-rethink/</link><guid>https://s1oopx.bond/posts/python-decorator-context-rethink/</guid><pubDate>Fri, 28 Nov 2025 14:52:00 GMT</pubDate><description>装饰器和 with 一开始很像黑魔法。这篇不讲语法细节，讲我怎么从「看不懂这层包装」到想清楚：它们就是把横切的重复逻辑从主流程里剥离。</description></item><item><title>CRUD：我第一次让接口和数据库对上号的那几个判断</title><link>https://s1oopx.bond/posts/fastapi-sqlite-crud-rethink/</link><guid>https://s1oopx.bond/posts/fastapi-sqlite-crud-rethink/</guid><pubDate>Sat, 22 Nov 2025 13:45:00 GMT</pubDate><description>光返回死数据不算后端。这篇给接口接上 SQLite。不讲 CRUD 怎么写，讲我为什么选 SQLite 练手、Pydantic 模型替我管了什么，以及「占位符不是图省事」从第一天就该刻进去。</description></item><item><title>为什么这次写接口我选 FastAPI，不是 Flask</title><link>https://s1oopx.bond/posts/fastapi-first-api-rethink/</link><guid>https://s1oopx.bond/posts/fastapi-first-api-rethink/</guid><pubDate>Sat, 15 Nov 2025 12:38:00 GMT</pubDate><description>Web 框架一搜一大把。Flask 我写过小工具，Django 用 DRF 做过完整 REST API，这次却选了 FastAPI。这篇不讲怎么用，讲我为什么在这个节点选它、它和 Flask 的取舍差在哪。</description></item><item><title>为什么我坚持每个 Python 项目一个 venv</title><link>https://s1oopx.bond/posts/python-venv-pip-rethink/</link><guid>https://s1oopx.bond/posts/python-venv-pip-rethink/</guid><pubDate>Sun, 09 Nov 2025 14:31:00 GMT</pubDate><description>学 Python 第一件该养成的习惯不是写代码，是管环境。这篇不讲 venv 语法，讲我往全局装包装出事之后，为什么把「每项目一个 venv」当成新建项目的第一条命令。</description></item><item><title>Git：我什么时候开始怕「改不回去」的</title><link>https://s1oopx.bond/posts/git-basics-rethink/</link><guid>https://s1oopx.bond/posts/git-basics-rethink/</guid><pubDate>Mon, 03 Nov 2025 13:24:00 GMT</pubDate><description>开始写代码最先撞上的不是语法报错，是改了半天发现思路不对想回滚、文件已经覆盖了。这篇不讲命令大全，讲我什么时候开始养成提交习惯、哪次没提交翻的车，以及分支这块我到现在还偏保守。</description></item><item><title>开博第一篇:一个安静记录折腾的地方</title><link>https://s1oopx.bond/posts/hello-blog-rethink/</link><guid>https://s1oopx.bond/posts/hello-blog-rethink/</guid><pubDate>Tue, 28 Oct 2025 12:17:00 GMT</pubDate><description>你好,我是 s1oopX。这是这个博客的第一篇。开博理由很简单:我折腾的东西越来越多,脑子越来越不够用——写下来,是为了下次不用从零开始。</description></item></channel></rss>