<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on LinyingBlog</title><link>https://www.iam041.com/posts/</link><description>Recent content in Posts on LinyingBlog</description><generator>Hugo</generator><language>zh_CN</language><lastBuildDate>Mon, 22 Jun 2026 16:48:22 +0800</lastBuildDate><atom:link href="https://www.iam041.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Tongue 舌象分析管理系统</title><link>https://www.iam041.com/posts/tongue-project/</link><pubDate>Mon, 22 Jun 2026 16:48:22 +0800</pubDate><guid>https://www.iam041.com/posts/tongue-project/</guid><description>&lt;p&gt;&lt;a href="http://39.108.98.61/tongue/" title="Tongue 舌象分析管理系统"&gt;访问在线演示&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="系统概览"&gt;系统概览&lt;/h2&gt;
&lt;p&gt;该系统专注于舌象数据的结构化管理，现阶段重点是稳定沉淀结构化训练资产，为后续算法训练与模型接入做准备。&lt;/p&gt;
&lt;h2 id="核心模块"&gt;核心模块&lt;/h2&gt;
&lt;h3 id="1-主页"&gt;1. 主页&lt;/h3&gt;
&lt;p&gt;主页展示舌象数据集工作流的全局状态：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;图片总数&lt;/strong&gt;：已上传的舌象图片数量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;待处理&lt;/strong&gt;：等待预处理的图片数量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;已完成预处理&lt;/strong&gt;：已预处理完成的图片数量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;导出数据集数&lt;/strong&gt;：已导出的训练数据集数量&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;数据概览包含训练资产沉淀的进度指标：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;指标&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;预处理完成率&lt;/td&gt;
					&lt;td&gt;标准图可用于后续标注和训练导出&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;待处理占比&lt;/td&gt;
					&lt;td&gt;用于判断当前图片预处理阻塞情况&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;已导出数据集&lt;/td&gt;
					&lt;td&gt;沉淀为后续模型训练的基础资产&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="2-图片管理"&gt;2. 图片管理&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://39.108.98.61/tongue/images" title="舌象图片管理"&gt;图片管理&lt;/a&gt;模块提供完整的图片生命周期管理：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;字段&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;ID&lt;/td&gt;
					&lt;td&gt;图片唯一标识&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;图片名称&lt;/td&gt;
					&lt;td&gt;文件名&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;预处理状态&lt;/td&gt;
					&lt;td&gt;已完成 / 待处理&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;尺寸&lt;/td&gt;
					&lt;td&gt;图片分辨率&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;文件大小&lt;/td&gt;
					&lt;td&gt;图片文件体积&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;缩略图预览&lt;/td&gt;
					&lt;td&gt;预览图&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;上传时间&lt;/td&gt;
					&lt;td&gt;上传时间戳&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;操作功能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;预处理&lt;/strong&gt; - 对图片进行标准化处理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;详情&lt;/strong&gt; - 查看图片详细信息&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标注&lt;/strong&gt; - 进行人工标注&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;报告&lt;/strong&gt; - 生成分析报告&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;删除&lt;/strong&gt; - 移除图片&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-数据导出"&gt;3. 数据导出&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://39.108.98.61/tongue/export" title="数据集导出"&gt;数据导出&lt;/a&gt;模块支持按多种维度筛选导出训练数据：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;预处理状态&lt;/li&gt;
