Các phần cơ sở kiến thức ▾

Điều hướng

▸ Bắt đầu tại đây Theo vai trò

Danh mục

Công cụ 52
Bảng thuật ngữ 12

Công cụ

omp (Oh My Pi) + JoinGonka Gateway: agent với vai trò mô hình

omp (Oh My Pi) — là một coding-agent terminal, một fork của Pi tối giản, được bổ sung mọi thứ cần thiết cho công việc quy mô lớn: máy chủ ngôn ngữ (LSP) trên mỗi lần lưu file, quản lý trình gỡ lỗi thực sự, các sub-agent trong các bản sao làm việc cô lập, các ô Python và JavaScript vĩnh viễn. Nhân được viết bằng Rust, và cùng một binary chạy được trên macOS, Linux và Windows.

Các nhà cung cấp trong omp được mô tả theo kiểu khai báo: bất kỳ endpoint nào nói ngôn ngữ OpenAI Chat Completions đều được thêm vào với chục dòng trong ~/.omp/agent/models.yml. JoinGonka Gateway chính xác là như vậy, vì thế việc kết nối chỉ gói gọn trong một lệnh cài đặt hoặc hai file YAML ngắn. Sau đó, agent sẽ chạy trên các mô hình của mạng lưới phi tập trung Gonka — DeepSeek V4 Flash, GLM-5.3 Flash và MiniMax M2.7 — với mức giá thống nhất: $0.0069 cho mỗi triệu token đầu vào.

Điểm khác biệt chính giữa omp và bản gốc là vai trò của mô hình: các bước di chuyển thông thường, phân tích sâu, chế độ lập kế hoạch và các công việc nền nhỏ nhặt có thể được giao cho các mô hình khác nhau và được bảo hiểm bởi một chuỗi dự phòng. Dưới đây là lộ trình nhanh, thiết lập thủ công, bảng "mô hình nào cho vai trò nào" và phân tích lỗi. Các lệnh và thông báo đã được đối chiếu qua quá trình chạy thực tế omp 18.2.8 qua gateway vào ngày 21 tháng 9 năm 2026. Sau khi xác nhận địa chỉ, tài khoản sẽ nhận được 3M token miễn phí — đủ để bạn tự mình lặp lại tất cả những điều này.

Bắt đầu nhanh: cài đặt và một lệnh duy nhất

Bước 1: cài omp. Các cách chính thức từ README của dự án:

# macOS and Linux
curl -fsSL https://omp.sh/install | sh

# Homebrew
brew install can1357/tap/omp

# via Bun (requires Bun 1.3.14 or newer)
bun install -g @oh-my-pi/pi-coding-agent

# Windows (PowerShell)
irm https://omp.sh/install.ps1 | iex

Bước 2: lấy key. Đăng ký tại gate.joingonka.ai/register, xác nhận địa chỉ và tạo key với tiền tố jg- trong mục «API key». Một key và một số dư dùng chung cho tất cả các model của mạng.

Bước 3: chạy trình cài đặt.

npx @joingonka/setup --tool omp

Trình cài đặt sẽ hỏi key — key không được truyền qua tham số dòng lệnh để tránh lưu lại trong lịch sử shell — và thực hiện bốn việc:

  • ghi nhà cung cấp joingonka vào ~/.omp/agent/models.yml: địa chỉ gateway, giao thức openai-completions, key dạng literal và ba model của mạng với cửa sổ ngữ cảnh và giới hạn phản hồi thực; file sẽ có quyền 600;
  • đặt model mặc định — modelRoles.default trong ~/.omp/agent/config.yml — thành DeepSeek V4 Flash, nhưng chỉ khi vai trò đó trống hoặc trỏ đến một model đã rời khỏi mạng: nó không ghi đè lựa chọn của bạn mà chỉ gợi ý cách chuyển đổi;
  • sao lưu file cũ trước khi ghi, và giữ nguyên các nhà cung cấp, vai trò và chú thích khác;
  • cuối cùng gửi một yêu cầu trực tiếp đến gateway và cho biết rõ key, địa chỉ và model có được chấp nhận hay không.

