原因码

ANet 向用户报告的每一条拒绝、失败、等待和状态信息,都带有一个 原因码 和一句话。命令行、MCP 工具、本地 A2A 接口、控制平面和本地控制台从同一张表取得语句,因此同一事件在所有界面上产生相同的原因码和相同的文字。本页列出这张表。

原因码的报告方式

原因码是小写标识符,最长 30 个字符,匹配 [a-z][a-z0-9_]*。部分行带有 变体;此时行键由原因码、一个点和变体组成(例如 delivery_unconfirmed.queued)。变体只改变语句的措辞,不改变原因码。

同一个原因码出现在以下位置:

anet.reason

本地 A2A 接口、MCP 任务投影和控制平面中,任务或单条消息的元数据键。

reason

控制平面错误体中的字段。错误体的形式为 {"error": "...", "reason": "...", "next": "..."}。命令行将 error 语句输出到标准错误;存在 next 时,再输出以箭头(→)开头的第二行。命令行不输出 JSON 错误体。

ErrorInfo

本地接口返回的 A2A 错误的详情。details 数组包含两个 google.rpc.ErrorInfo 条目。第一个的域为 a2a-protocol.org,原因为该 A2A 错误的原因。第二个的域为 agentnetwork.org.cn,原因为原因码的大写形式,小写的原因码位于 metadata.reason。

语句由节点按其环境的语言生成。语言取自 LC_ALL、LC_MESSAGES 和 LANG 中第一个非空的变量:以 zh 开头的值选择中文,其他值选择英文,未设置环境时选择英文。客户端原样传递该语句。

语句由模板生成。花括号中的占位符,例如 {aid}、{peer}、{task}、{retry} 和 {limit},只用节点自身持有的数据填充。远端对端写入的文本不会成为语句的一部分。没有值的占位符以中性形式替换;它不会以花括号表达式的形式输出,也不会留空。

原因码的类

各表的 类 列说明语句出现在何处,以及 A2A 如何承载该语句。

类

含义

A2A 与 a2a-x402 的对应关系

R

对方确定没有执行该请求。

任务状态 TASK_STATE_REJECTED。对能力任务,anet.effect_status 为 UNAVAILABLE。适用等待时,存在 anet.retry_after_ms。

F

以失败结束。

任务状态 TASK_STATE_FAILED。能力任务的效果状态随行给出(UNVERIFIED、UNAVAILABLE 或 FAILED)。

FP

支付未结算。

x402.payment.status 为 payment-failed,x402.payment.error 为随行给出的标准 a2a-x402 错误码。任务状态不变。

IP

等待用户决定是否支付。

任务状态 TASK_STATE_INPUT_REQUIRED,且 x402.payment.status 为 payment-required。

W

会自行解除的等待。

任务状态不变。anet.delivery 为 pending,anet.delivery_wait 保存原因码。不写入 status.message。

M

单条消息被拒绝。任务不变。

原因码即该消息的 anet.reason 元数据。

E

本节点拒绝了该请求,未发送任何内容。

A2A 错误:请求本身或节点的持续性状态为起因时,为 JSON-RPC -32602(REST 400);状况为暂时性时,为 -32603(REST 503,带 Retry-After)。

C

只出现在命令行或控制平面错误体中。

控制平面错误体 {error, reason, next}。

S

状态语句。

/status 的 message 和 summary 字段;MCP 工具 node_status 原样返回它们。

I

不改变任何状态的信息。

与任务相同的投影。

T

终端提示或确认行。

仅由命令行输出。

各表的 下一步 列说明语句要求读者做什么。command 行给出命令及其占位符。其他取值为 none needed、auto(节点正在处理该事项)、retry later、change input(修改请求、参数、文件或节点的状况,然后重试)、contact(询问对方或运营人员)、start over(创建新任务)和 futile(重复该请求无济于事)。

不显示的原因码

部分状况由节点自行处理,没有语句:守护进程重新打开的已过期 hub 会话、出站引擎重新封装的过期加密密钥标识符、守护进程重新签名的重放或过期的请求时间戳,以及密封信封层大量以小写字母和连字符命名的拒绝计数器。这些情况会被计数并写入日志,不出现在 anet.reason、控制平面的 reason 或 ErrorInfo 中。

ANetLink C1 接口的拒绝会映射为用户原因码,不对外暴露:not_permitted 报告为 provider_policy,unknown_capability 和 not_found 报告为 capability_not_served,too_large 报告为 args_too_large,bad_request、unsupported_media、internal 和 c1_version 报告为 backend_failed。

原因码表

各表由 docs/_tools/gen_reason_codes.py 根据 ANet 源码中的原因表生成。每条语句同时给出英文和中文,两者均为节点实际输出的原文。

收到时被拒绝

对方在消息到达时拒绝了该消息。原因随送达确认一并返回。

原因码

类

英文

中文

下一步

not_accepting

R UNAVAILABLE

The other side does not take tasks from you and did not run it; ask them to run: anet peers allow {aid}.

对方不接受你的任务,没有执行;请对方执行 anet peers allow {aid}。

anet peers allow {aid}

denied

R UNAVAILABLE

The other side has blocked tasks from you and did not run it; retrying will not help.

对方已屏蔽你的任务,没有执行;重试无用。

futile

capability_not_public

R UNAVAILABLE

The other side does not offer this capability to you and did not run it; see what it offers with anet card {peer}, or ask to be put on its allow list.

对方没有向你开放这项能力,没有执行;请用 anet card {peer} 查看它开放的能力,或请对方把你加入 allow 名单。

anet card {peer}

pending_full

R UNAVAILABLE

The other side's approval queue is full, so it was not taken; send it again later, or ask them to clear the queue.

对方的待批队列已满,没有受理;请稍后再发,或请对方先处理待批项。

retry later

busy

R FP UNAVAILABLE / SETTLEMENT_FAILED

The other side is too busy right now and did not run it; send it again in {retry}.

对方此刻太忙,没有执行;请在 {retry} 后再发。

retry later

caller_busy

R UNAVAILABLE

A call to this capability is still running there, so this one was not run; send it again when that one ends.

对方那里仍有一个对同一能力的调用未结束,这次没有执行;请待其结束后再发。

retry later

quota_caller_per_min

R UNAVAILABLE

This minute's calls to this capability are used up, so it was not run; send it again in {retry}.

本分钟内对这项能力的调用次数已用完,没有执行;请在 {retry} 后再发。

retry later

quota_caller_per_day

R UNAVAILABLE

Today's (UTC) calls to this capability are used up, so it was not run; send it again in {retry}.

今天(UTC)对这项能力的调用次数已用完,没有执行;请在 {retry} 后再发。

retry later

args_too_large

R UNAVAILABLE

The arguments are over the other side's limit, so it was not run; shorten them and send again (limits: anet card {peer}).

参数超过对方的上限,没有执行;请缩短参数后重发(上限见 anet card {peer})。

anet card {peer}

files_count

R UNAVAILABLE

The number of files does not match what this capability takes, so it was not run; attach the number that anet card {peer} lists.

文件个数不符合这项能力的要求,没有执行;请按 anet card {peer} 列出的个数附文件。

anet card {peer}

files_too_large

R UNAVAILABLE

A file is over the other side's size limit, so it was not run; make it smaller and send again (limits: anet card {peer}).

有文件超过对方的大小上限,没有执行;请压缩后重发(上限见 anet card {peer})。

anet card {peer}

file_type_not_accepted

R UNAVAILABLE

The other side does not take this file type, so it was not run; use a type that anet card {peer} lists.

对方不接收这种文件类型,没有执行;请换成 anet card {peer} 列出的类型。

anet card {peer}

bad_request

R UNAVAILABLE

The other side cannot accept the form of this request, so it was not run; update anet (anet update) and send again.

对方不接受这个请求的格式,没有执行;请升级 anet(anet update)后重发。

anet update

key_state

R M UNAVAILABLE

The other side could not confirm that your identity key is current and did not take it; run anet doctor to check your connection to your hub.

对方无法确认你的身份密钥是最新的,没有接收;请运行 anet doctor 检查你与 hub 的连接。

anet doctor

invalid

R M UNAVAILABLE

The other side could not verify this message (time, signature or identity record) and did not take it; run anet doctor to check this computer's clock and identity.

对方无法核验这条消息(时间、签名或身份记录对不上),没有接收;请运行 anet doctor 检查本机时钟与身份。

anet doctor

key_state.approve

C

The other side rotated its keys in an emergency before you approved this, so the task may not be from them and was refused; retrying will not help.

对方在你批准之前做了紧急密钥轮换,这个任务可能不是它本人发的,已拒绝;重试无用。

futile

canceled

I

Not run: the other side got your cancel first.

没有执行:对方先收到了你的取消。

task_not_found

F M UNVERIFIED

The other side has no such task (it expired or was removed); start a new task.

对方没有这个任务(已过期或已被清理);请新建任务。

start over

task_ended

M

This message was not used: the task had already ended on the other side; start a new task if you still need to.

这条消息没有被使用:任务在对方那里已经结束;需要的话请新建任务。

start over

refused

R M UNAVAILABLE

The other side refused it without a reason; retrying will not help, so contact them directly.

对方拒收了,没有说明原因;重试无用,可以直接联系对方。

futile

unknown_code

R M UNAVAILABLE

The other side refused it (reason code {code}); ask them what it means.

对方拒收了(原因码 {code});请联系对方了解原因。

contact

接受后被拒绝或失败

对方先接受了消息,随后拒绝或失败,或本节点对结果作出了裁定。

原因码

类

英文

中文

下一步

pending_approval

W

The other side approves tasks by hand and has queued this one; it will not run before they approve it, nothing to do.

对方要先人工批准这个任务,已进入待批队列;批准前不会执行,不需要操作。

none needed

pending_expired

R UNAVAILABLE

The other side's operator did not approve this task within 72 hours, so it expired unrun; contact them before sending it again if you still need it.

对方运营者 72 小时内没有批准这个任务,已过期,没有执行;需要的话请先联系对方再重发。

contact

operator_rejected

R UNAVAILABLE

The other side's operator turned this task down, so it was not run; retrying will not help.

对方运营者拒绝了这个任务,没有执行;重试无用。

futile

sandbox_unavailable

R UNAVAILABLE

The other side's sandbox cannot run your task right now, so it was not run; send it again later, or contact its operator.

对方节点的沙箱此刻不能运行你的任务,没有执行;请稍后再发,或联系对方运营者。

retry later

budget

R UNAVAILABLE

The other side has used up today's runs for peers it does not trust, so it was not run; send it again in {retry}.

对方节点今天为未信任对端运行 agent 的次数已用完,没有执行;请在 {retry} 后再发。

retry later

provider_policy

R UNAVAILABLE

The other side does not allow remote calls to this capability, so it was not run; see its other capabilities with anet card {peer}, or contact its operator.

对方节点不允许远程调用这项能力,没有执行;请用 anet card {peer} 查看其他能力,或联系对方运营者。

anet card {peer}

capability_not_served

R UNAVAILABLE

The other side does not serve this capability now, so it was not run; see what it serves with anet card {peer}.

对方现在没有提供这项能力,没有执行;请用 anet card {peer} 查看它提供的能力。

anet card {peer}

payments_unavailable

R UNAVAILABLE

This capability is paid, but the other side cannot take payments right now, so it was not run; try again later, or contact them.

这项能力要付款,但对方节点现在收不了款,没有执行;请稍后再试,或联系对方。

retry later

unavailable

R UNAVAILABLE

The other side cannot run this capability right now, so it was not run; send it again later.

对方暂时不能执行这项能力,没有执行;请稍后再发。

retry later

timeout

F UNVERIFIED

The other side timed out, and whether it took effect is not known; do not just send it again: ask them first, or check with anet task get {task}.

对方执行超时,不知道是否已经生效;不要直接重发,先问对方,或用 anet task get {task} 查看。

anet task get {task}

connection_lost

F UNVERIFIED

The other side lost its connection to its service while running this, so whether it took effect is not known; do not just send it again, ask them first.

对方执行时与它的服务断开,不知道是否已经生效;不要直接重发,先问对方。

contact

interrupted

F UNVERIFIED

The other side restarted while running this, so whether it took effect is not known; do not just send it again, ask them first.

对方节点在执行中重启,不知道是否已经生效;不要直接重发,先问对方。

contact

no_response

F UNVERIFIED

The other side confirmed it got this but has not answered within {limit}; it may still be running, and a later answer is still recorded: check with anet task get {task}.

对方已确认收到,但 {limit} 内没有任何回应;它可能还在执行,之后到达的答复仍会记下,可用 anet task get {task} 查看。

anet task get {task}

backend_failed

F UNVERIFIED

The other side's service failed without saying why; try again later, or contact them.

对方的服务执行失败,没有说明原因;请稍后重试,或联系对方。

retry later

bad_image

F FAILED

The other side could not read the image (damaged or too large), so there is no result; use a different image and send again.

对方读不了这张图片(损坏或尺寸过大),没有结果;请换一张图片重发。

change input

no_face_in_a

F FAILED

No face was found in the first image, so there is no result; use a clear, front-facing photo and send again.

第一张图片里没有找到人脸,没有结果;请换一张清晰的正脸照片重发。

change input

no_face_in_b

F FAILED

No face was found in the second image, so there is no result; use a clear, front-facing photo and send again.

第二张图片里没有找到人脸,没有结果;请换一张清晰的正脸照片重发。

change input

result_refused

F UNVERIFIED

The other side's result does not match the conversation it signed, so this node discarded it; contact them, or start the task again.

对方给出的结果与它签名的对话记录不符,本机已丢弃;请联系对方,或重新发起任务。

contact

receipt_mismatch

I

The conversation the other side signed changes what you said, so this node keeps no evidence of it and you cannot review it; you can still read the result.

对方签名的对话记录改动了你说过的话,本机不据此记证据,也不能评价;结果仍可查看。