&lt;li&gt;是否标注&lt;/li&gt;
&lt;li&gt;是否复核&lt;/li&gt;
&lt;li&gt;结构化标签&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-任务中心"&gt;4. 任务中心&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://39.108.98.61/tongue/tasks" title="任务追踪"&gt;任务中心&lt;/a&gt;追踪所有图片预处理和数据集导出任务：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;字段&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;任务 ID&lt;/td&gt;
					&lt;td&gt;任务唯一标识&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;任务类型&lt;/td&gt;
					&lt;td&gt;如 preprocess&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;状态&lt;/td&gt;
					&lt;td&gt;任务执行状态&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;图片 ID&lt;/td&gt;
					&lt;td&gt;关联的图片&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;数据集 ID&lt;/td&gt;
					&lt;td&gt;关联的数据集&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;失败原因&lt;/td&gt;
					&lt;td&gt;任务失败时的错误信息&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;开始时间&lt;/td&gt;
					&lt;td&gt;任务开始时间&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;结束时间&lt;/td&gt;
					&lt;td&gt;任务结束时间&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;项目设计：&lt;a href="https://github.com/wobushi041" title="GitHub"&gt;wobushi041&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Harness Engineering</title><link>https://www.iam041.com/posts/harness-engineering/</link><pubDate>Tue, 09 Jun 2026 20:30:00 +0800</pubDate><guid>https://www.iam041.com/posts/harness-engineering/</guid><description>&lt;p&gt;从架构视角深入解读 Harness 的设计哲学，帮助工程师建立对现代 CI/CD 平台的认知框架&lt;/p&gt;
&lt;h2 id="一harness-到底是什么"&gt;一、Harness 到底是什么&lt;/h2&gt;
&lt;p&gt;一句话：&lt;strong&gt;Harness 是一个构建在 Kubernetes 之上的、以 Delegate 为核心执行引擎的、SaaS 化的软件交付平台。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这句话里有三个关键词，每一个都值得展开。&lt;/p&gt;
&lt;h3 id="1-构建在-kubernetes-之上"&gt;1. 构建在 Kubernetes 之上&lt;/h3&gt;
&lt;p&gt;Harness 的控制平面（Control Plane）是一组微服务，运行在 Kubernetes 集群中。这意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;弹性伸缩&lt;/strong&gt;是天然能力，不是事后补丁&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多租户隔离&lt;/strong&gt;通过 K8s 的 namespace 和资源配额实现&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;服务治理&lt;/strong&gt;依赖 K8s 原生的服务发现和负载均衡&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是什么了不起的事——几乎所有现代 SaaS 产品都跑在 K8s 上。但关键在于，Harness 把 K8s 的能力&lt;strong&gt;向下暴露给了用户&lt;/strong&gt;：你的 Pipeline 可以直接操作 K8s 集群进行部署，而不是通过一层中间转换。&lt;/p&gt;
&lt;h3 id="2-delegate-是核心执行引擎重点"&gt;2. Delegate 是核心执行引擎（重点）&lt;/h3&gt;
&lt;p&gt;这是理解 Harness 最关键的一个概念。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Delegate 是一个运行在你基础设施中的进程&lt;/strong&gt;，负责执行 Pipeline 中的所有任务。它不是 Harness 帮你跑的——它跑在&lt;strong&gt;你的环境&lt;/strong&gt;里。&lt;/p&gt;
&lt;p&gt;为什么要这样设计？因为软件交付涉及的操作，绝大多数都需要访问内网资源：代码仓库、制品库、K8s 集群、数据库、云账号。如果这些操作全部由 Harness 的 SaaS 控制平面来执行，就意味着你的内网资源必须对 Harness 开放——这在安全合规层面几乎不可接受。&lt;/p&gt;
&lt;p&gt;Delegate 的架构解决了这个问题：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────┐
│ Harness SaaS控制平面 │
│ (Pipeline 编排、状态管理、UI、API) │
└──────────────────────┬──────────────────────────────┘
 │ 出站连接（Delegate 主动拉取任务）
 │ ← 不需要入站端口暴露