Để đặt model mặc định khác, dùng flag --model với viết tắt deepseek, glm hoặc minimax — model được chỉ định rõ ràng luôn được ghi. Đối với dotfile và máy chủ, có chế độ không hỏi đáp, trong đó key được lấy từ biến môi trường:

JOINGONKA_API_KEY=jg-your-key npx @joingonka/setup --tool omp --model glm --non-interactive

Trình cài đặt tự xử lý vị trí cấu hình không chuẩn: profile có tên (OMP_PROFILE) và thư mục agent đã di chuyển (PI_CODING_AGENT_DIR). Nó di chuyển models.json kế thừa sang models.yml giống như chính omp sẽ làm — các nhà cung cấp cũ không bị mất. Và nếu bên cạnh có settings.json cũ mà không có config.yml, trình cài đặt sẽ không tạo config.yml để omp không bỏ qua việc tự di chuyển cài đặt của nó: nó sẽ yêu cầu bạn chạy omp một lần rồi lặp lại lệnh.

Thiết lập thủ công: hai file YAML

Mọi thứ mà trình cài đặt thực hiện đều có thể viết tay. Chỉ có hai tệp, mỗi tệp đảm nhiệm một việc: models.yml mô tả các nhà cung cấp và mô hình, config.yml lưu cấu hình — trong đó có việc mô hình nào đảm nhiệm vai trò nào.

# ~/.omp/agent/models.yml
providers:
  joingonka:
    baseUrl: https://gate.joingonka.ai/v1
    api: openai-completions
    apiKey: jg-your-key
    models:
      - id: deepseek-ai/DeepSeek-V4-Flash-0731
        name: DeepSeek V4 Flash (Gonka)
        input: [text]
        contextWindow: 380000
        maxTokens: 32768
        reasoning: true
      - id: zai-org/GLM-5.3-Flash
        name: GLM-5.3 Flash (Gonka)
        input: [text]
        contextWindow: 390000
        maxTokens: 8192
        reasoning: true
      - id: MiniMaxAI/MiniMax-M2.7
        name: MiniMax M2.7 (Gonka)
        input: [text]
        contextWindow: 200000
        maxTokens: 8192
# ~/.omp/agent/config.yml
modelRoles:
  default: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
TrườngGiá trịĐiều quan trọng
baseUrlhttps://gate.joingonka.ai/v1Bắt buộc có /v1 ở cuối: đường dẫn /chat/completions do omp tự thêm vào
apiopenai-completionsGiao thức Chat Completions — toàn bộ hướng dẫn này đã được kiểm chứng trên đó
apiKeykhóa jg-… của bạnomp tìm biến môi trường cùng tên trước, nếu không thấy sẽ lấy chuỗi làm khóa. Giá trị bắt đầu bằng ! là một lệnh, kết quả của lệnh sẽ trở thành khóa
contextWindow, maxTokenstheo danh sách mô hình ở trênNếu thiếu, omp sẽ mặc định 128000 và 16384 — không đúng với các mô hình của mạng lưới. Dựa vào cửa sổ ngữ cảnh, agent tính toán khi nào cần nén lịch sử
input[text]Các mô hình của mạng lưới nhận văn bản
reasoningtrueĐánh dấu mô hình suy luận: trình cài đặt bật cho DeepSeek V4 Flash và GLM-5.3 Flash, còn mục MiniMax M2.7 thì không có

Dùng khóa trực tiếp là phương án ít rắc rối nhất: omp khởi động được từ mọi môi trường, chỉ cần đóng quyền tệp bằng lệnh chmod 600 ~/.omp/agent/models.yml. Muốn giữ khóa ngoài tệp — hãy ghi tên biến vào apiKey, ví dụ JOINGONKA_API_KEY, rồi export nó trong shell mà bạn chạy omp: đúng trình tự phân giải khóa này được mô tả trong tài liệu dự án.