deduplicated

I

This is a retry of the call just made: the original task is returned and nothing was sent again.

这是对刚才那次调用的重试,返回原任务,没有再次发送。

投递

本节点发送的消息:终止性失败、等待、发件箱和投递状态语句。

原因码

类

英文

中文

下一步

delivery_unconfirmed.queued

F UNVERIFIED

{limit} 内没有确认送达:信还在 hub 排队(对方可能不在线),anet 已请对方取消;仍需要的话请稍后重发。

{limit} 内没有确认送达:信还在 hub 排队(对方可能不在线),anet 已请对方取消;仍需要的话请稍后重发。

retry later

delivery_unconfirmed.waiting

F UNVERIFIED

{limit} 内没有确认送达(最后一次:{wait}),anet 已请对方取消;仍需要的话请稍后重发。

{limit} 内没有确认送达(最后一次:{wait}),anet 已请对方取消;仍需要的话请稍后重发。

retry later

delivery_unconfirmed.sent

F UNVERIFIED

{limit} 内没有确认送达:hub 没有保存它,或一直连不上,anet 已请对方取消;仍需要的话请稍后重发。

{limit} 内没有确认送达:hub 没有保存它,或一直连不上,anet 已请对方取消;仍需要的话请稍后重发。

retry later

delivery_unconfirmed.expired

F UNVERIFIED

Delivery was not confirmed in 14 days, and the other side may still have got it; ask them before sending it again.

14 天内没有确认送达,对方仍可能收到过;重发前请先问对方。

contact

undeliverable

F UNAVAILABLE

Not sent: it never left this node before it expired, so the other side never got it; see why with anet status, then send it again.

没有发出:消息过期前一直没能离开本机,对方没有收到;请运行 anet status 查看原因后重发。

anet status

recipient_unknown

F E C UNVERIFIED

The recipient cannot be found: no hub knows this AID; check it with anet find and send again.

找不到收件方:没有 hub 知道这个 AID;请用 anet find 核对 AID 后重发。

anet find

recipient_unverifiable

E C

The other side's identity record or encryption keys cannot be verified (a forked key history or a bad signature), so nothing was sent; run anet doctor, and ask them to confirm their identity before sending again.

无法核验对方的身份记录或加密钥(密钥历史分叉或签名不符),什么都没有发出;请运行 anet doctor,并请对方确认身份后再发。

anet doctor

too_large

F UNVERIFIED

The hub refused it: it is over the hub's size limit; make the files smaller and send again.

hub 拒收:超过它的大小上限;请减小附件后重发。

change input

too_large_for_stranger

F UNVERIFIED

The other side takes at most 64 MiB from senders who are not yet its contacts; send smaller files, or ask them to put you on their allow list and reply to you once, then send again.

对方只收非联系人 64 MiB 以内的信;请减小附件,或请对方把你加入 allow 名单并回你一条消息后再发。

change input

bad_envelope

F UNVERIFIED

The hub cannot accept the form of this message; update anet (anet update) and send again.

hub 不接受这条消息的格式;请升级 anet(anet update)后重发。

anet update

rate_limited

W

发送过快,hub 要求稍等;anet 会自动重试。

发送过快,hub 要求稍等;anet 会自动重试。

auto

redelivery_limited

W

发送过快,hub 要求稍等;anet 会自动重试。

发送过快,hub 要求稍等;anet 会自动重试。

auto

strangers_busy

W

The other side's inbox for senders who are not yet its contacts is full, so this is queued; it goes out on its own once they collect their mail.

对方接收非联系人来信的通道已满,信在排队;对方取信后会自动送出。

auto

mailbox_full

W

The other side's mailbox is full, so this is queued; it goes out on its own once they collect their mail.

对方信箱已满,信在排队;对方取信后会自动送出。

auto

home_unreachable

W

暂时连不上对方所在的 hub,信在排队;anet 会自动重试。

暂时连不上对方所在的 hub,信在排队;anet 会自动重试。

auto

session_unavailable

W warn

This node's hub is not taking first contacts right now, so this is queued; run anet status to see the hub's state.

本节点的 hub 暂时不接受首次联系,信在排队;请运行 anet status 查看 hub 状态。

anet status

credential_refused

W

The hub refused the delivery credential the other side gave you, so this is queued; if it is still refused after 10 minutes it goes on its own as a first contact (and the hub then knows it is from you).

hub 拒绝了对方给你的投递凭据,信在排队;10 分钟后仍被拒就会自动改走首次联系(hub 会因此知道是你发的)。

auto

notice_stale.wait

W

This node's hub has not confirmed the current key yet, so this is queued; it goes out on its own once it does (see the identity line of anet status).

本节点的 hub 还没确认最新密钥,信在排队;确认后会自动发出,详见 anet status 的身份行。

auto

rotation_pending.wait

W

A key rotation is being published, so this is queued; it goes out on its own once that is done.

密钥轮换正在发布,信在排队;发布完成后会自动发出。

auto

outbox.ok

S ok

{n} messages are waiting for confirmation; the oldest for {dur}.

{n} 条消息等待对方确认,最久 {dur}。

outbox.stuck

S warn

{n} messages have not left this node for {dur}: the hub cannot be reached (last error: {error}); check the network and the hub address.

{n} 条消息已有 {dur} 没能发出:连不上 hub(最后错误:{error});请检查网络与 hub 地址。

anet status

outbox.unconfirmed

S warn

{n} 条 24 小时前发出的消息还没有确认:对方一直没有取信;不需要操作,anet 会一直查,直到 14 天后过期。

{n} 条 24 小时前发出的消息还没有确认:对方一直没有取信;不需要操作,anet 会一直查,直到 14 天后过期。

outbox.none

S ok

No messages are waiting for confirmation.

没有等待确认的消息。

outbox.unreadable

S unknown

This node's outbox cannot be opened read-only ({error}); while the daemon runs, anet status shows delivery.

无法只读打开本机的出站队列({error});daemon 在运行时,anet status 会显示送达情况。

anet status

no_response_after.set

I ok

A task this node sends fails if its delivery is not confirmed within {limit}, or if it is confirmed but the other side does not answer within {limit} after that; a later answer is still recorded.

本节点发出的任务 {limit} 内没有确认送达即算失败;确认送达后 {limit} 内对方没有任何回应也算失败,之后到达的答复仍会记下。

no_response_after.off

I info

no_response_after is 0: a task whose delivery is not confirmed is resent until it expires after 14 days, and a confirmed task the other side never answers keeps waiting and does not fail on its own.

no_response_after 为 0:没有确认送达的任务会一直重发,14 天后过期才算失败;已确认而对方一直不回应的任务保持等待,不会自动算失败。

delivery.not_sent

I

尚未发出:暂时连不上 hub,anet 会继续重试。

尚未发出:暂时连不上 hub,anet 会继续重试。

delivery.not_sent.ordered

I

Not sent yet: it goes out on its own once the task's previous message is confirmed.

尚未发出:等这个任务的上一条消息确认后自动发出。

delivery.sent

I

Sent; waiting for the other side's node to confirm it.

已发出,等待对方节点确认。

delivery.queued_at_hub

I

Waiting at the hub for the other side to pick it up (they may be offline).

已在 hub 排队,等对方取信(对方可能不在线)。

delivery.confirmed

I

Delivered: the other side's node confirmed it.

已送达:对方节点已确认。

delivery.unconfirmed.not_sent

I

Not sent: it never left this node.

没有发出:消息从未离开本机。

delivery.unconfirmed.sent

I

没有确认送达:anet 已停止等待,对方仍可能收到过。

没有确认送达:anet 已停止等待,对方仍可能收到过。

delivery.ends_at

I

If it is still not delivered by {time}, the task fails.

到 {time} 仍未送达,任务会以失败结束。

hub.next_check

I

anet asks the hub again at {time}.

anet 将在 {time} 再次向 hub 确认。

支付

支付决定、支付结果、支出拒绝和限额摘要。

原因码

类

英文

中文

下一步

needs_operator_approval.off

IP

Quoted {amount} credits; {tier} is off (limit 0), so nothing was paid; run anet pay {task}.

报价 {amount} credits;{tier}没有开启(额度为 0),没有付款;请执行 anet pay {task}。

anet pay {task}

needs_operator_approval.over_limit

IP

Quoted {amount} credits, above {tier} (≤{single} per payment, {left} left today), so nothing was paid; run anet pay {task}.

报价 {amount} credits,超出{tier}额度(单笔 ≤{single},今日剩 {left}),没有付款;请执行 anet pay {task}。

anet pay {task}

needs_operator_approval.manual_limit

IP

Quoted {amount} credits, above even the manual limit (≤{single} per payment, {left} left today), so nothing was paid; run anet payments set {key}={value}, then anet pay {task}.

报价 {amount} credits,也超出人工付款上限(单笔 ≤{single},今日剩 {left}),没有付款;请先执行 anet payments set {key}={value},再执行 anet pay {task}。

anet payments set {key}={value}

needs_operator_approval.payee_not_allowed

IP

Quoted {amount} credits; the payee is not on your payee list, so nothing was paid automatically; run anet pay {task} (to pay it automatically from now on: anet payees add {peer}).

报价 {amount} credits,收款方不在付款名单里,没有自动付款;请执行 anet pay {task}(以后要自动付给它:anet payees add {peer})。

anet pay {task}

needs_operator_approval.payees_unreadable

IP

Quoted {amount} credits; the payee list cannot be read, so nothing was paid automatically; run anet pay {task}, then fix the list with anet doctor.

报价 {amount} credits,付款名单读不了,没有自动付款;请执行 anet pay {task},再用 anet doctor 修复名单。

anet pay {task}

quote_above_card_price

IP

Quoted {amount} credits, above the {price} credits the other side signed, so nothing was paid automatically; to pay anyway run anet pay {task}.

报价 {amount} credits,高于对方签名的价格 {price} credits,没有自动付款;确认要付请执行 anet pay {task}。

anet pay {task}

card_price_unavailable

IP

Quoted {amount} credits, but there is no price signed by the other side ({why}), so nothing was paid automatically; to pay anyway run anet pay {task}.

报价 {amount} credits,但没有对方签名的价格({why}),没有自动付款;确认要付请执行 anet pay {task}。

anet pay {task}

paid.auto

I

Quoted {amount} credits, within your automatic limit (≤{single} per payment, {left} left today): paid automatically.

报价 {amount} credits,在你的自动付款额度内(单笔 ≤{single},今日剩 {left}),已自动付款。

paid.agent

I

Quoted {amount} credits, within the agent limit (≤{single} per payment, {left} left today): paid.

报价 {amount} credits,在 agent 付款额度内(单笔 ≤{single},今日剩 {left}),已付款。

paid.manual

I

Paid {amount} credits (you confirmed it in the terminal; {left} left today).

已付 {amount} credits(你在终端确认的,今日剩 {left})。

quote_expired

FP EXPIRED_PAYMENT

The quote has expired, so nothing was paid; start the task again for a new quote.

报价已过期,没有付款;请重新发起任务,获取新报价。

start over

rail_not_payable

FP SETTLEMENT_FAILED

The chosen option settles at a hub where this node holds no credit, so nothing was paid; use another option.

所选付款选项要在本节点没有余额的 hub 上结算,没有付款;请换一个付款选项。

change input

option_not_offered

FP SETTLEMENT_FAILED

The chosen option is not in the quote, so nothing was paid; use one copied unchanged from x402.payment.required.accepts.

所选付款选项不在报价里,没有付款;请改用从 x402.payment.required.accepts 原样复制的一个选项。

change input

client_payload_unsupported

FP SETTLEMENT_FAILED

This node signs payments for you and does not take a payload from the client; send it again as payment-submitted without x402.payment.payload.

本节点替你签名付款,不接受客户端自带的付款载荷;请改为只发 payment-submitted,不带 x402.payment.payload。

change input

no_pending_quote

FP SETTLEMENT_FAILED

This task has no quote waiting to be paid, so nothing was paid; nothing to do.

这个任务没有待付的报价,没有付款;不需要操作。

none needed

binding_mismatch

FP SETTLEMENT_FAILED

The other side refused this payment (the authorization does not match this task), and nothing was charged; start the task again.

对方拒收了这笔付款(授权与这个任务不匹配),没有扣款;请重新发起任务。

start over

payer_mismatch

FP SETTLEMENT_FAILED

