我们可能会请你生成诊断报告,以帮助我们修复你遇到的 bug。
在 Amp CLI 中,打开命令面板(Ctrl-O)并选择 feedback: send report with diagnostics。你也可以运行 amp threads report <thread-id>。
在 ampcode.com 查看线程时,你也可以生成诊断报告:
这会创建一个诊断报告 ID,你在联系 Amp 支持时可以附上它。诊断数据会在 7 天后删除,且只有在你提供报告 ID 时,Amp 团队成员才能访问这些数据。
我们更希望你从 CLI 生成诊断报告,而不是从网页生成,因为 CLI 会包含网页端无法提供的额外客户端诊断信息(例如客户端日志)。
Tmux 默认不会区分 Shift+Enter 和 Enter 。为了让 Shift+Enter 在 Amp CLI 中插入换行,请启用 extended-keys 。
如果你不想更改 tmux 设置,使用 Ctrl+J 来插入换行符。
$ tmux set -s extended-keys on 要永久生效,请将 set -s extended-keys on 添加到 ~/.tmux.conf,然后重新加载: tmux source-file ~/.tmux.conf.
Amp 知道如何为此配置 tmux,所以你可以让 Amp 帮你设置。
请查看 ampcodestatus.com 了解服务状态并通过邮件、RSS、Slack 订阅警报。或者关注 @ampcodestatus 。
企业版工作区管理员可以强制使用 MCP 注册表,以便只有已批准的 MCP 服务器可供工作区成员使用。如果注册表不可访问,所有 MCP 服务器将被阻止。注册表协议和模式定义在 registry.modelcontextprotocol.io.
设置注册表 URL:
v0.1/servers 端点)并保存。可选择限制为特定用户:
注意:
Amp 的 CLI 支持与 Claude Code 兼容的流式 JSON 输出格式,用于编程集成和实时对话监控。
使用 --stream-json 标志配合 --execute 模式一起使用,以流式 JSON 格式而不是纯文本输出:要包含助手思维块,请添加 --stream-json-thinking (这会扩展 schema,与 Claude Code 不兼容)。
带参数的基本用法:
$ amp --execute "what is 3 + 5?" --stream-json 使用 stdin 输入:
$ echo "analyze this code" | amp --execute --stream-json 流式 JSON 输入模式(更多信息请见下文):
$ echo '{"type":"user","message":{"role":"user","content":[{"type":"text","text":"what is 2+2?"}]}}' | amp --execute --stream-json --stream-json-input 注意: --stream-json 标志需要 --execute 模式。它不能单独使用。 --stream-json-thinking 暗示 --stream-json.
每个对话以一个初始 init system message 开始,然后是一系列 user 和 assistant messages,最后是一个 result system message,包含统计信息。每条消息都以单独的 JSON 对象发出。
当 --stream-json-thinking 启用时,assistant 内容可能包含 thinking 和 redacted_thinking 块。
流式 JSON API 返回的消息根据以下 schema 进行严格类型化:
type StreamJSONMessage =
// An assistant message
| {
type: "assistant";
message: {
type: "message";
role: "assistant";
content: Array<{
type: "text";
text: string;
} | {
type: "tool_use";
id: string;
name: string;
input: Record<string, unknown>;
} | {
type: "thinking";
thinking: string;
} | {
type: "redacted_thinking";
data: string;
}>;
stop_reason: "end_turn" | "tool_use" | "max_tokens" | null;
usage?: {
input_tokens: number;
max_tokens: number;
cache_creation_input_tokens?: number;
cache_read_input_tokens?: number;
output_tokens: number;
service_tier?: string;
};
};
parent_tool_use_id: string | null;
session_id: string;
}
// A user message in stream JSON output (plain text or tool results)
| {
type: "user";
message: {
role: "user";
content: Array<{
type: "text";
text: string;
} | {
type: "tool_result";
tool_use_id: string;
content: string;
is_error: boolean;
}>;
};
parent_tool_use_id: string | null;
session_id: string;
}
// Emitted as the last message on success
| {
type: "result";
subtype: "success";
duration_ms: number;
is_error: false;
num_turns: number;
result: string;
session_id: string;
usage?: {
input_tokens: number;
max_tokens: number;
cache_creation_input_tokens?: number;
cache_read_input_tokens?: number;
output_tokens: number;
service_tier?: string;
};
permission_denials?: string[];
}
// Emitted as the last message on error
| {
type: "result";
subtype: "error_during_execution" | "error_max_turns";
duration_ms: number;
is_error: true;
num_turns: number;
error: string;
session_id: string;
usage?: {
input_tokens: number;
max_tokens: number;
cache_creation_input_tokens?: number;
cache_read_input_tokens?: number;
output_tokens: number;
service_tier?: string;
};
permission_denials?: string[];
}
// Emitted as the first message at the start of a conversation
| {
type: "system";
subtype: "init";
cwd: string;
session_id: string;
tools: string[];
mcp_servers: { name: string; status: "connected" | "connecting" | "connection-failed" | "disabled" }[];
// Agent mode for this run (e.g. "medium", "high"). Omitted if unknown.
agent_mode?: string;
}; 简单数学查询:
$ amp --execute "what is 3 + 5?" --stream-json
{"type":"system","subtype":"init","cwd":"/Users/orb","session_id":"T-f9941a55-3765-421e-972f-05dc1138c3a3","tools":["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_search"],"mcp_servers":[{"name":"postgres","status":"connected"}]}
{"type":"user","message":{"role":"user","content":[{"type":"text","text":"what is 3 + 5?"}]},"parent_tool_use_id":null,"session_id":"T-f9941a55-3765-421e-972f-05dc1138c3a3"}
{"type":"assistant","message":{"type":"message","role":"assistant","content":[{"type":"text","text":"8"}],"stop_reason":"end_turn","usage":{"input_tokens":10,"cache_creation_input_tokens":16256,"cache_read_input_tokens":0,"output_tokens":99,"max_tokens":968000,"service_tier":"standard"}},"parent_tool_use_id":null,"session_id":"T-f9941a55-3765-421e-972f-05dc1138c3a3"}
{"type":"result","subtype":"success","duration_ms":5400,"is_error":false,"num_turns":1,"result":"8","session_id":"T-f9941a55-3765-421e-972f-05dc1138c3a3"} 工具使用示例:
$ amp --execute "list files using a tool" --stream-json
{"type":"system","subtype":"init","cwd":"/Users/orb/project","session_id":"T-d2fc4acc-dd1d-497f-9609-ed0da22a7c95","tools":["Bash","finder" ,"create_file","edit_file","glob","Grep","mcp__postgres__query","oracle","Read","read_mcp_resource","read_web_page","Task","todo_rea d","todo_write","undo_edit","web_search"],"mcp_servers":[{"name":"postgres","status":"connected"}]}
{"type":"user","message":{"role":"user","content":[{"type":"text","text":"list files using a tool"}]},"parent_tool_use_id":null,"session_id":"T-d2fc4acc-dd1d-4 97f-9609-ed0da22a7c95"}
{"type":"assistant","message":{"type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_019cyniPYrSgaJitUSMyxyNV","name": "read", "input":{"path":"/Users/orb/project"}}],"stop_reason":"tool_use","usage":{"input_tokens":10,"cache_creation_input_tokens":13150,"cache_read_input_tokens": 0,"output_tokens":111,"max_tokens":968000,"service_tier":"standard"}},"parent_tool_use_id":null,"session_id":"T-d2fc4acc-dd1d-497f-9609-ed0da22a7c95"}
{"type":"user","message":{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_019cyniPYrSgaJitUSMyxyNV","content":"[\"index.js\",\"README.md\"] ","is_error":false}]},"parent_tool_use_id":null,"session_id":"T-d2fc4acc-dd1d-497f-9609-ed0da22a7c95"}
{"type":"assistant","message":{"type":"message","role":"assistant","content":[{"type":"text","text":"Two files: index.js and README.md"}],"stop_reason":"end_tu rn","usage":{"input_tokens":7,"cache_creation_input_tokens":133,"cache_read_input_tokens":13150,"output_tokens":13,"max_tokens":968000,"service_tier":"standard "}},"parent_tool_use_id":null,"session_id":"T-d2fc4acc-dd1d-497f-9609-ed0da22a7c95"}
{"type":"result","subtype":"success","duration_ms":7363,"is_error":false,"num_turns":2,"result":"Two files: index.js and README.md","session_id":"T-d2fc4acc-dd1d-497f-9609-ed0da22a7c95"} --stream-json-input) --stream-json-input 标志启用 流式输入 ,其中 Amp 从 stdin 读取消息直到关闭。
每条消息应为单行的有效 JSON 对象。输入内容块可以是纯文本或 base64 编码的图片:
type StreamJSONInputMessage = {
type: "user";
message: {
role: "user";
content: Array<{
type: "text";
text: string;
} | {
type: "image";
source_path?: string;
source: {
type: "base64";
media_type: "image/jpeg" | "image/png" | "image/gif" | "image/webp";
data: string;
};
}>;
};
} 设置 steer 添加到 true ,当消息在代理忙碌时排队时,将其标记为 steering。steering 排队消息会在下一个中断点处理。
type StreamJSONInputMessage = {
type: "user";
steer?: boolean;
message: { ... };
} 示例消息:
{
"type": "user",
"message": {
"role": "user",
"content": [
{
"type": "text",
"text": "what do you see?"
},
{
"type": "image",
"source_path": "file:///Users/alice/images/example.jpg",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "..."
}
}
]
}
} source_path 是可选的。如果省略,Amp 会自动生成。声明的 media_type 必须与解码后的图片字节匹配。对于 Claude 兼容输出,用户图片块在输入时被接受,但会从 stdout 上的流式 user 消息中省略。
使用 --stream-json-input时, --execute 的行为会变化:Amp 只有在 assistant 完成后 和 且 stdin 关闭时才会退出。
这允许程序化使用 Amp CLI 进行多条 user messages 的对话。
示例:
#!/bin/bash
send_message() {
local text="$1"
echo '{"type":"user","message":{"role":"user","content":[{"type":"text","text":"'$text'"}]}}'
}
{
send_message "what's 2+2?"
sleep 10
send_message "now add 8 to that"
sleep 10
send_message "now add 5 to that"
} | amp --execute --stream-json --stream-json-input 此脚本产生以下输出:
$ ./script.sh
{"type":"system","subtype":"init","cwd":"/Users/orb","session_id":"T-addfb7a4-61d9-41e1-890b-7330aa54087a","tools":["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_search"],"mcp_servers":[{"name":"postgres","status":"connected"}]}
{"type":"user","message":{"role":"user","content":[{"type":"text","text":"what's 2+2?"}]},"parent_tool_use_id":null,"session_id":"T-addfb7a4-61d9-41e1-890b-7330aa54087a"}
{"type":"assistant","message":{"type":"message","role":"assistant","content":[{"type":"text","text":"4"}],"stop_reason":"end_turn","usage":{"input_tokens":10,"cache_creation_input_tokens":13993,"cache_read_input_tokens":0,"output_tokens":67,"max_tokens":968000,"service_tier":"standard"}},"parent_tool_use_id":null,"session_id":"T-addfb7a4-61d9-41e1-890b-7330aa54087a"}
{"type":"user","message":{"role":"user","content":[{"type":"text","text":"now add 8 to that"}]},"parent_tool_use_id":null,"session_id":"T-addfb7a4-61d9-41e1-890b-7330aa54087a"}
{"type":"assistant","message":{"type":"message","role":"assistant","content":[{"type":"text","text":"12"}],"stop_reason":"end_turn","usage":{"input_tokens":10,"cache_creation_input_tokens":36,"cache_read_input_tokens":13993,"output_tokens":76,"max_tokens":968000,"service_tier":"standard"}},"parent_tool_use_id":null,"session_id":"T-addfb7a4-61d9-41e1-890b-7330aa54087a"}
{"type":"user","message":{"role":"user","content":[{"type":"text","text":"now add 5 to that"}]},"parent_tool_use_id":null,"session_id":"T-addfb7a4-61d9-41e1-890b-7330aa54087a"}
{"type":"assistant","message":{"type":"message","role":"assistant","content":[{"type":"text","text":"17"}],"stop_reason":"end_turn","usage":{"input_tokens":10,"cache_creation_input_tokens":36,"cache_read_input_tokens":14029,"output_tokens":43,"max_tokens":968000,"service_tier":"standard"}},"parent_tool_use_id":null,"session_id":"T-addfb7a4-61d9-41e1-890b-7330aa54087a"}
{"type":"result","subtype":"success","duration_ms":21639,"is_error":false,"num_turns":3,"result":"17","session_id":"T-addfb7a4-61d9-41e1-890b-7330aa54087a"} 流式 JSON 模式完全支持由 Task 工具创建的子代理:
parent_tool_use_id 字段设置为 Task 工具的 IDparent_tool_use_id 设置为 null子代理示例:
$ amp --execute "use Task tool to calculate 4+7" --stream-json
{"type":"system","subtype":"init",...}
{"type":"assistant","message":{"content":[{"type":"tool_use","id":"toolu_123","name":"Task",...}]},"parent_tool_use_id":null,...}
{"type":"assistant","message":{"content":[{"type":"text","text":"11"}]},"parent_tool_use_id":"toolu_123",...}
{"type":"user","message":{"content":[{"type":"tool_result","tool_use_id":"toolu_123",...}]},"parent_tool_use_id":null,...}
{"type":"result","subtype":"success",...} Amp 的流式 JSON 输出尽可能与 Claude Code 的格式兼容。当 --stream-json-thinking 启用时,输出包含不属于 Claude Code 公开模式的额外内容块类型。
默认情况下,工作空间成员创建的对话 与工作空间共享,工作区管理员可以更改该默认值。
工作区可在以下页面配置线程可见性的其他选项: 工作区设置 。当前支持的工作区选项包括:
企业工作区还可以配置用户组以及按组的线程可见性。
了解更多线程可见性,请参阅 Permissions.
Amp 企业版高级版工作空间可以通过权益设置每个用户的使用配额,例如:
要开始使用,前往 工作区设置 页面并导航到“权益”部分。
可以通过四种方式为用户分配权益:
工作区用户组权益仍处于实验阶段,并使用 Amp 工作区用户组。当工作区管理员希望直接在 Amp 中管理支出类别,而不是通过身份提供商管理时,它们会很有用。
创建或编辑权益时,选择“工作区用户组”作为分配类型,选择一个工作区用户组并保存。所选用户组的当前成员会自动获得该权益。
如果你的工作区启用了目录同步(通过 WorkOS SCIM),你可以根据 IdP 组成员身份分配权益。这对于希望权益分配与身份提供商自动保持同步的组织很有用。
创建或编辑权益时,选择“目录组”作为分配类型,选择一个目录和一个或多个组,然后保存。属于所选组的成员且已加入工作区的用户将自动获得该权益。
Across all assignment types, when a user qualifies for multiple 权益, the effective 权益 is determined in this order:
如果用户在同一优先级满足多个权益,则采用标准化每日配额最高的权益。
Amp checks spend against the user’s current effective 权益. Usage is tracked per user and 权益. Changing the settings on the same 权益 keeps usage attached to that 权益. If a user’s effective 权益 changes, prior spend from another 权益 does not count toward the new 权益’s limit.