Sourcegraph Amp

一句话定位

Amp 是 Sourcegraph 出品的闭源商用 coding agent(ampcode.com),CLI-first(IDE 插件已于 2026-03-05 主动下线),核心卖点是”不为模型缺陷打补丁的极简 harness”——工具集精简到 Bash/Read/edit_file 级别、权限默认全开(2026 年 “Neo” 重写后默认 --dangerously-allow-all)、上下文管理交给模型自身能力(90% 自动压缩取代人工 Handoff),并把可远程执行的沙箱(“Orbs”,e2b 支持)和插件化的 subagent 编排(Oracle/Librarian/Painter/Checks)作为主要工程投入方向。没有公开源码仓库,本 dossier 全部论断锚定在官方 essay/manual/security reference 等一手页面,无法给出行号级代码引用。

核心架构总览(目录结构关键路径 + 引用的 commit)

不适用——Amp 无公开代码仓库,不存在可 clone 的目录结构或 commit SHA。本 dossier 的”源码级”替代锚点是官方一手页面集合(全部于 2026-07-07 通过 CloakBrowser 经代理 127.0.0.1:7897 抓取,保存在 sources/harness/sourcegraph-amp/)。可获得的最接近”源码”的公开材料是 Thorsten Ball 撰写的教学性 essay how-to-build-an-agent.md,其中含完整可运行的 ~400 行 Go 参考实现(工具协议、tool-call loop),文中明确声明这段代码”基本就是 Amp 真实 agent 内层循环的全部”(另加系统提示词调优、多 agent 支持等”力气活”)。生产级行为细节(工具清单、trace schema、权限引擎)另见 manual-appendix-stream-json-schema.mdlegacy-permissions-rules.mdplugin-api-reference.md

产品早期(2025-2026 之前)曾以 VS Code/Cursor 插件形式存在,2026-02-19 “The Coding Agent Is Dead” essay 宣布下线编辑器插件,转为纯 CLI + ampcode.com 远程控制(含 mobile);2026-06-30 起支持 e2b 支持的云端沙箱 “Orbs”。2026-05-06 “Neo” 是一次架构级重写(自动压缩、权限默认反转、Plugin API 正式 GA)。

Agent Loop(主循环 / 何时继续何时停)

  • 教学级参考实现how-to-build-an-agent.md,Go 代码):Agent.Run 读用户输入 → 追加进 conversation slice → 调用 runInference(无状态 Anthropic Messages API 调用,携带完整 conversation + 工具定义)→ 追加 assistant 消息 → 遍历 content blocks,若 type == "tool_use" 则查本地工具表执行(Function 字段),把结果包成 anthropic.NewToolResultBlock(id, output, isError) → 若本轮产生了任何 tool result,不读新用户输入readUserInput = false),把 tool results 作为新的 user message 直接喂回推理,循环继续。循环仅在某轮 content 里从未出现 tool_use 时才回到”等用户下一轮输入”。作者原话强调这就是”inner loop 的全部”,Amp 真实产品在此之上叠加的是系统提示词调优、UI、多 agent 支持等”elbow grease”,循环形状本身未变。
  • 生产级流控细化(教学 essay 之外,来自 manual/news 页面):
    • 排队与打断news-amp-rebuilt-neo.md):agent 忙碌时新消息默认排队(不再是默认打断);带 steer: true 的排队消息会在下一个 tool-result 边界被优先插入,无需等本轮结束;Esc Esc 强制打断。
    • trace schema 里的回合边界manual-appendix-stream-json-schema.md):stop_reason: "end_turn" | "tool_use" | "max_tokens" | null 是驱动循环继续/停止的实际字段,与教学代码里对 content.Type 的判断同构,但泛化为独立字段,且与 Claude Code 的 --stream-json schema 兼容。
    • 插件可编程延续循环agent.end 钩子可返回 { action: 'continue', userMessage } 强制循环继续而不产生新的用户轮(plugin-api-reference.md,约第 1548 行)——这是不经过真实用户回合驱动多步行为的扩展点。