┌──────────────────────▼──────────────────────────────┐
│ 你的基础设施 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Delegate │ │ Delegate │ │ Delegate │←可部署多个 │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ ┌───▼───┐ ┌────▼───┐ ┌────▼───┐ │
│ │K8s集群 │ │代码仓库 │ │云账号 │ │
│ └───────┘ └────────┘ └────────┘ │
└─────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;核心设计要点：&lt;/p&gt;</description></item><item><title>LLM Wiki：面向 Agent 工程的知识编译层</title><link>https://www.iam041.com/posts/llm-wiki/</link><pubDate>Mon, 01 Jun 2026 10:54:03 +0800</pubDate><guid>https://www.iam041.com/posts/llm-wiki/</guid><description>&lt;p&gt;如果只先记住一个结论，那么可以记这句：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;LLM wiki&lt;/code&gt; 不是“让 AI 帮你整理笔记”，而是把项目知识从原始资料提升为 Agent 可消费、可引用、可演化的知识中间层。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这个判断的关键在于，问题并不只是“资料有没有被存下来”，而是“资料是否已经被整理成 Agent 可以稳定工作的形状”。在这件事上，&lt;code&gt;RAG&lt;/code&gt; 和 &lt;code&gt;LLM wiki&lt;/code&gt; 处理的根本不是同一层问题。&lt;a href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f"&gt;Andrej Karpathy 提出的 &lt;code&gt;llm-wiki.md&lt;/code&gt; 范式&lt;/a&gt; 给出的也不是一个笔记软件教程，而是一种把知识从原始材料编译成可维护工作上下文的思路。&lt;/p&gt;
&lt;p&gt;本文想讨论的是三个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;LLM wiki&lt;/code&gt; 到底是什么&lt;/li&gt;
&lt;li&gt;它和 &lt;code&gt;RAG&lt;/code&gt; 的边界到底在哪里&lt;/li&gt;
&lt;li&gt;如果要把它落到工程实践里，最小实现应该长什么样&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="1-agent-真正缺的不是更多文档而是知识编译层"&gt;1. Agent 真正缺的不是“更多文档”，而是知识编译层&lt;/h2&gt;
&lt;p&gt;很多仓库并不缺文档。&lt;/p&gt;
&lt;p&gt;README、ADR、issue、PR、聊天记录、代码注释、发布记录，甚至临时会议纪要，往往已经足够多。问题在于，这些材料大多是围绕“人怎么理解系统”自然长出来的，而不是围绕“Agent 应该如何进入系统、命名概念、定位事实、拼装上下文”组织出来的。&lt;/p&gt;
&lt;p&gt;这会带来几个很典型的摩擦：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;资料很多，但没有稳定入口&lt;/li&gt;
&lt;li&gt;术语存在，但定义分散甚至漂移&lt;/li&gt;
&lt;li&gt;同一个问题需要每次重新检索和重新拼接上下文&lt;/li&gt;
&lt;li&gt;原始资料适合追溯事实，不适合直接充当工作层&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 &lt;code&gt;LLM wiki&lt;/code&gt; 试图解决的，不是“把一堆东西再存一遍”，而是另一件更具体的事：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;它的价值不在存储，而在预编译；不在收集，而在把知识变成可持续复用的中间表示。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Karpathy 在原始 gist 里把这件事描述得很清楚：系统并不直接依赖原始材料回答问题，而是先把原始材料经过整理，沉淀成持续更新的 &lt;code&gt;wiki&lt;/code&gt; 层，并由 &lt;code&gt;schema&lt;/code&gt; 约束其结构与工作流，再把它作为后续查询和工作的主上下文层。&lt;a href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f"&gt;来源&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="2-与-rag-的绝对区分一个是运行时召回一个是离线知识编译"&gt;2. 与 RAG 的绝对区分：一个是运行时召回，一个是离线知识编译&lt;/h2&gt;
&lt;p&gt;很多讨论会把 &lt;code&gt;LLM wiki&lt;/code&gt; 和 &lt;code&gt;RAG&lt;/code&gt; 混在一起，但这两者并不是同义替换。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;RAG&lt;/code&gt; 的经典定义来自 Lewis 等人的论文 &lt;em&gt;Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks&lt;/em&gt;：模型在生成前，先从外部知识源检索相关内容，再把检索结果并入生成过程。&lt;a href="https://arxiv.org/abs/2005.11401"&gt;论文链接&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Superpowers 使用指南</title><link>https://www.iam041.com/posts/superpowers-plugin-guide/</link><pubDate>Sat, 30 May 2026 20:30:00 +0800</pubDate><guid>https://www.iam041.com/posts/superpowers-plugin-guide/</guid><description>&lt;p&gt;如果只先记住一个结论，那么可以记这句：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Superpowers 不是单纯的“代码增强插件”，而是一套把软件开发最佳实践内化为可执行工作流的方法论插件。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;它的价值不在于“帮你多补几行代码”，而在于通过一组技能系统，把设计、计划、执行、测试、审查、调试和收尾这些环节串成一个更稳定的开发闭环。&lt;/p&gt;
&lt;p&gt;本文会系统回答几个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Superpowers 到底是什么&lt;/li&gt;
&lt;li&gt;它和普通代码辅助工具有什么本质区别&lt;/li&gt;
&lt;li&gt;它的完整工作流怎么跑&lt;/li&gt;
&lt;li&gt;什么时候该自动触发，什么时候适合手动调用&lt;/li&gt;
&lt;li&gt;使用中最容易踩的坑是什么&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="1-superpowers-到底是什么"&gt;1. Superpowers 到底是什么&lt;/h2&gt;
&lt;p&gt;Superpowers 是一个面向 Claude Code 的开发流程插件。它不是把一堆零散命令简单打包，而是把软件工程中的一整套高质量实践，组织成可自动触发、可组合、可审查的工作流。&lt;/p&gt;
&lt;p&gt;和常见“你提需求，我给代码”的工具相比，它有几个明显不同点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它会优先帮助你澄清需求，而不是立刻开写&lt;/li&gt;
&lt;li&gt;它强调计划拆解，而不是一次性生成大段实现&lt;/li&gt;
&lt;li&gt;它默认引入 TDD、代码审查和系统化调试&lt;/li&gt;
&lt;li&gt;它允许通过子代理并行处理任务&lt;/li&gt;
&lt;li&gt;它把“验证是否真的完成”看得和“写出代码”同样重要&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，Superpowers 关注的不只是产出代码，而是产出一个更可控、更可验证的开发过程。&lt;/p&gt;
&lt;h2 id="2-核心理念是什么"&gt;2. 核心理念是什么&lt;/h2&gt;
&lt;p&gt;Superpowers 背后最重要的不是某个命令，而是它坚持的几条工程原则。&lt;/p&gt;
&lt;h3 id="21-测试驱动开发优先"&gt;2.1 测试驱动开发优先&lt;/h3&gt;
&lt;p&gt;它默认推崇 TDD，也就是经典的 &lt;code&gt;RED -&amp;gt; GREEN -&amp;gt; REFACTOR&lt;/code&gt; 循环：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先写一个失败的测试&lt;/li&gt;
&lt;li&gt;再写最少的代码让测试通过&lt;/li&gt;
&lt;li&gt;最后在测试保护下重构&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这会强迫开发从“想当然实现”切换到“先定义预期行为，再补实现”。&lt;/p&gt;
&lt;h3 id="22-系统化优于临时应对"&gt;2.2 系统化优于临时应对&lt;/h3&gt;
&lt;p&gt;遇到问题时，它更倾向于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;明确定位问题&lt;/li&gt;
&lt;li&gt;收集证据&lt;/li&gt;
&lt;li&gt;找根因&lt;/li&gt;
&lt;li&gt;用流程和验证收束结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而不是简单地“试一下这个改法能不能过”。&lt;/p&gt;
&lt;h3 id="23-简单性优先于复杂炫技"&gt;2.3 简单性优先于复杂炫技&lt;/h3&gt;
&lt;p&gt;Superpowers 的方法论倾向非常明确：复杂度不是能力的证明，能把问题拆到足够小、足够清楚，才是真正可维护的工程能力。&lt;/p&gt;
&lt;h3 id="24-验证优先于宣称"&gt;2.4 验证优先于宣称&lt;/h3&gt;
&lt;p&gt;“已经修好了”“应该可以了”“理论上没问题”这类表述，在它的工作流里都不算真正完成。必须通过测试、审查、验证或复现消除，结果才算站得住。&lt;/p&gt;
&lt;h2 id="3-它和普通代码辅助工具有什么不同"&gt;3. 它和普通代码辅助工具有什么不同&lt;/h2&gt;
&lt;p&gt;可以用下面这张表快速理解它的定位：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;普通代码辅助工具&lt;/th&gt;
					&lt;th&gt;Superpowers&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;主要目标&lt;/td&gt;
					&lt;td&gt;更快生成代码&lt;/td&gt;
					&lt;td&gt;更稳地完成完整开发流程&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;默认行为&lt;/td&gt;
					&lt;td&gt;直接根据需求写实现&lt;/td&gt;
					&lt;td&gt;先设计、再计划、再执行&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;测试态度&lt;/td&gt;
					&lt;td&gt;可有可无&lt;/td&gt;
					&lt;td&gt;默认强制引入 TDD&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;代码审查&lt;/td&gt;
					&lt;td&gt;往往依赖人工补充&lt;/td&gt;
					&lt;td&gt;工作流内建审查机制&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;调试方式&lt;/td&gt;
					&lt;td&gt;偏经验式试错&lt;/td&gt;
					&lt;td&gt;强调系统化根因分析&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;适用对象&lt;/td&gt;
					&lt;td&gt;单次编码任务&lt;/td&gt;
					&lt;td&gt;需要流程质量保证的开发任务&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;所以，Superpowers 更像是“开发过程的组织者”，而不只是“生成代码的助手”。&lt;/p&gt;</description></item><item><title>Docker 学习笔记</title><link>https://www.iam041.com/posts/docker-learning-notes/</link><pubDate>Fri, 19 Dec 2025 23:19:15 +0800</pubDate><guid>https://www.iam041.com/posts/docker-learning-notes/</guid><description>&lt;p&gt;这篇文章是一份面向个人工程实践的 Docker 入门整理，重点记录 Docker、Dockerfile、Docker Compose，以及它们在 Windows + WSL2 环境下的实际工作方式。&lt;/p&gt;
