<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>kalpacode</title><description>kalpacode 个人技术博客：后端、前端、运维与 AI 实践记录，站内 AI 导览助手基于文章回答你的问题。</description><link>http://kalpacode.cn/</link><language>zh-CN</language><item><title>AI Agent 流水线的编排协议设计</title><link>http://kalpacode.cn/posts/agent-pipeline-orchestration-protocol/</link><guid isPermaLink="true">http://kalpacode.cn/posts/agent-pipeline-orchestration-protocol/</guid><description>八个 skill 互相不认识，却能接力跑完整个系统。串起它们的是一套极简协议：文件即接口、一行输出即完成标志、开工先查前置条件。这篇拆解这套协议的每个设计决定，以及它换来的断点续跑、可审计和可替换性。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>AI Agent</category><category>系统设计</category><category>编排协议</category></item><item><title>业务需求生成：把代码翻译成人话的质量工程</title><link>http://kalpacode.cn/posts/business-requirement-quality/</link><guid isPermaLink="true">http://kalpacode.cn/posts/business-requirement-quality/</guid><description>逆向流水线里技术密度最高的一步：如何用质量红线、零合并原则、三级优先级和两阶段执行，约束大模型把 if-else 和拼接 SQL 诚实地翻译成客户也能看懂的业务语言。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>逆向工程</category><category>Prompt 工程</category><category>输出质量控制</category></item><item><title>数据库数据字典：DDL 解析与业务语境反哺</title><link>http://kalpacode.cn/posts/database-dictionary-ddl-context/</link><guid isPermaLink="true">http://kalpacode.cn/posts/database-dictionary-ddl-context/</guid><description>祖传系统的数据库往往有几百张表、几千个字段，注释栏里一半空白、一半写着「字段」。数据字典生成这一步先用系统表摸清家底，再让前面所有步骤的业务产物反哺回来，给每个字段写出真正的业务含义——写不出来的，诚实标记待确认。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>后端</category><category>数据治理</category><category>数据库逆向</category><category>AI Agent</category></item><item><title>文档资产组织三部曲：归类、合并与索引</title><link>http://kalpacode.cn/posts/doc-asset-organize-merge-index/</link><guid isPermaLink="true">http://kalpacode.cn/posts/doc-asset-organize-merge-index/</guid><description>几十份业务需求文档散在目录里，还只是散件不是资产。归类、合并、索引三个 skill 接力，把它们变成有账本、有对账、能发现需求缺口的结构化资产库——顺带完成一次意外的需求完整性审计。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>文档工程</category><category>知识组织</category><category>AI Agent</category></item><item><title>feature-dev：在读懂的系统里写新代码</title><link>http://kalpacode.cn/posts/feature-dev-on-documented-system/</link><guid isPermaLink="true">http://kalpacode.cn/posts/feature-dev-on-documented-system/</guid><description>让 AI 在老系统上写新代码，最常见的灾难不是写不出来，而是写得太顺。feature-dev 用六条原则和一张映射表，把「读懂的系统」变成写代码的约束条件。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>AI 辅助开发</category><category>正向工程</category><category>代码规范</category></item><item><title>功能点提取：让 AI 认出任意技术栈里的功能入口</title><link>http://kalpacode.cn/posts/feature-extract-any-stack/</link><guid isPermaLink="true">http://kalpacode.cn/posts/feature-extract-any-stack/</guid><description>流水线第一步决定后面所有步骤的工作量：认出代码里有多少个功能点。用一张技术栈识别表、一份排除清单和一份 JSON schema，把「找功能」变成可校验的机械活。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>逆向工程</category><category>静态分析</category><category>AI Agent</category></item><item><title>链路图生成：跨边界调用链追踪与 mermaid 语义学</title><link>http://kalpacode.cn/posts/link-diagram-call-chain-mermaid/</link><guid isPermaLink="true">http://kalpacode.cn/posts/link-diagram-call-chain-mermaid/</guid><description>大模型读代码最难的不是某一行代码，而是调用跨过边界的那一瞬：前端到后端、Java 到 SQL、程序到外部系统。这一步用六张技术栈地图、一套图形语义和一道数量门禁，把整条调用链画成一张不许说谎的图。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>逆向工程</category><category>静态分析</category><category>mermaid</category></item><item><title>LLM 输出质量控制的三层防线</title><link>http://kalpacode.cn/posts/llm-output-quality-three-layers/</link><guid isPermaLink="true">http://kalpacode.cn/posts/llm-output-quality-three-layers/</guid><description>让大模型写一万字不难，难的是让第一千个字段和第一个字段一样规矩。这条流水线把散落在各步骤里的质控手段收拢成三层防线：写进 prompt 的红线、过程中的闸门、事后的脚本验证，外加防超时、防截断、重试降级三套保命机制。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>Prompt 工程</category><category>输出质量控制</category><category>AI Agent</category></item><item><title>把祖传系统「翻译」成文档资产：AI 逆向工程流水线总览</title><link>http://kalpacode.cn/posts/reverse-engineering-pipeline-overview/</link><guid isPermaLink="true">http://kalpacode.cn/posts/reverse-engineering-pipeline-overview/</guid><description>七步逆向、一步正向：一条技术栈中立的 AI 流水线，如何把没人敢动的遗留系统，逐层翻译成功能清单、链路图、业务需求与数据字典，并让这些文档反过来指导新功能的开发。这是 13 篇系列的总览。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>逆向工程</category><category>AI Agent</category><category>遗留系统</category></item><item><title>从逆向到正向：文档资产化的完整闭环</title><link>http://kalpacode.cn/posts/reverse-to-forward-doc-assets/</link><guid isPermaLink="true">http://kalpacode.cn/posts/reverse-to-forward-doc-assets/</guid><description>系列完结篇。十二篇讲完了一条流水线的每个零件，最后一篇回答那个贯穿始终的问题：这些文档到底给谁用、怎么用——从新人上手的五级下钻，到审计、测试、二次开发，再到流水线自身的演进方向。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>文档资产</category><category>知识管理</category><category>逆向工程</category></item><item><title>从专用到通用：Skill 的技术栈中立化改造</title><link>http://kalpacode.cn/posts/skill-tech-stack-neutralization/</link><guid isPermaLink="true">http://kalpacode.cn/posts/skill-tech-stack-neutralization/</guid><description>逆向流水线的第一个版本只认识一种技术栈。第二个项目进门那天，每个 skill 都要回答同一个问题：你写的规则里，哪些是这个项目的习惯，哪些是文档工程的规律。改造的答案整理成了四个泛化维度和一条参数与原则的分界线。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>Skill 设计</category><category>Prompt 工程</category><category>逆向工程</category></item><item><title>子代理并行：大规模任务的分治实践</title><link>http://kalpacode.cn/posts/subagent-parallel-divide-conquer/</link><guid isPermaLink="true">http://kalpacode.cn/posts/subagent-parallel-divide-conquer/</guid><description>一个页面的业务需求要拆几十个事件函数，一个库的数据字典要精修几百张表，串行跑到天荒地老。这条流水线的答案是子代理分治：分批、独立结果文件、模板化任务描述、完整性核对，外加一套主代理的两阶段校验协议，管住并行带来的新风险。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>AI Agent</category><category>并行计算</category><category>分治设计</category></item><item><title>三栈实战复盘：同一套流水线的伸缩性</title><link>http://kalpacode.cn/posts/three-stack-pipeline-case-study/</link><guid isPermaLink="true">http://kalpacode.cn/posts/three-stack-pipeline-case-study/</guid><description>Python+OCR 的报销影像系统、操纵 SAP 的清账平台、ExtJS 工作流老系统——三套画风完全不同的祖传系统跑同一条流水线。复盘各自的难点与零改动复用的环节。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>实战复盘</category><category>逆向工程</category><category>技术栈适配</category></item><item><title>让 AI 助手失败得体面：降级设计的四层防线</title><link>http://kalpacode.cn/posts/agent-graceful-degradation/</link><guid isPermaLink="true">http://kalpacode.cn/posts/agent-graceful-degradation/</guid><description>AI 助手一定会失败——Key 欠费、模型超时、网络断流，只是早晚问题。设计的问题是失败时用户看到什么。拆解这个项目的四层防线：首字超时、断流保留、失败冷却、兜底文案，以及兜底机制怎么避免掩盖真因。</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>Agent</category><category>降级设计</category><category>可靠性</category><category>前端</category></item><item><title>Agent 的记忆怎么做：从 20 条 localStorage 到向量库</title><link>http://kalpacode.cn/posts/agent-memory-design/</link><guid isPermaLink="true">http://kalpacode.cn/posts/agent-memory-design/</guid><description>LLM 没有记忆，每次请求都是白纸。这个博客助手用三层结构补回来：localStorage 与会话管理器做短期记忆，ChromaDB 做知识长期记忆，System Prompt 做每次请求的工作记忆。</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>Agent</category><category>RAG</category><category>记忆系统</category><category>ChromaDB</category></item><item><title>AI 帮我写代码之后，我整理了一套人机协作的提案流程</title><link>http://kalpacode.cn/posts/ai-collab-proposal-workflow/</link><guid isPermaLink="true">http://kalpacode.cn/posts/ai-collab-proposal-workflow/</guid><description>这个项目的大部分代码是 AI 写的，但架构决策一个都没交给它。两天上线的背后是一套工作流：先出提案、确认后动手，文档驱动，接口契约先行。</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>AI 协作</category><category>工作流</category><category>文档驱动</category><category>方法论</category></item><item><title>给 AI 聊天窗写状态机：让它像个产品，而不是一个 demo</title><link>http://kalpacode.cn/posts/chat-widget-state-machine/</link><guid isPermaLink="true">http://kalpacode.cn/posts/chat-widget-state-machine/</guid><description>大部分「给网站加 AI 聊天」的教程止于调通接口。这篇写剩下的部分：五状态机、前端限流、连续失败降级冷却、localStorage 会话持久化，以及一个沿椭圆轨道绕行的悬浮球入口。</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><category>前端</category><category>React</category><category>状态机</category><category>前端架构</category><category>产品化</category></item><item><title>99 元 ECS 部署全记录：Python 3.11 共存、Nginx 反代与 SSE 缓冲陷阱</title><link>http://kalpacode.cn/posts/ecs-99-deploy-full-record/</link><guid isPermaLink="true">http://kalpacode.cn/posts/ecs-99-deploy-full-record/</guid><description>一台 99 元/年的阿里云 ECS 扛起整个博客。逐命令的部署记录：Python 3.11 旁装、systemd 守护、Nginx 反代，以及一个差点成为定时炸弹的裸 location 块。</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><category>运维</category><category>ECS</category><category>Nginx</category><category>systemd</category><category>部署</category><category>SSE</category></item><item><title>我的博客助手是 RAG 还是 Agent？一条分界线讲清楚</title><link>http://kalpacode.cn/posts/rag-vs-agent/</link><guid isPermaLink="true">http://kalpacode.cn/posts/rag-vs-agent/</guid><description>这个博客的 AI 助手有检索、有对话历史、有大模型，但它不是 Agent——它没有规划、没有工具调用、没有行动空间。用自己项目的真实代码当解剖样本，把 RAG 和 Agent 的分界线画出来。</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>RAG</category><category>Agent</category><category>LLM</category><category>架构</category></item><item><title>三条提示词约束，压住 RAG 助手的幻觉</title><link>http://kalpacode.cn/posts/system-prompt-anti-hallucination/</link><guid isPermaLink="true">http://kalpacode.cn/posts/system-prompt-anti-hallucination/</guid><description>RAG 系统的幻觉不全是模型的问题，更多是约束没给够。解剖这个博客助手的真实 SYSTEM_PROMPT：三条约束各防什么，以及为什么检索为空时宁可绕过模型直接返回固定文案——提示词是软保险，代码分支是硬保险。</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>RAG</category><category>Prompt工程</category><category>幻觉</category><category>LLM</category></item><item><title>我给博客装了一个 RAG 智能体：Astro + FastAPI + ChromaDB 全景复盘</title><link>http://kalpacode.cn/posts/blog-rag-agent-review/</link><guid isPermaLink="true">http://kalpacode.cn/posts/blog-rag-agent-review/</guid><description>两天时间，从一份 PRD 到一个能逐字流式回答问题的站内 AI 助手。这篇文章记录全部关键取舍：为什么不上 Dify、为什么全站只留一个 React 岛屿、SSE 协议怎么定、99 元服务器扛不扛得住。</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>RAG</category><category>Astro</category><category>FastAPI</category><category>ChromaDB</category><category>架构</category></item><item><title>ChromaDB 在一台老服务器上的三座大山：sqlite3、不落盘、Embedding 400</title><link>http://kalpacode.cn/posts/chromadb-three-pitfalls/</link><guid isPermaLink="true">http://kalpacode.cn/posts/chromadb-three-pitfalls/</guid><description>给博客装 RAG 智能体，向量库选了「最省事」的 ChromaDB，结果连续踩了三个坑：系统 sqlite3 太老拒绝启动、langchain 旧封装悄悄不落盘、DashScope 兼容模式不收 token 数组。一篇讲透。</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>ChromaDB</category><category>LangChain</category><category>RAG</category><category>Embedding</category><category>踩坑</category></item><item><title>踩坑笔记：DeepSeek 默认开了思考模式，首字延迟 15 秒触发前端降级</title><link>http://kalpacode.cn/posts/deepseek-thinking-mode-latency/</link><guid isPermaLink="true">http://kalpacode.cn/posts/deepseek-thinking-mode-latency/</guid><description>升级模型版本后什么都没改，聊天窗却全员显示降级文案。根因是 deepseek-v4-flash 默认开启思考模式，流式接口前 15 秒静默，撞上前端 15 秒首字超时。一行 extra_body 解决。</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>DeepSeek</category><category>LLM</category><category>流式输出</category><category>踩坑</category></item><item><title>Nginx 反代之后，我的限流器把所有访客当成了同一个人</title><link>http://kalpacode.cn/posts/nginx-rate-limit-real-ip/</link><guid isPermaLink="true">http://kalpacode.cn/posts/nginx-rate-limit-real-ip/</guid><description>反代之后 request.client.host 恒为 127.0.0.1，全站访客共享一个「10 次/分钟」的限流桶。我自己测试太勤快把桶刷爆，真实用户被误伤返回 429。修复只有一行，教训却值得单独写一篇。</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><category>运维</category><category>Nginx</category><category>限流</category><category>FastAPI</category><category>反向代理</category></item><item><title>踩坑笔记：crypto.randomUUID 在 HTTP 裸 IP 站点上直接不存在</title><link>http://kalpacode.cn/posts/randomuuid-secure-context/</link><guid isPermaLink="true">http://kalpacode.cn/posts/randomuuid-secure-context/</guid><description>本地 localhost 永远正常，线上 HTTP 裸 IP 水合即白屏。根因是 crypto.randomUUID 只在安全上下文存在。修复是一个带回退的 UUID 生成函数。</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><category>前端</category><category>浏览器 API</category><category>React</category><category>Astro</category><category>踩坑</category></item><item><title>EventSource 不支持 POST，我用 fetch + 流式解析 手写了 SSE 客户端</title><link>http://kalpacode.cn/posts/sse-client-fetch-readablestream/</link><guid isPermaLink="true">http://kalpacode.cn/posts/sse-client-fetch-readablestream/</guid><description>EventSource 不支持 POST，于是手写了基于 fetch + 流式解析 的 SSE 客户端：帧缓冲状态机、15 秒首字超时、断流保留已得内容，外加一个 ?mock=1 假后端。</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><category>前端</category><category>SSE</category><category>流式解析</category><category>fetch</category><category>前端架构</category></item><item><title>调试两天，败给一个换行符：SSE 在浏览器里全灭但 curl 正常</title><link>http://kalpacode.cn/posts/sse-crlf-debug/</link><guid isPermaLink="true">http://kalpacode.cn/posts/sse-crlf-debug/</guid><description>后端日志正常、curl 正常、浏览器 Network 面板里数据收得完完整整，界面却固定显示「AI 助手暂时休息中」。最后的根因是服务端用 CRLF 分帧，前端用 LF 解析。</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><category>前端</category><category>SSE</category><category>调试</category><category>FastAPI</category><category>浏览器</category></item><item><title>ChromaDB 本地向量库踩坑记录</title><link>http://kalpacode.cn/posts/chromadb-local/</link><guid isPermaLink="true">http://kalpacode.cn/posts/chromadb-local/</guid><description>在 2G 内存的服务器上跑向量数据库：持久化路径、内存占用与三个真实的坑。</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>RAG</category><category>ChromaDB</category><category>Embedding</category></item><item><title>用 GitHub Actions 实现 git push 即发布</title><link>http://kalpacode.cn/posts/github-actions-deploy/</link><guid isPermaLink="true">http://kalpacode.cn/posts/github-actions-deploy/</guid><description>写一篇 Markdown，git push，几分钟后文章自动上线并进入 AI 知识库——完整流水线配置。</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate><category>运维</category><category>CICD</category><category>Actions</category></item><item><title>RAG 检索命中率提升：分块策略实验</title><link>http://kalpacode.cn/posts/rag-chunking/</link><guid isPermaLink="true">http://kalpacode.cn/posts/rag-chunking/</guid><description>同样的文章，换三种分块方式，检索命中率从 63% 到 87%。分块是 RAG 最被低估的环节。</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>RAG</category><category>LangChain</category></item><item><title>SSE 流式输出：从原理到 FastAPI 实现</title><link>http://kalpacode.cn/posts/sse-fastapi/</link><guid isPermaLink="true">http://kalpacode.cn/posts/sse-fastapi/</guid><description>AI 回答为什么要逐字返回？Server-Sent Events 比 WebSocket 简单在哪里，FastAPI 里怎么写。</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate><category>后端</category><category>SSE</category><category>FastAPI</category></item><item><title>用 Astro 搭建零 JS 博客的完整流程</title><link>http://kalpacode.cn/posts/astro-zero-js/</link><guid isPermaLink="true">http://kalpacode.cn/posts/astro-zero-js/</guid><description>内容站点为什么不需要一整个 React 应用？Astro 的岛屿架构如何把首页 JS 压到接近零。</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate><category>前端</category><category>Astro</category><category>静态站点</category></item><item><title>Docker 网络模式实践：从 bridge 到 host</title><link>http://kalpacode.cn/posts/docker-network/</link><guid isPermaLink="true">http://kalpacode.cn/posts/docker-network/</guid><description>四种网络模式到底怎么选？用一台 2G 内存的小服务器实测 bridge、host 与自定义网络的真实差异。</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate><category>后端</category><category>Docker</category><category>网络</category></item><item><title>阿里云 99 元 ECS 的极限运维手册</title><link>http://kalpacode.cn/posts/ecs-99-ops/</link><guid isPermaLink="true">http://kalpacode.cn/posts/ecs-99-ops/</guid><description>2 核 2G 跑静态博客 + Python 后端 + 向量库，每一 MB 内存都要精打细算。</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate><category>运维</category><category>Linux</category><category>Nginx</category><category>Swap</category></item><item><title>Tailwind 暗色模式的三种实现与取舍</title><link>http://kalpacode.cn/posts/tailwind-dark-mode/</link><guid isPermaLink="true">http://kalpacode.cn/posts/tailwind-dark-mode/</guid><description>class 策略、媒体查询、CSS 变量令牌——为什么这个博客选择第三种。</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate><category>前端</category><category>Tailwind</category><category>CSS</category></item></channel></rss>