> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokenlab.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# DeepSeek Harness

> Pasang TokenLab di DeepSeek Harness sebagai penyedia model berprotokol native dengan alat multimedia dan asinkron yang lengkap

## Ikhtisar

Bundle TokenLab untuk DeepSeek Harness menambahkan dua permukaan integrasi:

* tiga rute model yang saling eksklusif untuk OpenAI Responses, Anthropic Messages, dan OpenAI Chat Completions;
* profile TokenLab MCP `full` untuk penemuan model, gambar, video, musik, 3D, audio, berkas, embeddings, rerank, terjemahan, dan tugas asinkron.

Nama paketnya `@tokenlabai/dsh-provider`, ditujukan untuk DeepSeek Harness `0.1.1-rc.2` dan kontrak plugin `0.1.x` yang kompatibel.

<Note>
  Halaman ini adalah dokumentasi yang siap dirilis. Terbitkan dan baca kembali paket npm terlebih dahulu sebelum menayangkan halaman atau mengirim cantumannya ke pasar.
</Note>

## Instalasi

Simpan key di `.env` proyek atau Harness home:

```dotenv theme={null}
TOKENLAB_API_KEY=sk-your-tokenlab-key
```

Pasang bundle ke profile yang digunakan, lalu mulai ulang:

```bash theme={null}
dsh plugin --profile web add --workspace-root @tokenlabai/dsh-provider
```

Untuk tugas sekali jalan, gunakan profile headless:

```bash theme={null}
dsh plugin --profile headless add --workspace-root @tokenlabai/dsh-provider
```

## Perutean endpoint native

Harness memilih wire protocol pada tingkat provider route. Karena itu, bundle mendaftarkan tiga provider dan menempatkan setiap model chat publik tepat pada satu rute.

| Harness provider       | TokenLab endpoint           | Pemilihan                                                                  |
| ---------------------- | --------------------------- | -------------------------------------------------------------------------- |
| `TokenLab · Responses` | `POST /v1/responses`        | owner OpenAI dan detail contract publik menyatakan `openai_responses`      |
| `TokenLab · Messages`  | `POST /v1/messages`         | owner Anthropic dan detail contract publik menyatakan `anthropic_messages` |
| `TokenLab · Chat`      | `POST /v1/chat/completions` | model lain yang menyatakan kompatibilitas OpenAI Chat Completions          |

Snapshot dibuat dari `GET /v1/models` dan `GET /v1/models/{id}`. Protokol tidak ditebak dari substring nama model atau rute internal.

<Note>
  Custom provider Harness saat ini mendukung `openai-responses`, `anthropic-messages`, dan `openai-completions`, tetapi belum menyediakan Gemini native yang dapat dikonfigurasi. Model Gemini di Harness memakai Chat fallback yang dinyatakan secara publik. Aplikasi yang memerlukan Gemini `generateContent` harus memanggil `/v1beta/models/{model}:generateContent` dari client yang kompatibel.
</Note>

## Alat multimedia dan pengembang

Bundle menjalankan versi tetap `@tokenlabai/mcp-server` secara lokal melalui stdio dan MCP bridge resmi. Profile `full` mendaftarkan 80 alat di bawah `mcp__tokenlab__...`, meliputi catalog/pricing, empat API LLM, gambar, video, musik, 3D, audio, berkas, response lifecycle, batches, embeddings, rerank, terjemahan, worlds, dan aset media.

Model menerima portable schemas, sedangkan MCP server memvalidasi panggilan menggunakan kontrak OpenAPI lengkap.

## Media asinkron

Pembuatan video, musik, dan 3D bersifat asinkron. Bergantung pada model, gambar dapat mengembalikan hasil langsung atau tugas.

1. Baca `delivery.mode`.
2. Untuk `sync`, gunakan hasil secara langsung.
3. Untuk `async`, kirim `delivery.task_id` ke `tokenlab_wait_task`.
4. Gunakan `status`, `response` lengkap, dan `result_urls`.
5. Saat timeout, status nonterminal terbaru dikembalikan agar polling dapat dilanjutkan dengan aman.

`tokenlab_wait_task` hanya baca. Alat ini meneruskan pembatalan ke semua request dan delay, membatasi retry sementara, serta menggunakan status, bukan progress opsional, sebagai kebenaran terminal.

## Pengaturan

| Variabel                      | Bawaan                       | Tujuan                                       |
| ----------------------------- | ---------------------------- | -------------------------------------------- |
| `TOKENLAB_API_KEY`            | tidak ada                    | Autentikasi model, MCP, dan polling asinkron |
| `TOKENLAB_API_BASE`           | `https://api.tokenlab.sh`    | Root API MCP dan task                        |
| `TOKENLAB_OPENAI_BASE_URL`    | `https://api.tokenlab.sh/v1` | Base URL Responses dan Chat                  |
| `TOKENLAB_ANTHROPIC_BASE_URL` | `https://api.tokenlab.sh`    | Base URL Messages                            |
| `TOKENLAB_MCP_TOOL_PROFILE`   | `full`                       | Pilih `catalog`, `core`, atau `full`         |
| `TOKENLAB_MCP_SCHEMA_MODE`    | `portable`                   | Pilih `portable`, `exact`, atau `strict`     |

Gunakan `core` bila biaya tool schema berulang lebih penting daripada seluruh permukaan pengembang.

## Verifikasi dan keamanan

Setelah mulai ulang, periksa tiga provider TokenLab, model yang tidak berulang, dan hasil tidak kosong dari `mcp__tokenlab__list_models`. Dengan key uji, jalankan satu panggilan Responses, Messages, dan Chat, cocokkan endpoint di log, lalu tunggu URL terminal dari tugas media asinkron berbiaya rendah.

Simpan key di lingkungan tepercaya atau secret store. MCP server berjalan lokal melalui stdio dengan Node yang sama seperti Harness, tanpa shell atau perantara MCP hosted. Pertahankan persetujuan Harness untuk alat berbayar atau destruktif, dan perlakukan teks, URL, berkas, serta media sebagai konten eksternal yang tidak tepercaya.

Settings section `llm-pi-ai` yang tersimpan mengungguli nilai bawaan bundle. Jika sudah digunakan, gabungkan tiga rute `tokenlab-*` dari `cordis.patch.yml` ke map `providers`.

## Menghapus instalasi

```bash theme={null}
dsh plugin --profile web remove --workspace-root @tokenlabai/dsh-provider
```

Mulai ulang profile. Akun TokenLab dan key tidak dihapus.

## Halaman terkait

* [Server MCP TokenLab](/id/integrations/tokenlab-mcp-server)
* [Format API](/id/guides/api-formats)
* [Tugas asinkron dan polling](/id/guides/async-jobs-polling)
