<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sanbei的博客</title><link>https://blog.sanbei101.cn/</link><description>Recent content on Sanbei的博客</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sat, 26 Sep 2026 16:15:36 +0800</lastBuildDate><atom:link href="https://blog.sanbei101.cn/index.xml" rel="self" type="application/rss+xml"/><item><title>Go MCP:用编译器内省取代文本检索</title><link>https://blog.sanbei101.cn/ai-book/03-tools-and-constraints/01-gopls-mcp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/03-tools-and-constraints/01-gopls-mcp/</guid><description>&lt;p&gt;在工程实践中,当给 Agent 分配一个代码重构任务时:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;em&gt;&amp;ldquo;找出项目中所有实现 DataSink 接口的结构体,为其追加批量刷盘机制;同时重构认证上下文中的 Session.Token 字段。&amp;rdquo;&lt;/em&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>标准库优先:先穷尽内置,再引入外部</title><link>https://blog.sanbei101.cn/ai-book/02-tidy-and-standard/01-use-std/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/02-tidy-and-standard/01-use-std/</guid><description>&lt;p&gt;在 Go 语言服务端工程中,标准库覆盖了网络 I/O、数据序列化、并发同步、加密哈希等绝大多数核心基础设施。&lt;/p&gt;&#10;&lt;p&gt;外部依赖不仅带来代码体积膨胀,还会破坏代码基座的平整性。大语言模型在接手多层封装的框架时,需要检索深层调用栈、插件生命周期与隐式上下文,导致有限的会话上下文被框架样板迅速耗尽。反之,现代 Go 持续吸纳了泛型抽象、编译器固有指令、硬件向量化汇编与并发运行时演进,许多曾经作为性能标杆的第三方库,在现代标准库面前已丧失技术优势。&lt;/p&gt;</description></item><item><title>显式、平铺、可推导:Go 为何契合模型推理</title><link>https://blog.sanbei101.cn/ai-book/01-language-and-agent/01-language/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/01-language-and-agent/01-language/</guid><description>&lt;p&gt;在服务端开发中,Go 语言一直以语法简单、编译为单二进制文件以及并发模型直接见长。在日常结合模型进行代码生成的过程中,我发现 Go 的很多语言设计,恰好避开了模型推理时最容易犯错的陷阱。&lt;/p&gt;</description></item><item><title>一份契约,两端编译:OpenAPI + Orval</title><link>https://blog.sanbei101.cn/ai-book/04-iter-and-test/01-orval/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/04-iter-and-test/01-orval/</guid><description>&lt;p&gt;在前后端协同开发中,接口定义的高频变动通常是效率瓶颈:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;业务管理后台中,每个数据实体均涉及标准 CRUD 接口的定义与前端调用层封装;&lt;/li&gt;&#10;&lt;li&gt;表单模型调整字段名称或增删属性,前端需同步更新对应的数据模型与请求方法。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;在缺乏确定性契约的场景下,依赖人工同步或通过自然语言让模型阅读 Git Diff 修改代码,容易消耗额外上下文,且极易出现类型遗漏或字段漂移。&lt;/p&gt;</description></item><item><title>rtk: 过滤终端噪音,守护推理视界</title><link>https://blog.sanbei101.cn/ai-book/03-tools-and-constraints/02-rtk/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/03-tools-and-constraints/02-rtk/</guid><description>&lt;p&gt;在工程实践中,当给 Agent 分配一个典型的后端重构任务时:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;em&gt;&amp;ldquo;检查 &lt;code&gt;internal/payment&lt;/code&gt; 模块中所有的退款与流水状态机单测,修复由于通道竞争导致的超时报错,确保所有测试通过并准备提交。&amp;rdquo;&lt;/em&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>不猜瓶颈:基于 PProf 的定向性能迭代</title><link>https://blog.sanbei101.cn/ai-book/04-iter-and-test/02-pprof/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/04-iter-and-test/02-pprof/</guid><description>&lt;p&gt;在人机协同开发中,许多人习惯把成百上千行的业务代码直接抛给模型,提出类似&amp;quot;帮我看看这段代码性能有没有问题&amp;quot;、&amp;ldquo;优化系统性能&amp;quot;的请求。&lt;/p&gt;</description></item><item><title>寻找适合工程环境的 Agent 工具链</title><link>https://blog.sanbei101.cn/ai-book/01-language-and-agent/02-agent/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/01-language-and-agent/02-agent/</guid><description>&lt;p&gt;目前用于辅助编程的智能体工具非常多样,主流的选择包括:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;code&gt;Claude Code&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Codex&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Opencode&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;以及 &lt;code&gt;Pi&lt;/code&gt;、&lt;code&gt;deepseek harness&lt;/code&gt; 这类定制程度极高的本地或开源框架&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;在实际开发中,不同工具底层接入的大模型能力虽然接近,但在工程交互设计上的取舍,会直接影响日常编码的流畅度与自动化效率。&lt;/p&gt;</description></item><item><title>依赖甄选:单一职责、零传递、接口透明</title><link>https://blog.sanbei101.cn/ai-book/02-tidy-and-standard/02-good-pkg/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/02-tidy-and-standard/02-good-pkg/</guid><description>&lt;p&gt;在人机协同开发中,如果对外部依赖不加克制地引入,项目极易迅速退化为不可控的泥潭。随意引入质量参差不齐、带有复杂隐式黑魔法或深层传递依赖的库,不仅会破坏代码基座的平整性,还会让模型在理解调用栈时陷入上下文混乱。&lt;/p&gt;</description></item><item><title>SQL 即源码:用 sqlc 构建零反射数据访问层</title><link>https://blog.sanbei101.cn/ai-book/02-tidy-and-standard/03-orm-sqlc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/02-tidy-and-standard/03-orm-sqlc/</guid><description>&lt;p&gt;在 Go 语言开发中,ORM 常因运行时反射带来不必要的内存开销与 GC 压力;而手写原生 SQL 若缺乏工具约束,又容易面临参数注入、字段变更缺乏静态感知、手写 &lt;code&gt;Scan&lt;/code&gt; 繁琐等问题。&lt;/p&gt;</description></item><item><title>真实测试:别让错误越走越远</title><link>https://blog.sanbei101.cn/ai-book/04-iter-and-test/03-test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/04-iter-and-test/03-test/</guid><description>&lt;p&gt;在人机协同开发中,最需要警惕的汇报之一是:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;em&gt;&amp;ldquo;代码已完成,测试已通过。&amp;rdquo;&lt;/em&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;审查测试代码时,常会发现明显的工程隐患:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;当 &lt;code&gt;Service&lt;/code&gt; 依赖数据库时,模型生成了一个返回 &lt;code&gt;nil&lt;/code&gt; 的 &lt;code&gt;FakeRepository&lt;/code&gt;,使每个调用都直接跳过底层读写;&lt;/li&gt;&#10;&lt;li&gt;测试仅断言无错误返回,未验证数据是否真实持久化或事务是否正确回滚;&lt;/li&gt;&#10;&lt;li&gt;并发逻辑中硬编码 &lt;code&gt;time.Sleep(100 * time.Millisecond)&lt;/code&gt;,在本地容易通过,而在持续集成流水线中因调度延迟产生随机 Flaky 报错。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这类测试的风险在于提供虚假的通过信号:模型基于自创的 Mock 验证了自身生成的逻辑,而真实的 SQL 语法、约束与并发竞争从未被运行时检验。&lt;/p&gt;</description></item><item><title>Linter: 规范从软约束变成硬门禁</title><link>https://blog.sanbei101.cn/ai-book/02-tidy-and-standard/04-static-gates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/02-tidy-and-standard/04-static-gates/</guid><description>&lt;p&gt;在日常工程中,当给 Agent 分配一个后端业务任务时:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;em&gt;&amp;ldquo;在结算模块新增一个同步第三方支付凭证的 HTTP 接口,解析回调参数并更新订单流水。&amp;rdquo;&lt;/em&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>日志:构建排错的证据链</title><link>https://blog.sanbei101.cn/ai-book/04-iter-and-test/04-log/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.sanbei101.cn/ai-book/04-iter-and-test/04-log/</guid><description>&lt;p&gt;在工程演进中,系统上线后通常面临如下场景:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;em&gt;&amp;ldquo;生产环境接口在夜间偶发 500 错误,随后自动恢复,需要定位根本原因。&amp;rdquo;&lt;/em&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;若服务在标准输出中仅打印非结构化文本:&lt;/p&gt;</description></item><item><title>APT 镜像源</title><link>https://blog.sanbei101.cn/blog/china-wall/ubuntu-apt/</link><pubDate>Tue, 01 Sep 2026 00:00:00 +0800</pubDate><guid>https://blog.sanbei101.cn/blog/china-wall/ubuntu-apt/</guid><description>&lt;h1 id="为-ubuntu-配置-apt-镜像源"&gt;为 Ubuntu 配置 APT 镜像源&#10;&lt;/h1&gt;&#10;&lt;p&gt;&lt;code&gt;ubuntu&lt;/code&gt;配置文件从旧版的&lt;code&gt;/etc/apt/sources.list&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;变更为&lt;code&gt;/etc/apt/sources.list.d/ubuntu.sources&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Homebrew 安装指南</title><link>https://blog.sanbei101.cn/blog/china-wall/homebrew-install/</link><pubDate>Tue, 01 Sep 2026 00:00:00 +0800</pubDate><guid>https://blog.sanbei101.cn/blog/china-wall/homebrew-install/</guid><description>&lt;h1 id="homebrew-国内网络环境下安装指南"&gt;Homebrew 国内网络环境下安装指南&#10;&lt;/h1&gt;&#10;&lt;h2 id="创建brew用户"&gt;创建&lt;code&gt;brew&lt;/code&gt;用户&#10;&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;这是因为&lt;code&gt;brew&lt;/code&gt;不支持使用&lt;code&gt;root&lt;/code&gt;用户安装,如果没有非 &lt;code&gt;root&lt;/code&gt; 用户需要创建一个&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Postgres 安装指南</title><link>https://blog.sanbei101.cn/blog/china-wall/postgres-install/</link><pubDate>Tue, 01 Sep 2026 00:00:00 +0800</pubDate><guid>https://blog.sanbei101.cn/blog/china-wall/postgres-install/</guid><description>&lt;h1 id="国内网络环境下安装-postgres-数据库"&gt;国内网络环境下安装 Postgres 数据库&#10;&lt;/h1&gt;&#10;&lt;h2 id="apt-安装"&gt;APT 安装&#10;&lt;/h2&gt;&#10;&lt;h3 id="添加清华源仓库签名"&gt;添加清华源仓库签名&#10;&lt;/h3&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-f9cab5a1-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="2"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-f9cab5a1-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo wget -q -O /etc/apt/keyrings/postgresql.asc &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/apt/ACCC4CF8.asc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="添加清华源仓库"&gt;添加清华源仓库&#10;&lt;/h3&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-f9cab5a1-fence-1" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="5"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-f9cab5a1-fence-1-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo bash -c &lt;span class="s1"&gt;&amp;#39;echo &amp;#34;Types: deb&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;URIs: https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/apt&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;Suites: $(lsb_release -cs)-pgdg&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;Components: main&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;Signed-By: /etc/apt/keyrings/postgresql.asc&amp;#34; &amp;gt; /etc/apt/sources.list.d/postgresql.sources&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="更新源并安装"&gt;更新源并安装&#10;&lt;/h3&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-f9cab5a1-fence-2" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="2"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-f9cab5a1-fence-2-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install postgresql-18 &lt;span class="c1"&gt;# 替换为版本号&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="启动"&gt;启动&#10;&lt;/h3&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-f9cab5a1-fence-3" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-f9cab5a1-fence-3-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl start postgresql&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="验证"&gt;验证&#10;&lt;/h3&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-f9cab5a1-fence-4" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-f9cab5a1-fence-4-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl status postgresql@18-main.service &lt;span class="c1"&gt;# 替换为版本号&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="连接"&gt;连接&#10;&lt;/h3&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-f9cab5a1-fence-5" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-f9cab5a1-fence-5-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo -u postgres psql&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;</description></item><item><title>动态规划背包问题总结</title><link>https://blog.sanbei101.cn/blog/algorithm/bag/</link><pubDate>Tue, 01 Sep 2026 00:00:00 +0800</pubDate><guid>https://blog.sanbei101.cn/blog/algorithm/bag/</guid><description>&lt;h1 id="背包问题总结"&gt;背包问题总结&#10;&lt;/h1&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;一共有2种背包:&#10;&lt;ul&gt;&#10;&lt;li&gt;01背包&lt;/li&gt;&#10;&lt;li&gt;完全背包&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;一共有4种求解目标:&#10;&lt;ul&gt;&#10;&lt;li&gt;求最大价值&lt;/li&gt;&#10;&lt;li&gt;求组合数&lt;/li&gt;&#10;&lt;li&gt;求排列数&lt;/li&gt;&#10;&lt;li&gt;给&lt;code&gt;target&lt;/code&gt;,求最少/最多的物品数量&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;其中01背包不考虑排列数,完全背包不考给出target的最多物品数量&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>制裁流氓软件云枢</title><link>https://blog.sanbei101.cn/blog/mix/yunshu/</link><pubDate>Tue, 01 Sep 2026 00:00:00 +0800</pubDate><guid>https://blog.sanbei101.cn/blog/mix/yunshu/</guid><description>&lt;h1 id="制裁流氓软件云枢"&gt;制裁流氓软件云枢&#10;&lt;/h1&gt;&#10;&lt;h2 id="禁止云枢安装浏览器监控插件"&gt;禁止云枢安装浏览器监控插件&#10;&lt;/h2&gt;&#10;&lt;p&gt;云枢这个流氓软件会在启动的时候往浏览器里塞一条强制安装浏览器拓展的策略&lt;code&gt;ExtensionInstallForcelist&lt;/code&gt;,从而让你删都删不掉他的浏览器拓展&lt;/p&gt;</description></item></channel></rss>