Trường tùy chọn cost (giá trên một triệu token) chỉ cần thiết để ước tính chi phí phiên trong giao diện omp. Trình cài đặt ghi vào đó mức giá thực tế của cổng tại thời điểm cài; trong cấu hình thủ công có thể bỏ qua trường này — ước tính đó không liên quan đến hóa đơn của bạn, mức tiêu thụ thực tế được hiển thị trong trang quản lý.

Bộ chọn mô hình được ghi dưới dạng provider/model-id. Tên nhà cung cấp được tách theo dấu gạch chéo đầu tiên, vì vậy các ID của mạng lưới có dấu gạch chéo riêng được ghi nguyên như vậy: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731. Thay vì sửa config.yml, có thể gán vai trò ngay từ giao diện — bằng lệnh /model trong phiên hoặc trong trình hướng dẫn omp setup.

Vai trò của mô hình: mô hình nào cho công việc nào

Trong omp, bạn không chỉ chọn một mô hình cho mọi thứ, mà chọn theo vai trò — đây chính là đòn bẩy cấu hình chính. Các vai trò tích hợp cho đối thoại bao gồm: default, smol, slow, plan, commit, task, tiny, memory, advisor và vision. Bạn không cần chỉ định tất cả: các vai trò smol và slow không được đặt sẽ lấy mô hình của vai trò default, các tác nhân phụ không có vai trò task sẽ hoạt động trên mô hình của phiên hiện tại, commit và tiny sẽ theo sau smol. Cấu hình chỉ với một dòng default là hoàn toàn có thể hoạt động.

Việc phân chia các vai trò giữa các mô hình mạng không phải để tiết kiệm chi phí — vì giá của DeepSeek V4 Flash, GLM-5.3 Flash và MiniMax M2.7 là như nhau — mà là vì hành vi và công suất: một mô hình suy luận tốt hơn trong việc lập kế hoạch, mô hình có phản hồi dài tốt hơn trong việc viết lách, và các tác vụ nền không cần thiết phải xếp hàng cùng với nhiệm vụ chính.

Vai tròThực hiện trên đóMô hình mạngLý do
defaultcác bước đi thông thường của tác nhân: đọc, chỉnh sửa, lệnhDeepSeek V4 FlashNgữ cảnh 380K và giới hạn phản hồi 32768 — dự phòng cho các phiên dài với các công cụ; trình cài đặt cũng thiết lập nó
smol, task, committác vụ phụ nhanh, tác nhân phụ, phân tích thay đổi cho commitkhông đặt — theo kế thừa sẽ chuyển đến DeepSeek V4 FlashTất cả chúng đều gọi các công cụ, và một mô hình "giá rẻ" riêng biệt không giúp tiết kiệm gì khi đơn giá là như nhau
slowphân tích sâu: logic phức tạp, tìm kiếm nguyên nhânGLM-5.3 FlashSuy luận trước khi phản hồi; giới hạn phản hồi 8192, và một phần trong đó dành cho suy luận — cho văn bản dài hãy quay lại DeepSeek V4 Flash
planchế độ lập kế hoạchGLM-5.3 FlashKế hoạch — văn bản ngắn, trong đó luồng suy nghĩ quan trọng hơn dung lượng
tinytiêu đề phiên và phân loại dịch vụ — các yêu cầu ngắn không công cụMiniMax M2.7Mô hình có công suất lớn nhất trong mạng, và nền không tranh giành khe cắm với nhiệm vụ chính
advisormô hình thứ hai đọc mỗi bước đi của mô hình chính và chèn nhận xétGLM-5.3 Flash, tùy chọnCố vấn cần khác biệt với người thực thi; được kích hoạt bằng lệnh /advisor on
visioncác tác vụ với hình ảnhkhông đặtCác mô hình mạng là dạng văn bản: hãy để vai trò này cho nhà cung cấp có mô hình vision
# ~/.omp/agent/config.yml
modelRoles:
  default: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
  slow: joingonka/zai-org/GLM-5.3-Flash
  plan: joingonka/zai-org/GLM-5.3-Flash
  tiny: joingonka/MiniMaxAI/MiniMax-M2.7