&lt;h2 id="文章定位"&gt;文章定位&lt;/h2&gt;
&lt;p&gt;这不是一篇面向生产环境的完整 Docker 手册，而是一份偏向个人工程实践的入门梳理，目标是把几个最常见但最容易混淆的问题讲清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docker 到底是什么&lt;/li&gt;
&lt;li&gt;Dockerfile 和 Docker Compose 分别解决什么问题&lt;/li&gt;
&lt;li&gt;Windows + WSL2 下 Docker 到底运行在哪里&lt;/li&gt;
&lt;li&gt;一个前后端项目如何通过 Compose 完成部署&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="参考资料"&gt;参考资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=pg19Z8LL06w"&gt;Docker 教程视频&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="docker-是什么"&gt;Docker 是什么&lt;/h2&gt;
&lt;p&gt;Docker 是基于 Linux 内核能力实现的容器技术，核心依赖包括命名空间（Namespaces）和控制组（cgroups）。它的本质不是“轻量虚拟机”，而是运行在宿主机 Linux 内核之上的隔离用户态环境。&lt;/p&gt;
&lt;p&gt;因此，Docker 容器具备这些特征：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有自己的文件系统视图，例如 &lt;code&gt;/bin&lt;/code&gt;、&lt;code&gt;/etc&lt;/code&gt;、&lt;code&gt;/usr&lt;/code&gt;、&lt;code&gt;/app&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;可以运行 Linux 用户态程序，例如 &lt;code&gt;sh&lt;/code&gt;、&lt;code&gt;java&lt;/code&gt;、&lt;code&gt;ls&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;不拥有独立内核，而是共享宿主机内核&lt;/li&gt;
&lt;li&gt;更适合描述为“进程级隔离环境”，而不是真正意义上的虚拟机&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一句话理解：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;容器负责隔离运行环境，镜像负责定义运行环境。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="windows--wsl2-下的-docker-运行方式"&gt;Windows + WSL2 下的 Docker 运行方式&lt;/h2&gt;
&lt;p&gt;在 Windows 环境中，Docker 并不是“直接跑在 Windows 内核上”。Docker Desktop 实际依赖的是 WSL2 提供的 Linux 内核环境。&lt;/p&gt;</description></item></channel></rss>