[音乐]
这比Claude Code的32,000少,也比OpenCode的19,000少。大家好,欢迎收看本期节目。今天我们要检查AI Harness(智能体框架)。我们有Claude Code、OpenCode,甚至还在Inference上原生运行它。AI Harness的理念是,你不必手动提示、编辑内容或与聊天应用来回交谈,而是让它自动验证并为你进行编辑。基本上就是让AI模型在循环中运行。这就是它的全部魔法所在,但根据你使用的Harness不同,会有巨大的差异。
在这段视频中,我实际上要解释为什么我个人不喜欢AI Harness,尤其是在本地运行时。如果我有无限的算力,当然可以把它扔进循环里让它自行处理。但当我在本地系统上小心翼翼地缓慢运行模型时,我希望尽可能精确。我会向你展示具体发生了什么以及原因。首先是Claude Code。我们将以CLI模式运行它。现在,它提示你需要一个Claude订阅之类的东西。这不是真的。你实际上可以使用本地模型来运行它。
为此,你只需使用这个curl命令,它会安装脚本以启动Claude Code。所以你去这边的终端,把它粘贴进去,执行curl命令,它就会下载并安装Claude Code。我运行的Claude Code版本是2.1.272,这是我最近刚获得的一个新版本。这就是我用来运行它的命令。首先我执行export ANTHROPIC_BASE_URL,这是我服务器的URL。那是我的IP地址和端口号。我会向你展示我具体连接到什么。
我给一个假的API密钥,因为我不使用它们,只是为了让它满意。我使用CLAUDE_CODE_DISABLE_NON_INTERACTIVE(此处原文为disable non traffic,推测指非交互或遥测),这应该能禁用遥测等所有此类功能。它甚至禁用了版本更新,如果你想保持最新状态可以手动更新场景(此处原文为scene to update manually,推测指设置中手动检查更新)。然后要运行Claude,你只需输入claude model并选择你想运行的模型。
所以我将在Inference中运行它,在这里进行推理。我只需点击服务器选项卡,点击Serve(服务),并确保我连接了Anthropic兼容的AI。现在我这里有几个设置:一个是我启用了allow multimodel(允许多模态),这让它也能推理图像,所以我们将使用Claude Code的这个功能。我还将默认思考模式设置为中等(medium),并将API思考限制设为无限。
Inference内部有一个功能,实际上可以限制它产生的思维令牌数量。它会尝试提前退出等所有此类操作。但对于这个,我设置为无限,因为我想获得信息的原始样本。所以让我们启动Claude Code,看看它有多好。就这样,它已经运行起来了。我要输入“hello”,只是看看循环外是否一切正常。在这个版本中,我取消了一切缓存。
所以我这里有服务器生成正在发生。我们可以看到它正在处理发送到Inference的那个提示词。现在,有一个功能你想在设置中启用:你需要启用“缓存提示词”。这意味着下次它发送系统提示词时(这是一个巨大的系统提示词),它将不必重新处理所有内容。所以在Claude Code那边,我们可以看到它现在回复了。
它花了33秒。我接下来运行的是Qwen 3.8 Flash Next(此处原文为quen,推测指通义千问)。非常、非常高阶的模型。它运行得非常快。我喜欢它,尤其是如果你在做AI Harness时。如果你想做最好的,你有Gemini(此处原文为Kimmy)等所有此类东西。但如果你想要AI Harness中最快的一个,并且你有足够的内存,你就是在看Qwen 3.8 Flash Next。那个运行得非常完美。
所以我们这里有响应:“你好,今天我能帮你什么?” Wheel(此处原文为Wheel,可能是口误或特定术语)正在做一个调试的事情。所以全部完成。第一次处理它花了33秒。现在,如果我点击“新建”并输入hello,下一次它会快得多地处理它,因为它已经缓存了大部分内容。
我想向你展示的是,如果你点击斜杠(/),输入/context,它会显示系统提示词使用了多少上下文。那是Claude给出的巨大系统提示词。看看这个:18,000个令牌。20万上下文窗口的9%仅仅被这个巨大的膨胀部分占用了,就为了让Claude Code做它该做的事。18,000个令牌。如果你尝试用GLM 5.3运行这个,你会变得非常、非常慢。
GLM 5.3一开始运行真的很快,但随着上下文窗口变大,它开始变慢并卡顿。80,000个令牌在使用较大模型时将是噩梦般的体验。但用这个(Qwen),它运行得还算可用。现在让我们把它和OpenCode做个对比,作为这边的基准线。安装OpenCode基本上做完全相同的事情。你有这个curl请求命令:opencode.ai/install bash。
你只需复制它,我为此制作了一个专用文件夹叫“open code local”。你把命令粘贴在那里,它就会下载脚本并准备好一切。所以如果我去OpenCode这里查看版本,我们可以看到我正在运行1.18.31版。也许有新版本出来了等所有此类情况。对于OpenCode,设置方式是创建一个名为opencode.json的文件。所以vi opencode.json(使用文本编辑器打开)。
这是我之前已经制作好的一个文件,它遵循你从网站复制粘贴的模式。所有你要做的就是设置提供商(provider)。所以我把它命名为Inference,并给了它带有IP地址的URL。我使用的是OpenAI API。这是第一点。然后你给它模型名称。所以你有Qwen 3.827B(此处原文为Quen,推测指通义千问)。但我也添加了Qwen 3.8 Next Q9(此处原文为Quinn,推测指通义千问)。我把它命名为Qwen 4。
要在Inference中获取这些模型名称,你只需去这边的服务器选项卡内部。正如你所见,我启用了OpenAI、Alarm(此处原文为alarm,推测指某个服务或拼写错误)和Anthropic。所以我这里启用了所有选项。如果我去我的Mac,我可以看到这些是不同的URLs。对于OpenAI,我正在使用/v1(此处原文为for/v1)。所有可用的URLs都列在那里。
有些应用程序喜欢带/v1的,有些应用程序只喜欢裸IP地址和端口号并自行推断。这就是为什么提供两个选项的原因。对于OpenCode,我正在使用/v1(此处原文为for/v1)。而对于Anthropic,我使用的是不带v1的那个,因为那是能与Claude Code配合工作的。服务器模型我都列在这里了。我正在使用的是Qwen 3.8 Flash Next(此处原文为quen)。
所以我把它复制过来。然后我进入这个列表,只确保模型名称是那个。你可以给它起个昵称。所以我把它昵称为Qwen for(此处原文为quen,推测指通义千问)。
正在使用的架构被称为 Qwen 4 Experimental。现在一切都设置好了,我只需输入 open code,然后进入 models(模型)选项,选择你想使用的哪一个。Open Code 确实有一些免费的模型可用,比如 Muse Spark、1.33 Free Ling 等等。但如果你想使用自定义的模型,它们就在列表的最底部。我正在使用的是我配置好的那个提供商,也就是 Qwen 4。让我们输入“你好”,看看上下文窗口会有多大。
第一次运行时,它需要进行处理,因为它是从头开始处理的。它会发送那个庞大的系统提示词并进行处理。其中包含了所有的工具调用,以及关于它应该关注什么的特殊指令。你可以看到,它的上下文窗口使用了 7,800 个 token。现在,让我们看看当我们在聊天界面中直接运行它时,在上下文窗口方面会使用多少 token。
我这里有 Infrancer(推测为 Inferencer 或类似工具),我正在连接我这边的 Mac Studio。我选择了 Mac Studio,然后开始一个新的聊天窗口。你也可以使用这里的服务器选项卡进行连接。点击它,选择你想连接的服务器。但我要进入并选择 Qwen Flash Next 和 Q9,这是我当前选中的模型。
我现在启用了视觉功能,因为我们将要实施一些视觉相关的操作。我要禁用工具调用,因为我想要获得最小的上下文窗口。然后我只需输入“你好”,就会得到即时响应,因为它实际上没有什么需要处理的内容。这个提示词之前没有被缓存过(uncached)。但如果你查看上下文窗口,它只有 82 个 token。
这就是我不喜欢 Harness(框架/外壳)的原因所在。如果你看看 Open Code 的上下文窗口,它是 7,800 个 token。如果你在更大的模型中使用它,你一开始就已经处于劣势了。而如果你使用 Claude Code(字幕误写为 clawed code),你知道的,它会节省 18,400 个 token。
这是一次 Harness 评测。因此,我们将使用循环(loop)来运行所有这些内容。为了在这里的 Inferencer 中使用循环,我们需要启用一些工具。我这里有一个“工具”按钮,只需将其启用即可。我们要启用的工具包括文件操作功能。我这里有读取文件、编辑文件等功能,它们都在目录中。
此外,我还拥有代码验证功能,这样你可以确保你写下的 JavaScript 代码是正确的;AI 可以检查它并确认其质量。它还拥有互联网访问权限,因此我们可以获取网页内容。这些是让一切顺利运行的基本工具。
现在,当我们点击“工具”并再次输入“你好”时,它拥有了带有可运行工具调用的系统提示词。虽然仍在处理中,但它不得不处理一个更大的上下文窗口。因此,作为基准,我们现在是 2,590 个 token。尽管包含了 AI Harness 所必需的所有工具调用,它仍然少于 Claude Code 的 18,400 个 token,也少于 Open Code 的 7,800 个 token。
那么质量如何呢?因为我听到很多人说,Harness 是魔法源泉,凭借系统提示词等机制,允许你编写出真正能运行且效果很好的代码。我们将比较在没有工具时生成的代码、使用工具时可生成的代码,以及 Open Code 和 Claude 可生成的代码,看看哪一个实际上能做出最好的版本。
首先我想向你展示 Open Code 和 Claude Code(字幕误写为 claw code)之间的一个微小差异。我喜欢 Claude Code 而 Open Code 没有的一个功能是图像推理(image inferencing)。在 Claude Code 中,如果我在这里开始一个新会话,你可以进入你的 Finder(访达),直接抓取一张图片,例如一只猫,然后输入“这是什么”,它就会对其进行推理。
这被称为 Cerebrating(字幕原文如此,可能指某种思考过程)。我不知道这家公司怎么值一千亿美元。这就像是在搞恶作剧,对吧?这就是伪智能,对吧?我们假装自己在做某种聪明的事。它正在处理这边的提示词。我们可以看到它实际上进行了两次服务器生成,因为 Harness 喜欢做的一件事是:不仅仅是输入你刚给它的东西,它喜欢在后台进行第二次提示词处理。
尽管你看不到聊天名称,但它会要求模型为对话命名或生成摘要。它思考了 21 秒,然后说:“一张年轻虎斑猫的照片。”现在让我们检查一下这个的上下文窗口。上下文窗口是 18.7K,即 18,700 个 token。
我现在运行的是 False Mod(推测为某种快速模式),所以我们没注意到它有多慢。但如果我们使用 Inferencer 直接运行,让我们开个新窗口。我会保持工具启用状态,以便进行公平比较。然后我们对同一只猫做同样的操作,问:“这是什么?”
如你所见,它正在处理提示词并立即回答。我们的速度是每秒 35 token。我现在是在调试模式下运行,以防出现任何错误。我基本上所有东西都在调试模式下运行,因为我在开发这类内容。我们得到每秒 36 token的速度,但如果你看这里的上下文窗口,它是 3,000 个 token。
因此,为了推理这张图片以及包含所有必要工具的系统提示词,我们只用了 3,000 个 token。而 Claude Code(字幕误写为 clawed code)用了 18,700 个 token。你开始明白我为什么不喜欢 Harness 了吗?你有这种感觉吗?好吧,也许你没有。
那么现在让我们进行测试吧。我们将要求 Claude Code、Open Code 和启用工具的 Inferencer 生成一些内容,看看哪一个能产生最好的结果。我将在这里开始一个新的生成任务。我会进入并要求它为我制作一个令人印象深刻的井字棋(tic tac toe)版本,并将其保存为 tictoe.html。
我先从 Claude Code 开始,看看它会怎么做。它正在 Nebulizing(字幕原文如此)。这家价值两万亿美元的公司正在“星云化”。这是真正的 AI,不仅仅是一个数据库。它是真实的。它正在做一些事情,它在思考。
Claude Code 喜欢掩盖它的思维过程,所以你不能确切看到正在发生什么。你基本上只能等待并看看会发生什么。它仍在思考中。现在,如果我进入 Inferencer,我实际上可以看到它正在这里生成一些 token。我们可以看到目前它的速度是每秒 33.7 token,并且它显示“正在更多思考”。
所以,它不喜欢确切地告诉你它在想什么。关于 Open Code 的一个优点是,至少在思考阶段你会得到某种更新;而在 Claude Code(字幕误写为 claw code)中,45 秒过去了,我们完全不知道它在做什么。
除了刚才提到的每秒33.5个令牌的速度外,目前大约已经过去了三分钟。系统正在询问我是否要创建这个文件。你可以设置自动接受编辑,这大概是一个你希望启用的功能。我只是让它在自己的小文件夹里运行,虽然我也能手动接受编辑,但我刚刚已经接受了。最终花费了3分55秒完成了该文件的创建。
现在我可以进入我的“clawed”文件夹,看到里面生成了井字棋文件。我直接在浏览器中启动它,先睹为快,看看它在完成所有工作前做了什么。我们看到屏幕上确实运行起来了:有两个玩家选项和“对战电脑”模式。点击“对战电脑”后,会出现简单、中等以及不可战胜三种难度。我选择简单模式,因为我想看看自己能做到什么程度。
在简单模式下,电脑的表现确实很弱,正如预期那样容易对付。目前发现的主要bug是圆圈没有画成完整的圆形。让我们看看Claude做了什么:它显示“看那个”,表明它在交付前进行了思考,并主动发现了一个实际存在的bug。它询问我是否要编辑修复?我说“是”,请继续编辑,希望它能修好。我们可以看到文件在下午5点刚刚更新过。
嘿,我赢了那一轮!新回合开始很好。但我注意到的唯一bug是完整圆圈仍未正常工作,让我们看看它是否修复了。是的,它又发现了另一个错误需要修正。(笑声)我想是因为之前给它的混乱系统提示词让它感到困惑。好吧,我们拭目以待。接下来会有对比环节:Open Code或Inference能否做得更好?是的,让我们进行编辑吧。
目前我们已运行4分半钟,生成了8000个令牌。它现在正在思考中——在深色模式下你可以看到“thinking”状态,但显示效果不佳,需要高亮才能看清内容。它表示下一轮会修复所有相关问题。如果你开启了自动接受编辑,它会自行修正这些错误并在后台继续运行,最终 hopefully 提供一份完全成熟且工作良好的代码。我现在切换到自动接受模式,因为有很多编辑正在进行中。
这些都是单行编辑,你可以看到它只思考了10秒。我现在处于中等思维模式;如果切换到极高强度,耗时会更长,但中等模式似乎工作得很好。它仍在思考中……现在很好!实际上它在运行JavaScript检查:搜索标签间的脚本,写入JS代码并执行Node.js验证。它使用Node.js来检查JavaScript以确保没有运行时错误,这是交付前的最后一步确认。
完成了!它已保存至tic-tac-toe文件,包含双人对战、难度选择、游戏特效和胜利连线等功能。看起来非常华丽!从上下文窗口来看,我们目前使用了28,800个令牌。哇!(笑声)别在更大的模型上跑这个,真的不要!但让我们刷新页面看看现在的成果。我们仍有“对战电脑”选项,很好;有简单模式——我需要那个简单模式!
点叉……圆圈还是没修好。我觉得第一次运行时情况相同。有一件事有点奇怪,也许只是我的屏幕尺寸问题:底部一行位置偏低,但可能确实是我的显示器比例所致。我点击这里希望能让我赢——这应该是简单模式啊!新回合……哦,我输了。我在AI的简单模式下败北了。但你能看到我能发现的唯一bug依然是圆圈问题。
让我们看看Open Code将如何处理游戏特效部分。我们进入这里,暂时告别Claude Code,稍后回来。“Asian tick work”的一个特性是它可以直接编辑文件以便我们做任何更改。但让我们先做质量检查:我输入“new”,需要执行完全相同的提示词。“给我做一个令人印象深刻的井字棋版本,保存为ticto.html”。现在在我的Open Code文件夹里只有open_code.json文件,目前是空的。
它正在创建……看那个!你可以看到思考过程——Open AI没有试图掩盖或隐藏它,不像某些产品总说“哦这是特殊功能所以我们要藏起来”。我们看到提示词是:“创建一个令人印象深刻的单文件HTML井字棋”,速度约为每秒35个令牌。这在调试器中运行,发布版会更快;如果你启用了MTP(我目前未启用),这个模型可能会需要它,因为它运行得很快——但那样会更快。
提示词再次显示:“创建一个令人印象深刻的单文件HTML井字棋”,上下文为零——它实际上没有在任何地方显示每秒令牌数,所以你无法看到上下文窗口实际增长了多少。尽管它有这个能力:所有信息都在那里,它知道正在生成的令牌数,只需累加即可;它也知晓系统提示词的大小,但并未执行此操作。它只是在做一些事情……
正在制作一个工具——我实际上没有计时这个,但我相当确定它会稍快一些,因为它拥有额外10k的上下文窗口大小。更少的上下文意味着运行更快!就像刚才那样,代码已经生成完毕并显示在屏幕上——太棒了。大约有488行代码,上下文窗口为13,000个令牌,且未进行任何编辑。这意味着代码是坏的吗?还是说它甚至懒得检查?
Claude Code做的一件事是对文件进行了双重核查,甚至运行了JavaScript linter或validator以确保其正常工作。这是Open Code的不足之处!我们可以看到令牌使用量为13,500个,比Claude Code少约10-15k。我认为Claude Code喜欢“吃”令牌——也许在他们的商业模式中,他们靠销售新的API使用量获利?或者只是性能更好?我们会揭晓答案。
我们可以看到这里有一个名为tic-tac-toe的文件:Claude Code的版本大小为21KB,而这个只有15KB。让我们看看是15KB还是更糟——这是来自Open的版本……
与 Claude Code 相比,OpenCode 的界面看起来非常相似。菜单略有不同:这里有两个玩家对战以及简单和不可能模式,而 OpenCode 至少还有一个中等难度。因此,在这种配置上 Claude Code 似乎略胜一筹。我先从简单模式开始测试。结果我拿到了 X,哦不,我们画出了一个完整的圆圈。但仔细观察会发现,圆圈周围的阴影有点破损,能看到一条线。如果挑剔一点的话,OpenCode 版本的圆圈确实更好一些。让我看看能否至少赢一局。哦,我居然赢了!所以简单模式真的很容易,这很好。
让我们开始新的一局,程序运行正常。我认为这里的生成质量更好,因为圆圈是完整的,而且我在简单模式下连续赢了两次 [笑声]。对此我感到很高兴。现在让我们看看直接使用 Inferenc 本身会发生什么。我启用了工具调用,设置为中等模式,且没有思考限制。这与 OpenCode 的情况相同。我会输入指令让它制作一个令人印象深刻的井字棋并保存文件,唯一的区别是我添加了 Quen 前缀,以便将文件保存在 Quen 文件夹中。
系统正在处理过程中消耗了 400 个令牌来启动任务,因为工具调用已经全部缓存。请记住,如果设置了提示词缓存,一切都会快得多。看啊,它正在写出代码。这个界面实际上展示了工具调用的过程:我们可以看到它在执行“写入文件”操作,这就是它正在进行的工具调用。如果我们进入工具设置页面,可以看到该函数接受内容字符串、编码方式(如果需要创建目录)以及保存路径等参数。这是一个非常简单的工具,让我们继续写入这些内容吧。
目前我们已经消耗了 1000 个令牌,可以看到这里的每秒令牌数实时显示。在我的文件系统中,Quen 文件夹位于主目录下的容器、Inferenc 应用程序文档以及 Quen Inferenc 路径内。它实际上不被允许访问容器文件夹之外的任何文件,开发工作就在那里进行。你可以授予其使用外部文件夹的权限,但我喜欢将所有内容保留在内部,以确保 AI 不会失控并删除不该删的东西。
我们可以看到它生成了 8500 个令牌,并将其写入文件文件夹。随后,它指出在 drawLine 函数中存在一个细微的 bug,并主动进行了修复。它使用了“替换文本”工具,并表示需要进一步调查。让我检查一下详细信息:它运行了一次代码验证文件操作,以确保所写的 JavaScript 是有效的,并且通过了 HTML 验证。现在它已经呈现了文件,一切准备就绪。
总共来看我们的上下文窗口是 12,000 个令牌。相比之下,OpenCode 的那次运行消耗了 13,500 个令牌,两者非常接近。OpenCode 那次没有在最后进行验证检查。而 Claude Code 的那次运行消耗了 28,800 个令牌,是最慢的。而在原生直接运行 Inferenc 时,我们得到了这个结果并产生了 12,000 个令牌,甚至还进行了验证。但质量如何呢?是更好还是更差?让我们运行一下看看。
我选择了该文件并点击“运行代码”。我们可以看到这里出现了界面:可以选择对战 CPU 或双人对战。CPU 模式下有简单、中等和不可能三种难度图标,UI 略有不同但大体相同。让我们开始吧!我拿到了 X,虽然线没有画到底,但圆圈似乎完成了。我要点击中间区域。也许这与屏幕尺寸有关,或者它试图在 X 上做出 3D 透视效果。
砰!我赢了那一局。我们看到了庆祝动画,有一条线划过去,并提示“再玩一次”。让我们再试一次。好的,当我们走到这里时,看到 XX 和 X,线划过去了并出现庆祝效果。让我们试试 OpenCode 的版本。OpenCode,再次运行它。新的一局:XX。哦,它没让我那样做。XXO XX,好了。它高亮了那个格子。这里的庆祝效果确实不错。
最后来看 Claude Code,让我们在这里开始新的一局:X。它有完整的腿,但只有半个圆圈,然后我们得到了 XXX。确实有一条划线,只是线不在正中间。总的来说,它们都完成了任务。也许圆圈那里有一些小瑕疵之类的东西。我注意到的一点是 OpenCode 没有对实际文件进行任何验证。我不知道这是好是坏,理想情况下你至少应该运行一个 JavaScript 校验器以确保代码没问题。但也许他们对这个版本很有信心,我们可以看到 Inferenc 确实进行了验证,并且似乎得到了类似的结果。
现在还有另一件事我们要做:我们想看看它在修改代码以使其更好方面表现如何。我在提示词中写道:“在背景中添加一个像屏保一样弹跳的 3D 立方体。”我想看看它的选择性和智能程度。它将编辑文件以添加这个 3D 立方体,正在思考已完成的部分并表示将添加这段代码。它完成了思考并发起工具调用,查找文本并替换内容,使用文件编辑功能来更新文件。
我将在 OpenCode 中输入完全相同的提示词,并在 Claude Code 中也输入同样的内容。我们将看看哪一个能做出最好的弹跳 3D 立方体,它们是否都能做到,以及完成后内容大小会增长到多少。OpenCode 现在正在行动中,它表示需要使用纯 CSS 动画变换在背景中添加一个旋转的 3D 立方体。这和我输入给 Inferenc 的提示词基本一致,都是添加一个 CSS 3D 立方体屏保。
由于它们拥有不同的系统提示词,所以提示词的变体略有不同:最基础的 OpenCode 有一些内容,而 Claude Code 拥有最多的系统提示词。它仍在思考中,正在执行大量的模式匹配操作并展示变更内容。你可以直接看到那里的实际改动,这很酷。那是一次快速的工具调用:它正在使用编辑工具调用并继续构建代码。
现在,Claude Code 已经启动并正在运行。如果使用了名为“批处理”的功能,在服务器内部可以启用多进程和批量处理。多进程允许不同的模型同时在推理服务器上运行,而批处理则允许使用同一个模型同时执行多个提示。在这个例子中,我特意没有启用这些功能,因为我想获取原始的独立速度和实际工作情况,不想找任何借口。但如果你拥有足够的内存并启用了这些功能,确实可以同时运行不同的提示。我们可以看到目前有三个生成队列在服务端处理中,它们正在快速推进,并对每一个任务进行预处理。让我们深入看看具体进展如何。
我们可以看到 Claude Code 已经完成了编辑,添加了63行代码并修复了问题。现在它正在添加弹跳逻辑,似乎在精确地思考要执行的操作。我们可以直接运行这个文件,看看它在过程中是如何构建的,这其实挺有趣的。在 Open Code 中显示我写了一个混乱的编辑,需要正确修复它。虽然它在思考代码质量但尚未运行验证,指出需要修复第二个立方体的弹跳X轴。这意味着它并没有写出完美的代码,毕竟这是模型的实验版本,可能存在一些需要解决的漏洞。与此同时,Claude Code 也在进行编辑,为立方体添加HTML代码行。
让我们让所有任务继续运行,稍后回来比较上下文大小和实际质量。在让它们独自运行一段时间后,所有任务都已完成。首先查看 Claude Code 的上下文大小,目前达到了328,000个标记。这指示了如果你运行更大的模型或更多文件,速度会有多慢。可以看到它使用的标记量比其他版本多出很多。Open Code 也完成了,其上下文窗口为195,000个标记,比 Claude Code 少得多。Inference 版本则使用了15,000个标记,甚至比 Open Code 更少。接下来我们要看的是生成质量,让我们刷新页面开始检查 Claude Code 的结果。
我们看到了一个背景中的3D立方体,但还有一个随机生成的奇怪物体在周围飞动,这看起来是个bug。3D立方体并没有在屏幕上弹跳,而是悬浮着做一些奇怪的动作,不确定这算好还是坏。不过有一个加分项是3D立方体确实跑到了游戏板后面,这算是个不错的细节。接下来刷新 Open Code 的结果,我们看到了两个自由移动的立方体,虽然看起来有点奇怪像是一堵墙而非真正的3D立方体。但它在屏幕上弹跳,这点值得肯定。不过它跑到了游戏板前面,这可能是个减分项。
让我们看看第二个立方体是否会跑到后面,确实它跑到了后面。检查井字棋游戏是否仍然正常工作,是的,除了多了一个3D立方体外,实际游戏保持不变。这个版本有点让人困惑,其中一个工作正常但跑到了背景中。总体来说这两个版本都有得有失。现在来看 Inference 版本的运行效果,它有一个3D立方体就像我要求的那样只有一个。而且它的颜色实际上在变化!虽然我没有指定它应该在前还是在后,但也许 Claude Code 让它跑到后面更聪明。或者因为它还添加了一个并非真正立方体的平面物体,所以显得比较笨拙。
这个 Inference 版本看起来更像我设想中的屏幕保护程序效果,因为真正的屏保会弹跳并改变颜色。代码是否被破坏了呢?游戏状态显示为平局,说明核心代码保持不变。我认为这个版本可能是最好的生成结果,因为它只制作了一个自由弹跳且变色的立方体,并且消耗了最少的标记。总结各种AI框架的标记使用情况:一个用了195,000,一个用了15,000,另一个用了328,000。就质量而言,我认为消耗最少的版本甚至可能比 Claude Code 的版本更好。
最后还有一件事可以做,那就是完全不使用AI框架。我要在这里做一些特别的事情,虽然很多人讨厌这种做法,但我只是要求它制作一个令人印象深刻的井字棋版本。我会指定使用HTML格式,并禁用工具调用功能,以最大化上下文利用率或最小化标记消耗。让我们看看效果如何,它正在输出井字棋游戏的代码。我们可以看到生成过程大约使用了5,000个标记,界面上已经显示了游戏内容。我决定再添加一个弹跳的3D立方体功能,看看它在运行前能否将其加入。
我们的上下文窗口仅为5,100个标记,之前最低记录是15,000。如果去掉所有额外的复杂设置直接运行,标记消耗确实大幅降低。它成功制作了井字棋游戏,甚至包含了声音效果!唯一缺少的是简单模式选项,只有对抗AI的模式。也许在没有启用工具调用时,它的想象力不如其他版本丰富。工具调用可能激发它进行更深入的模型构建,但我目前使用的是中等思考强度的模型,如果我有更高配置的话情况可能不同。
它替我完成了这些操作,而且生成速度很快。屏幕上已经显示出来了,还有声音效果,这里甚至有爆炸声。这是一次非常漂亮的生成过程。现在我们进入了后续提示词阶段,它在这里产生了大约6500个令牌。因此我们目前的总上下文窗口是13.5万个令牌,这比Claude Code的32万少,比OpenCode的19万也少,甚至比我们之前启用工具调用时的用量还要低。
质量怎么样呢?点击播放看看这是什么情况?那是怎么回事?为什么有两个立方体?这挺酷的。也许这就是原本的设计意图,让立方体移动到窗户后面去。所以这可能比之前的生成效果还要好,尽管我从未明确指定过这一点。我们仍然可以继续玩游戏。看那个情况!这里确实有一个细节让我注意到了:圆圈又回到了Claude Code之前的处理方式,但我们可以看到生成效果类似甚至优于Claude Code。
看看这个立方体,它是一个真正的立体方块,而不是像其他生成结果中那样旋转变形的梯形。我来提醒一下你们,如果忘记了的话:看这个例子是Claude Code生成的结果,我忘了立方体需要多个面。它只是漂浮在空中,有点像超人里的那个东西?是第三个还是第四个版本?而这是OpenCode生成的结果,立方体变形成了梯形。或者这只是我的大脑在混淆我?总之,当你直接使用并智能地打印输出时,使用的令牌数量最少。
我们甚至还没有做到很聪明。我们可以添加很多功能让系统变得更智能,比如保存到文件中,然后让它始终复用该文件进行修改,这样就不会占用巨大的上下文窗口。这些功能很快就会实现。我即将发布一个更智能、更少冗余的代理系统,敬请期待。但在此期间,你可以直接使用工具调用功能。正如你所见,它确实生成了 arguably 更好的效果,至少在令牌使用效率上肯定更好。
这次深入探讨了如何让Claude Code运行并生成代码、OpenCode运行并生成代码,以及利用代理循环的力量让Imper运行并生成代码。告诉我你们的看法吧!希望你们觉得这个视频有用并且享受观看过程。实际上我要再给你们一个额外奖励,因为我之前一直在做一个第一人称射击游戏的小循环测试。所以我让Qwen配合DeepSeek V4.1一起工作,让我们看看能否运行生成结果。
我告诉DeepSeek把这个游戏做成3D版本,但出现了一些bug。于是我用Qwen 4 exp(即Quinn for 3.8 Flash)来修复这些bug。这花了相当长的时间,因为涉及大量文件编辑,而且行号经常让人困惑等等。所以我进行了一些优化让它变得更智能,特别是在循环过程中时。这就是它生成的结果,让我们进入看看。这是我第一次制作这个小型第一人称射击游戏。
看啊,当我躲在掩体后面时生命值会恢复!就像现在正在回复一样,因为我在躲藏。哦不,我输了,任务失败。不过确实是个有趣的生成结果,它还有一个不错的小开场场景和灯光效果。最初DeepSeek的版本完全是坏的,但确实挺不错的,还有声音>>作为参考这是我提供的图片。我说把它做成3D第一人称射击游戏,它基本上做到了。所以这挺有趣的,而且用循环方式做这件事其实很酷,因为最终成功修复了所有bug。
你们觉得这个视频有用吗?享受观看过程吧!