diff --git a/cmd/auth/login.go b/cmd/auth/login.go index 760f1cb6f..41510d667 100644 --- a/cmd/auth/login.go +++ b/cmd/auth/login.go @@ -276,7 +276,7 @@ func authLoginRun(opts *LoginOptions) error { "verification_url": authResp.VerificationUriComplete, "device_code": authResp.DeviceCode, "expires_in": authResp.ExpiresIn, - "hint": fmt.Sprintf("**MUST generate QR code AND display it:** You MUST call lark-cli auth qrcode to convert verification_url into a QR code. This is a required step, do NOT skip it. Prefer PNG QR code (--output); use ASCII (--ascii) only when the user explicitly requests it.**CRITICAL: You MUST include the QR image in your response.** Generating the file alone is NOT enough—use image tags, inline images, or file attachments to display it.**Display order:** Output the URL first, then place the QR code image below the URL.**URL Output Rules:** Treat verification_url as an opaque string that cannot be modified. Do NOT URL-encode/decode or add spaces/punctuation. For agent harnesses that only deliver final turn messages, make the QR code image (or URL) the final message of the turn and return control to the user; do not block on --device-code in the same turn. After the user confirms authorization in a later step, run: lark-cli auth login --device-code %s", authResp.DeviceCode), + "hint": msg.AgentTimeoutHint, } encoder := json.NewEncoder(f.IOStreams.Out) encoder.SetEscapeHTML(false) diff --git a/cmd/auth/login_test.go b/cmd/auth/login_test.go index 416185092..9105521ff 100644 --- a/cmd/auth/login_test.go +++ b/cmd/auth/login_test.go @@ -945,24 +945,24 @@ func TestAuthLoginRun_NoWaitJSONHintIncludesRawURLGuidance(t *testing.T) { } hint, _ := data["hint"].(string) for _, want := range []string{ - "MUST generate QR code AND display it", + "必须生成二维码并展示", "lark-cli auth qrcode", - "Prefer PNG QR code (--output)", - "use ASCII (--ascii) only when the user explicitly requests it", - "This is a required step, do NOT skip it", - "CRITICAL", - "You MUST include the QR image in your response", - "Generating the file alone is NOT enough", - "image tags, inline images, or file attachments", - "Display order", - "place the QR code image below the URL", + "优先生成 PNG 二维码(--output)", + "仅当用户明确要求时才使用 ASCII(--ascii)", + "这是必须步骤,不要跳过", + "关键", + "生成后必须在回复中展示图片", + "仅生成文件不算完成", + "image 标签或内联图片等方式", + "展示顺序", + "将二维码图片置于 URL 下方完整展示", "opaque string", - "cannot be modified", - "final message of the turn", - "return control to the user", - "do not block on --device-code in the same turn", - "After the user confirms authorization in a later step", - "lark-cli auth login --device-code device-code", + "不可修改", + "本轮最终消息", + "结束本轮", + "不要在同一轮里展示 URL 后立刻阻塞执行 --device-code", + "等用户回复已完成授权后,再在后续步骤", + "lark-cli auth login --device-code ", } { if !strings.Contains(hint, want) { t.Fatalf("hint missing %q, got:\n%s", want, hint)