← 返回 关于

重构后的 Amp:Neo

2026-05-06 · 原文链接

今天,我们开始逐步推出新版 Amp。

还不是全部,至少现在还不是。先发布第一部分:重构后的 Amp CLI。代号:Neo。

The Coding Agent is Dead 中,我们写过这件事会走向哪里:代理会有更长的牵引绳,需要更少手把手照看,也会运行在更多地方。不再是一个终端里的一个代理,而是可以从任何地方发起提示、在各处运行的代理。

这就是我们正在构建的新版 Amp。

但终端依然重要,而且会一直重要。总会有一些时刻,你希望代理就在你身边。

所以,我们先重构了 CLI。它仍然是在终端里的 Amp。但它运行在一套全新的架构之上:可远程控制、以压缩为优先、由插件驱动,而且快得多。它是为即将到来的东西而构建的。

我们来逐项看看。

远程控制

当你在新版 Amp CLI 中启动一个线程时,现在可以从 ampcode.com 远程控制它。

你不仅会收到实时更新,还可以发送消息、将消息加入队列或移出队列,或者取消代理当前正在执行的任务:

支撑这一能力的架构,正是我们重写 Amp 的原因。而远程控制只是开始。

不再需要手动管理上下文

这次重构背后的一个核心原则是:为 2026 年前沿模型现在能做到的事、以及未来会做到的事而构建。不要为过去的限制而构建。

今天领先的前沿模型已经非常擅长处理压缩。

所以 Amp 现在会替你管理上下文。

你不再需要盯着上下文百分比,也不必决定什么时候执行 handoff,更不用在线程里慌忙提取信息。

当上下文窗口填满时,Amp 现在会压缩线程:总结当前上下文,用这份总结开启一个新的窗口,然后继续执行。

现在,当上下文窗口达到 90% 时,压缩会自动运行。

这也是我们在新架构中加入的第一个功能。一次迁移期间,我们不得不把它关闭一天,结果所有人都在抱怨。一位 beta 用户反馈说:“我喜欢自动压缩。完全不想念 handoff……”

所以,handoff 退场了。压缩登场了。

插件

在这次发布中,我们正式推出 Amp Plugin API

Amp 插件可以:

举例来说,下面这个插件注册了一个叫 ask_user_choice 的工具。代理可以用它向用户展示多个选项:

// .amp/plugins/ask-user-choice.ts

import type { PluginAPI } from '@ampcode/plugin'

export default function (amp: PluginAPI) {
	amp.registerTool({
		name: 'ask_user_choice',
		description:
			'Present the user with a multiple choice question when there are several possible approaches and you need them to pick one. Use when you have 2-5 concrete options to choose from.',
		inputSchema: {
			type: 'object',
			properties: {
				question: { type: 'string', description: 'The question to ask the user' },
				options: {
					type: 'array',
					items: { type: 'string' },
					description: 'The options to choose from (2-5 items)',
				},
			},
			required: ['question', 'options'],
		},
		async execute(input, ctx) {
			const question = input.question as string
			const options = input.options as string[]
			const optionsList = options.map((opt, i) => `${i + 1}. ${opt}`).join('\n')

			const answer = await ctx.ui.input({
				title: question,
				helpText: `${optionsList}\n\nType the number of your choice`,
				submitButtonText: 'Select',
			})

			if (!answer) return 'User dismissed the question without choosing.'

			const index = parseInt(answer.trim(), 10) - 1
			if (index >= 0 && index < options.length) {
				return `User selected option ${index + 1}: ${options[index]}`
			}
			return `User responded with: ${answer}`
		},
	})
}

就这样:只要在 .amp/plugins 中放一个文件,Amp 就拥有了一个新工具。效果如下:

ask_user_choice 工具的运行效果

Amp Plugin API 文档中有更多示例,包括一个完整的权限插件。

队列与引导

消息排队现在是默认行为。当你在代理忙碌时发送消息,它会被加入队列,而不是停止并打断代理。