The other side refused this payment (it was not signed by this task's requester), and nothing was charged; start the task again.

对方拒收了这笔付款(签名人不是这个任务的请求方),没有扣款;请重新发起任务。

start over

payee_not_local

FP SETTLEMENT_FAILED

Not settled: the payee is not on the hub that handled this payment, and nothing was charged; pay again: anet pay {task}.

付款没有结算:处理这笔付款的 hub 上没有这个收款方,没有扣款;请重新付款:anet pay {task}。

anet pay {task}

auth_window_too_long

FP SETTLEMENT_FAILED

The payment authorization is valid for more than 24 hours, which the hub refuses, and nothing was charged; pay again: anet pay {task}.

付款授权的有效期超过 24 小时,hub 不接受,没有扣款;请重新付款:anet pay {task}。

anet pay {task}

x402:INSUFFICIENT_FUNDS

FP INSUFFICIENT_FUNDS

Not enough credit, and nothing was charged; see your balance with anet balance.

余额不足,没有扣款;请用 anet balance 查看余额。

anet balance

x402:INVALID_SIGNATURE

FP INVALID_SIGNATURE

The payment signature did not verify, and nothing was charged; pay again: anet pay {task}.

付款签名没有通过核验,没有扣款;请重新付款:anet pay {task}。

anet pay {task}

x402:INVALID_SIGNATURE.rotated

FP INVALID_SIGNATURE

This authorization was signed with a key you have since rotated away, so the hub refused it, and nothing was charged; pay again: anet pay {task}.

这笔授权是用已轮换掉的旧密钥签的,hub 拒收,没有扣款;请重新付款:anet pay {task}。

anet pay {task}

x402:EXPIRED_PAYMENT

FP EXPIRED_PAYMENT

The payment authorization had expired when it arrived, and nothing was charged; pay again: anet pay {task}.

付款授权提交时已经过期,没有扣款;请重新付款:anet pay {task}。

anet pay {task}

x402:DUPLICATE_NONCE

FP DUPLICATE_NONCE

This authorization was already used, and nothing was charged twice; nothing to do.

这笔授权已经用过,没有重复扣款;不需要操作。

none needed

x402:NETWORK_MISMATCH

FP NETWORK_MISMATCH

The authorization was signed for another network, and nothing was charged; pay again: anet pay {task}.

付款授权签的是另一个网络,没有扣款;请重新付款:anet pay {task}。

anet pay {task}

x402:INVALID_AMOUNT

FP INVALID_AMOUNT

The amount does not match the quote, and nothing was charged; pay again: anet pay {task}.

付款金额与报价不符,没有扣款;请重新付款:anet pay {task}。

anet pay {task}

x402:SETTLEMENT_FAILED

FP SETTLEMENT_FAILED

The payment did not settle, and nothing was charged; pay again later: anet pay {task}.

付款没有结算成功,没有扣款;请稍后重新付款:anet pay {task}。

anet pay {task}

over_single_limit

C

{amount} credits is above the per-payment limit {single}, so nothing was paid; to pay it, first run anet payments set {key}={amount}.

{amount} credits 超出单笔上限 {single},没有付款;要付请先执行 anet payments set {key}={amount}。

anet payments set {key}={amount}

over_daily_limit

C

{spent} was already paid today, and {amount} more would pass the daily limit {daily}, so nothing was paid; pay tomorrow, or run anet payments set daily_max={need}.

今天已付 {spent},再付 {amount} 会超出每日上限 {daily},没有付款;明天再付,或执行 anet payments set daily_max={need}。

anet payments set daily_max={need}

over_agent_daily_limit

C

The agent already paid {spent} today, and {amount} more would pass the agent daily limit {daily}, so nothing was paid; ask the operator to run anet pay {task}.

agent 今天已付 {spent},再付 {amount} 会超出 agent 每日上限 {daily},没有付款;请让运营者执行 anet pay {task}。

anet pay {task}

payee_not_allowed

C

The payee {peer8} is not on the payee list, so the agent cannot pay it; ask the operator to run anet pay {task}, or anet payees add {peer}.

收款方 {peer8} 不在付款名单里,agent 不能付;请让运营者执行 anet pay {task},或 anet payees add {peer}。

anet pay {task}

payees_unreadable

C

The payee list cannot be read, so agent payments are paused; run anet doctor.

付款名单读不了,agent 付款已暂停;请运行 anet doctor 查看。

anet doctor

limits_summary

S info

Automatic payments: ≤{auto_max} each; agent payments: ≤{agent_max} each, {agent_left} left today for the agent; manual payments (anet pay): ≤{explicit_max} each; {left} left today across all three; automatic and agent payments go only to the {n} payees on your list.

自动付款单笔 ≤{auto_max};agent 付款单笔 ≤{agent_max},agent 今日剩 {agent_left};人工付款(anet pay)单笔 ≤{explicit_max};三档今日合计还能付 {left};自动与 agent 付款只付给付款名单里的 {n} 个收款方。

limits_summary.off

S info

Automatic and agent payments are off (limit 0); manual payments (anet pay): ≤{explicit_max} each, {left} left today.

自动付款与 agent 付款都关着(额度为 0);人工付款(anet pay)单笔 ≤{explicit_max},今日还能付 {left}。

身份、密钥与本地数据

身份操作与状态、因身份事件而结束的任务、本地数据、时钟和保存期。

原因码

类

英文

中文

下一步

identity_stopped

F E S fail

This identity was recovered or rotated elsewhere, so this node has stopped; if that was you, remove this copy (anet identity rm {name} --purge); if not, your recovery passphrase has leaked: create a new identity and tell your contacts.

这个身份已在别处恢复或轮换,本机已停止收发;是你本人所为就删掉本机副本(anet identity rm {name} --purge),否则说明恢复口令已泄露,请新建身份并告诉联系人。

anet identity rm {name} --purge

identity_deactivated

F E S fail

This identity is deactivated and can no longer send or receive; create a new one: anet id new <name>.

这个身份已注销,不能再收发;请新建身份:anet id new <名字>。

anet id new <name>

local_state_lost

F

This node's data is older than its identity's last state at the hub, so this task was ended; start it again if needed. Unless you restored a backup or copied the data directory, this identity runs elsewhere and may have leaked: run {next}.

本机数据比这个身份在 hub 上最后登记的旧,这个在途任务已结束,需要请重新发起;如果你没有从备份恢复或复制数据目录,说明这个身份正在别处运行、数据目录可能已泄露,请运行 {next}。

anet identity rotate --emergency

local_state_lost.peer

F

The other node's data went back to an older state (for example a restored backup), and it ended this task; start it again if you still need it.

对方节点的数据回退到了旧状态(例如从备份恢复),对方已结束这个任务;需要的话请重新发起。

start over

key_compromise

F

An emergency key rotation was made, so all tasks in progress were ended to stop the leaked keys from being used; start them again if still needed.

已做紧急密钥轮换,为防泄露的密钥继续被使用,在途任务已全部结束;需要的话请重新发起。

start over

key_compromise.peer

F

The other side rotated its keys in an emergency and ended this task; start it again and its new keys will be used.

对方做了紧急密钥轮换并结束了这个任务;重新发起即可,会自动使用对方的新密钥。

start over

tty_required

C

{action} has to be confirmed in your own terminal; run it there: {command}.

{action}需要在你自己的终端里确认;请在终端运行:{command}。

{command}

recovery_file_unprotected

C

这份恢复文件还没有设口令,只能与它所在的数据目录一起使用,不能用于恢复;请把整个数据目录复制到这台机器上运行,再运行 anet identity protect。

这份恢复文件还没有设口令,只能与它所在的数据目录一起使用,不能用于恢复;请把整个数据目录复制到这台机器上运行,再运行 anet identity protect。

anet identity protect

recovery_file_missing

C

The recovery file {path} is not there; add --recovery-file <the copy you saved>.

找不到恢复文件 {path};请加 --recovery-file <你另存的那份>。

change input

recovery_passphrase_wrong

C

Wrong passphrase: the recovery file did not open; try again, or use another copy of the file.

口令不对,恢复文件没有解开;请重新输入口令后重试,或换另一份恢复文件。

change input

recovery_wrong_identity

C

This recovery file belongs to {file_aid8}, not {aid8} (or it was altered); use this identity's recovery file.

这份恢复文件属于 {file_aid8},不是 {aid8}(或文件被改过);请换成这个身份的恢复文件。

change input

recovery_mismatch

C

This recovery file is out of date and does not match the identity's current key commitment; use the most recent one.

这份恢复文件是旧的,与身份当前的密钥承诺不符;请换成最近一次生成的恢复文件。

change input

passphrase_too_short

C

The passphrase needs at least 12 characters; use a longer one, such as four or more random words.

口令至少要 12 个字符;请换一个更长的口令,例如 4 个以上的随机词。

change input

passphrase_not_utf8

C

The passphrase has characters that cannot be read (the terminal is not using UTF-8); switch the terminal to UTF-8 (for example LANG=C.UTF-8) and try again.

口令里有无法识别的字符(终端不是 UTF-8 编码);请把终端切换为 UTF-8(例如 LANG=C.UTF-8)后重试。

change input

no_hub_yet

E C S info

Not joined to a hub yet, so nothing can be sent or received; run anet hub-register {official_hub} to join the official public hub, or use your organization's hub URL instead.

还没有接入 hub,暂时不能收发;请运行 anet hub-register {official_hub} 接入官方公共 hub,或把地址换成你所在组织的 hub。

anet hub-register {official_hub}

witness_unreachable

C

The witness hub {hub} cannot be reached, and a scheduled rotation needs it online; try again later, or if a key has leaked use anet identity rotate --emergency.

连不上本节点的见证 hub {hub},计划内轮换需要它在线;请稍后重试,确有泄露请用 anet identity rotate --emergency。

retry later

rotation_pending

C S warn

上一次密钥轮换还在发布,期间暂停收发(不会丢消息);anet 会自动重试,可用 anet identity status 查看。

上一次密钥轮换还在发布,期间暂停收发(不会丢消息);anet 会自动重试,可用 anet identity status 查看。

anet identity status

hub_switch_requires_rotation

C

加入这个 hub(首次加入或从别的 hub 换过来)需要一次密钥轮换,要输入恢复口令;请在终端运行 anet hub-register {hub}。

加入这个 hub(首次加入或从别的 hub 换过来)需要一次密钥轮换,要输入恢复口令;请在终端运行 anet hub-register {hub}。

anet hub-register {hub}

hub_switch_pending_admission

C

The new hub {hub} has not admitted your AID yet; send this line to its operator: anet-hub admit {aid}, and run anet hub-register {hub} again once they have.

新 hub {hub} 还没有准入你的 AID;请把这一行发给它的运营者:anet-hub admit {aid},批准后再运行 anet hub-register {hub}。

anet-hub admit {aid}

witness_hub_leave

C

{hub} is your witness hub: without it nobody can confirm your key and you could not send or receive; to switch hubs run anet hub-register <new hub>.

{hub} 是你的见证 hub,离开它就没人能确认你的密钥,你将无法收发;要换 hub 请运行 anet hub-register <新 hub>。

anet hub-register <new hub>

recover_target_exists

C

An identity named {name} already exists here; add --name <new name>.

本机已有名为 {name} 的身份;请加 --name <新名字>。

change input

recover_not_witness

C

{hub} is not this identity's witness hub; add --hub <its witness hub URL>.

{hub} 不是这个身份的见证 hub;请加 --hub <它的见证 hub 地址>。

change input

clock_skew

C

This computer's clock is more than 5 minutes off from the hub; fix the system time (for example enable NTP) and try again.

本机时钟与 hub 相差超过 5 分钟;请校准系统时间(例如启用 NTP)后重试。

change input

identity_v02

C

This data directory is from anet 0.2, and 0.3.0 does not migrate old data; move it away and run anet up to create a new identity.

这是 anet 0.2 的数据目录,0.3.0 不迁移旧数据;请把这个目录移走后运行 anet up 生成新身份。

anet up

datadir_too_new

C

This data directory was written by a newer anet, which this version cannot open; run anet update and start again (do not delete the directory).

这个数据目录由更新版本的 anet 写入,本版本打不开;请运行 anet update 升级后再启动(不要删除这个目录)。

anet update

identity_file_invalid

C

身份文件 {path} 已损坏,读不出来,anet 没有启动;请从备份恢复这个文件后重试,或在终端运行 anet identity recover 用恢复文件找回身份。

身份文件 {path} 已损坏,读不出来,anet 没有启动;请从备份恢复这个文件后重试,或在终端运行 anet identity recover 用恢复文件找回身份。

change input

rotation_emergency_done

I

The emergency rotation is done; check your peer lists and config.json for changes, replace model API keys with each provider, restart wired coding tools, and run anet agents wire --all again for A2A clients.

紧急轮换已完成;请检查 peers 名单与 config.json 是否被改过,到各服务商更换模型 API key,重启已接入的编码工具,A2A 客户端请重新运行 anet agents wire --all。

anet agents wire --all

identity_deactivated.unconfirmed

I

已在本机注销;你的见证 hub {hub} 还没确认,anet 会自动重试,直到它确认。

已在本机注销;你的见证 hub {hub} 还没确认,anet 会自动重试,直到它确认。

auto

identity.ok

S ok

{name} {aid8}, key confirmed by {hub} {ago} ago.

{name} {aid8},密钥已由 {hub} 确认({ago}前)。

identity.confirm_aging

S warn

This node's hub has not confirmed its key for {dur}; check the connection to the hub.

本节点的 hub 已 {dur} 没有确认密钥;请检查与 hub 的连接。

anet doctor

notice_stale

S fail

This node's hub has not confirmed its key for {dur}, so outgoing messages are queued; check the connection to the hub, and switch hubs if it stays down.

本节点的 hub 已 {dur} 没有确认密钥,发出的消息在排队;请检查与 hub 的连接,hub 长期不可用时请换 hub。

anet doctor

old_hub_unacked

S info

新 hub 已生效;旧 hub {hub} 还没确认收到这次轮换,anet 会继续重试,不需要操作。

新 hub 已生效;旧 hub {hub} 还没确认收到这次轮换,anet 会继续重试,不需要操作。

identity.quarantine

S warn

This node's hub was just restored from a backup and is checking identity records; nothing to do, it takes at most 30 minutes.

本节点的 hub 刚从备份恢复,正在核对身份记录;不需要操作,最多 30 分钟。

identity.hub_record_invalid

S warn

The witness hub {hub} returned an identity record that does not verify; this node's identity is not affected. Send this message to the hub's operator, and switch hubs if it keeps happening.

本节点的见证 hub {hub} 给出的身份记录验证不过,本机身份不受影响;请把这条信息发给 hub 运营者,持续出现时请换 hub。

identity.hub_kel_fork

S warn

{n} identity records of peer hubs did not match the ones this node keeps, so the kept ones stay; send this message to your hub's operator.

有 {n} 份对等 hub 的身份记录与本机保存的不一致,已保留原记录;请把这条信息发给你的 hub 运营者。

identity.hub_unauthorized

S warn

This node's hub refused its signed requests {n} times recently; check it with anet status, and switch hubs if this goes on.

本节点的 hub 最近 {n} 次拒绝了本节点的签名请求;请运行 anet status 查看 hub 状态,持续出现时请换 hub。

anet status

identity.unprotected

S warn

This identity has no recovery passphrase yet: if its data directory leaks, the identity can be taken over and cannot be recovered. Run anet identity protect in a terminal.

身份还没有设恢复口令:数据目录一旦泄露,身份可能被抢走且无法找回。请在终端运行 anet identity protect。

anet identity protect

identity.unprotected.resume

S warn

Setting the recovery passphrase is one step short: run anet identity protect in a terminal to finish.

设置恢复口令还差最后一步:请在终端运行 anet identity protect 完成。

anet identity protect

no_local_task

E C

本机没有任务 {task}:任务结束后按保存期删除(现在是 {retention},公开调用 7 天),也可能是本机的数据比这个任务旧;留下的证据可用 anet audit --interaction {task} 查看。

本机没有任务 {task}:任务结束后按保存期删除(现在是 {retention},公开调用 7 天),也可能是本机的数据比这个任务旧;留下的证据可用 anet audit --interaction {task} 查看。

anet audit --interaction {task}

clock.skewed

S warn

This computer's clock is {dur} off from the hub, so deleting expired keys and content has slowed to avoid early deletion (after a day of running it uses this clock), widening the forward-secrecy window; fix the system time (e.g. enable NTP).

本机时钟与 hub 相差 {dur},为防误删已放慢删除过期密钥和内容(本机累计运行满 1 天后改按本机时钟删除),前向保密窗口因此变长;请校准系统时间(例如启用 NTP)。

clock.unverified

S warn

The clock could not be checked against the hub recently, so deleting expired keys and content has slowed to avoid early deletion (after a day of running it uses this clock); it recovers once the hub can be reached.

最近无法与 hub 核对本机时钟,为防误删已放慢删除过期密钥和内容(本机累计运行满 1 天后改按本机时钟删除);恢复与 hub 的连接后自动恢复。

anet status

clock.no_hub

S info

No hub is configured, so the clock cannot be checked; expired keys and content are deleted by this computer's clock, so keep the system time correct.

没有配置 hub,无法核对本机时钟;过期密钥与内容按本机时钟删除,请确保系统时间准确。

keys.kept_long

S warn

{n} expired encryption keys have been kept {dur} longer than usual because the hub mailbox never finished reading, which widens the forward-secrecy window; check that the hub is working.

有 {n} 把过期加密钥已多保留 {dur},因为 hub 信箱一直没有读完,前向保密窗口因此变长;请检查 hub 是否正常。

anet status

keys.unknown_drops

S warn

{n} messages in the last 24 hours were sealed to keys this node had already deleted; their senders resend them automatically; if this keeps happening, run anet doctor --json and file a report.

最近 24 小时有 {n} 封信因封给了已删除的密钥而无法打开;发件方会自动重发,持续出现请运行 anet doctor --json 并提交问题报告。

anet doctor --json

local_state.detected

S warn

At {time} this node found its data had gone back to an older state and ended {n} tasks in progress; if you did not restore a backup or copy the data directory, this identity is running elsewhere and its data may have leaked: run {next}.

{time} 检测到本机数据回退,当时 {n} 个在途任务已结束;如果你没有从备份恢复或复制数据目录,说明这个身份正在别处运行、数据目录可能已泄露,请运行 {next}。

anet identity rotate --emergency

local_state.repeated

S fail

This node's data went back to an older state more than once in 7 days, so this identity is running somewhere else; if that is your own other copy, stop it; otherwise the data directory has leaked: run {next}.

7 天内本机数据回退了不止一次,说明这个身份正在另一处运行;如果那是你自己的另一份数据目录,请停掉它,否则数据目录已泄露,请运行 {next}。

anet identity rotate --emergency

retention.summary

S info

任务内容的保存期是 {retention},从任务结束起算(公开调用 7 天)。

任务内容的保存期是 {retention},从任务结束起算(公开调用 7 天)。

retention.cow

S info

The data directory is on a copy-on-write filesystem; deleted data may remain in snapshots.

数据目录在写时复制文件系统上,删除的数据可能仍留在快照里。

retention_invalid

C fail

Write the retention as a number of days from 1 to 3650 followed by d, or forever; for example: anet retention set 30d.

保存期应写成 1 到 3650 的天数加 d,或写 forever;例如 anet retention set 30d。

anet retention set 30d

retention.set

I

任务内容的保存期现在是 {retention},从任务结束起算。

任务内容的保存期现在是 {retention},从任务结束起算。

retention.confirm

T

Setting {retention} deletes {n} tasks that ended more than {retention} ago, with their content, and this cannot be undone; type yes to confirm:

改为 {retention} 会立即删除 {n} 个已结束超过 {retention} 的任务及其内容,无法恢复;输入 yes 确认:

task.kept_until

I

Content kept until {time} (retention {retention}).

内容保存到 {time}(保存期 {retention})。

加入 hub 与准入

加入 hub 与准入的各种状态。

原因码

类

英文

中文

下一步

registered

S ok

Registered at {hub}.

已在 {hub} 注册。

registered.probation

S info

Registered at {hub}; the new account is on probation until {time} and cannot upload reviews before then.

已在 {hub} 注册;新账户见习期到 {time},期间不能上传评价。

hub_pending_admission

E C S warn

This hub ({hub}) needs its operator to admit your AID first; send this line to the operator: anet-hub admit {aid} (once they do, this node finishes joining on its own).

这个 hub({hub})需要运营者先准入你的 AID;请把这一行发给运营者:anet-hub admit {aid}(批准后本节点会自动完成注册)。

anet-hub admit {aid}

hub_retrying

E C S warn

暂时无法在 {hub} 完成注册({why}),anet 会在 {time} 自动重试,不需要操作。

暂时无法在 {hub} 完成注册({why}),anet 会在 {time} 自动重试,不需要操作。

none needed

hub_retrying.quota

E C S warn

暂时无法在 {hub} 完成注册(你所在网段今天的注册名额已用完),anet 会在 {time} 自动重试;着急的话请 hub 运营者执行 anet-hub admit {aid}。

暂时无法在 {hub} 完成注册(你所在网段今天的注册名额已用完),anet 会在 {time} 自动重试;着急的话请 hub 运营者执行 anet-hub admit {aid}。

anet-hub admit {aid}

hub_refused

E C S fail

{hub} 拒绝了注册({code}),anet 不会再试;请把这条信息发给 hub 运营者。

{hub} 拒绝了注册({code}),anet 不会再试;请把这条信息发给 hub 运营者。

contact

hub_publication_blocked

E C S fail

The registration data has something an organization module marks confidential, so it was not sent to {hub}; remove it from the agent name, capability descriptions or profile, then run anet hub-register {hub} again.

注册资料里有组织模块标为保密的内容,本节点没有把它发给 {hub};请从 agent 名称、能力描述或资料里去掉后重新运行 anet hub-register {hub}。

anet hub-register {hub}

hub_unreachable

C

{hub} cannot be reached, and nothing was changed; check the address or the network and run anet hub-register {hub} again.

连不上 {hub},配置没有改动;请检查地址或网络后重新运行 anet hub-register {hub}。

anet hub-register {hub}

hub_unreachable.leave

C

{hub} cannot be reached, so this node has not left it and nothing was changed; check the network and run anet hub-leave again.

连不上 {hub},没有离开,配置没有改动;请检查网络后重新运行 anet hub-leave。

anet hub-leave

invite_removed

C

Hubs no longer use invites; run anet hub-register {hub} and send the admit command it prints to the hub's operator.

hub 已不再使用邀请码;请直接运行 anet hub-register {hub},再把它打印的 admit 命令发给 hub 运营者。

anet hub-register {hub}

wire_too_old

E S fail

本节点的 anet 比 {hub} 要求的旧(需要 {version});请运行 anet update。

本节点的 anet 比 {hub} 要求的旧(需要 {version});请运行 anet update。

anet update

wire_too_new

E S fail

{hub} runs an older version than this node, so they cannot talk; ask the hub's operator to upgrade, or use another hub.

{hub} 的版本比本节点旧,双方不能通信;请联系 hub 运营者升级,或换一个 hub。

contact

probation

C

新账户见习期(到 {time})内不能上传评价;anet 会在期满后自动上传,不需要操作。

新账户见习期(到 {time})内不能上传评价;anet 会在期满后自动上传,不需要操作。

none needed

review_exists

C

This interaction has already been reviewed; each can be reviewed once, so retrying will not help.

这次交互已经评价过了;每次交互只能评价一次,重试无用。

futile

requester_commit_mismatch

C

Only this interaction's requester can review it; retrying will not help.

只有这次交互的请求方能评价它;重试无用。

futile

receipt_not_reviewable

C

这张回执不能用于评价:它缺少评价承诺,或签名与评价对不上;只能评价用 anet 0.3.0 发起的任务,重试无用。

这张回执不能用于评价:它缺少评价承诺,或签名与评价对不上;只能评价用 anet 0.3.0 发起的任务,重试无用。

futile

review_window_closed

C

The interaction ended more than 30 days ago and can no longer be reviewed; retrying will not help.

交互结束已超过 30 天,不能再评价;重试无用。

futile

review.queued

I

The review is signed and will be uploaded at a random time within 6 hours, to make it harder to match it to an interaction by timing.

评价已签好,将在 6 小时内的随机时刻自动上传(让别人更难按时间对应到某次交互)。

被本节点拒绝

本节点立即拒绝的请求。未发送任何内容。

原因码

类

英文

中文

下一步

message_id_reused.open

E C

This messageId is already used by the open task {task} with different content, so nothing was sent; if this is a retry, wait for task {task}; if it is a new request, use a new random messageId.

这个 messageId 已用于进行中的任务 {task},内容不同,本次没有发送;如果是重试,请等待任务 {task};如果是新请求,请换一个新的随机 messageId。

change input

message_id_reused.followup

E C

This messageId is already used by a different message on task {task}, so nothing was sent; use a new random messageId for a new message.

这个 messageId 已用于任务 {task} 上内容不同的一条消息,本次没有发送;新消息请换一个新的随机 messageId。

change input

args_reserved_key

E C

Keys starting with $ are reserved by anet, so nothing was sent; rename them and send again.

参数里以 $ 开头的键是 anet 保留的,本次没有发送;请改名后重发。

change input

preview_off

C

Previews are off on this node, so nothing was sent; run anet preview on if you want them.

本节点的预览开关是关的,没有发送;需要时运行 anet preview on。

anet preview on

task_not_open

C

This task has ended or is not a text task sent to this node, so the preview was not sent; nothing to do.

这个任务已结束,或不是发给本节点的文本任务,预览没有发送;不需要操作。

none needed

not_requested

C

The requester did not ask for a preview this turn, so this frame was not sent; nothing to do.

请求方这一轮没有要预览,这一帧没有发送;不需要操作。

none needed

extended_card_not_offered

E

For you this agent has only its public card, nothing to do; skills open only to its lists show up after your first exchange with it, and you can call one directly if you know its name.

对你来说这个 agent 只有公开卡片,不需要操作;只对名单开放的能力,要在你与它第一次往来之后才会显示,已知能力名时可以直接调用。

none needed

extended_card_not_configured

E

This agent's extended card for you is the same as its public card (no prices and no extra skills), nothing to do.

这个 agent 给你的扩展卡片与公开卡片相同(没有价格,也没有多出的能力),不需要操作。

none needed

extended_card_unavailable

E

This agent's extended card cannot be fetched right now (no answer, or it is busy), so its public card is shown; try again later.

暂时取不到这个 agent 的扩展卡片(对方没有回应或太忙),下面是它的公开卡片;请稍后再试。

retry later

extended_card_unavailable.bad_signature

E

This agent's extended card has an invalid signature and was discarded, so its public card is shown; contact them.

这个 agent 的扩展卡片签名无效,已丢弃,下面是它的公开卡片;请联系对方。

contact

daemon_not_running

C

anet 没有在运行(数据目录 {path});请运行 anet up。

anet 没有在运行(数据目录 {path});请运行 anet up。

anet up

daemon_not_answering

C

anet 正在运行(数据目录 {path}),但 {dur} 内没有应答,什么都没有改;请稍后再试。

anet 正在运行(数据目录 {path}),但 {dur} 内没有应答,什么都没有改;请稍后再试。

retry later

local_write_failed

C

本节点没能把这次改动写进数据目录({error});请检查磁盘空间与数据目录的权限后重试。

本节点没能把这次改动写进数据目录({error});请检查磁盘空间与数据目录的权限后重试。

change input

aid_invalid

C

{value} is not a full AID; copy the full AID from the AID column of anet find or anet peers list and try again.

{value} 不是完整的 AID;请从 anet find 或 anet peers list 的 AID 列复制完整 AID 后重试。

anet find

cli_removed

C

{what} was removed in 0.3.0; {instead}.

{what} 已在 0.3.0 删除;{instead}。

change input

config_key_removed

C fail

The setting {key} was removed in 0.3.0; {instead}.

配置项 {key} 在 0.3.0 已删除;{instead}。

change input

config_invalid

C fail

The setting {key} is not valid: {rule}; fix it and try again.

配置项 {key} 的值不合法:{rule};请改正后重试。

change input

module_absent

E C

{why},什么都没有做;{fix}。

{why},什么都没有做;{fix}。

change input

module_absent.configured

C S fail

配置里有 {key},但{why},anet 没有启动;请删掉 {key},或{fix}。

配置里有 {key},但{why},anet 没有启动;请删掉 {key},或{fix}。

change input

module_absent.payment

IP

这个任务要付 {amount} credits,但{why},什么都没有签;要付款请{fix}后运行 anet pay {task},不需要了就运行 anet task cancel {task}。

这个任务要付 {amount} credits,但{why},什么都没有签;要付款请{fix}后运行 anet pay {task},不需要了就运行 anet task cancel {task}。

anet task cancel {task}

daemon_running

C

anet 正在运行(数据目录 {path}),这项改动要在它停止后做,什么都没有改;请先运行 anet down,再重试。

anet 正在运行(数据目录 {path}),这项改动要在它停止后做,什么都没有改;请先运行 anet down,再重试。

anet down

without_configured

C

配置里有 {key},先删掉它再关闭{name}模块({m});什么都没有改。

配置里有 {key},先删掉它再关闭{name}模块({m});什么都没有改。

change input

update_variant_unknown

C

这个 anet 是自建的,anet update 只更新发布版本,什么都没有下载;请按原来的方式重新构建,或用 install.sh 改装发布版本。

这个 anet 是自建的,anet update 只更新发布版本,什么都没有下载;请按原来的方式重新构建,或用 install.sh 改装发布版本。

change input

update_variant_unknown.mismatch

C

这个 anet 标为 {variant} 版本,但它的模块组合({modules})与发布的 {variant} 版本不同,anet update 不会换成别的组合,什么都没有下载;请用 install.sh 改装发布版本。

这个 anet 标为 {variant} 版本,但它的模块组合({modules})与发布的 {variant} 版本不同,anet update 不会换成别的组合,什么都没有下载;请用 install.sh 改装发布版本。

change input

build_tag_pending

C

这个版本还不能在构建时去掉{name}模块({m}),随 v0.3.x 提供;现在可以用 --without {m} 在配置里关闭它,什么都没有构建。

这个版本还不能在构建时去掉{name}模块({m}),随 v0.3.x 提供;现在可以用 --without {m} 在配置里关闭它,什么都没有构建。

change input

api_key_on_argv

C

API keys are not taken on the command line; this one has appeared there (local users and your shell history may have it) and was not saved; replace it with the provider, clear your shell history, then use {next}.

API key 不接受命令行参数;这把 key 已出现在命令行里(本机其他用户与 shell 历史可能看到),没有保存;请到服务商更换它、清理 shell 历史,再改用 {next} 读入新 key。

anet autoreply set --api-key-stdin

api_key_empty

C

The API key read was empty; check the file and try again.

读到的 API key 是空的;请检查文件内容后重试。

change input

egress_allow_invalid

C

egress_allow takes whole host names only (such as pypi.org), and {value} {why}; fix it and try again.

egress_allow 只接受完整主机名(例如 pypi.org),{value} {why};请改正后重试。

change input

egress_allow_model_host

C

{value} is a model service host and cannot be in egress_allow (the sandboxed agent could reach it with a key of its own); remove it from egress_allow, since model requests already go through this node.

{value} 是模型服务主机,不能放进 egress_allow(否则沙箱里的 agent 能拿自己的 key 直连它);请删掉这一项,模型请求本来就由本节点代发。

change input

egress_allow_too_many

C

egress_allow takes at most 64 hosts; remove some and try again.

egress_allow 最多 64 个主机;请删减后重试。

change input

api_base_insecure

C

An http --api-base must point at this machine's loopback (127.0.0.1, ::1, localhost); use https for anything else.

--api-base 用 http 时只能指向本机回环地址(127.0.0.1、::1、localhost);其他地址请改用 https。

change input

work_dir_invalid

C

auto_reply.work_dir 不能位于数据目录或沙箱工作目录之内,也不能包含它们;请换一个目录。

auto_reply.work_dir 不能位于数据目录或沙箱工作目录之内,也不能包含它们;请换一个目录。

change input

budget_invalid

C

Budgets must be whole numbers from 0 to 1000, and the per-peer one cannot exceed the global one; fix them and try again.

预算必须是 0 到 1000 的整数,且每个对端的上限不能大于全局上限;请改正后重试。

change input

本地沙箱

本地沙箱的状态语句。

原因码

类

英文

中文

下一步

sandbox.ready

S ok

Tasks from untrusted peers run in the sandbox: they reach models only through this node and have no network.

未信任对端的任务在沙箱中运行:只能经本节点访问模型,不能联网。

sandbox.ready_egress

S ok

Tasks from untrusted peers run in the sandbox: they reach models only through this node, and may reach {n} hosts ({hosts}), each of which could be used to send data out.

未信任对端的任务在沙箱中运行:只能经本节点访问模型;可联网访问 {n} 个主机({hosts}),每个都可能被用来外发数据。

sandbox.off

S info

不为未信任对端运行本机 agent(untrusted=off,或预算设为 0)。

不为未信任对端运行本机 agent(untrusted=off,或预算设为 0)。

sandbox.trusted_direct

S info

Trusted peers run local agents directly as your user, which is the same as giving them your user's rights.

信任的对端直接以你的用户身份运行本机 agent,等同授予你的用户权限。

sandbox.trusted_sandbox

S info

Trusted peers also run local agents in the sandbox, outside the run budget.

信任的对端也在沙箱中运行本机 agent,不计入预算。

no_bwrap

S fail

bubblewrap is not installed, so the sandbox is unavailable; install the bubblewrap package and try again.

本机没有 bubblewrap,沙箱不可用;请安装 bubblewrap 包后重试。

userns_blocked

S fail

Ubuntu's AppArmor stops bubblewrap from creating user namespaces by default, so the sandbox is unavailable; run: {next}

Ubuntu 的 AppArmor 默认禁止 bubblewrap 创建用户命名空间,沙箱不可用;请执行:{next}

anet doctor --apparmor-profile | sudo tee /etc/apparmor.d/anet-bwrap >/dev/null && sudo apparmor_parser -r /etc/apparmor.d/anet-bwrap

userns_unavailable

S fail

This kernel or container does not allow user namespaces, so the sandbox is unavailable; use a host that does, or set --untrusted off.

本机的内核或容器不允许创建用户命名空间,沙箱不可用;请换到允许的主机,或设 --untrusted off。

anet autoreply set --untrusted off

netns_failed

S fail

The sandbox self-check failed (network isolation); run anet doctor for details.

沙箱自检失败(网络隔离);请运行 anet doctor 查看详情。

anet doctor

seccomp_failed

S fail

The sandbox self-check failed (system call filter); run anet doctor for details.

沙箱自检失败(系统调用过滤);请运行 anet doctor 查看详情。

anet doctor

fs_isolation_failed

S fail

The sandbox self-check failed (file and process isolation); run anet doctor for details.

沙箱自检失败(文件与进程隔离);请运行 anet doctor 查看详情。

anet doctor

netns_failed.doctor

S fail

沙箱自检失败(网络隔离:{detail}),沙箱不可用,未信任对端的任务不会运行;请运行 anet doctor --json 并提交问题报告,或设 --untrusted off。

沙箱自检失败(网络隔离:{detail}),沙箱不可用,未信任对端的任务不会运行;请运行 anet doctor --json 并提交问题报告,或设 --untrusted off。

anet doctor --json

seccomp_failed.doctor

S fail

沙箱自检失败(系统调用过滤:{detail}),沙箱不可用,未信任对端的任务不会运行;请运行 anet doctor --json 并提交问题报告,或设 --untrusted off。

沙箱自检失败(系统调用过滤:{detail}),沙箱不可用,未信任对端的任务不会运行;请运行 anet doctor --json 并提交问题报告,或设 --untrusted off。

anet doctor --json

fs_isolation_failed.doctor

S fail

沙箱自检失败(文件与进程隔离:{detail}),沙箱不可用,未信任对端的任务不会运行;请运行 anet doctor --json 并提交问题报告,或设 --untrusted off。

沙箱自检失败(文件与进程隔离:{detail}),沙箱不可用,未信任对端的任务不会运行;请运行 anet doctor --json 并提交问题报告,或设 --untrusted off。

anet doctor --json

sandbox_start_failed

S fail

bubblewrap 没能建立沙箱({error}),沙箱不可用;请运行 anet doctor --json 并提交问题报告,或设 --untrusted off。

bubblewrap 没能建立沙箱({error}),沙箱不可用;请运行 anet doctor --json 并提交问题报告,或设 --untrusted off。

anet doctor --json

agent_unsupported

S fail

{name} cannot run in the sandbox (it cannot send its model requests through this node); use {agents} instead, or set --untrusted off.

{name} 不能在沙箱里运行(它不能把模型请求交给本节点代发);请换用 {agents},或设 --untrusted off。

agent_unsupported.combo

S fail

{name} 在沙箱里不能用这个模型服务地址({why});请改或去掉 --api-base,或设 --untrusted off。

{name} 在沙箱里不能用这个模型服务地址({why});请改或去掉 --api-base,或设 --untrusted off。

no_api_key

S fail

In the sandbox this node calls the model for the agent and needs an API key; run anet autoreply set --api-key-stdin < file-with-the-key.

沙箱里的 agent 由本节点代为调用模型,需要 API key;请执行 anet autoreply set --api-key-stdin < 存放 key 的文件。

anet autoreply set --api-key-stdin

no_api_base

S fail

{name} needs a model service address; run anet autoreply set --api-base <URL>.

{name} 需要模型服务地址;请执行 anet autoreply set --api-base <URL>。

no_model

S fail

A custom model service needs a model name; run anet autoreply set --model <name>.

自定义模型服务需要指定模型;请执行 anet autoreply set --model <名称>。

platform_unsupported

S fail

本平台没有沙箱(只支持 Linux 与 macOS);Windows 请在 WSL2 中运行 anet。

本平台没有沙箱(只支持 Linux 与 macOS);Windows 请在 WSL2 中运行 anet。

platform_unsupported.pending

S fail

macOS 沙箱随 v0.3.x 提供,本版本在 macOS 上没有沙箱,未信任对端的任务不会运行;可设 --untrusted off,或在 Linux 上运行 anet。

macOS 沙箱随 v0.3.x 提供,本版本在 macOS 上没有沙箱,未信任对端的任务不会运行;可设 --untrusted off,或在 Linux 上运行 anet。

anet autoreply set --untrusted off

no_sandbox_exec

S fail

/usr/bin/sandbox-exec is missing, so the sandbox is unavailable; set --untrusted off.

本机找不到 /usr/bin/sandbox-exec,沙箱不可用;请设 --untrusted off。

anet autoreply set --untrusted off

no_cgroup_limits

S warn

The sandbox has no memory or process limits (no user systemd here); the other limits still apply; to add them, enable user systemd (loginctl enable-linger).

沙箱没有内存与进程数上限(本机没有用户级 systemd),其余限制照常生效;要启用请开启用户级 systemd(loginctl enable-linger)。

sandbox.budget

S ok

{n}/{daily} runs for untrusted peers today (at most {per_peer} per peer).

今天已为未信任对端运行 {n}/{daily} 次(每个对端至多 {per_peer} 次)。

沙箱内 agent 读取的出口拒绝信息

沙箱内的 agent 读取的语句,不向运营人员显示。少数原因码直接关闭连接,不带语句。

原因码

类

英文

中文

下一步

egress_host_not_allowed

模型

anet: this node has not allowed {host} for this kind of task; if the task needs it, say in your reply that you cannot do it.

anet: 本节点没有为这类任务放行 {host};需要联网才能完成时,请在回复里说明做不到。

egress_port

模型

anet: only port 443 is allowed.

anet: 只允许连接 443 端口。

egress_private_address

模型

anet: {host} resolves to a private or reserved address, so it was refused.

anet: {host} 解析到内网或保留地址,已拒绝。

egress_plain_http

模型

anet: only CONNECT to an allowed https host, or this node's model route, is available.

anet: 只能经 CONNECT 访问放行的 https 主机,或调用本节点的模型路由。

egress_unauthorized

模型

anet: this run's credential is missing.

anet: 缺少本次运行的凭据。

egress_tunnels

模型

anet: too many connections are open at once; close some and try again.

anet: 同时打开的连接太多;请关掉一些后重试。

egress_too_large

模型

anet: this is over the run's size limit ({n} MiB).

anet: 超过本次运行的大小上限({n} MiB)。

egress_upstream_unreachable

模型

anet: this node cannot reach the model service right now; try again later, or answer with what you have.

anet: 本节点暂时连不上模型服务;请稍后再试,或根据已有结果作答。

egress_host_unresolved

模型

anet: 放行的主机 {host} 现在解析不到地址;请稍后再试,或在回复里说明做不到。

anet: 放行的主机 {host} 现在解析不到地址;请稍后再试,或在回复里说明做不到。

policy_server_tool

模型

anet: the server-side model tool {type} is not allowed in the sandbox (it would bypass this node's network limits); use a local tool instead.

anet: 沙箱里不允许模型服务端工具 {type}(它会绕过本节点的网络限制);请改用本机工具。

policy_mcp_servers

模型

anet: MCP connectors (mcp_servers) are not allowed in the sandbox.

anet: 沙箱里不允许 MCP 连接器(mcp_servers)。

policy_field

模型

anet: the request field {field} is not allowed in the sandbox.

anet: 沙箱里不允许请求字段 {field}。

policy_path

模型

anet: only {paths} can be called from the sandbox.

anet: 沙箱里只允许调用 {paths}。

policy_encoding

模型

anet: the request body must be an uncompressed JSON object.

anet: 请求体必须是未压缩的 JSON 对象。

run_budget_requests

模型

anet: this run has used its {n} model requests; answer with what you have.

anet: 本次运行的模型请求已达上限 {n} 次;请根据已有结果作答。

run_budget_upload

模型

anet: this run has sent its {n} MiB of outgoing data; answer with what you have.

anet: 本次运行向外发送的数据已达上限 {n} MiB;请根据已有结果作答。

egress_sni_mismatch

模型

(连接关闭,无语句)

(连接关闭,无语句)

egress_ech

模型

(连接关闭,无语句)

(连接关闭,无语句)

egress_not_tls

模型

(连接关闭,无语句)

(连接关闭,无语句)

本地后端

面向节点运营人员的本地服务后端与 C1 接口的状态语句。

原因码

类

英文

中文

下一步

peer_cred_unsupported

S fail

This platform cannot read who is on the other end of {path}, so the connection was refused; if only you can change that path, set "peer_check": "path-only" for this backend.

本平台读不到 {path} 对端进程的用户身份,已拒绝连接;若确认只有你能改动这条路径,可在这个后端配置 "peer_check": "path-only"。

peer_uid_mismatch

S fail

The process listening on {path} runs as uid {n}, not the expected {name}; check who is listening, or set expected_user.

{path} 的监听进程以 uid {n} 运行,不是预期的 {name};请检查是谁在监听,或设置 expected_user。

c1_version

S fail

ANetLink 与 anet 的 C1 版本不一致;请把两者升级到同一发布。

ANetLink 与 anet 的 C1 版本不一致;请把两者升级到同一发布。

c1_uid_refused

S info

Refused uid {n} on c1.sock (not in allow_users); to allow it, add the user to c1.allow_users in the ANetLink config.

拒绝 uid {n} 连接 c1.sock(不在 allow_users 中);如需允许,在 ANetLink 配置 c1.allow_users 加入该用户。

审计结果

对 hub 发行链和余额证明进行审计的结果。

原因码

类

英文

中文

下一步

balance_mismatch

S fail

On {time} the hub reported your balance as {amount}, but the previous period and the ledger say {need}; save the evidence with anet audit-hub --json > proof.json and contact the hub's operator.

hub 在 {time} 报告你的余额是 {amount},按上一纪元与账目应为 {need};请运行 anet audit-hub --json > proof.json 保存证据,并联系 hub 运营者。

omitted_from_ledger

S fail

A {amount}-credit entry the hub signed a receipt for is missing from the ledger; save the output of anet audit-hub --json and contact the hub's operator.

hub 签过收据的一笔 {amount} credits 不在账目里;请保存 anet audit-hub --json 的输出,并联系 hub 运营者。

unknown_debit

S fail

The ledger shows a {amount}-credit debit this node never authorized; save the evidence and contact the hub's operator.

账目里有一笔 {amount} credits 的扣款,本节点没有签过对应的授权;请保存证据,并联系 hub 运营者。

proof_invalid

S fail

The hub's balance proof does not match the record it signed publicly ({code}); save the evidence, and consider redeeming your balance or switching hubs.

hub 给的余额证明与它公开签名的记录不符({code});请保存证据,并考虑把余额兑付回 hub 或更换 hub。

proof_unavailable

S fail

The hub refused to give a balance proof for {time}, when you were registered; contact the hub's operator.

hub 拒绝给出 {time} 的余额证明,而你当时已注册;请联系 hub 运营者。

proof_expired

S warn

{n} periods could not be checked in time (the hub keeps 14 days); checking resumed from {time}; keeping the daemon running avoids this.

有 {n} 个纪元没来得及核对(hub 只保留 14 天);已从 {time} 起重新核对,保持 daemon 运行即可避免。

终端输出行与提示

命令行输出的确认提示和常见输出行。

原因码

类

英文

中文

下一步

confirm.yes

T

Type yes to confirm:

输入 yes 确认:

confirm.declined

I

Not confirmed; nothing changed.

没有确认,什么都没有改。

up.started

I

anet {version} is running in the background: identity {name} {aid8} (data directory {path}).

anet {version} 已在后台运行:身份 {name} {aid8}(数据目录 {path})。

allow_confirm

T

Add {name} ({peer}) to the allow list: it can send tasks to this node.

把 {name}({peer})加入 allow 名单:它可以给本节点发任务。

approve_confirm

T

Approve the held task {task} (from {name}, {peer}): it will then run on this node.

批准待批任务 {task}(来自 {name},{peer}):批准后它会在本节点执行。

inbound.confirm_approve

T

Loosen the inbound policy to approve: tasks from peers not on your lists wait in the approval queue until you approve them.

放宽入站策略为 approve:名单外对端的任务先进待批队列,由你批准后执行。

inbound.confirm_open

T

Loosen the inbound policy to open: anyone can send you tasks.

放宽入站策略为 open:任何人都能给你发任务。

limits_confirm

T

Change this node's payment limits:

修改本节点的付款额度:

limits_confirm.line

T

{key} {from} → {to}

{key} {from} → {to}

payee_confirm

T

Add {name} ({peer}) to the payee list: automatic payments (≤{auto_max} each) and agent payments (≤{agent_max} each, ≤{daily} a day) can go to it.

把 {name}({peer})加入付款名单:自动付款(单笔 ≤{auto_max})与 agent 付款(单笔 ≤{agent_max},每日 ≤{daily})可以付给它。

redeem_confirm

T

Redeem {amount} credits back to the hub {hub} (manual limit: ≤{single} per payment, {left} left today).

把 {amount} credits 兑付回 hub {hub}(人工付款上限:单笔 ≤{single},今日剩 {left})。

preview.confirm_reasoning

T

Turn on reasoning previews: requesters who ask for previews also get the reasoning.

开启推理预览:要预览的请求方也会收到推理内容。

identity.prompt.first_join

T

首次接入 hub:请设置恢复口令。以后轮换密钥、换 hub、在别的机器上恢复身份都要用它;anet 不保存口令,忘了无法找回。

首次接入 hub:请设置恢复口令。以后轮换密钥、换 hub、在别的机器上恢复身份都要用它;anet 不保存口令,忘了无法找回。

identity.prompt.passphrase

T

Recovery passphrase:

恢复口令:

identity.prompt.new_passphrase

T

New recovery passphrase:

新的恢复口令:

identity.prompt.again

T

Type it again:

再输一次:

identity.prompt.mismatch

T

The two entries differ; enter it again.

两次输入不一致,请重新输入。

identity.recovery_written

I

Recovery file written to {path} (passphrase-encrypted). Keep a copy somewhere else.

已写入恢复文件 {path}(口令加密)。请另存一份到别处。

identity.recovery_file_note

I

With your passphrase, this file can rotate, recover or deactivate this identity; on its own it is useless. Keep a copy somewhere else.

这份文件加上你的口令,可以轮换、恢复或注销这个身份;单独这份文件无法使用。请另存一份到别处。

identity.recovery_file_note_unprotected

I

Together with recovery_local.key in the same directory, this file can rotate or take over this identity; run anet identity protect in a terminal soon to set a passphrase.

这份文件与同目录的 recovery_local.key 一起就能轮换或接管这个身份;请尽快在终端运行 anet identity protect 设置口令。

identity.protect.confirm

T

为 {name}({aid8})设置恢复口令:以后轮换密钥、换 hub、在别的机器上恢复身份都要用它;anet 不保存口令,忘了无法找回。设好后,数据目录里未设口令的恢复文件会作废并删除。

为 {name}({aid8})设置恢复口令:以后轮换密钥、换 hub、在别的机器上恢复身份都要用它;anet 不保存口令,忘了无法找回。设好后,数据目录里未设口令的恢复文件会作废并删除。

identity.protect.resume

T

Setting the recovery passphrase stopped halfway last time; enter the passphrase you set then to finish the last rotation.

上次设置恢复口令只完成了一半;请输入刚才设的恢复口令,完成最后一次轮换。

identity.protect.done

I

Recovery passphrase set: key number {from} → {to}, confirmed by {hub}; the unprotected recovery file in the data directory is deleted, and a copy taken earlier can no longer rotate or take over this identity.

已设置恢复口令:密钥序号 {from} → {to},{hub} 已确认;数据目录里未设口令的恢复文件已删除,此前复制走的那份不能再轮换或接管这个身份。

identity.protect.done_unjoined

I

Recovery passphrase set; the unprotected recovery file in the data directory is deleted, and joining the hub will use the new one.

已设置恢复口令;数据目录里未设口令的恢复文件已删除,接入 hub 时会用新的恢复文件。

identity.protect.already

I

This identity already has a recovery passphrase, nothing to do; to change it, run anet identity rotate --new-recovery.

这个身份已经设置了恢复口令,不需要操作;要更换口令请运行 anet identity rotate --new-recovery。

identity.status.key

I

number {n}, last rotated {time} ({how})

序号 {n},上次轮换 {time}({how})

identity.status.key_never

I

number 0, never rotated

序号 0,还没有轮换过

identity.status.witness

I

{hub}, key confirmed {ago} ago

{hub},密钥已确认({ago}前)

identity.status.recovery

I

{path} (passphrase-encrypted)

{path}(口令加密)

identity.status.recovery_elsewhere

I

not at the default place {path}; if you saved a copy elsewhere, nothing to do

不在缺省位置 {path};若你已另存一份,不需要处理

identity.status.recovery_unprotected

I

{path} (no passphrase, kept with the data directory)

{path}(未设口令,与数据目录在一起)

identity.rotate.confirm

T

This rotates the signing key of {name} ({aid8}); others update when they get your next message, and tasks in progress are not affected.

将轮换 {name}({aid8})的签名密钥;对方会在收到你的下一条消息时自动更新,进行中的任务不受影响。

identity.rotate.done

I

Rotated: key number {from} → {to}, confirmed by {hub}.

已轮换:密钥序号 {from} → {to},{hub} 已确认。

identity.rotate.emergency_summary.1

T

Emergency rotation of {name} ({aid8}): for when the private key or the data directory may have leaked. It will:

紧急轮换 {name}({aid8}):用于私钥或数据目录可能已经泄露的情况。将会:

identity.rotate.emergency_summary.2

T

· stop the old key at once: peers that know your new key refuse messages signed with the old one right away, the rest within 6 hours

· 立即停用旧密钥:已知道你新密钥的对方立即拒收旧密钥签的消息,其余对方最迟 6 小时后拒收

identity.rotate.emergency_summary.3

T

· replace your encryption keys and void every delivery credential you have issued

· 更换加密钥,作废你发出的全部投递凭据

identity.rotate.emergency_summary.4

T

· end every task in progress (the other side sees that you rotated keys in an emergency)

· 结束所有进行中的任务(对方会看到你做了紧急密钥轮换)

identity.rotate.emergency_summary.5

T

· replace this node's control and A2A tokens, and the recovery passphrase

· 更换本机控制令牌与 A2A 令牌,并更换恢复口令

identity.rotate.emergency_summary.5.unprotected

T

· replace this node's control and A2A tokens, and set a recovery passphrase (the unprotected recovery file in the data directory is then deleted)

· 更换本机控制令牌与 A2A 令牌,并设置恢复口令(数据目录里未设口令的恢复文件随即删除)

identity.rotate.emergency_witness_down

T

Witness hub {hub} is unreachable: the old key stops here now and the rotation is published when the hub is back; sending and receiving pause until then. If it is gone for good, press Ctrl-C and switch hubs first (anet hub-register <new hub>).

本节点的见证 hub {hub} 现在连不上:紧急轮换会先停用本机的旧密钥,等它恢复后自动发布,期间暂停收发。若它已永久关闭,请按 Ctrl-C 取消,先换 hub(anet hub-register <新 hub>)再做紧急轮换。

identity.rotate.emergency_done_seq

I

Done: key number {from} → {to}.

已完成:密钥序号 {from} → {to}。

identity.switch.confirm

T

Switching your witness hub from {old} to {hub} takes one key rotation.

把见证 hub 从 {old} 换到 {hub},需要一次密钥轮换。

identity.switch.done

I

Switched to {hub} (key number {from} → {to}).

已换到 {hub}(密钥序号 {from} → {to})。

identity.switch.old_acked

I

旧 hub {old} 已确认收到这次轮换;anet 会继续收取旧信箱里的信 15 天,之后自动离开。

旧 hub {old} 已确认收到这次轮换;anet 会继续收取旧信箱里的信 15 天,之后自动离开。

identity.recover.start

T

Recovering identity {aid8} (witness hub {hub}).

恢复身份 {aid8}(见证 hub {hub})。

identity.recover.new_passphrase

T

Recovering also replaces the recovery passphrase.

恢复会同时更换恢复口令。

identity.recover.done

I

Recovered as local identity {name} (data directory {path}). The new recovery file is {file}; keep a copy somewhere else. The old recovery file no longer works.

已恢复为本机身份 {name}(数据目录 {path})。新的恢复文件在 {file},请另存一份到别处;旧的恢复文件已作废。

identity.recover.old_stopped

I

This identity has stopped working on the old machine; within 6 hours everyone accepts only the new key. Task records and lists from the old machine are not here.

旧机器上的这个身份已停用;对方最迟 6 小时后只认新密钥。旧机器上的任务记录与名单不在这里。

identity.deactivate.confirm

T

Deactivating {name} ({aid8}) is permanent: nobody will accept this identity's signatures again, and it cannot be undone.

注销 {name}({aid8})是永久的:任何人都不会再接受这个身份的签名,也无法撤销。

identity.deactivate.tasks

T

{n} tasks in progress will end at once without telling the other side; finish them first if you need to.

有 {n} 个进行中的任务会直接结束,对方不会收到通知;需要的话先结束它们再注销。

identity.deactivate.type_prefix

T

Type the last 8 characters of the AID to confirm:

输入 AID 末 8 个字符确认:

identity.deactivate.done

I

Deactivated. Local data stays in {path}; to remove it: anet identity rm {name} --purge

已注销。本机数据保留在 {path},不需要可删除:anet identity rm {name} --purge

identity.rm.not_deactivated

T

Removing local data does not deactivate this identity; to deactivate it, run anet identity deactivate first.

删除本机数据不会注销这个身份;要注销请先运行 anet identity deactivate。

identity.rm.dip_unacked

T

本节点的见证 hub 还没确认这次注销;现在删除后 anet 不会再重试,别人可能继续给这个身份发信。

本节点的见证 hub 还没确认这次注销;现在删除后 anet 不会再重试,别人可能继续给这个身份发信。

autoreply.updated

I

Auto-reply updated.

已更新自动回复。

autoreply.updated_key

I

Auto-reply updated (API key set).

已更新自动回复(API key 已设置)。

autoreply.summary

S

{backend} / {name}

{backend} / {name}

autoreply.key_set

S

Set.

已设置。

autoreply_test.pass_direct

I

direct: passed ({n}-character reply).

direct:通过(回复 {n} 字)。

autoreply_test.pass_sandbox

I

sandbox: passed ({n} model calls through this node, {m} network connections).

sandbox:通过(经本节点调用模型 {n} 次,联网连接 {m} 次)。

autoreply_test.fail

I

{path}: failed — {why}

{path}:没有通过——{why}

trust_confirm.direct

T

Trust {name} ({peer}): its tasks will run local agents directly as your user, which is the same as giving it your user's rights, including for third-party content it forwards.

信任 {name}({peer}):它的任务会直接以你的用户身份运行本机 agent,等同授予你的用户权限,也包括它转来的第三方内容。

trust_confirm.sandbox

T

Trust {name} ({peer}): its tasks will run local agents in the sandbox, outside the run budget.

信任 {name}({peer}):它的任务会在沙箱中运行本机 agent,不计入预算。

trust_confirm.no_agent

T

信任 {name}({peer}):本节点没有自动回复,不会为它运行本机 agent;信任只决定本机后端是否接收它的任务。

信任 {name}({peer}):本节点没有自动回复,不会为它运行本机 agent;信任只决定本机后端是否接收它的任务。

egress_confirm

T

放行出网主机 {hosts}:未信任对端的任务可以经这些主机向外发送数据,anet 只核对主机名,不检查内容。

放行出网主机 {hosts}:未信任对端的任务可以经这些主机向外发送数据,anet 只核对主机名,不检查内容。

trusted_direct_confirm

T

Switch back to direct runs: trusted peers will run local agents as your user, which is the same as giving them your user's rights.

改回直接运行:信任的对端将以你的用户身份运行本机 agent,等同授予你的用户权限。

autoreply.prompt.api_key

T

API key:

API key:

card.header

I

{name} {peer} ({state}) {charge}

{name} {peer}({state}) {charge}

card.price

I

{skill} {price} credits

{skill} {price} credits

card.price_free

I

{skill} free

{skill} 免费

card.price_unknown

I

{skill} —

{skill} —

card.footer

I

Prices are signed by the other side, fetched {time}; payment follows the quote in the task, and a quote above these prices is not paid automatically.

价格由对方签名,取于 {time};付款时以任务里的报价为准,高于这里的价格不会自动付。

card.footer_free

I

None of the skills above charge.

以上能力都不收费。

card.preview

I

This agent sends previews while it writes its reply; anet delegate --watch shows them.

这个 agent 会在写答复时发预览;用 anet delegate --watch 可以看到。

pay.prompt_quote

T

Quoted {amount} credits, to {peer} ({name}), for {skill}.

报价 {amount} credits,付给 {peer}({name}),能力 {skill}。

pay.prompt_price

T

The price the other side signed is {price} credits.

对方签名的价格是 {price} credits。

pay.prompt_price_higher

T

The price the other side signed is {price} credits; this quote is higher.

对方签名的价格是 {price} credits,这次报价更高。

pay.prompt_no_price

T

No price signed by the other side was fetched.

没有取到对方签名的价格。

pay.prompt_limits

T

Manual limit: ≤{single} per payment, {left} left today.

人工付款上限:单笔 ≤{single},今日剩 {left}。

audit.chain_ok

I

The hub's issuance chain: {n} periods, signatures and links valid, matching the head this node last recorded.

hub 发放链:{n} 个纪元,签名与链接都有效,与本机上次记录的链头一致。

audit.proofs_ok

I

Balance proofs: {n} periods checked, latest {time} balance {amount} credits.

余额证明:{n} 个纪元核对通过,最新 {time} 余额 {amount} credits。

audit.none

I

No problems found.

没有发现问题。

balance.summary

I

Balance {amount} credits (held at the hub {hub}).

余额 {amount} credits(托管在 hub {hub})。

balance.probation

I

The new account is on probation until {time}; 20 trial credits are paid automatically after that.

新账户见习期到 {time};期满后自动发 20 credits 体验额度。

balance.trial_pending

I

见习期已结束;体验额度待发(今天的名额已用完),anet 会自动再试,不需要操作。

见习期已结束;体验额度待发(今天的名额已用完),anet 会自动再试,不需要操作。

balance.trial_granted

I

Probation is over; {amount} trial credits arrived at {time}.

见习期已结束;体验额度 {amount} credits 已于 {time} 到账。

peers.sender_hidden

S

your messages carry no sender identity (the hub may still infer it from network address and timing)

信里不带你的身份(hub 仍可能凭网络地址和时间推断)

peers.sender_visible

S

the hub will know directly that your next message is from you (this changes on its own once they reply)

下一封信 hub 会直接知道是你(对方回信后自动改为不带身份)

peers.sender_visible.paid

S

they may charge: the hub will know directly that new tasks are from you

对方的服务可能收费:发新任务时 hub 会直接知道是你

preview.off

S

Previews off: no reply snapshots are sent to requesters.

预览关:不向请求方发送答复片段。

状态摘要行

状态摘要中的语句,以及告知 agent 如何继续的文本中的语句。

原因码

类

英文

中文

下一步

agent_hint.join

I

Join with anet hub-register even without a terminal; relay each line it prints to the user as is (passphrase reminder, admit line); do not register again. Only the user, not you, sets the passphrase, via anet identity protect in a terminal.

没有终端也能用 anet hub-register 完成接入;请把它打印的每一句原样转告用户(含恢复口令提醒与 admit 行),不要反复注册。恢复口令只能由用户本人在终端用 anet identity protect 设置,不要代为输入。

inbound.summary.closed

S ok

Takes tasks only from the {n} peers on the allow list; {m} public capabilities; auto-reply {auto_reply}.

只接受 allow 名单里 {n} 个对端的任务;公开 {m} 项能力;自动回复{auto_reply}。

inbound.summary.approve

S ok

Tasks from peers not on the list wait for approval ({k} waiting now); {m} public capabilities; auto-reply {auto_reply}.

名单外对端的任务先进待批队列(现有 {k} 个待批);公开 {m} 项能力;自动回复{auto_reply}。

inbound.summary.open

S ok

Takes tasks from anyone; {m} public capabilities; auto-reply {auto_reply}.

接受任何人的任务;公开 {m} 项能力;自动回复{auto_reply}。

preview.on

S info

Previews on: requesters who ask get a snapshot of the reply every 5 seconds or more.

预览开:要预览的请求方每 5 秒以上收到一帧答复片段。

preview.with_reasoning

S warn

Previews on, with reasoning: reasoning is also sent to requesters who ask for it.

预览开(含推理):推理内容也会发给要求它的请求方。

诊断检查

仅由诊断报告输出的语句。

原因码

类

英文

中文

下一步

identity.recovery_note

S info

The recovery passphrase is needed only to rotate, switch hubs, recover or deactivate; without it those are impossible, but the identity keeps working. If the recovery file is not in the default place and you saved a copy, nothing to do.

恢复口令只在轮换、换 hub、恢复与注销时需要;忘记口令后这些操作都做不了,身份仍可正常收发。恢复文件不在缺省位置时,若你已另存则不需要处理。

identity.recovery_perm

S warn

The recovery file {path} is not mode 0600; run chmod 600 {path}.

恢复文件 {path} 的权限不是 0600;请执行 chmod 600 {path}。

chmod 600 {path}

identity.recovery_leftover

S warn

There is an unfinished new recovery file {path}; any anet identity command finishes it.

有一份没有完成的新恢复文件 {path};运行任意 anet identity 命令会自动收尾。

anet identity status

sender_privacy.mailbox_pending

S warn

本机的信箱签名钥还没登记到 hub,anet 会自动重新发布;超过 1 小时仍如此,请检查与 hub 的连接。

本机的信箱签名钥还没登记到 hub,anet 会自动重新发布;超过 1 小时仍如此,请检查与 hub 的连接。

clock.ts_retries

S warn

In the last hour the hub found this node's signing time behind {n} times, so the clock may be jumping; enable NTP.

最近 1 小时有 {n} 次签名时间被 hub 判为落后,本机时钟可能在跳变;请启用 NTP。

payments.no_payees

S warn

Automatic or agent payments are on, but the payee list is empty, so nothing is paid automatically; add payees with anet payees add <AID>.

已开自动付款或 agent 付款,但付款名单是空的,自动付款不会发生;请用 anet payees add <AID> 加入收款方。

anet payees add <AID>

doctor.daemon_down

S unknown

The daemon is not running; run anet up, then check again.

daemon 没在运行;运行 anet up 后再查。

anet up

clock.ok

S ok

This computer's clock is {n} seconds off from the hub.

本机时钟与 hub 相差 {n} 秒。

sender_privacy.grants_summary

S info

This node holds {n} delivery credentials from others (its messages to them carry no sender identity); it has issued {m}.

本节点持有 {n} 个对方给的投递凭据(向对方发信时信里不带本节点的身份);已给出 {m} 个。

sender_privacy.withdrawals_pending

S warn

有 {n} 个投递凭据的收回超过 1 小时没送到 hub;anet 会自动重试,请检查与 hub 的连接。

有 {n} 个投递凭据的收回超过 1 小时没送到 hub;anet 会自动重试,请检查与 hub 的连接。

sender_privacy.hub_refusals

S warn

最近 24 小时有 {n} 个投递凭据被 hub 拒绝且查不出原因,相关的信已改走首次联系,hub 因此知道是你发的;如果反复出现,请考虑换用其他 hub。

最近 24 小时有 {n} 个投递凭据被 hub 拒绝且查不出原因,相关的信已改走首次联系,hub 因此知道是你发的;如果反复出现,请考虑换用其他 hub。

sender_privacy.hub_small_bucket

S warn

hub 返回的目录分组少于 32 条,更容易猜出你在查谁;anet 已自动改用更宽的分组,如果反复出现,请考虑换用其他 hub。

hub 返回的目录分组少于 32 条,更容易猜出你在查谁;anet 已自动改用更宽的分组,如果反复出现,请考虑换用其他 hub。

sender_privacy.hub_epoch_invalid

S warn

hub 报告的信箱签名钥序号大得不可能,anet 已从 1 重新编号;如果信箱签名钥一直登记不上,请联系 hub 运营者。

hub 报告的信箱签名钥序号大得不可能,anet 已从 1 重新编号;如果信箱签名钥一直登记不上,请联系 hub 运营者。

p2p.lan_on

S info

p2p dials local-network addresses (LAN mode is on); use this only in a LAN lab.

p2p 会拨局域网地址(LAN 模式已开);只在局域网实验室这样设置。

keys.epoch_ok

S ok

Encryption keys are published 14 days ahead, and no expired keys are being kept.

加密钥已提前 14 天发布,没有多保留的过期密钥。

capabilities.files_not_service

S fail

The capability {name} declares files but is not served by the service module; serve it through the service module, or remove files.

能力 {name} 声明了 files,但不是由 service 模块提供;请改由 service 模块提供,或去掉 files。

payments.unchargeable

S warn

本节点有标了价的能力({n} 个),但{why},这些能力的调用都会被拒绝;请{fix},或去掉价格。

本节点有标了价的能力({n} 个),但{why},这些能力的调用都会被拒绝;请{fix},或去掉价格。

capabilities.files_not_service.absent

S fail

能力 {name} 声明了 files,但{why},没有能接收文件的服务;请{fix},或去掉 files。

能力 {name} 声明了 files,但{why},没有能接收文件的服务;请{fix},或去掉 files。

capabilities.inflight_low

S warn

The capability {name} has a timeout over 60 seconds and max_inflight below 2, so one call fills it; raise max_inflight.

能力 {name} 的超时超过 60 秒而 max_inflight 小于 2,一个调用就能占满;请调大 max_inflight。

capabilities.allow_only

S info

{name} is open only to your lists ({n} callers).

{name} 只对名单开放({n} 个调用方)。

capabilities.allow_only_empty

S warn

{name} is open only to your lists, but the allow and trust lists are both empty, so nobody can call it; add callers with anet peers allow <AID>.

{name} 只对名单开放,但 allow 与 trust 名单都是空的,没有人能调用;请用 anet peers allow <AID> 加入调用方。

anet peers allow <AID>

preview.no_source

S info

Previews are on, but there is no openai auto-reply, so previews come only from /tasks/preview.

预览开关已开,但没有 openai 自动回复,预览只来自 /tasks/preview。

payments.audit_ok

S ok

The last balance-proof check passed ({time}).

余额证明最近一次核对通过({time})。

payments.reviews_pending

S info

{n} reviews are waiting to be uploaded.

{n} 条评价等待上传。

payments.reviews_stuck

S warn

Some reviews have not been uploaded for over 7 days; check your connection to the hub.

有评价超过 7 天没能上传;请检查与 hub 的连接。

payments.card_failed

S fail

There are priced capabilities, but the extended card failed to build or verify ({code}); run anet doctor --json and file a report.

有标价的能力,但扩展卡片生成或验签失败({code});请运行 anet doctor --json 并提交问题报告。

anet doctor --json

payments.price_invalid

S fail

The price of the capability {name} is not between 1 and 2^63−1; fix it in config.json.

能力 {name} 的价格不在 1 到 2^63−1 之间;请改正 config.json。

payments.card_no_public

S warn

Only allow-listed capabilities are priced and none is public, so there is no extended card: listed callers see no signed price and pay each task by hand; to let them pay automatically, make at least one capability public.

只有名单内的能力标了价,本节点没有公开能力,所以没有扩展卡片:名单里的调用方看不到签名的价格,每笔都要手动付款;要让他们自动付款,请至少公开一个能力。

autoreply.off

S info

Auto-reply is off.

自动回复关。

sandbox.proxy_env

S warn

A proxy variable ({key}) is set in the daemon's environment; the sandbox does not use it, so check that this is what you want.

daemon 的环境里设了代理变量({key});沙箱不会使用它,请确认这是你想要的。

sandbox.worst_case

S info

At most {daily} runs a day, each with at most 60 model requests and 16 MiB sent.

每天至多 {daily} 次运行,每次至多 60 次模型请求、上行 16 MiB。

backends.path_only

S warn

The backend {name} is set to path-only, so its peer is checked by path only.

后端 {name} 设为 path-only,只按路径核实对端。

anetlink.not_remote

S warn

The public capability {name} does not take remote calls in ANetLink (no c1.remote match), so callers get provider_policy; allow it with c1.remote in the ANetLink config, or stop publishing it.

公开能力 {name} 在 ANetLink 里不接受远端调用(c1.remote 没有匹配),别人调用会得到 provider_policy;请在 ANetLink 配置 c1.remote 放行,或不公开它。

hub 运营人员语句

anet-hub 输出的语句保存在 ANetHub 源码中的另一张表里。类 列中,C 表示拒绝,I 表示结果。拒绝使用表中给出的退出码。

键

类

退出码

英文

中文

admit.ok

I

0

Admitted {aid}; it finishes joining on its own once it runs anet hub-register.

已准入 {aid};对方运行 anet hub-register 后会自动完成注册。

admit.ok.grant

I

0

Admitted {aid}; the {n}-credit grant is paid when it first registers.

已准入 {aid};附赠 {n} credits 在它首次注册时到账。

admit.ok.registered

I

0

{aid} is already registered here; it is now admitted and off probation.

{aid} 已在本 hub 注册,已准入并结束其见习期。

admit.ok.registered_grant

I

0

{aid} is already registered here; it is now admitted and off probation, and the {n}-credit grant has been paid.

{aid} 已在本 hub 注册,已准入并结束其见习期;附赠 {n} credits 已到账。

admit.already_granted

I

0

{aid} already received its grant, so none is paid this time; the admission stays.

{aid} 的附赠已经发过,这次不再发放;准入保持不变。

admit.file_ok

I

0

Admitted {n} AIDs from {path}; {m} of them are already registered.

已准入 {n} 个 AID(来自 {path}),其中 {m} 个已注册。

admit.window_open

I

0

The sign-up window is open until {time} (at most {n}; proof of work required; new accounts are on probation for 72 hours).

报名窗口已开放到 {time}(至多 {n} 个;需要工作量证明,新账户有 72 小时见习期)。

admit.window_closed

I

0

The sign-up window is closed ({n} joined through it).

报名窗口已关闭(这次进来 {n} 个)。

admit.window_exists

C

1

A sign-up window is already open (until {time}); to replace it, run anet-hub admit --window off first.

已有开放中的报名窗口(到 {time});要换一个,请先运行 anet-hub admit --window off。

admit.bad_aid

C

1

Not a valid AID: {value}; copy the full AID that anet hub-register printed on their side and try again.

不是合法的 AID:{value};请复制对方 anet hub-register 打印的完整 AID 后重试。

admit.file_bad_line

C

1

Line {n} is not a valid AID, so nothing from the file was imported; fix it and try again.

第 {n} 行不是合法的 AID,整个文件都没有导入;改正后重试。

admit.window_too_big

C

1

A sign-up window lasts at most 7 days and takes at most 10000; reduce it and try again.

报名窗口至多 7 天、至多 10000 个;请缩小后重试。

admissions.revoked

I

0

Revoked the admission of {aid}.

已撤销 {aid} 的准入。

admissions.revoked_registered

I

0

Revoked the admission of {aid} and deregistered it; its {n} credits stay on the ledger.

已撤销 {aid} 的准入并注销它;余额 {n} credits 仍记在账上。

admissions.not_listed

C

1

{aid} is not on the admission list; see the list with anet-hub admissions.

{aid} 不在准入名单里;用 anet-hub admissions 查看名单。

admission.open

I

0

Sign-up: open (proof of work, daily quota per network, 72-hour probation).

注册方式:开放(工作量证明 + 按网段的每日名额 + 72 小时见习)。

admission.closed

I

0

Sign-up: admission list only (anet-hub admit).

注册方式:只接受准入名单(anet-hub admit)。

grant.ok

I

0

Granted {n} credits to {aid} ({name}); balance now {m}.

已给 {aid} 发放 {n} credits(原因:{name}),余额 {m}。

grant.unknown_aid

C

1

{aid} is not registered here, so nothing was granted; check the AID and try again.

{aid} 没有在本 hub 注册,没有发放;请核对 AID 后重试。

clear.ok

I

0

Paid {n} credits to {peer}; this hub still owes it {m}.

已向 {peer} 结清 {n} credits;本 hub 仍欠它 {m}。

clear.over_due

C

1

This hub owes {peer} only {m} credits, so {n} cannot be cleared; see anet-hub due.

本 hub 只欠 {peer} {m} credits,不能结清 {n};请用 anet-hub due 查看。

clear.refused

C

1

{peer} did not accept the discharge ({value}), so this hub's record is unchanged; contact the operator of {peer} to compare the two hubs' records.

{peer} 没有接受这次结清({value}),本 hub 的记录没有改;请联系 {peer} 的运营者核对两边的记录。

clear.unconfirmed

C

1

No answer came from {peer}, so whether it recorded the discharge is unknown and this hub's record is unchanged; contact the operator of {peer} before clearing again.

没有收到 {peer} 的确认,不知道它是否记下了这次结清,本 hub 的记录没有改;请先联系 {peer} 的运营者核对,再决定是否重新结清。

hub_flag_removed

C

2

{flag} is now a subcommand; run anet-hub {subcommand}.

{flag} 已改为子命令;请运行 anet-hub {subcommand}。

hub_flag_removed.fixed

C

2

{flag} 已改为固定值;请删去这个参数后重新启动 anet-hub。

{flag} 已改为固定值;请删去这个参数后重新启动 anet-hub。

hub_flag_removed.none

C

2

{flag} was removed with no replacement (the ledger keeps 14 days, so there is no gap to repair); remove it from the command.

{flag} 已删除,没有替代(账目只保留 14 天,不再有需要修复的缺口);请删去这个参数。

quota_below_default

C

1

You can only raise it: {key} cannot be below the default {value}; use a value of at least {value}.

只能调高:{key} 不能低于缺省值 {value};请改用不小于 {value} 的值。

quota_bad_value

C

2

{key} needs a whole number from 1 to 2147483647; use a whole number in that range.

{key} 需要一个 1 到 2147483647 之间的整数;请改用这个范围内的整数。

redemptions.summary

I

0

{n} redemptions in the last 14 days, {m} credits in total; older records are deleted, so handle each within 14 days.

最近 14 天共 {n} 笔兑付,合计 {m} credits;更早的明细已删除,请在 14 天内处理。

restore.ok

I

0

Restored the hub database from {path} ({n} agents); once the hub starts, each agent's key confirmation pauses for up to 30 minutes, or until its node connects again if it is offline.

已从 {path} 恢复 hub 数据库({n} 个 agent);启动 hub 后,各 agent 的身份确认会暂停最多 30 分钟,不在线的等它的节点重新连上。

restore.hub_running

C

1

The hub is running, so nothing was changed; stop the hub and try again when it has stopped.

hub 正在运行,什么都没有改;请先停止 hub,停下后重试。

restore.no_backup

C

1

No hub backup (hub-backup-<date>.db) was found at {path}, so nothing was changed; point to a backup file or the directory that holds one and try again.

在 {path} 找不到 hub 备份(hub-backup-日期.db),什么都没有改;请指向备份文件或它所在的目录后重试。

restore.no_identity

C

1

There is no hub identity in {path}, so nothing was changed; put the hub's identity file back there, or point --data at the hub's data directory, and try again.

{path} 里没有 hub 身份,什么都没有改;请把原 hub 的身份文件放回这个目录,或用 --data 指向 hub 的数据目录后重试。

restore.bad_backup

C

1

{path} is not a whole hub backup from this version of anet-hub, so nothing was changed; use another backup and try again.

{path} 不是本版本 anet-hub 的完整备份,什么都没有改;请换一个备份后重试。

restore.backup_too_new

C

1

{path} 由更新版本的 anet-hub 写入,本版本恢复不了,什么都没有改;请升级 anet-hub 后重试。

{path} 由更新版本的 anet-hub 写入,本版本恢复不了,什么都没有改;请升级 anet-hub 后重试。

data.missing

C

1

{path} 里没有 hub 数据,什么都没有改;请用 --data 指向 anet-hub 运行时用的目录后重试。

{path} 里没有 hub 数据,什么都没有改;请用 --data 指向 anet-hub 运行时用的目录后重试。

hub_identity_v02

C

1

This hub data (identity file or database) is from 0.2, and 0.3.0 does not migrate old data; move the hub data directory away and try again to create a new identity.

这是 0.2 的 hub 数据(身份文件或数据库),0.3.0 不迁移旧数据;请把 hub 数据目录移走后重试(会生成新身份)。

hub_data_too_new

C

1

这个 hub 数据目录由更新版本的 anet-hub 写入,本版本打不开;请升级 anet-hub 后重试(不要删除这个目录)。

这个 hub 数据目录由更新版本的 anet-hub 写入,本版本打不开;请升级 anet-hub 后重试(不要删除这个目录)。

data.in_use

C

1

{path} 正被另一个 anet-hub 进程使用;请等它结束或先停止它后重试。

{path} 正被另一个 anet-hub 进程使用;请等它结束或先停止它后重试。

hub_recovery_setup_required

C

1

The hub's recovery passphrase is not set: if the data directory leaks, the hub identity cannot be taken back; run anet-hub identity setup-recovery while the hub is stopped.

hub 的恢复口令还没设置:数据目录泄露时无法收回 hub 身份;请在 hub 停止时运行 anet-hub identity setup-recovery。

hub_running

C

1

The hub is running; stop it first, then run anet-hub identity {action}.

hub 正在运行;请先停止它,再运行 anet-hub identity {action}。

hub_passphrase_too_short

C

1

The passphrase needs at least 12 characters; use a longer one, such as four or more random words.

口令至少要 12 个字符;请换一个更长的口令,例如 4 个以上的随机词。

hub_passphrase_not_utf8

C

1

The passphrase has characters that cannot be read (the terminal is not using UTF-8); switch the terminal to UTF-8 (for example LANG=C.UTF-8) and try again.

口令里有无法识别的字符(终端不是 UTF-8 编码);请把终端切换为 UTF-8(例如 LANG=C.UTF-8)后重试。

hub_identity.rotated

I

0

The hub identity was rotated: key number {from} → {to}; it takes effect at the next start, and peers and nodes pick it up within 10 minutes.

hub 身份已轮换:密钥序号 {from} → {to};下次启动生效,对等 hub 与节点在 10 分钟内同步。

hub_identity.secrets_regenerated

I

0

Regenerated: {list}.

已重新生成:{list}。

hub_identity.secrets_by_operator

I

0

这些不在 hub 数据目录里,anet-hub 换不了,请自己更换:{list}。

这些不在 hub 数据目录里,anet-hub 换不了,请自己更换:{list}。

hub_identity.recovery_written

I

0

Recovery file written to {path} (passphrase-encrypted). Keep a copy somewhere else.

已写入恢复文件 {path}(口令加密)。请另存一份到别处。

hub_identity.recovery_file_note

I

0

With the passphrase, this file can rotate this hub's identity; on its own it is useless. Keep a copy somewhere else.

这份文件加上口令可以轮换这个 hub 的身份;单独这份文件无法使用。请另存一份到别处。

hub_identity.recovery_already

I

0

The hub's recovery passphrase is already set, nothing to do; to change it, run anet-hub identity rotate --new-recovery.

hub 的恢复口令已经设置过,不需要操作;要更换口令请运行 anet-hub identity rotate --new-recovery。

hub_identity.tty_required

C

1

This step reads the recovery passphrase from a terminal, so nothing was changed; run anet-hub identity {action} in a terminal.

这一步要在终端里输入恢复口令,什么都没有改;请在终端里运行 anet-hub identity {action}。

hub_identity.recovery_file_missing

C

1

There is no recovery file at {path}, so nothing was changed; point --recovery-file at the one setup-recovery wrote and try again.

找不到恢复文件 {path},什么都没有改;请用 --recovery-file 指向 setup-recovery 写下的那份后重试。

hub_identity.recovery_file_invalid

C

1

{path} is not a whole recovery file, so nothing was changed; use the copy you kept elsewhere and try again.

{path} 不是一份完整的恢复文件,什么都没有改;请改用另存的那份副本后重试。

hub_identity.recovery_wrong_identity

C

1

{path} is not the recovery file of this hub identity (or it was altered), so nothing was changed; point --recovery-file at this hub's recovery file and try again.

{path} 不是这个 hub 身份的恢复文件(或者被改过),什么都没有改;请用 --recovery-file 指向本 hub 的恢复文件后重试。

hub_identity.recovery_stale

C

1

{path} no longer works (the recovery passphrase was changed after it was written), so nothing was changed; use the recovery file written last and try again.

{path} 已经作废(之后又换过恢复口令),什么都没有改;请改用最近一次写下的恢复文件后重试。

hub_identity.recovery_file_exists

C

1

There is already a recovery file at {path}; it was not overwritten and nothing was changed; choose another place with --recovery-file and try again.

{path} 已经有一份恢复文件,没有覆盖,什么都没有改;请用 --recovery-file 指定另一个位置后重试。

hub_identity.passphrase_wrong

C

1

The recovery passphrase is wrong, so nothing was changed; enter the passphrase this recovery file was set with and try again.

恢复口令不对,什么都没有改;请输入设置这份恢复文件时用的口令后重试。

hub_identity.prompt.passphrase

T

0

Recovery passphrase:

恢复口令:

hub_identity.prompt.new_passphrase

T

0

New recovery passphrase:

新的恢复口令:

hub_identity.prompt.again

T

0

Type it again:

再输一次:

hub_identity.prompt.mismatch

T

0

The two entries differ; enter it again.

两次输入不一致,请重新输入。

另请参阅