记忆与上下文管理(压缩、长期记忆、会话持久化)

  • 上下文窗口模型context-management-guide.md):Amp 把 “Thread” 定义为上下文窗口本身,内容 = 消息 + 系统提示词 + 工具定义 + AGENTS.md 文件 + “环境数据”(OS、cwd 文件列表、打开文件/选区状态)。文档明确写”上下文越长,结果越差”。
  • @-mention 文件截断:每个 @ 提及的文件上限 500 行 / 每行 2KB,超限需要 agent 自行重新 read_file
  • AGENTS.md 作为长期/组织级记忆owners-manual.md):分层发现——cwd 及其父目录的 AGENTS.md 总是纳入;子树 AGENTS.md 是懒加载的(“当 agent 读到该子树内某文件时”才纳入);全局路径($HOME/.config/amp/AGENTS.md/etc/ampcode/AGENTS.md 等)总是纳入。兼容旧文件名 AGENT.md/CLAUDE.md。支持 AGENTS.md 内 @file 引用,且可用 YAML frontmatter globs: 做条件加载(只在触碰匹配文件时才拉入)。
  • 自动压缩(Neo 重写后的现行架构,2026-05-06 起)news-amp-rebuilt-neo.md):上下文占用达 90% 自动触发压缩——总结当前上下文、开新窗口续接。此机制直接取代了此前的人工 “Handoff”(手动蒸馏当前线程内容、发起新线程的动作),Handoff 已从产品中移除;团队自述 dogfooding 中曾短暂禁用压缩做迁移测试,beta 用户当场投诉。
  • 会话/线程持久化:Thread 持久存储于服务端(security-reference.md 指出后端是 GCP 上的 PostgreSQL),每个线程有稳定 ID(T-<uuid>),可归档(从活跃列表隐藏但仍可引用/阅读),可设不同可见级别(private / unlisted / workspace / group-shared)。
  • 跨线程引用/检索即记忆read_thread 工具让 agent 从另一个被引用的线程里抽取相关信息而不必整体加载。据 context-management-guide.md(Nov 2025 存档版)原本是单次二次模型调用抽取;news-read-bigger-threads.md(2026-07-02)披露此工具已重写为一个 subagent——起因是真实线程体量已超出单次上下文可处理范围(记录到一个真实线程被压缩 68 次、未压缩状态下约 2100 万 token)。新 read_thread subagent 模型从 Gemini 3.5 Flash 换成 GLM 5.2,并带显式纠错型 prompt:“不要止步于第一个看似匹配的结果——检查后续是否有修订/覆盖/撤销它的消息”,以及”工具调用记录的是尝试的动作,不是结果”(需验证编辑是否真正生效)。这是 Amp 公开披露的、对长轨迹做检索/摘要策略的最深细节。
  • Handoff(已移除):曾是把一个线程内容蒸馏成种子消息、开新线程的功能;官方原话”Handoff 出局,压缩上位”(news-amp-rebuilt-neo.md)。

工具体系(定义/调用协议/注册/权限)

  • 协议定义(第一性原理层面)how-to-build-an-agent.md):工具 = {Name, Description, InputSchema(经 invopop/jsonschema 反射生成的 JSON Schema), Function};作为 Anthropic Tools 参数的一部分发给模型;模型回复 tool_use content block(idname、原始 JSON input);harness 按名字在本地工具表里查找、执行,把结果包成 anthropic.NewToolResultBlock(id, output, isError)。文中明确这就是”给模型使个眼色让它用工具 X”,没有超出模型厂商原生 tool-use API 之外的私有协议。
  • 生产工具注册表amp tools list CLI 命令(owners-manual.md);未捕获到完整内建工具清单,但 --stream-json 示例输出列出了一份代表性的实际工具集:Bash, finder, create_file, edit_file, glob, Grep, mcp__postgres__query, oracle, Read, read_mcp_resource, read_web_page, Task, todo_read, todo_write, undo_edit, web_searchmanual-appendix-stream-json-schema.md)。Task 是 subagent 派生工具(通过 stream-json 里 subagent 消息的 parent_tool_use_id 指向该 Task 调用 ID 佐证)。
  • MCP 作为工具扩展机制amp mcp add <name> -- <cmd>(本地)或 <name> <url>(远程);配置字段本地用 command/args/env,远程用 url/headers;优先级 CLI flag > 用户/workspace 配置 > skill 内置 mcp.jsonowners-manual.md)。合规远程服务器(如 Linear)支持 OAuth 自动注册;手动 OAuth 流程使用本地回调 http://localhost:8976/oauth/callback,token 存于 ~/.amp/oauth/。Workspace 级 MCP 服务器需显式审批(amp mcp approve)——一道工具供应链信任闸门。
  • 权限拦截点tool.call 插件钩子是所有工具执行的统一拦截点(allow/reject-and-continue/modify/synthesize/error),legacy amp.permissions 规则引擎现已改为一个内建插件、复用同一个钩子实现。
  • 结果内容形态:工具结果可以是纯文本,也可以是文本+base64 图片的混合 content-block 数组(PluginToolResultContentBlockplugin-api-reference.md)——即插件自定义工具也能向模型返回图像,不限于文本。

