Hubungkan TeamoRouter ke DeepSeek Harness
DeepSeek Harness (perintah: dsh) mendukung penyedia model yang kompatibel dengan OpenAI. Setelah menyelesaikan panduan ini, Anda dapat menggunakan model seperti deepseek-flash, deepseek-flash-free, deepseek-v4-pro, deepseek-v4-flash, deepseek-v4-flash-free melalui TeamoRouter sambil tetap memakai antarmuka web, sesi, dan kemampuan agen Harness.
Model yang didukung
- DeepSeek:
deepseek-flash(DeepSeek V4.1 Flash),deepseek-flash-free(gratis),deepseek-v4-pro(rilis resmi 13 Agustus),deepseek-v4-flash(rilis resmi 31 Juli),deepseek-v4-flash-free
Akun baru mulai dengan saldo $0 — isi saldo sebelum permintaan pertama. Isi saldo mulai $5. Jika permintaan mengembalikan 402 dengan pesan "wallet balance is insufficient", artinya saldo Anda kosong — base URL dan key sudah benar. Isi saldo lalu coba lagi.
1. Prasyarat
Sebelum memulai, instal Node.js 24 dan siapkan API key TeamoRouter yang valid.
1.1 Instal Node.js 24
DeepSeek Harness memerlukan Node.js 24. npm sudah termasuk dalam Node.js. Unduh installer sesuai sistem operasi dan arsitektur CPU Anda:
Jika memakai mirror Tiongkok, pilih direktori v24.x.x dan unduh installer untuk sistem Anda. Setelah instalasi, buka kembali terminal dan periksa versinya:
node --version
npm --version
Keluaran node --version seharusnya diawali v24..
API key TeamoRouter diawali sk-teamo-. Anda dapat membuatnya di dasbor TeamoRouter.
2. Konfigurasi dan jalankan dalam satu langkah
Anda tidak perlu membuka atau mengedit file konfigurasi secara manual. Ganti sk-teamo-replace-with-your-api-key di blok kode dengan API key TeamoRouter Anda, lalu salin dan jalankan seluruh perintah di terminal. Perintah ini menginstal, mengonfigurasi, dan menjalankan DeepSeek Harness secara otomatis.
macOS / Linux
bash <<'TEAMOROUTER_SETUP'
set -e
npm install -g @deepseek-ai/dsh
TEAMOROUTER_API_KEY="sk-teamo-replace-with-your-api-key"
export TEAMOROUTER_API_KEY
NODE_PATH="$(npm root -g)/@deepseek-ai/dsh/node_modules" node <<'NODE'
const fs = require('fs');
const os = require('os');
const path = require('path');
const yaml = require('js-yaml');
const home = process.env.DSH_HOME || path.join(os.homedir(), '.dsh');
const settingsPath = path.join(home, 'settings.yaml');
fs.mkdirSync(home, { recursive: true });
const current = fs.existsSync(settingsPath)
? (yaml.load(fs.readFileSync(settingsPath, 'utf8')) || {})
: {};
if (fs.existsSync(settingsPath)) {
fs.copyFileSync(settingsPath, settingsPath + '.bak.' + Date.now());
}
current['llm-pi-ai'] ??= {};
current['llm-pi-ai'].providers ??= {};
current['llm-pi-ai'].providers.teamorouter = {
displayName: 'TeamoRouter',
apiKeyEnv: 'TEAMOROUTER_API_KEY',
api: 'openai-completions',
baseURL: 'https://api.teamorouter.cn/v1',
models: [
{ id: 'deepseek-flash', name: 'DeepSeek V4.1 Flash' },
{ id: 'deepseek-flash-free', name: 'DeepSeek V4.1 Flash Free' },
{ id: 'deepseek-v4-pro', name: 'DeepSeek V4 Pro' },
{ id: 'deepseek-v4-flash', name: 'DeepSeek V4 Flash' },
{ id: 'deepseek-v4-flash-free', name: 'DeepSeek V4 Flash Free' },
],
};
current['agent-default-model'] = {
provider: 'teamorouter',
model: 'deepseek-flash-free',
};
fs.writeFileSync(
settingsPath,
yaml.dump(current, { lineWidth: -1, noRefs: true }),
{ mode: 0o600 },
);
const envPath = path.join(home, '.env');
const oldLines = fs.existsSync(envPath)
? fs.readFileSync(envPath, 'utf8').split(/\r?\n/)
: [];
const lines = oldLines.filter(
(line) => line && !line.startsWith('TEAMOROUTER_API_KEY='),
);
lines.push('TEAMOROUTER_API_KEY=' + process.env.TEAMOROUTER_API_KEY);
fs.writeFileSync(envPath, lines.join('\n') + '\n', { mode: 0o600 });
console.log('TeamoRouter configured. Default model: deepseek-flash-free');
NODE
dsh web
TEAMOROUTER_SETUP
Windows PowerShell
npm install -g @deepseek-ai/dsh
$env:TEAMOROUTER_API_KEY = 'sk-teamo-replace-with-your-api-key'
$env:NODE_PATH = "$(npm root -g)\@deepseek-ai\dsh\node_modules"
@'
const fs = require('fs');
const os = require('os');
const path = require('path');
const yaml = require('js-yaml');
const home = process.env.DSH_HOME || path.join(os.homedir(), '.dsh');
const settingsPath = path.join(home, 'settings.yaml');
fs.mkdirSync(home, { recursive: true });
const current = fs.existsSync(settingsPath)
? (yaml.load(fs.readFileSync(settingsPath, 'utf8')) || {})
: {};
if (fs.existsSync(settingsPath)) {
fs.copyFileSync(settingsPath, settingsPath + '.bak.' + Date.now());
}
current['llm-pi-ai'] ??= {};
current['llm-pi-ai'].providers ??= {};
current['llm-pi-ai'].providers.teamorouter = {
displayName: 'TeamoRouter',
apiKeyEnv: 'TEAMOROUTER_API_KEY',
api: 'openai-completions',
baseURL: 'https://api.teamorouter.cn/v1',
models: [
{ id: 'deepseek-flash', name: 'DeepSeek V4.1 Flash' },
{ id: 'deepseek-flash-free', name: 'DeepSeek V4.1 Flash Free' },
{ id: 'deepseek-v4-pro', name: 'DeepSeek V4 Pro' },
{ id: 'deepseek-v4-flash', name: 'DeepSeek V4 Flash' },
{ id: 'deepseek-v4-flash-free', name: 'DeepSeek V4 Flash Free' },
]
};
current['agent-default-model'] = {
provider: 'teamorouter',
model: 'deepseek-flash-free'
};
fs.writeFileSync(
settingsPath,
yaml.dump(current, { lineWidth: -1, noRefs: true }),
{ mode: 0o600 }
);
const envPath = path.join(home, '.env');
const oldLines = fs.existsSync(envPath)
? fs.readFileSync(envPath, 'utf8').split(/\r?\n/)
: [];
const lines = oldLines.filter(
(line) => line && !line.startsWith('TEAMOROUTER_API_KEY=')
);
lines.push('TEAMOROUTER_API_KEY=' + process.env.TEAMOROUTER_API_KEY);
fs.writeFileSync(envPath, lines.join('\n') + '\n', { mode: 0o600 });
console.log('TeamoRouter configured. Default model: deepseek-flash-free');
'@ | node
if ($LASTEXITCODE -eq 0) {
dsh web
}
Perintah ini menginstal DeepSeek Harness, mencadangkan dan menggabungkan konfigurasi yang sudah ada, menyimpan key Anda, mengonfigurasi model TeamoRouter, lalu menjalankan Harness. Perintah ini tidak menghapus tema atau pengaturan lain yang sudah Anda miliki.
Setelah berjalan, terminal menampilkan URL lokal, biasanya http://127.0.0.1:3080. Buka di browser Anda dan buat sesi baru. Untuk menjalankan Harness lagi nanti, jalankan perintah ini dari direktori proyek Anda:
dsh web
Untuk memakai Harness pada proyek tertentu, pindah ke direktori proyek yang sebenarnya sebelum menjalankan dsh web. Jangan menyalin /path/to/my-project apa adanya; itu hanya contoh pengganti.
3. Verifikasi koneksi
Di halaman yang dibuka dsh web, buat sesi baru lalu kirim "Reply with OK only". Jika balasannya OK, Harness sudah memanggil model melalui TeamoRouter. Jika muncul error API key tidak valid, pastikan key tersalin lengkap.
Anda juga bisa memverifikasi dari terminal. Konfigurasi dari langkah 2 hanya diimpor ke konfigurasi yang dipakai dsh web, jadi mode headless harus diberi konfigurasi itu. Tanpanya akan muncul MISSING_CREDENTIAL (memakai rute resmi DeepSeek, bukan TeamoRouter). Key sudah tersimpan di ~/.dsh/.env, jadi tidak perlu export:
dsh headless --patch ~/.dsh/profiles/web/cordis.patch.yml "Reply with OK only"
Windows PowerShell:
dsh headless --patch "$HOME\.dsh\profiles\web\cordis.patch.yml" "Reply with OK only"
Jika terminal mengembalikan OK, koneksi berhasil.
4. Tambah dan ganti model
Untuk memilih dari beberapa model TeamoRouter di Harness, tambahkan ke daftar models yang sama. Contoh ini mencakup DeepSeek V4.1 Flash, versi berbayar dan gratis dari model DeepSeek V4:
Setelah dsh web dijalankan pertama kali, ~/.dsh/settings.yaml diimpor lalu diganti namanya menjadi settings.yaml.imported. Untuk mengubah model nanti, buat lagi ~/.dsh/settings.yaml berisi seluruh konten di bawah (menggantikan daftar model TeamoRouter dan model default), lalu jalankan ulang dsh web.
llm-pi-ai:
providers:
teamorouter:
displayName: TeamoRouter
apiKeyEnv: TEAMOROUTER_API_KEY
api: openai-completions
baseURL: https://api.teamorouter.cn/v1
models:
- id: deepseek-flash
name: DeepSeek V4.1 Flash
- id: deepseek-flash-free
name: DeepSeek V4.1 Flash Free
- id: deepseek-v4-pro
name: DeepSeek V4 Pro
- id: deepseek-v4-flash
name: DeepSeek V4 Flash
- id: deepseek-v4-flash-free
name: DeepSeek V4 Flash Free
agent-default-model:
provider: teamorouter
model: deepseek-flash-free
Ubah agent-default-model.model untuk menentukan model default sesi baru. Sesi yang sudah ada mungkin tetap memakai model aslinya. Setelah mengubah default, muat ulang halaman dan buat sesi baru, atau ganti model secara manual dari pemilih model.
Katalog model TeamoRouter diperbarui secara berkelanjutan. Untuk memastikan ID model terkini, jalankan:
curl https://api.teamorouter.cn/v1/models \
-H "Authorization: Bearer sk-teamo-xxxxxx"
5. Pemecahan masalah
API mengembalikan 401 atau invalid_bearer_token. Pastikan API key lengkap, tidak mengandung spasi tambahan, belum dihapus, dan diawali sk-teamo-. Jika galat berlanjut, buat key baru di dasbor TeamoRouter lalu coba lagi.
MISSING_CREDENTIAL yang menyebut deepseek-official / DEEPSEEK_API_KEY. Proses ini tidak memakai konfigurasi atau key TeamoRouter. Untuk headless dan mode lain, tambahkan --patch ~/.dsh/profiles/web/cordis.patch.yml seperti di langkah 3. Jika dsh web juga menampilkannya, pastikan ~/.dsh/.env berisi TEAMOROUTER_API_KEY=sk-teamo-...; jika tidak ada, jalankan lagi perintah di langkah 2.