<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI编程 on Svtter's Blog</title><link>https://svtter.cn/tags/ai%E7%BC%96%E7%A8%8B/</link><description>Recent content in AI编程 on Svtter's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sat, 13 Jun 2026 21:20:58 +0800</lastBuildDate><atom:link href="https://svtter.cn/tags/ai%E7%BC%96%E7%A8%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>糟糕的 token plan 隐私保护现状</title><link>https://svtter.cn/p/%E7%B3%9F%E7%B3%95%E7%9A%84-token-plan-%E9%9A%90%E7%A7%81%E4%BF%9D%E6%8A%A4%E7%8E%B0%E7%8A%B6/</link><pubDate>Mon, 15 Jun 2026 00:28:33 +0800</pubDate><guid>https://svtter.cn/p/%E7%B3%9F%E7%B3%95%E7%9A%84-token-plan-%E9%9A%90%E7%A7%81%E4%BF%9D%E6%8A%A4%E7%8E%B0%E7%8A%B6/</guid><description>&lt;img src="https://svtter.cn/p/%E7%B3%9F%E7%B3%95%E7%9A%84-token-plan-%E9%9A%90%E7%A7%81%E4%BF%9D%E6%8A%A4%E7%8E%B0%E7%8A%B6/pics/cover_1781356998.png" alt="Featured image of post 糟糕的 token plan 隐私保护现状" /&gt;&lt;p&gt;这篇文章是 AI Coding 数据训练政策对比（2026年6月）&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;核心结论：各平台在“是否使用你的代码训练模型”上政策差异极大。&lt;strong&gt;个人版多数默认用于训练，企业/API版通常承诺不用。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="tldr"&gt;TLDR
&lt;/h2&gt;&lt;p&gt;不想代码被训练，要么付钱买企业版/API，要么选小米 token plan。&lt;/p&gt;
&lt;h2 id="一平台政策速览表"&gt;一、平台政策速览表
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style="text-align: left"&gt;平台&lt;/th&gt;
					&lt;th style="text-align: left"&gt;普通版 / 个人版&lt;/th&gt;
					&lt;th style="text-align: left"&gt;API / 企业版&lt;/th&gt;
					&lt;th style="text-align: left"&gt;退出/关闭机制&lt;/th&gt;
					&lt;th style="text-align: left"&gt;备注&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;智谱 GLM&lt;/strong&gt; (Coding Plan)&lt;/td&gt;
					&lt;td style="text-align: left"&gt;✅ &lt;strong&gt;默认用于训练&lt;/strong&gt;&lt;br&gt;（协议明确允许）&lt;/td&gt;
					&lt;td style="text-align: left"&gt;✅ &lt;strong&gt;团队版承诺不用&lt;/strong&gt;&lt;br&gt;API 国际版有豁免&lt;/td&gt;
					&lt;td style="text-align: left"&gt;❌ 个人版无法一键关闭&lt;/td&gt;
					&lt;td style="text-align: left"&gt;团队版需额外付费购买&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;Kimi&lt;/strong&gt; (Kimi Code)&lt;/td&gt;
					&lt;td style="text-align: left"&gt;✅ &lt;strong&gt;默认用于训练&lt;/strong&gt;&lt;br&gt;（协议允许，且无法关闭）&lt;/td&gt;
					&lt;td style="text-align: left"&gt;✅ &lt;strong&gt;API 承诺不用&lt;/strong&gt;&lt;br&gt;（官方FAQ明确）&lt;/td&gt;
					&lt;td style="text-align: left"&gt;❌ 个人版无退出开关&lt;/td&gt;
					&lt;td style="text-align: left"&gt;个人工具定位，不推荐输敏感代码&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;小米&lt;/strong&gt; (MiMo Token Plan)&lt;/td&gt;
					&lt;td style="text-align: left"&gt;–&lt;/td&gt;
					&lt;td style="text-align: left"&gt;✅ &lt;strong&gt;承诺不用&lt;/strong&gt;&lt;br&gt;（隐私政策写明“未经同意不用于训练”）&lt;/td&gt;
					&lt;td style="text-align: left"&gt;✅ 可联系客服退出&lt;br&gt;（理论途径）&lt;/td&gt;
					&lt;td style="text-align: left"&gt;主要面向API场景，个人助理政策可能不同&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;MiniMax&lt;/strong&gt; (Coding Plan)&lt;/td&gt;
					&lt;td style="text-align: left"&gt;✅ &lt;strong&gt;默认用于训练&lt;/strong&gt;&lt;br&gt;（隐私政策允许）&lt;/td&gt;
					&lt;td style="text-align: left"&gt;⚠️ &lt;strong&gt;个人数据不用于训练&lt;/strong&gt;&lt;br&gt;（API隐私政策部分保护）&lt;/td&gt;
					&lt;td style="text-align: left"&gt;✅ &lt;strong&gt;提供退出机制&lt;/strong&gt;&lt;br&gt;（联系客服 Opt-out）&lt;/td&gt;
					&lt;td style="text-align: left"&gt;目前唯一明确给个人版退出通道的平台&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;图例&lt;/strong&gt;：✅ 是 / 有；❌ 否 / 无；⚠️ 部分保护 / 需确认&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="二关键区别总结"&gt;二、关键区别总结