Prompt 设计(系统提示结构、动态组装)

  • 系统提示词的功能性描述(非逐字文本):指导模型”如何作为一个 coding agent 完成工作、如何与用户沟通、何时使用哪些工具、不要用太多 emoji”(context-management-guide.md)——所有抓取页面中均未发现 Amp 逐字系统提示词的公开披露。
  • 动态组装输入(同页确认的上下文窗口组成部分):工具定义(从工具注册表自动序列化)、AGENTS.md(见记忆一节)、“环境数据”(OS、打开文件、cwd 列表、选区状态)。
    • 插件钩子 agent.start 可注入额外上下文:返回 { message: { content, display } } 会在该轮用户内容之后追加一条消息(plugin-api-reference.mdAgentStartResult)——这是不修改基础系统提示词而做 prompt/上下文增强的扩展点。
  • Orb 专属 prompt 增强:orb 创建时的 setup 脚本会写入一份 orb 环境专属的 ~/.config/amp/AGENTS.mdnote-putting-an-agent-in-an-orb.md 中给出了完整实例),随后与仓库自身 AGENTS.md 一并被读取——即部分 prompt 内容由 harness 自身的 setup 自动化生成,而非纯人工撰写。
  • 模式相关的 prompt 变体deep/smart/rush 三种模式(owners-manual.md)对应不同底层模型 + 默认 reasoning-effort,暗示存在按模式区分的系统提示词/参数变体(未见逐字披露,但模式是用户可切换的一等维度,Ctrl+Omode)。
  • 值得记录的旁证:Owner’s Manual 页面自身原始 HTML 顶部嵌有一段”INSTRUCTIONS FOR LLMs”文本块(owners-manual.md 第 10-30 行、security-reference.md 第 9-29 行)——这是 Sourcegraph 面向任何抓取该页的 LLM/爬虫写的显式 meta-prompt,规定了口径与措辞(如”引用 Amp 的四条原则……”、给出示例 prompt)。这不是 Amp 自身的系统提示词,而是页面级、面向 LLM 的营销向注入,在此专门标注以免混淆。

