Quay lại hướng dẫn
Agent lập trình·21 tháng 9, 2026·Cập nhật 1 tháng 10, 2026·Đọc 10 phút

PicoClaw model not found 404: mã model và giao thức Anthropic

Ba trong bốn lỗi “not found” của PicoClaw không bao giờ rời khỏi máy của bạn. Hãy xác định lớp bị lỗi trước khi thay đổi giao thức hoặc khóa.

Được xem xét lần cuối vào .

Trong PicoClaw, "model not found" và 404 là bốn lỗi khác nhau, và chỉ một lỗi xảy ra bên ngoài máy của bạn. Ba lỗi là cục bộ — alias không được phân giải, backend web của chính PicoClaw trả về 404 và chuỗi giao thức không xác định — còn lỗi thứ tư là 404 từ upstream, với nội dung phản hồi cho biết route sai hay model id sai. Đọc nội dung lỗi trước tiên sẽ ngăn bạn đổi giao thức để sửa một lỗi gõ.

Trang này giả định bạn đã có mục model_list hoạt động và một khóa; phần thiết lập cũng như chi phí PicoClaw được trình bày trong giá và thiết lập API PicoClaw. Mọi nội dung dưới đây được đọc tại tag phát hành v0.3.1, được API phát hành xác nhận là bản mới nhất vào ngày 21 tháng 9 năm 2026, phát hành ngày 3 tháng 7 năm 2026. Repository được push lần cuối vào ngày 17 tháng 9 năm 2026, vì vậy main mới hơn tag — khi điều đó quan trọng, nội dung sẽ nêu rõ. Vào ngày 1 tháng 10 năm 2026, v0.3.1 vẫn là bản phát hành mới nhất, và binary phát hành sau đó được chạy với endpoint ghi nhận cục bộ và, bằng một khóa cố ý không hợp lệ, với Kunavo; những gì thử nghiệm cho thấy được ghi lại bên dưới.

Bốn lỗi, một cụm từ

LớpBạn thấy gìChuỗi nằm ở đâuNó không phải là gì
Phân giải cấu hình, trước mọi yêu cầumodel "X" not found in model_list or providers, model "X" not found in model_list (các hàm gọi nó thêm tiền tố error creating provider:), hoặc cannot found model 'X' in configpkg/config/config.go, pkg/providers/legacy_provider.go, cmd/picoclaw/internal/model/command.goKhông phải trạng thái HTTP. Không phải vấn đề về khóa, số dư hay nguồn cung
Backend giao diện web của chính PicoClawHTTP 404, nội dung phản hồi Model "X" not found in model_listweb/backend/api/models.go, trình xử lý set-default-modelKhông đến từ bất kỳ model API nào — 404 này đến từ localhost
Phân giải giao thứcunknown protocol "X" in model "Y"Nhánh mặc định của phép chuyển đổi giao thức trong pkg/providers/factory_provider.goKhông phải 404. Chỉ có thể xảy ra khi provider được đặt rõ ràng thành một giá trị nằm ngoài danh mục
Phản hồi upstreamNội dung 404 của chính nhà cung cấp, được PicoClaw bọc lạianthropic_messages/provider.go hoặc pkg/providers/common/common.goLỗi duy nhất trong bốn lỗi liên quan đến endpoint

Do đó, điều đầu tiên cần xác định là yêu cầu có rời khỏi máy của bạn hay không, và riêng chuỗi lỗi đã đủ kết luận. Alias không khớp là một trường hợp đã được ghi nhận, không phải giả thuyết: issue #958 của PicoClaw báo cáo error creating provider: model "llama3.2" not found in model_list trong khi picoclaw status cho thấy endpoint Ollama có thể truy cập và model hiện diện dưới dạng llama3.2:latest. Issue được đóng vào ngày 25 tháng 3 năm 2026 bởi bot đánh dấu issue cũ của repository. Lưu ý rằng trong repository này, một issue đã đóng được đánh dấu completed không có nghĩa là đã được sửa — chính bot đó đã đóng #1624 với cùng cách diễn đạt.

Nội dung bọc cho biết giao thức nào thực sự đã chạy

Vì anthropic với api key và anthropic-messages tạo ra các nhà cung cấp khác nhau, các lớp bọc 404 của chúng cũng khác nhau — khiến chuỗi lỗi trở thành một công cụ chẩn đoán miễn phí.

Lớp bao bọc bạn nhìn thấyNhà cung cấp đã tạo ra nóĐiều URL cho bạn biết
endpoint not found (404): <body>Nhà cung cấp Messages gốcYêu cầu đã được gửi đến <base>/v1/messages với X-API-Key
API request failed: rồi đến các dòng Status: và Body:Nhà cung cấp tương thích OpenAI — cũng là nhà cung cấp mà anthropic sử dụng với khóa apiYêu cầu đã được gửi đến một URL kết thúc bằng /chat/completions với Authorization: Bearer
Tương tự, cộng thêm returned HTML instead of JSON (content-type: ...); check api_base or proxy configuration.Nhà cung cấp tương thích OpenAIBạn đã truy cập một máy chủ web hoặc trang lỗi proxy, không phải API. Chỉ 256 byte đầu tiên được đọc và phần xem trước bị cắt còn 128 ký tự