&lt;/h2&gt;&lt;h3 id="1-最安全的选择数据绝对不训练"&gt;1️⃣ 最安全的选择（数据绝对不训练）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;小米 Token Plan (API)&lt;/strong&gt;：隐私政策直接承诺“未经同意不用于训练”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kimi API&lt;/strong&gt;：官方FAQ明文承诺不训练&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;智谱 GLM 团队版&lt;/strong&gt;：协议写入“数据默认不用于训练”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-有退出权个人版可申请关闭"&gt;2️⃣ 有退出权（个人版可申请关闭）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MiniMax&lt;/strong&gt;：个人用户可联系客服选择退出训练（&lt;strong&gt;唯一有此机制的个人版&lt;/strong&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-无退出权个人版强制参与训练"&gt;3️⃣ 无退出权（个人版强制参与训练）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kimi Code&lt;/strong&gt;、&lt;strong&gt;智谱 GLM 普通版&lt;/strong&gt;：协议允许训练，且无一键关闭开关 → &lt;strong&gt;请勿输入敏感代码&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="三使用建议"&gt;三、使用建议
&lt;/h2&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;strong&gt;必须购买企业版、团队版或使用 API&lt;/strong&gt;，并确认协议中“不用于训练”的承诺&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最佳隐私保护方案&lt;/strong&gt;：优先选择 &lt;strong&gt;小米 API&lt;/strong&gt; 或 &lt;strong&gt;Kimi API&lt;/strong&gt;（承诺清晰）或 &lt;strong&gt;智谱团队版&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;如果必须用个人版&lt;/strong&gt;：&lt;strong&gt;MiniMax&lt;/strong&gt; 是你唯一可以主动选择退出训练的平台&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="四注意事项"&gt;四、注意事项
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;各平台的隐私政策可能随时更新，&lt;strong&gt;使用前请务必自行查阅最新官方文本&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;“不用于训练”通常仅限 API/企业版，个人版默认都会用你的数据优化模型。&lt;/li&gt;
&lt;li&gt;部分平台（如 Kimi）连退出通道都没有，输入即同意训练。&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>AI Agent 时代的 Meta Programming</title><link>https://svtter.cn/p/ai-agent-%E6%97%B6%E4%BB%A3%E7%9A%84-meta-programming/</link><pubDate>Wed, 10 Jun 2026 01:05:46 +0800</pubDate><guid>https://svtter.cn/p/ai-agent-%E6%97%B6%E4%BB%A3%E7%9A%84-meta-programming/</guid><description>&lt;img src="https://svtter.cn/p/ai-agent-%E6%97%B6%E4%BB%A3%E7%9A%84-meta-programming/pics/cover_1781024729.png" alt="Featured image of post AI Agent 时代的 Meta Programming" /&gt;&lt;blockquote&gt;
 &lt;p&gt;AI 时代的 Meta Programming 是 workflow。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;最近很多人在说自己使用 loop 进行编程，但是没有具体说怎么做。&lt;/p&gt;