retry:
  fallbackChains:
    default:
      - joingonka/zai-org/GLM-5.3-Flash

Khối retry.fallbackChains — là biện pháp bảo hiểm cho giờ cao điểm: khi mô hình chính liên tục trả về 429, omp chuyển phần còn lại của lượt cho mục tiếp theo trong chuỗi, và sau khi tạm dừng sẽ quay lại mô hình chính. Khóa của chuỗi có thể là vai trò, mô hình cụ thể hoặc toàn bộ nhà cung cấp (joingonka/*).

Đối với một lần khởi chạy, vai trò được định nghĩa lại bằng cờ: omp --model slow khởi chạy phiên trên mô hình vai trò slow, trong khi --smol, --slow và --plan thay thế mô hình của chính vai trò đó. Trong phiên làm việc, Ctrl+P cuộn qua các mô hình vai trò, và /model mở trình chọn; trong tab Roles tại đó, bạn có thể chỉ định vai trò và các lựa chọn dự phòng của chúng.

Bạn có thể thêm mức độ suy luận vào giá trị vai trò — :low, :medium, :high. Đây là cú pháp của omp, còn việc mô hình cụ thể hiểu mức độ đó như thế nào thì phụ thuộc vào chính mô hình đó: ví dụ với GLM-5.3 Flash, đây là một bộ chuyển đổi nhị phân — chi tiết có trong đánh giá mô hình. Và một chi tiết hữu ích khác: các vai trò có thể được định nghĩa lại cho một kho lưu trữ bằng tệp <repo>/.omp/config.yml với cùng khối modelRoles. Các nhà cung cấp và khóa khi đó vẫn ở trong thư mục chính, vì vậy khóa sẽ không lọt vào kho lưu trữ.

Kiểm tra: điều gì sẽ xảy ra

Trước tiên, hãy đảm bảo rằng omp nhận diện được nhà cung cấp:

omp models joingonka

Kết quả trả về là một bảng gồm ba dòng với cửa sổ ngữ cảnh và giới hạn phản hồi lấy từ models.yml, được làm tròn đến hàng nghìn (output đã lược bớt: omp còn có thêm các cột thinking và images):

joingonka (3)
model                                context  max-out
deepseek-ai/DeepSeek-V4-Flash-0731      380K      33K
MiniMaxAI/MiniMax-M2.7                  200K     8.2K
zai-org/GLM-5.3-Flash                   390K     8.2K

Tiếp theo là một lần chạy thử không giao diện. Hãy đặt vào một thư mục trống một tệp có lỗi rõ ràng và yêu cầu tìm ra lỗi đó:

omp -p "Read calc.py and tell me in one sentence whether it has a bug."

Agent phải tự gọi công cụ đọc tệp và trả lời đúng trọng tâm — kèm theo biểu thức chứa lỗi. Trong lần chạy thử ngày 21 tháng 9 năm 2026 của chúng tôi, vòng lặp này — yêu cầu, gọi công cụ, kết quả, phản hồi — đã diễn ra trơn tru với DeepSeek V4 Flash và GLM-5.3 Flash; còn về MiniMax M2.7 — xem dòng cuối bảng bên dưới.

Kiểm tra thứ ba — từ phía gateway: trong bảng điều khiển ở mục "Sử dụng", yêu cầu sẽ xuất hiện trong phần phân tách "Theo mô hình", và trong khối "Theo khóa", thời gian yêu cầu cuối cùng sẽ được cập nhật. Nếu ở đó trống, nghĩa là omp đang gọi một nhà cung cấp khác: hãy xem cấu hình vai trò bằng lệnh omp config get modelRoles.

Nếu có sự cố xảy ra, chẩn đoán thường đọc được ngay từ thông báo:

Điều hiển thịÝ nghĩaCần làm gì
Bun runtime must be >= 1.3.14omp được cài qua Bun, mà bản thân Bun thì cũCập nhật Bun (bun upgrade) hoặc cài bản binary có sẵn: curl -fsSL https://omp.sh/install | sh -s — --binary
401 Invalid API keyGateway không chấp nhận khóaKiểm tra apiKey: khóa phải đầy đủ, không có khoảng trắng hay dấu ngoặc kép sai. Nếu đó là tên biến — biến đó phải được export trong shell khởi chạy omp
405 Not Allowed và trang HTML của nginxHậu tố bị thiếu trong baseUrlĐịa chỉ phải kết thúc bằng /v1
404 Invalid URL (POST /v1/v1/chat/completions)baseUrl bị thừa đuôiHãy để đúng https://gate.joingonka.ai/v1 — phần còn lại omp tự thêm
400 Model … not found. Available: …Gõ sai id mô hìnhGateway tự liệt kê các định danh khả dụng; danh sách đầy đủ tại GET https://gate.joingonka.ai/v1/models
Warning: models.yml validation failed — custom providers disabled, sau đó No models matching "joingonka"Tệp không vượt qua kiểm tra: gõ sai tên trường bắt buộc hoặc YAML hỏng. omp vẫn tiếp tục chạy với các mô hình tích hợp sẵnNguyên nhân được nêu ở dòng ngay dưới cảnh báo; sửa trường đó rồi chạy lại omp models joingonka
429Khóa đã hết hạn mức yêu cầu theo phút, hoặc mô hình hết dung lượng vào giờ cao điểmomp tự động thử lại với khoảng chờ tăng dần. Nếu kéo dài — hãy đổi mô hình qua /model hoặc cấu hình retry.fallbackChains; tình trạng mạng xem tại trang trạng thái
402Số dư tài khoản đã hết tiềnNạp tiền vào tài khoản trong mục "Thanh toán"; khóa vẫn hoạt động bình thường
Lượt chạy kết thúc mà không có phản hồi hiển thị (ở chế độ -p — dòng trống)Đã quan sát ngày 21 tháng 9 năm 2026 trên MiniMax M2.7 ở các lượt sau khi gọi công cụ: phản hồi nằm trong khối suy luận, và omp hiển thị nó như phần suy nghĩHãy gán vai trò có công cụ cho DeepSeek V4 Flash hoặc GLM-5.3 Flash, còn MiniMax M2.7 để dành cho các tác vụ ngắn không dùng công cụ

Chi phí là bao nhiêu

Công cụ đại lý tiêu tốn token khác với trò chuyện: với mỗi câu lệnh của bạn, omp thêm vào prompt hệ thống và mô tả các công cụ, và một tác vụ thường mất vài lượt. Trong thử nghiệm của chúng tôi, ngay cả với chỉ một công cụ đọc được bật, mỗi lượt đã tiêu tốn khoảng 3,5 nghìn token đầu vào; với bộ công cụ đầy đủ, con số sẽ còn cao hơn. Do đó, chi phí cho mỗi token ở đây là yếu tố quyết định.

Thông qua JoinGonka Gateway, token có giá $0.0069 mỗi triệu token đầu vào và $0.021 mỗi triệu token đầu ra — giá cả giống nhau cho tất cả các mô hình trong mạng lưới và được cập nhật trên trang này từ nguồn trực tiếp.

Kịch bảnMức tiêu thụQua Gateway
Tác vụ đơn lẻ: đọc tệp, tìm lỗitừ 7K tokenmột phần xu
Một ngày làm việc tích cực3-7M tokenmột vài xu
Một tháng phát triển tích cực~150M tokenkhoảng một đô la

Các ước tính trong cột bên phải dựa trên giá tháng 9 năm 2026. Để so sánh — cách bạn có thể thanh toán cho các mô hình trong omp:

Phương thứcMô hình thanh toánGiới hạn là gì
Đăng ký gói coding (đăng nhập qua /login)số tiền cố định mỗi thánghạn ngạch và cửa sổ cập nhật giới hạn từ phía nhà cung cấp
Khóa nhà cung cấp trực tiếptrả theo token theo bảng giá nhà cung cấphóa đơn tăng theo độ dài phiên làm việc; giá phụ thuộc vào mô hình đã chọn
JoinGonka Gatewaytrả theo token, số dư trả trướcmức tiêu thụ hiển thị trong bảng điều khiển; không có đăng ký và hạn ngạch hàng tháng

Dòng trạng thái của omp hiển thị ước tính chi phí phiên làm việc. Nó được tính dựa trên trường cost trong models.yml: trình cài đặt ghi giá cổng vào đó tại thời điểm cài đặt, và giá bằng đô la trong mạng lưới biến động cùng với tỷ giá GNK, vì vậy ước tính chỉ mang tính tham khảo. Mức tiêu thụ chính xác và số dư còn lại — trong bảng điều khiển, tại các mục "Sử dụng" và "Thanh toán". Tại sao lựa chọn mặc định lại là DeepSeek V4 Flash, đã được giải thích chi tiết trong đánh giá mô hình.

Những điều cần cân nhắc trong công việc

Chế độ phê duyệt. Mặc định omp chạy ở chế độ yolo: tự động phê duyệt việc đọc, ghi và chạy lệnh. Trên dự án của bạn thì tiện, nhưng với code của người khác thì nên siết chặt chế độ hoặc chuyển vào container:

omp config set tools.approvalMode write

Ở chế độ write, agent chỉ hỏi quyền khi thực thi lệnh; ở always-ask thì hỏi cả khi ghi. Với một lần chạy, cờ --approval-mode cũng đặt được tương tự. Đây là thuộc tính của chính omp, không phụ thuộc vào nhà cung cấp model.

Pi và omp là họ hàng nhưng cấu hình khác nhau. Cấu hình của công cụ này không truyền sang công cụ kia: thư mục, định dạng và tên trường của chúng đều riêng.

Piomp
Thư mục cấu hình~/.pi/agent~/.omp/agent
Nhà cung cấpmodels.jsonmodels.yml
Model mặc địnhsettings.json: defaultProvider và defaultModelconfig.yml: modelRoles.default
Chọn model theo tác vụ/model trong phiênvai trò modelRoles và chuỗi retry.fallbackChains
Kiểm trapi --list-modelsomp models joingonka
Trình cài đặt--tool pi--tool omp

Nhiều môi trường. Profile có tên (omp --profile work hoặc biến OMP_PROFILE) chuyển toàn bộ cấu hình vào ~/.omp/profiles/<name>/agent — tiện để tách khóa công việc và cá nhân. Thư mục agent hiện tại in ra bằng omp config path.

Nếu cần agent trong editor. omp chạy được trong Zed qua giao thức ACP — vẫn là agent đó với đúng cấu hình đó, không cần khai báo lại nhà cung cấp và vai trò.

omp kết nối với JoinGonka Gateway bằng một lệnh — npx @joingonka/setup --tool omp — hoặc hai tệp: nhà cung cấp joingonka trong ~/.omp/agent/models.yml (baseUrl với /v1, api: openai-completions, khóa jg-…, các mô hình với contextWindow và maxTokens chính xác) và modelRoles.default trong config.yml. Tiếp theo, đòn bẩy chính của omp sẽ hoạt động — các vai trò: DeepSeek V4 Flash cho các lượt thông thường, GLM-5.3 Flash cho phân tích và lập kế hoạch, MiniMax M2.7 cho những tác vụ nhỏ nền, chuỗi fallbackChains cho giờ cao điểm. Kiểm tra bằng omp models joingonka và mục "Sử dụng" trong bảng điều khiển; giá của tất cả các mô hình trong mạng lưới là như nhau, vì vậy các vai trò được chọn dựa trên hành vi, không phải ngân sách.

Muốn tìm hiểu thêm?

Khám phá các phần khác hoặc bắt đầu kiếm GNK ngay bây giờ.

Nhận khóa và token miễn phí →