Vì sao hướng dẫn 404 của chính PicoClaw có thể dẫn bạn sai hướng

Hướng dẫn nhà cung cấp của PicoClaw bảo bạn chuyển sang anthropic-messages khi "Giao thức anthropic hiện có trả về lỗi 404 (cho biết endpoint không hỗ trợ định dạng tương thích OpenAI)", đồng thời thêm ghi chú làm rõ cách đặt tên: "Giao thức anthropic sử dụng định dạng tương thích OpenAI (/v1/chat/completions), còn anthropic-messages sử dụng định dạng gốc của Anthropic (/v1/messages)." Cả hai trích dẫn đều được đọc lại tại v0.3.1 vào ngày 21 tháng 9 năm 2026.

Hướng dẫn đó đúng với 404 của route nhưng sai với 404 của model. Nó cũng nằm thấp hơn 294 dòng so với một bảng trong cùng tệp, trong đó cột Protocol ghi Anthropic cho dòng anthropic, trái ngược hoàn toàn. Mã nguồn giải quyết mâu thuẫn này theo một cách không dễ nhận ra: anthropic là hai giao thức, tùy thuộc vào auth_method. Với oauth hoặc token, nó tạo nhà cung cấp SDK Anthropic gốc và bảng là đúng; với khóa api, nó rơi xuống cùng nhà cung cấp tương thích OpenAI được openai và toàn bộ họ của nó sử dụng, nên ghi chú là đúng.

provider và xác thựcURL yêu cầu cuối cùngHeader xác thựcXử lý /v1
openai và họ tương thích OpenAI<api_base>/chat/completionsAuthorization: Bearerapi_base nguyên văn, đã loại bỏ dấu gạch chéo cuối — bạn tự cung cấp /v1
anthropic với khóa api<base>/v1/chat/completionsAuthorization: BearerBắt buộc: loại bỏ dấu gạch chéo cuối, loại bỏ một /v1 ở cuối, rồi thêm lại /v1
anthropic-messages<base>/v1/messagesX-API-Key cộng với Anthropic-Version: 2023-06-01, được ghi cứngCùng /v1 bắt buộc
anthropic với auth_method là oauth hoặc tokenĐược xử lý bởi nhà cung cấp SDK gốcThông tin xác thực từ kho xác thựcFactory không chuẩn hóa base URL trên nhánh này

Có hai hệ quả trực tiếp. Với họ openai, viết https://api.kunavo.com thay vì https://api.kunavo.com/v1 sẽ tạo thành https://api.kunavo.com/chat/completions — một 404 của route do chính cấu hình của bạn gây ra, và là trường hợp phổ biến nhất. Với cả hai giao thức Anthropic, lỗi đó là không thể xảy ra vì /v1 luôn bị buộc theo một trong hai cách; nhưng chính việc ép buộc này cũng có nghĩa là một gateway có đường dẫn không được kết thúc bằng /v1 hoàn toàn không thể được biểu diễn qua chúng, và thay vào đó phải đi qua giao thức openai. Tài liệu riêng của PicoClaw dùng lối thoát đó cho một nhà cung cấp có base kết thúc bằng một phân đoạn phiên bản khác.

Một nhận định cần xem là chưa được xác định. Bình luận duy nhất trên issue #269 của PicoClaw khẳng định rằng gửi đến /v1/chat/completions trả về 404 tại Anthropic vì endpoint đúng là /v1/messages. Tài liệu riêng của Anthropic mâu thuẫn với điều đó: tài liệu công bố lớp tương thích OpenAI SDK với base_url https://api.anthropic.com/v1/ và đánh dấu header authorization là "Được hỗ trợ đầy đủ" (đã kiểm tra ngày 21 tháng 9 năm 2026), đồng thời cảnh báo trên cùng trang rằng lớp này "không được xem là giải pháp dài hạn hoặc sẵn sàng cho môi trường production đối với hầu hết trường hợp sử dụng". Issue #269 đã được đóng vào ngày 13 tháng 3 năm 2026 mà không có bình luận đóng — API issues cho thấy có một bình luận trên đó, chính là phân tích ở trên, từ một tài khoản không liên kết với repository — vì vậy không rõ điều gì thực sự đã giải quyết nó. Hãy tin vào nội dung phản hồi 404 của chính bạn hơn là một trong hai lời giải thích đó.

Khi 404 là do model id

Issue #1624 của PicoClaw — mở ngày 16 tháng 3 năm 2026, đóng ngày 31 tháng 3 năm 2026 — ghi lại chính xác nội dung phản hồi cho một Claude id có dấu chấm được cấu hình là "model": "anthropic/claude-sonnet-4.6": Status: 404 với {"error":{"code":"not_found_error","message":"model: claude-sonnet-4.6 was not found. Did you mean claude-sonnet-4-6?"…. Tiêu đề và bình luận duy nhất của issue được đọc lại từ API issues vào ngày 21 tháng 9 năm 2026: bình luận đó do bot xử lý các issue lâu không có hoạt động đăng, vì vậy issue đã đóng nhưng không có bằng chứng về bản sửa lỗi.