我们认为,这也更适合今天和明天的模型。它们能工作得更久,也更少需要在执行中途被强行拉回来。

如果你想让某条排队消息提前处理,可以进行引导

引导会让你尽快发送一条排队消息,而不必等到代理空闲。比如,在下一次工具结果发回给代理时发送。

用 ↑ 选择一条排队消息,然后用 ⏎ 引导它:

你也可以按 Esc Esc 来中断代理并立即发送。

权限

Amp 在运行工具前不再请求权限。

过去的 --dangerously-allow-all 标志,现在成了未配置权限的用户的默认行为。

旧的权限系统仍然存在。它现在是一个内置插件。如果你现有的 Amp 设置已经选择启用权限——通过 amp.permissionsamp.dangerouslyAllowAll: falseamp.guardedFiles.allowlist——Amp 会加载该插件,并像以前一样工作。(当这个插件启用时,它会同时作用于 ampamp --execute。)

为什么要改变默认行为?

一年前,工具调用更容易检查:看工具名、看参数,做基于字符串的匹配,然后允许或拒绝。现在,前沿模型会编写一次性脚本来完成工作。它们会把 shell 命令串起来。

几乎不可能通过静态分析判断一次工具调用是否具有破坏性。

当模型并行写出五个 20 行的 Python 脚本来完成某件事时,只检查工具调用里有没有 rm -rf,只会给你一种虚假的安全感。

除此之外,现在还有专门为代理构建的自定义技能和脚本。而不同组织对于哪个模型可以调用哪个工具,也有不同的策略。

所以,权限现在属于 Plugin API。

如果你需要策略,就构建一个适合自己环境的策略。把 Amp 指向 Amp Plugin API,然后让它帮你写。

性能与效率

旧版 Amp CLI 在巨大线程里会变慢。Neo 不会。下面是一个约 5000 条消息线程的对比:

指标 旧版 新版 改进
CPU%(均值 ± 标准差) 84.1% ± 1.6% 17.4% ± 8.8% CPU 降低 79%
CPU%(峰值) 86.3% 25.8%
内存(空闲) 1814 MB 540 MB 内存降低 70%

渲染性能也提升了。

之前:

之后:

移除了什么

我们也移除了一些功能。那当然,否则还算什么 Amp 发布,对吧?

我们的目标是让你站在前沿。Amp 不应该让你像还在 2025 年那样工作。

有些功能在模型还需要更多照看、更多手动上下文管理、更谨慎引导时是合理的。现在不再是了。当某个功能开始把你绑在使用代理的旧方式上,它就该退场。

Handoff 被移除了。如上文所述,压缩让它变得多余。即使上下文还够用,Handoff 确实也有一些合理用例,但我们认为它不值得引入许多细小互联线程所带来的复杂性。

当你编辑或恢复消息时,Amp 不再回滚文件改动。 随着模型进步,我们发现自己越来越少使用这个功能。现在的模型已经足够好,能替你撤销改动,而且比回滚更细致。说实话,回滚功能本来就只是尽力而为:如果代理编写并运行了会生成文件的代码,在没有复杂快照机制的情况下,我们并不会追踪这些内容。

技能管理:Amp 仍然支持 Agent Skills,但我们不再提供用于添加、移除或更新技能的命令或子命令。这类事情更适合由独立工具完成,例如 skills

主题:自定义主题让 CLI 更难保持清晰、精致,并且难以维持 Amp 的辨识度。与其支持许多看起来坏掉的界面,我们更愿意交付一个好的界面。

手动调用 bash:在旧版 Amp CLI 中,你可以在提示编辑器里用 $$$ 调用 bash 命令。一年前这是个有意思的想法,但现在模型越来越擅长自己运行命令,而且不会把上下文窗口撑爆(再加上这个上下文窗口实际上已经近乎无限),它就不再有用了。

发布节奏

我们会在接下来几天逐步推出 Neo。如果你想跳过排队,可以给我们发邮件。我们会帮你打开开关。

这是新版 Amp 的第一块拼图。

更多内容很快到来。