&lt;p&gt;本文是我的理解和实践。&lt;/p&gt;
&lt;h2 id="什么是-meta-programming"&gt;什么是 meta programming
&lt;/h2&gt;&lt;p&gt;loop 这个说法过于模糊，实际上基于 loop 编程，指的是基于 workflow 来编程。&lt;/p&gt;
&lt;p&gt;Meta Programming 中文是元编程。元类（metaclass）、C++ 宏编程、泛型，我认为均属于 Meta programming。&lt;/p&gt;
&lt;h2 id="workflow-为什么是-meta-programmingmp"&gt;Workflow 为什么是 Meta Programming（MP）？
&lt;/h2&gt;&lt;p&gt;合适的 workflow 可以让 AI 写出更好的代码。&lt;/p&gt;
&lt;p&gt;假设 MetaG 是一个「元函数」——它接收代码或约束作为输入，输出目标代码。例如 Python 虚拟机、C++ 预处理器都是 MetaG 的实例。&lt;/p&gt;
&lt;h3 id="c-宏---一种-mp"&gt;C++ 宏 - 一种 MP
&lt;/h3&gt;&lt;p&gt;以 C++ 宏为例，开发者编写宏模板作为输入，预处理器执行展开。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define BAD(x) x*x &lt;/span&gt;&lt;span class="c1"&gt;// BAD(2+3) → 2+3*2+3 = 11
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define GOOD(x) ((x)*(x)) &lt;/span&gt;&lt;span class="c1"&gt;// GOOD(2+3) → ((2+3)*(2+3)) = 25
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;此时 MetaG 就是 C++ 预处理器。&lt;/p&gt;
&lt;h3 id="python-元类"&gt;Python 元类
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;输入&lt;/strong&gt;：元类定义&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SingletonMeta&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;_instances&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__call__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;cls&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="bp"&gt;cls&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="bp"&gt;cls&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_instances&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;cls&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_instances&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="bp"&gt;cls&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;super&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="fm"&gt;__call__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;cls&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_instances&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="bp"&gt;cls&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Database&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;metaclass&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;SingletonMeta&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;初始化数据库连接&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# MetaG 接收 metaclass 定义和类定义，输出类 Database&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;此时 MetaG 是 Python 解释器。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;输出&lt;/strong&gt;：受元类控制的单例行为&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;db1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Database&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;# 输出: 初始化数据库连接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;db2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Database&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;# 无输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;db1&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;db2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="泛型"&gt;泛型
&lt;/h3&gt;&lt;p&gt;以 Go 语言为例。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;输入&lt;/strong&gt;：泛型函数定义&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-golang" data-lang="golang"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 泛型函数：返回两个相同类型值的较小者（要求类型支持 &amp;lt; 运算符）&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Min&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;float64&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;MetaG 接收泛型定义，根据类型参数生成具体的函数实例。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;输出&lt;/strong&gt;：泛型展开后的具体函数&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-golang" data-lang="golang"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 省略实现细节&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;Min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;Min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;float64&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;float64&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;float64&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="总结"&gt;总结
&lt;/h3&gt;&lt;p&gt;在传统的 Meta Programming 中，MetaG 的输入和输出都是代码。MetaG 本身是一个确定性的程序（编译器、解释器、预处理器），输入模板或类型定义，输出展开后的代码。&lt;/p&gt;
&lt;h2 id="一个-workflow-例子"&gt;一个 workflow 例子
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;/goal&lt;/code&gt; 是 Claude Code 中的一个命令，用于设定一个高层目标，让 agent 自主循环工作直到达成。以下是一个基于 &lt;code&gt;/goal&lt;/code&gt; 的 workflow 例子。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;输入&lt;/strong&gt;：一段 workflow 脚本&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# python 例子&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set_goal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;from user input&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 目标来自用户输入&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;review_result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Can exit loop? read the code and confirm the goal&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;get_goal&lt;/span&gt;&lt;span class="p"&gt;()):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;do programming&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;review_result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;review_result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;do review&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;round_max&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;agent 在每次循环中检查是否达成目标，未达成则继续编程和 review，直到 goal 完成或达到最大轮次。&lt;/p&gt;
&lt;p&gt;MetaG 是可以执行 workflow 的 runtime，例如 Claude Code 或者 OMP。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;输出&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...当前项目的代码，经过了 LLM 生成和 LLM review 反复改进。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="已有的-runtime"&gt;已有的 runtime
&lt;/h2&gt;&lt;p&gt;目前已有多个 runtime 支持执行 workflow，以下是两个典型的例子。&lt;/p&gt;
&lt;h3 id="claude-code"&gt;Claude Code
&lt;/h3&gt;&lt;p&gt;Claude Code 提供了更丰富的 workflow 原语，例如 &lt;code&gt;parallel&lt;/code&gt;、&lt;code&gt;pipeline&lt;/code&gt;、&lt;code&gt;subagent&lt;/code&gt; 等，支持并行、串行和委托等执行模式。&lt;/p&gt;
&lt;p&gt;上面的例子只用了 &lt;code&gt;agent&lt;/code&gt; 这个原语，实际上 Claude Code 生成的大多数是 &lt;code&gt;parallel(agent1, agent2, agent3)&lt;/code&gt; 或者是 &lt;code&gt;pipeline(agent1, agent2, agent3)&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id="omp---oh-my-pi"&gt;OMP - oh my pi
&lt;/h3&gt;&lt;p&gt;workflow 这个功能在 OMP 上体验更好。&lt;/p&gt;
&lt;p&gt;可以通过对话将 Python workflow 落盘，下一次直接 eval 使用。在 Claude Code 中，workflow 用 JS 表示。&lt;/p&gt;
&lt;p&gt;如果 py 文件里本身有 loop，那么下次 coding 的过程就是 eval loop 的过程。workflow 本身也可有输入输出。&lt;/p&gt;</description></item></channel></rss>