Gợi ý "bạn có muốn nói" là dấu hiệu nhận biết. Nó chỉ được trả về từ một endpoint đã phân tích yêu cầu, vì vậy route đã hoạt động và thay đổi giao thức sẽ không giúp ích. Lý do PicoClaw không tự sửa chính tả cho bạn rất cụ thể và có thể kiểm tra: strings.ReplaceAll(model, ".", "-") xuất hiện một lần trong repository, tại pkg/providers/anthropic/provider.go dòng 219 — nhà cung cấp SDK được dùng trên các đường dẫn OAuth và token. Cả anthropic_messages/provider.go lẫn openai_compat/provider.go đều không chứa nó. Cả hai nhận định đã được kiểm tra lại tại v0.3.1 vào ngày 21 tháng 9 năm 2026, và nghiên cứu trước trang này đã tải lại chính các tệp đó từ main cùng ngày với cùng kết quả. Việc chạy binary v0.3.1 vào ngày 1 tháng 10 năm 2026 đã xác nhận điều đó trên cả hai đường dẫn khóa API: id có dấu chấm đến endpoint đúng như được viết và nhận 404 của chính endpoint (xem những gì việc chạy v0.3.1 cho thấy). Đường dẫn OAuth và token, đường dẫn duy nhất có phép viết lại, chưa được chạy.

Các tệp riêng của PicoClaw cũng không thống nhất về cách viết: provider_metadata.go liệt kê id có dấu gạch nối cho cả hai mục Anthropic, ví dụ anthropic trong hướng dẫn nhà cung cấp dùng id có dấu chấm, còn anthropic-messages trả về giá trị mặc định có dấu chấm từ GetDefaultModel — chính cách viết mà #1624 cho thấy bị từ chối. Mọi Claude API id được in trên tổng quan model của Anthropic đều dùng dấu gạch nối, và trang đó liệt kê Claude Sonnet 4.6 cùng Claude Opus 4.6 dưới mục "Model cũ (vẫn khả dụng)" — vì vậy việc ngừng cung cấp không phải lý do khiến id 4.6 trả về 404 trên Anthropic hiện nay. Điều đó loại trừ một nguyên nhân, không phải mọi nguyên nhân: một id có dấu gạch nối vẫn có thể bị gateway từ chối nếu gateway không có model đó. Hãy sao chép id từ endpoint bạn đang gọi, không phải từ README.

Ghi rõ cả hai mục và giữ id có dấu gạch nối. Không đặt key trong tệp này — PicoClaw đọc chúng từ ~/.picoclaw/.security.yml, nội dung này được đề cập trong hướng dẫn thiết lập.

~/.picoclaw/config.json
{
  "agents": {
    "defaults": {
      "model_name": "kunavo-sonnet"
    }
  },
  "model_list": [
    {
      "model_name": "kunavo-sonnet",
      "provider": "openai",
      "model": "claude-sonnet-4-6",
      "api_base": "https://api.kunavo.com/v1"
    },
    {
      "model_name": "kunavo-sonnet-native",
      "provider": "anthropic-messages",
      "model": "claude-sonnet-4-6",
      "api_base": "https://api.kunavo.com"
    }
  ]
}

Mục đầu tiên tự cung cấp /v1 vì nhóm giao thức tương thích OpenAI nối nguyên văn /chat/completions vào api_base. Mục thứ hai cố ý bỏ qua nó để cho thấy rằng trên anthropic-messages, cả hai cách viết đều được chuẩn hóa thành cùng một URL cơ sở. URL cơ sở được Kunavo công bố là https://api.kunavo.com/v1 cho hoàn thành hội thoại và https://api.kunavo.com/v1/messages cho đường dẫn Messages. Việc hai nhóm phép tính URL cho cùng kết quả được suy ra bằng phép tính dựa trên hai bộ tài liệu — và vào ngày 1 tháng 10 năm 2026, cả hai mục đều được chạy từ v0.3.1 đến Kunavo bằng một khóa cố ý không hợp lệ: mục openai đến /v1/chat/completions và mục anthropic-messages đến /v1/messages, cả hai đều nhận lại 401 của Kunavo. Điều đó chứng minh các URL, không phải một yêu cầu đã hoàn tất: không chỗ nào trên trang này tuyên bố đã kiểm thử tích hợp. Để xem dạng tổng quát của câu hỏi về URL cơ sở, hãy xem tài liệu URL cơ sở của Anthropic.

Gateway cũng có thể chủ động trả về 404, và đó không phải lỗi của PicoClaw. Kunavo trả về 404 cho model tạm thời bị tạm dừng, với nội dung nêu tên model và model thay thế cần dùng, đồng thời loại các model đang tạm dừng khỏi /v1/models; hãy đối chiếu cấu trúc của thông báo đó thay vì một tên cụ thể, vì các model nào bị tạm dừng có thể thay đổi. Kunavo cũng không cung cấp model embedding, text-to-speech hoặc speech-to-text, vì vậy một mục model_list chỉ định một trong các loại đó sẽ trả về 404 bất kể bạn chọn giao thức nào — hãy trỏ các mục đó đến nhà cung cấp khác và chỉ giữ các mục chat trên khóa Kunavo.