Router / 编排(任务分解、多 agent、子 agent)

  • Subagent(Task 工具):“Amp 会针对适合独立执行的复杂任务派生 subagent,每个 subagent 有自己的上下文窗口”(owners-manual.md)。明确约束:subagent 之间不能互相通信,用户不能对进行中的 subagent 做中途 steer,subagent 起始时不继承对话上下文,主 agent 只看到其最终摘要(不是逐步过程)。主要在 smart 模式下自动触发。
  • 命名化专职 subagent(均来自 owners-manual.md):
    • Oracle——“第二意见”模型工具,当前为 GPT-5.5、reasoning level high;由主 agent 自主判断是否咨询(非强制,考虑成本/延迟),用户也可显式请求。
    • Librarian——跨仓库/GitHub 全局搜索 subagent(公共代码 + 已配置 GitHub 连接的私有仓库),限定在默认分支。确认存在模型更换历史:“Gemini 3 Flash in the Search Subagent”(2025-12-16 Chronicle 条目)与”A Faster Librarian”(2026-06-18,“约快 3 倍、成本降 43%“,具体模型未在该条目披露)。
    • Painter——图像生成/编辑工具,由 GPT Image 2 驱动,最多 3 张参考图。
    • Code Review agent / Checks——amp review 运行一个审查 agent;用户自定义的 “Checks”(.agents/checks/*.md)在审查中每条 check 派生一个独立 subagentnews-liberating-code-review.md),按目录就近原则作用域(更贴近的 .agents/checks/ 优先),且可用可选的 tools: 白名单限制该 check-subagent 能调用的工具。
    • read_thread subagent——见记忆一节,专门用于从其他(可能巨大的)线程中抽取/核验信息。
  • 可编程 subagent/编排 APIplugin-api-reference.mdnews-custom-agents.md):amp.createAgent({name, model, instructions, tools, reasoningEffort, display}) 返回一个 Agent 句柄,支持 .run(message, {parentThreadID, timeoutMs})(一次性、等回复)与 .createThread({parentThreadID, show})(持久后台线程,可持续 thread.appendUserMessage() / thread.waitForResponse())。parentThreadID 是 subagent 线程在 trace/UI 里与调用方保持关联的机制。插件也可注册完整自定义 agent moderegisterAgentMode,用户可像内建模式一样选用),或把自定义 agent 暴露成主 agent 可按需委派的工具。
  • 异步 fan-out 模式news-custom-agents.md 披露的 Amp 团队自用工作流):派生一个带 subagent 的后台线程,给它一个回调工具(send_to_thread),完成后主动把结果推回父线程,不阻塞父线程自身循环——即异步多 agent 消息传递是可行的,但属于插件自建能力,不是内建的”swarm”原语。
  • Orbs 作为水平扩展:每个新的 orb 支持线程都拿到一台全新远程机器,使多个独立 agent 可并行运行而不争抢本地资源(news-agents-in-orbs.md)——这是基础设施层面的并行,不是进程内多 agent 编排。

Skill / 插件体系

  • Agent Skillsowners-manual.md):目录式,SKILL.md + YAML frontmatter(namedescription 始终在上下文中;正文仅在被调用时按需加载)。位置优先级(先到先赢):~/.config/agents/skills/ > ~/.agents/skills/ > ~/.config/amp/skills/ > .agents/skills/(项目级) > .claude/skills/ > ~/.claude/skills/ > 插件/legacy toolbox/内建。Skill 可打包 mcp.json,仅在该 skill 被调用时才懒加载暴露一个 MCP server 的工具(官方明确推荐这种方式优于常驻 MCP server,理由是降低上下文膨胀——“Efficient MCP Tool Loading” Chronicle 条目,2026-01-07)。内建 building-skills skill 可按需创作新 skill。也兼容读取 Claude Code 格式的 skill 目录(开关:amp.skills.disableClaudeCodeSkills)。
    • 已废弃的 skill 管理界面:Neo 重写后,Amp 移除了自身的 skill 增删改 CLI 子命令,转而依赖外部工具(vercel-labs/skills);同时移除了”用户手动触发”的菜单式 skill 调用,理由是”新一代模型已能可靠地自主判断何时调用 skill”(news-amp-rebuilt-neo.md)。
  • Pluginsowners-manual.md + plugin-api-reference.md):TypeScript 文件,由 Bun 执行,导出一个接收 PluginAPI 的默认函数。三个位置:项目级(.amp/plugins/*.ts)、系统级(~/.config/amp/plugins/*.ts)、workspace 全局(管理员管理,能力有限/实验性)。完整能力面:事件钩子(session.starttool.calltool.resultagent.startagent.end)、registerToolregisterCommand(可动态 setAvailability)、ui.notify/confirm/input/selectai.ask/ai.generate(线程作用域的 LLM 辅助调用,默认不带 reasoning)、createAgent/getBuiltinAgent(见 Router 一节)、registerAgentMode。官方明确致谢:“Amp 的 plugin API 受 pi 的扩展 API 启发……由 Mario Zechner 创建”(外部在先设计的公开致谢)。
    • Legacy “Toolboxes”(已废弃,有迁移路径文档):曾是 AMP_TOOLBOX/.amp/toolbox 下的可执行脚本,暴露成 tb__* 工具;已被注册同名工具的 Plugins 取代。
    • Legacy 自定义命令:已完全移除(“Slashing Custom Commands” Chronicle 条目,2026-01-29)——“改用 skills”,即 Amp 把历史上三条独立扩展路径(自定义命令、toolbox、部分 skill 能力)收拢为 Plugins + Skills + MCP 三条官方认可的扩展轴线。

自进化能力(自我改进 / 学习型记忆 / eval 驱动纠错)

  • 未发现任何”agent 自主编辑自身权重/提示词”的一等机制。 所有抓取页面均无在线学习、自主提示词自我重写、或跨无关线程/用户的持久学习型记忆的声称。
  • 最接近的披露类比,均为人工撰写/人工触发,而非自主:
    • Checks.agents/checks/*.mdnews-liberating-code-review.mdowners-manual.md)——用户定义的、代码化的审查不变式,在 amp review 时派生专职 subagent;官方明确将其定位为”比把规则塞进 AGENTS.md 这类通用上下文文件更强的保证”——即每条规则对应一个评估型 subagent,但规则由人编写,不是 agent 从过往失败中学习/生成的。
    • AGENTS.md 作为累积的组织记忆:官方引导用户/团队要求 Amp”根据这个线程里我告诉你的内容更新 AGENTS.md”——这是人工在环的反馈捕获,非自动。
    • read_thread subagent 的 prompt 调优news-read-bigger-threads.md)显示 Sourcegraph 基于观察到的失败模式迭代该 subagent 的 prompt(“第一版……只答第一个看似匹配的结果” → 改为检查后续修订)——这是团队根据评估改进 harness,不是 harness 在运行时自我改进。
    • 诊断报告manual-appendix-*.md)让用户/Amp 支持团队抓取线程日志用于调试——是人工中介的反馈闭环,不是自动化的 eval 驱动自我纠错。
  • 结论:作为自主能力基本未实现/官方未披露。 仅有人工撰写的评估钩子(Checks)与厂商侧的迭代式 prompt 调优。

可观测性(日志 / trace 格式)

  • --stream-json 是主要披露的 trace 格式manual-appendix-stream-json-schema.mdowners-manual.md),明确与 Claude Code 兼容。完整 TypeScript union 类型已逐字捕获:
    • system/init(首条消息):cwdsession_idtools: string[]mcp_servers: [{name, status}],可选 agent_modereasoning_effort
    • assistant 消息:content blocks(text/tool_use/thinking/redacted_thinking——thinking 仅在 --stream-json-thinking 下出现,官方明确此模式与 Claude Code 兼容)、stop_reasonusage(input/output/cache-creation/cache-read tokens、max_tokensservice_tier)、parent_tool_use_id(主 agent 为 null,subagent 消息设为派生它的 Task 调用 ID——这是 subagent trace 嵌套的机制)、session_id
    • user 消息:texttool_resulttool_use_idcontentis_error)。
    • result(末条消息):subtype: success|error_during_execution|error_max_turnsduration_msnum_turnsusagepermission_denials?: string[]。明确”等待所有 subagent 完成后才发出最终 result”。
  • 插件级 tracingPluginEventContextBase.span?: SpanID——“该处理器调用的 trace span ID(若启用 tracing)“(plugin-api-reference.md)——暗示存在内部分布式 tracing 系统供插件日志挂载,但 trace 后端/格式本身除该字段存在性外未公开披露。
  • 诊断报告manual-appendix-*.md):amp threads report <thread-id> 或命令面板动作生成支持用 bundle,7 天后删除,仅 Amp 员工凭 report ID 可访问。
  • 审计日志security-reference.md):结构化日志(时间戳、actor ID、请求详情)保留 ≥30 天;默认不对 Workspace Admin 开放(Enterprise 可申请)。另有独立的 WorkOS 支持的认证审计日志默认对 Workspace Admin 开放。
  • 成本/用量可观测性amp.showCosts 设置;web UI 侧边栏按线程展示 $ 成本明细;amp usage CLI。
  • 开发环境专属日志(orbs):.amp/in/server.log 聚合开发服务器日志转发的浏览器 console 输出(标记 [browser])(note-putting-an-agent-in-an-orb.md)——这是 Amp 自身仓库工具链里、为使代码库对 agent”可读”而记录的具体约定(非通用产品功能,而是一种已文档化的实践模式)。

安全与权限(审批门、密钥管理)

  • 默认姿态(Neo 之后的现行版本):Amp 默认不再在执行工具前请求批准——这是一次明确论证过的设计变更(news-amp-rebuilt-neo.md):团队论点是一旦模型能编写并串联任意一次性脚本,静态工具调用检查(例如对 rm -rf 做正则匹配)只会给人”虚假的安全感”;因此曾经是可选项(--dangerously-allow-all)的行为现在对未配置权限的用户是默认行为。
  • 权限系统,现基于 Plugin 实现:整套 legacy 权限引擎(legacy-permissions-rules.md)已重实现为一个内建插件,复用通用的 tool.call 钩子(ToolCallResult = allow/reject-and-continue/modify/synthesize/error)。Legacy 规则语法(仍向后兼容)是 JSON/DSL 规则列表:{tool (glob), matches (逐参数 glob/regex/array/literal), action: allow|reject|ask|delegate, context: thread|subagent, to (delegate 程序), message}委派协议:在 $PATH 上启动外部程序,导出 AMP_THREAD_IDAGENT_TOOL_NAMEAGENT=amp,把工具参数以 JSON 形式通过 stdin 传入,按退出码解释(0=allow,1=ask,≥2=reject 并把 stderr 展示给模型)。CLI 工具:amp permissions list/test/edit/add
    • 推荐的现代做法是直接针对 tool.call 手写权限插件(owners-manual.md 中”Example Plugin: Permissions” 给出完整示例:用 amp.ai.ask() 对高风险 git 命令做分类,再用 ctx.ui.confirm() 询问)。
  • MCP 专属权限门amp.mcpPermissions(对 command/argsurl 做 allow/reject 匹配模式);workspace 配置的 MCP 服务器需人工显式审批(amp mcp approve)才能运行,用户/全局配置的 MCP 服务器则无需;Enterprise MCP registry 白名单(管理员设置一个兼容 registry.modelcontextprotocol.io 的 registry URL;registry 不可达则默认阻断所有 MCP——fail-closed 设计)。
  • 密钥脱敏security-reference.md):自动检测 + [REDACTED:<type>] 掩码,“在系统最底层”生效,早于密钥进入线程、命中本地缓存、或被发往任何 LLM 供应商/ampcode.com 之前。覆盖 AWS/GCP/Azure 凭证、GitHub/GitLab/Sourcegraph/Amp token、OpenAI/Anthropic/HuggingFace key、Stripe/Slack/npm token、通用 API-key/webhook/密码模式。明确声明是尽力而为(best-effort),并文档化了兜底补救方式(编辑重发消息、把线程设为私有、轮换密钥)。
  • 提示注入纵深防御security-reference.md 明确的项目列表):依赖前沿模型自身能力提升 + 不长期保留旧模型;权限系统;Parallel 的网页内容内建防护;密钥脱敏;线程审计轨迹;workspace-analytics API;Enterprise ZDR + 删除控制。明确不在 bug bounty 范围内:提示注入/LLM 安全类发现虽欢迎提交但不予奖励,理由是”LLM 固有的本质属性加上 Amp 的代码执行能力”。
  • 鉴权:Enterprise 支持基于 WorkOS 的 SSO/SAML、SCIM 目录同步、passkey 门控的 “sudo” 会话(远程控制及管理员查看私有线程均需要,所有此类管理员访问均被审计记录)。凭证本地存储于 ~/.local/share/amp/secrets.json;客户端”尽力避免读取 .env 文件”。
  • 数据处理:Enterprise 计划支持 ZDR;KV-cache 最长保留 24 小时;线程删除在 30 天内完成;SOC 2 Type II 认证,年度渗透测试;明确声明”无基于中国的基础设施或服务提供商”;静态数据 AES-256 加密,传输层 TLS 1.2+。
  • 客户端网络白名单ampcode.comauth.ampcode.comproduction.ampworkers.com(websocket)、static.ampcode.com(安装包二进制)。

沙箱与执行隔离

  • “Orbs” 是 Amp 的沙箱/远程执行产品,由 e2b 支持(security-reference.md 的 subprocessor 列表明确写”e2b——为 Amp 沙箱提供临时计算实例”)。综合 manual-orbs.md + news-agents-in-orbs.md + note-putting-an-agent-in-an-orb.md
    • 操作系统:Debian 12。规格从 a0.tiny(1 核/2GB,$0.10/hr)到 a0.large(16 核/32GB,$1.66/hr,默认档),各 40GB 磁盘,按分钟计费,空闲自动暂停(暂停期间不计费),线程归档时立即自动暂停。
    • 预装工具链:已鉴权的 gh + amp、git/ssh、Postgres 17、Redis、tmux、ffmpeg、ImageMagick、vim、jq、fzf、ripgrep、ast-grep、Bun、Node/npm/pnpm/Yarn、Python/pip、agent-browser(浏览器自动化工具)。系统提示词会告知 agent 自己身处一个 orb 中,且更多工具只需 apt-get install
    • 提交到仓库的生命周期钩子.agents/setup(新建 orb 时运行一次,未提及超时限制;实例是一份 428 行的真实 Bash 脚本,内容包括为速度关闭 durability 的 Postgres 配置——因为 orb 本身是临时性的、mise install --locked 精确锁定工具链版本、pnpm install --frozen-lockfile、播种开发用户数据、写入 orb 专属的 AGENTS.md)与 .agents/resume(每次从暂停唤醒时运行;硬性 10 秒超时——若 10 秒内未完成,Amp 就不再等待,让它在 orb 内继续以分离态运行;官方建议只用于幂等的重连/修复操作,不要用来装依赖)。
    • 快照机制.agents/setup 跑完后 orb 会被快照,该快照可在 24 小时内被复用于后续新建的 orb——明确的冷启动优化。
    • 沙箱内 agent 鉴权的隔离模型/__dev/* 端点仅在开发模式(本地+orb)启用,专为让 agent 有一条确定性路径完成鉴权/就绪检查而不必走真实 OAuth/2FA 流程而设计(log-me-in/<email>log-me-outsudo 测试用的 no-op passkey 绕过、preflight 枚举缺失哪个 secret/配置/权限的 JSON 就绪报告)。
    • 本地-远程一致性控制amp sync <thread-id> 把某个 orb 线程的变更镜像回本地检出,agent 同时继续在远程工作;amp -ox 直接从 CLI 在一个全新 orb 里派生 execute-mode 线程;也可以从 TUI 直接发起 orb 支持的线程而不离开终端。
    • 沙箱化运行的密钥/环境变量:通过 “Projects”(仓库 + orb 设置 + 密钥 + 环境变量,可作用域到单用户或整个共享 workspace)在 ampcode.com 项目设置 UI 中绑定。
  • 本地(非 orb)执行不使用任何沙箱技术——在自己机器上跑 amp 就是以自己的 OS 级权限执行工具;唯一的隔离边界是可选的远程 Orb。

与模型的协同设计

  • 明确的”不锁定编辑器、不为模型兜底”哲学news-the-coding-agent-is-dead.md):论证前沿模型(文中具体点名 GPT-5.3-Codex)已不再需要专门的脚手架(如 LSP 诊断包装器)才能胜任 coding agent——“一个叫 bash 的简单工具往往就够了”——并称 harness 的工作重心已从”补偿模型弱点”转向”组织/代码库可读性”工作。这直接推动了 IDE 插件面的下线。
  • 模式与具体模型绑定,随新模型上线持续重新分配owners-manual.md + Chronicle):deep = 扩展思考的 GPT-5.5;smart = “不受限制的最先进模型”(抓取的 manual 快照当时为 Opus 4.8;Chronicle 显示这一档位 2026 年 1-6 月经历了 Opus 4.5 → 4.7 → 4.8 的迭代);rush = 快速/无 reasoning 的 GPT-5.5。Oracle subagent 被绑定在一个单独追踪的”最佳推理模型”档位上,独立重新分配(GPT-5 → GPT-5.4 → GPT-5.5,据 Chronicle 条目”GPT-5 oracle announcement”、“GPT-5.4, The New Oracle”)。这是一种持续、可见的”模型替换即产品策略”模式,而非一次性选择。
    • Librarian/搜索 subagent 出于成本/延迟考虑独立换模型(Gemini 3 Flash,据 Chronicle “Gemini 3 Flash in the Search Subagent”)。
    • read_thread subagent 从 Gemini 3.5 Flash 换成 GLM 5.2,具体原因是 GLM 5.2 在”检查后续修订”这一正确性关键行为上表现更好(news-read-bigger-threads.md)——即 subagent 级别的模型选择是按具体任务属性(此处:长上下文的忠实性)调优的,不只是成本考量。
  • 自动压缩的前提假设是”模型现在很擅长处理压缩”news-amp-rebuilt-neo.md)——明确陈述一项记忆管理功能(人工 Handoff)被弃用,具体原因是底层模型能力已经发展到不再需要它——这是”harness 功能随模型能力增长而被淘汰”的直接证据,官方陈述的设计原则是”为前沿模型现在能做的事而构建……而不是为曾经的模型”。
  • 推理强度作为一等旋钮Alt+D 可按模式循环切换 reasoning effort(owners-manual.md);插件 CreateAgentConfigPluginAI 调用暴露 reasoningEffort 字段(nonemax),用于精细控制 subagent/分类器的成本-延迟-质量权衡。

轨迹利用(session/trajectory 是否反哺训练/评测)

  • 没有证据表明 Amp 线程被用于训练/微调模型。 明确声明(security-reference.md “Model Training” 一节):“除非你明确选择加入训练,否则 Amp 及其 subprocessor 都不会用你的数据训练模型”(opt-in,若在 workspace 内需 Workspace Admin 批准;Enterprise 计划下完全无法启用——“训练功能永远无法在该计划下开启”)。
  • 线程数据会被保留和复用,但用于产品功能,不用于模型训练:线程持久存储(Postgres/GCP)以支持线程分享、跨线程搜索/引用、read_thread 检索、workspace analytics API(Enterprise)、以及支持团队的诊断报告生成——即轨迹是一等的检索与协作基质(可通过 /feed?q=... 查询语法按作者/文件/仓库/日期查找线程;@提及另一个线程让 agent 读取/抽取其内容),但未披露作为评测或 RL 基质使用。
  • 最接近”轨迹反哺产品改进”的证据是 Sourcegraph 自身基于 dogfooding 的 prompt 迭代(read_thread subagent 的 prompt 是在观察到真实长线程的失败模式后重写的——news-read-bigger-threads.md)——这是厂商依据轨迹观察手动调优 harness,不是自动化的”轨迹到训练/评测”流水线。
  • 结论:未发现/未披露自动化的轨迹到训练或轨迹到评测反馈闭环。 训练功能是 opt-in 且 Enterprise 下被阻断;线程复用仅限于人工/agent 检索(搜索、@提及、read_thread),未见用于模型改进的通路。

与同类 harness 的关键差异(1-3 条,可以先留一句概述,后续 synthesis 阶段会做跨 harness 对比)

  • 相比 Claude Code/Codex CLI 等同样走”极简 agent loop”路线但保持权限门默认保守的 harness,Amp 在 2026 Neo 重写后主动把默认权限反转为全开,并给出了一套罕见的公开论证(静态工具调用检查对”会写脚本的模型”已无意义)——这是目前调研过的 harness 里对”降低摩擦优先于纵深防御”表态最激进的一例。
  • Amp 的沙箱产品(Orbs)把 .agents/setup/.agents/resume 生命周期钩子和 /__dev agent 专用鉴权端点做成了仓库可提交、可版本控制的一等公民,而不是把沙箱当成纯基础设施旁路——这与很多 harness 把”如何让 agent 摸清开发环境”留给用户临场处理形成对比。
  • 后续 synthesis 阶段需要补充:与 Cursor/Windsurf 等同样闭源、同样淡化 IDE 集成的产品对比其”模型协同设计”话术的具体差异;以及与 Claude Code 的 --stream-json schema 做逐字段 diff(本 dossier 已确认两者”兼容”但未逐一比对差异点)。

原始源码定位

  • repo: 无公开源码(closed-source 商用产品,ampcode.com)
  • commit/version analyzed: 无适用 commit;CLI 包 @ampcode/cli(npm,历史名 @sourcegraph/amp),版本号未固定抓取;全部一手页面 fetch 于 2026-07-07
  • 关键文件列表(相对路径):不适用——无源码仓库。以下为本 dossier 依据的一手页面本地存档路径(相对 ai-research/sources/harness/sourcegraph-amp/):
    • how-to-build-an-agent.md — 教学级 agent loop 参考实现(含 Go 代码)
    • owners-manual.md — 产品全量手册(模式、AGENTS.md、subagent、权限、插件、CLI)
    • manual-appendix-stream-json-schema.md--stream-json 精确 schema
    • legacy-permissions-rules.md — 权限规则 DSL
    • plugin-api-reference.md@ampcode/plugin 完整 TypeScript 类型
    • security-reference.md — 安全/数据处理/subprocessor 全量披露
    • context-management-guide.md — 上下文窗口/压缩/Handoff(archived Nov 2025)
    • news-amp-rebuilt-neo.md — Neo 重写公告(架构级变更)
    • news-the-coding-agent-is-dead.md — 模型协同设计哲学 essay
    • note-putting-an-agent-in-an-orb.md — 沙箱/开发环境深度披露
    • manual-orbs.mdnews-agents-in-orbs.md — Orb 规格/定价/生命周期
    • news-custom-agents.md — 插件定义自定义 subagent
    • news-liberating-code-review.md — Checks 系统
    • news-read-bigger-threads.mdread_thread subagent 重写
    • chronicle-index.md — 官方新闻/笔记索引(用于溯源模型替换历史等时间线)

一手源存档(sources/)

/Users/zhao/projects/self-wiki/ai-research/sources/harness/sourcegraph-amp/ 下共 17 个文件(含 NOTES.md),约 404KB:

  • NOTES.md(stage-1 调研笔记,581 行,本 dossier 的直接依据)
  • chronicle-index.md
  • context-management-guide.md
  • how-to-build-an-agent.md
  • legacy-permissions-rules.md
  • manual-appendix-stream-json-schema.md
  • manual-orbs.md
  • news-agents-in-orbs.md
  • news-amp-rebuilt-neo.md
  • news-custom-agents.md
  • news-liberating-code-review.md
  • news-read-bigger-threads.md
  • news-the-coding-agent-is-dead.md
  • note-putting-an-agent-in-an-orb.md
  • owners-manual.md
  • plugin-api-reference.md
  • security-reference.md