Những gì việc chạy v0.3.1 cho thấy

Vào ngày 1 tháng 10 năm 2026, binary phát hành v0.3.1, được xác minh checksum theo tệp checksum riêng của bản phát hành, được chạy trong một container dùng một lần với từng mục model_list một và picoclaw agent -m. Endpoint là một máy chủ ghi cục bộ hoạt động giống định tuyến của Kunavo tại thời điểm đó — /v1/* là API, mọi đường dẫn khác trả về trang 404 HTML (hiện Kunavo trả về 404 JSON cho các đường dẫn đó và nêu cách khắc phục; xem các dòng Kunavo) — đồng thời biết claude-sonnet-5 và claude-sonnet-4-6 nhưng không biết id có dấu chấm; ba dòng cuối sử dụng api.kunavo.com thực tế với một khóa cố ý không hợp lệ, vì vậy không có khoản nào được tính phí.

MụcPicoClaw đã gửi gìPicoClaw đã in gì
openai, api_base kết thúc bằng /v1POST /v1/chat/completions, Authorization: BearerPhản hồi
openai, api_base không có /v1POST /chat/completions — nguyên văn, không thêm gìYêu cầu API thất bại: … đã trả về HTML thay vì JSON (content-type: text/html; charset=utf-8); hãy kiểm tra api_base hoặc cấu hình proxy. rồi đến Trạng thái: 404
anthropic với khóa api, có hoặc không có /v1POST /v1/chat/completions, Authorization: Bearer — /v1 được buộc theo cả hai cáchPhản hồi
anthropic-messages, có hoặc không có /v1POST /v1/messages, X-API-Key, Anthropic-Version: 2023-06-01Phản hồi
anthropic-messages, mô hình claude-sonnet-4.6Id đúng như được viết, bao gồm cả dấu chấmkhông tìm thấy endpoint (404): tiếp theo là nội dung phản hồi của endpoint, trong đó nêu tên model
openai, mô hình claude-sonnet-4.6Id đúng như được viếtYêu cầu API thất bại: rồi đến Trạng thái: 404 và nội dung phản hồi nêu tên model
Bí danh mặc định không có mục khớpKhông có gì — không có yêu cầulỗi khi tạo nhà cung cấp: không tìm thấy model "…" trong model_list: không tìm thấy model "…" trong model_list hoặc providers
Kunavo, openai, URL cơ sở https://api.kunavo.comPOST /chat/completions, nằm ngoài /v1Trước đó trong ngày: cùng thông báo đã trả về HTML thay vì JSON, Trạng thái: 404. Chạy lại sau thay đổi trong cùng ngày của Kunavo: Yêu cầu API thất bại:, Trạng thái: 404, và nội dung JSON bắt đầu bằng "Không tìm thấy: /chat/completions. API của Kunavo nằm dưới /v1 — hãy đặt base URL thành https://api.kunavo.com/v1"
Kunavo, openai, base https://api.kunavo.com/v1, khóa không hợp lệPOST /v1/chat/completionsYêu cầu API thất bại:, Trạng thái: 401, nội dung Thiếu hoặc khóa API không hợp lệ của Kunavo
Kunavo, anthropic-messages, khóa không hợp lệPOST /v1/messagesxác thực thất bại (401): hãy kiểm tra khóa API của bạn

Thử nghiệm này xác lập hai điều mà việc đọc mã nguồn chỉ có thể dự đoán. Lớp bao bọc lỗi thực sự nêu tên nhà cung cấp đã chạy, vì vậy có thể an toàn suy ra giao thức từ đó; và id có dấu chấm được gửi nguyên trạng trên cả hai đường dẫn khóa API, vì vậy lỗi "không tìm thấy model" trích dẫn id có dấu chấm được khắc phục bằng cách viết lại id, không phải bằng cách chuyển giao thức. Những điều thử nghiệm không bao quát: các đường dẫn OAuth và token, giao diện web của launcher, streaming, và mọi yêu cầu đã hoàn tất qua Kunavo — các dòng Kunavo cố ý dùng khóa không hợp lệ.

Thứ tự kiểm tra ngắn nhất

  1. Có gì rời khỏi máy không? Lỗi terminal chứa không tìm thấy trong model_list mà không có trạng thái HTTP là lỗi cục bộ. Đặt agents.defaults.model_name bằng một mục model_name rồi dừng ở đó.
  2. Nó có đến từ localhost không? Lỗi 404 trong trình duyệt khi chọn model mặc định trong giao diện web của PicoClaw cũng là cùng một sự không khớp, được backend riêng của PicoClaw cung cấp. Không có API model nào được gọi.
  3. Nhà cung cấp nào đã chạy? Đối chiếu văn bản lớp bao bọc với bảng ở trên. Nếu lớp bao bọc không khớp với giao thức bạn nghĩ mình đã cấu hình, trường provider hoặc tiền tố model không như bạn nghĩ.
  4. 404 của route hay 404 của model? Nội dung phản hồi nêu tên model — đặc biệt kèm gợi ý bạn có muốn nói — là 404 của model: sửa id. Trang HTML, nội dung trống hoặc thông báo không tìm thấy chung chung là 404 của route: suy ra lại URL đã ghép từ bảng trước khi làm bất cứ điều gì khác.
  5. Hãy hỏi endpoint xem nó cung cấp gì. PicoClaw không thể làm điều này trên cả hai giao thức Anthropic vì không mục danh mục nào đặt cờ fetch. Dùng curl với /v1/models riêng của gateway, hoặc tạm thời trỏ cùng gateway đó sang giao thức openai. Model không được tìm thấy giữa các nhà cung cấp trình bày phương pháp này, còn Anthropic 404 không tìm thấy model trình bày các trường hợp bản thân id là vấn đề.
  6. Chỉ bây giờ mới thay đổi giao thức, và chỉ khi bước 4 cho biết đó là 404 của route. Nếu header xác thực mới là yếu tố cản trở thay vì định dạng truyền tải, token xác thực so với khóa api giải thích sự khác biệt.
  7. Xác minh lại bằng một lượt công cụ, không phải một lượt chat thông thường. Một cấu hình trả lời được tin nhắn đơn vẫn có thể thất bại ở lần gọi công cụ đầu tiên, vì vậy tác vụ có giới hạn dùng để xác nhận bản sửa lỗi nên bao gồm một lần gọi công cụ.

Lựa chọn giao thức khiến bạn phải trả giá gì

Hệ quả chi phí lớn nhất là bộ nhớ đệm prompt, và đây là vấn đề mang tính cấu trúc chứ không phải một thiết lập. Trong PicoClaw v0.3.1, mã duy nhất phát ra điểm ngắt bộ nhớ đệm nằm ở pkg/providers/anthropic/provider.go, chỉ được truy cập trên các đường dẫn OAuth và token. Với khóa api — trường hợp tự cung cấp khóa thông thường — không giao thức Anthropic nào gửi cache_control. Đối với lớp tương thích riêng của Anthropic, điều này còn cộng dồn vì tài liệu của họ nêu rõ rằng "Bộ nhớ đệm prompt không được hỗ trợ, nhưng được hỗ trợ trong các SDK Anthropic". Với gateway chèn điểm ngắt cho các caller định dạng OpenAI, khoản tiết kiệm được khôi phục tại gateway; tài liệu bộ nhớ đệm của Kunavo cho biết họ làm vậy và nêu phạm vi chính xác: các model Claude được truy cập qua /v1/chat/completions hoặc /v1/responses. Cùng trang đó nói cache_control được truyền nguyên trạng trên route Messages gốc — vì vậy mục anthropic-messages không nhận điểm ngắt từ phía nào, và cột thứ hai bên dưới chỉ mô tả mục giao thức openai. Chưa kiểm tra việc các gateway khác có chèn điểm ngắt hay không, và không điều nào trong số này được quan sát từ bên trong PicoClaw.

Giá trị của điều đó là phép tính token minh họa, không phải chi phí tác vụ được đo lường và không phải mức trần hóa đơn. Giả sử một lượt của agent gồm 10 vòng gọi công cụ, trong đó mỗi vòng gửi lại cùng một tiền tố 20.000 token (system prompt, schema công cụ, transcript cho đến hiện tại), thêm 1.000 token đầu vào mới và trả về 600 token đầu ra. Các tỷ lệ đó là giả định để minh họa. Cột thứ nhất tính phí đầu vào của mọi vòng theo toàn bộ mức giá; cột thứ hai tính tiền tố lặp lại theo mức đọc từ bộ nhớ đệm kể từ vòng thứ hai. Mức giá là giá trực tiếp của danh mục Kunavo cho mỗi triệu token.

Mô hìnhĐầu vào / đầu ra trên mỗi 1MĐọc từ cache trên mỗi 1MƯớc tính, không có điểm ngắtƯớc tính, tiền tố được lưu trong bộ nhớ đệm
Claude Haiku 4.5$0,70 / $3,50$0,07$0,168$0,055
Claude Sonnet 4.6$2,10 / $10,50$0,21$0,504$0,164
Claude Opus 5$3,50 / $17,50$0,35$0,840$0,273

Theo các giả định này, Claude Sonnet 4.6 chuyển từ $0,504 sang $0,164 cho cùng một công việc. Hãy xem cột thứ hai là lạc quan: việc ghi vào bộ nhớ đệm được tính theo mức giá riêng và không được mô hình hóa theo cả hai hướng, còn tiền tố thay đổi ở mỗi vòng sẽ không bao giờ trở thành một lượt truy cập bộ nhớ đệm hợp lệ. Hãy nhân theo số lượt mỗi ngày trước khi coi bất kỳ con số nào là ngân sách.

Trong khi đó, hãy tách riêng hai khoản thanh toán. Bản thân PicoClaw miễn phí — repository được cấp phép MIT, và không giao thức nào, kể cả cả hai giao thức Anthropic, bị khóa sau bất kỳ khoản mua nào. Chi phí định kỳ là token model theo mức giá của nhà cung cấp. Số tiền trong danh mục của Kunavo là mức sàn thanh toán chứ không phải mức trần: khi upstream báo chi phí, hóa đơn là giá trị lớn hơn giữa chi phí trong danh mục và chi phí upstream nhân với markup áp dụng. Khoản nạp tối thiểu là $10 tín dụng trả trước, là mức tối thiểu để nạp tiền chứ không phải phí tác vụ hay gói đăng ký — xem chi tiết thanh toán.

Nhà cung cấp trực tiếp, gateway, gói đăng ký hoặc cục bộ

Phương thứcCó lợi khiChi phí bạn phải chịu ở đây
Khóa API của nhà cung cấp trực tiếpBạn dùng model của một nhà cung cấp suốt cả ngày và muốn dùng cơ chế cache và điều khoản batch của chính nhà cung cấp đóTrên lớp tương thích của Anthropic, bộ nhớ đệm prompt được ghi rõ là không được hỗ trợ, vì vậy giao thức anthropic từ bỏ tính năng này; anthropic-messages vẫn giữ route gốc nhưng PicoClaw vẫn không gửi cache_control khi dùng khóa api
Cổng tương thích với OpenAIBạn chuyển model theo từng tác vụ và muốn một khóa cùng một số dư, đồng thời cần custom_headers, extra_body, proxy hoặc streaming hoạt độngBạn tự chịu trách nhiệm về câu hỏi /v1, vì api_base được dùng nguyên văn. API tương thích OpenAI trình bày cấu trúc chung
Đường dẫn gateway native của AnthropicEndpoint của bạn chỉ cung cấp /v1/messages, hoặc chỉ chấp nhận X-API-KeyBốn trường model_list được ghi trong tài liệu không bao giờ đến được nhà cung cấp, và nó không triển khai phương thức streaming — vì vậy cả streaming.enabled lẫn giải pháp tạm thời xác thực bằng custom_headers đều không khả dụng
Đăng nhập bằng gói đăng kýViệc sử dụng nhiều phù hợp với mức phí cố định hơn là tính theo tokenPicoClaw không cung cấp gói đăng ký riêng. Nhánh OAuth và token là đường dẫn duy nhất chuẩn hóa id có dấu chấm và phát ra điểm ngắt bộ nhớ đệm, nhưng trang này không chạy luồng đăng nhập đó hoặc xác minh nó chấp nhận gì
Model cục bộCông việc nhỏ hoặc riêng tư không tính phí theo từng yêu cầu — ollama, lmstudio và vllm không cần khóaKhoảng cách năng lực so với model lưu trữ, cộng thêm phần cứng. PicoClaw không tích hợp engine suy luận: nó truy cập mọi model qua HTTP, và ba lựa chọn đó là các máy chủ tương thích OpenAI do bạn tự chạy

Bạn đang chọn runtime thay vì route? PicoClaw so với OpenClaw so sánh hai bên về hình thức triển khai. Nếu bạn chọn gateway và muốn cấp tiền cho một khóa, tạo tài khoản Kunavo, sau đó gửi một tác vụ có giới hạn kèm một lần gọi công cụ và đọc khoản phí mà tài khoản của bạn thực sự ghi nhận.

Câu hỏi thường gặp

Tại sao PicoClaw báo không tìm thấy model?

Thường là do alias không được phân giải cục bộ, trước khi bất kỳ yêu cầu HTTP nào được gửi đi. PicoClaw v0.3.1 có ba chuỗi riêng biệt trước HTTP cho trường hợp này: "model %q not found in model_list or providers" trong pkg/config/config.go, "model %q not found in model_list" trong pkg/providers/legacy_provider.go (các hàm gọi nó thêm tiền tố "error creating provider:" — cả issue #958 và trang khắc phục sự cố của PicoClaw đều hiển thị dạng này), và "cannot found model '%s' in config" trong lệnh model. Cả ba đều có nghĩa là agents.defaults.model_name không khớp với bất kỳ mục model_name nào trong model_list. Một ví dụ đã được ghi nhận là issue #958 của PicoClaw, trong đó người báo cáo đặt model là "llama3.2" trong khi picoclaw status hiển thị model Ollama là llama3.2:latest và endpoint Ollama có thể truy cập — nhà cung cấp hoạt động bình thường, chỉ alias là không đúng. Một người bình luận đã truy nguyên chính xác nguyên nhân đó và người báo cáo xác nhận thay đổi cấu hình đã hoạt động; sau đó issue được đóng vào ngày 25 tháng 3 năm 2026 bởi bot xử lý các issue không hoạt động của kho mã, chứ không phải do sửa mã. Nếu thông báo thay vào đó chứa trạng thái HTTP, yêu cầu đã rời khỏi máy của bạn và nguyên nhân nằm ở upstream, không phải trong model_list.

Lỗi 404 anthropic của PicoClaw có nghĩa là gì?

Hãy đọc nội dung phản hồi trước khi thay đổi bất kỳ điều gì, vì hai loại 404 khác nhau có cùng trạng thái. 404 của route có nghĩa là URL PicoClaw tạo ra không tồn tại trên host đó — một trang lỗi trống hoặc HTML, hoặc thông báo không tìm thấy chung từ máy chủ web. 404 của model có nghĩa là yêu cầu đã đến một endpoint thực, endpoint đã phân tích yêu cầu rồi từ chối model id; phiên bản của Anthropic trong nội dung phản hồi là not_found_error có nêu tên model, và issue #1624 của PicoClaw ghi nguyên văn: "model: claude-sonnet-4.6 was not found. Did you mean claude-sonnet-4-6?". Gợi ý "did you mean" chứng minh route đã hoạt động, vì vậy đổi giao thức sẽ không giúp ích — hãy sửa model id. Hai đường dẫn PicoClaw cũng bao bọc 404 khác nhau: nhà cung cấp Messages gốc in "endpoint not found (404): <body>", còn nhà cung cấp tương thích OpenAI in "API request failed:" tiếp theo là các dòng Status và Body, cùng một biến thể riêng khi nội dung phản hồi là HTML. Được đọc tại tag v0.3.1 vào ngày 21 tháng 9 năm 2026.

Tôi có nên chuyển từ anthropic sang anthropic-messages khi gặp 404 không?

Chỉ khi 404 là 404 của route. Tài liệu nhà cung cấp của PicoClaw nêu rằng hãy dùng anthropic-messages khi "Giao thức `anthropic` hiện có trả về lỗi 404 (cho thấy endpoint không hỗ trợ định dạng tương thích OpenAI)", và đó là lời khuyên đúng cho endpoint chỉ cung cấp /v1/messages. Đây là lựa chọn sai đối với 404 ở cấp model và khiến bạn mất một số khả năng: trên đường dẫn anthropic-messages, PicoClaw chỉ truyền api key, base URL, user agent và thời gian chờ yêu cầu cho nhà cung cấp, nên custom_headers, extra_body, proxy và max_tokens_field không bao giờ đến nơi; nhà cung cấp cũng không triển khai phương thức streaming, vì vậy streaming.enabled cũng không thể có hiệu lực ở đó. Nó còn thay đổi header xác thực — anthropic với api key gửi Authorization: Bearer, còn anthropic-messages gửi X-API-Key cùng Anthropic-Version được đặt cứng là 2023-06-01. Nếu gateway của bạn chỉ chấp nhận một trong hai header đó, điều này giới hạn lựa chọn giao thức một cách độc lập với định dạng truyền tải. Đã kiểm tra trong mã nguồn PicoClaw v0.3.1 ngày 21 tháng 9 năm 2026.

PicoClaw có gửi model id có dấu chấm như claude-sonnet-4.6 đúng nguyên dạng không?

Trên hai đường dẫn dùng API key, mã nguồn cho biết không có gì viết lại nó. Việc thay dấu chấm bằng dấu gạch ngang strings.ReplaceAll(model, ".", "-") chỉ xuất hiện một lần trong repository, tại pkg/providers/anthropic/provider.go dòng 219 — nhà cung cấp dựa trên SDK được dùng cho các phương thức xác thực OAuth và token. Cả pkg/providers/anthropic_messages/provider.go lẫn pkg/providers/openai_compat/provider.go đều không chứa đoạn này, và tình trạng vẫn như vậy khi nghiên cứu tải lại các tệp đó từ main vào ngày 21 tháng 9 năm 2026. Điều này quan trọng vì GetDefaultModel của chính PicoClaw trong anthropic-messages trả về cách viết có dấu chấm, ví dụ providers.md cho giao thức anthropic dùng id có dấu chấm, còn danh mục trong provider_metadata.go liệt kê id có dấu gạch ngang cho cả hai mục — ba tệp của chính nó không nhất quán. Mọi Claude API id được in trên trang tổng quan model của Anthropic đều dùng dấu gạch ngang. Chạy bản phát hành v0.3.1 vào ngày 1 tháng 10 năm 2026 với endpoint ghi nhận cục bộ đã xác nhận điều này cho hai đường dẫn dùng API key: trên anthropic-messages và openai, id đến nơi là claude-sonnet-4.6, còn 404 của endpoint lần lượt được bọc thành "endpoint not found (404)" và "API request failed". Đường dẫn OAuth và token, là đường dẫn có thao tác viết lại, chưa được chạy.

api_base của tôi có vẻ đúng nhưng vẫn nhận 404. Điều gì khác còn thay đổi URL?

Quy tắc tiền tố, và nó thất bại một cách im lặng. Khi trường provider không có trong một mục model_list, PicoClaw chỉ coi phân đoạn đầu tiên được ngăn cách bằng dấu gạch chéo của model là giao thức nếu phân đoạn đó là một provider id đã biết; nếu không, toàn bộ chuỗi vẫn là model id và giao thức chuyển về giá trị literal "openai". Tài liệu di chuyển của chính PicoClaw diễn đạt lỏng hơn — rằng khi bỏ qua provider, phân đoạn đầu tiên sẽ là provider — vì vậy một tiền tố gõ sai trông như đáng lẽ phải tạo lỗi nhưng thay vào đó lại tạo 404 upstream cho một model id vô nghĩa. Khi provider được đặt, model được gửi lên upstream hoàn toàn không thay đổi, kể cả tiền tố trùng lặp; chú thích trong mã đưa ra ví dụ Provider "openai", Model "openai/gpt-4o" được phân giải thành model id "openai/gpt-4o". Trang khắc phục sự cố của PicoClaw cũng dùng ví dụ tương tự cho một nhà cung cấp khác: chỉ đặt "model": "free" mà không chỉ định provider là sai vì chưa chọn nhà cung cấp OpenRouter, dạng được khuyến nghị là "provider": "openrouter" với "model": "free", còn "model": "openrouter/free" cũng được liệt kê là được hỗ trợ chính xác vì openrouter là một provider id đã biết. Trang đó không có số phiên bản riêng; nó được phát hành trong cây v0.3.1, đọc ngày 21 tháng 9 năm 2026.

PicoClaw có thể liệt kê những model mà endpoint của tôi cung cấp không?

Không đối với cả hai giao thức Anthropic. Nút fetch-models trong giao diện web launcher của PicoClaw phụ thuộc vào cờ SupportsFetch trong bảng tùy chọn nhà cung cấp, và các mục anthropic và anthropic-messages đều bỏ qua cờ này. Hầu hết giao thức tương thích OpenAI đều bật cờ đó — openai, openrouter, litellm, ollama, lmstudio, vllm, deepseek, groq và hai mươi giao thức khác — vì vậy sự thiếu hụt này chỉ xảy ra ở hai mục Anthropic, không phải ở endpoint tùy chỉnh nói chung. Do đó, bước "hỏi endpoint xem nó cung cấp gì" phải thực hiện bằng curl tới route /v1/models của chính gateway, hoặc tạm thời trỏ cùng gateway sang giao thức openai hoặc litellm để mượn chức năng fetch. Lưu ý rằng điều này không nói gì về việc API upstream có route /v1/models hay không; nó chỉ nói về những gì chính PicoClaw có thể gọi. Đọc trong pkg/providers/provider_metadata.go tại tag v0.3.1, ngày 21 tháng 9 năm 2026.

Việc khắc phục lỗi này có tốn chi phí không?

Không phải từ phía PicoClaw. Repository sipeed/picoclaw được cấp phép MIT và tệp LICENSE ghi "MIT License / Copyright (c) 2026 PicoClaw contributors", được kiểm tra ngày 21 tháng 9 năm 2026; không có tài khoản, gói dịch vụ hay giao thức trả phí nào, vì vậy mọi giao thức, bao gồm cả hai giao thức Anthropic, đều nằm trong binary miễn phí và không có gì cần mua từ Sipeed để mở khóa endpoint tùy chỉnh. Khoản tốn tiền là lưu lượng model API, được nhà cung cấp mà bạn cấu hình tính phí theo mức sử dụng, còn PicoClaw không công bố mức giá riêng. Một lưu ý khi tìm kiếm: một trang trông tương tự nhưng không liên quan bán gói lưu trữ hằng tháng dưới tên PicoClaw, trong khi chân trang của chính trang đó gọi mình là một cổng độc lập không có liên kết chính thức với Sipeed hoặc PicoClaw — vì vậy con số hằng tháng của nó là giá lưu trữ của trang đó, không phải giá PicoClaw.

Đã kiểm tra ngày 21 tháng 9 năm 2026. Được xác minh lại trong tác vụ này tại tag v0.3.1: ghi chú giao thức và dòng nhà cung cấp Anthropic trong hướng dẫn nhà cung cấp, nhánh anthropic và nhánh mặc định của factory_provider.go, NormalizeBaseURL, URL, các header và chuỗi 404 của anthropic-messages, phép nối URL và header Bearer của openai_compat, ba chuỗi "not found in model_list" trước HTTP, 404 của backend web, lần xuất hiện duy nhất của phép thay dấu chấm bằng dấu gạch ngang, cột SupportsFetch của bảng tùy chọn nhà cung cấp, và ví dụ OpenRouter trong docs/operations/troubleshooting.md; cùng với API releases (v0.3.1, phát hành ngày 3 tháng 7 năm 2026) và tiêu đề, trạng thái, ngày tháng cùng bình luận của các issue #1624, #958 và #269. Trang tương thích OpenAI-SDK của Anthropic cũng được đọc cùng ngày. Chạy ngày 1 tháng 10 năm 2026: binary phát hành v0.3.1 trong container đến endpoint ghi cục bộ và, với khóa không hợp lệ, đến Kunavo — mọi dòng trong bảng trên. Chưa xác minh: bất kỳ điều gì trong main ngoài các tệp mà nghiên cứu đã so sánh, điều gì đã đóng issue #269, các đường dẫn OAuth và token, và bất kỳ yêu cầu nào đã hoàn tất qua Kunavo. Mức giá token của Kunavo lấy từ danh mục trực tiếp, và mọi con số tính bằng đô la ở đây đều là phép tính token minh họa.