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, gpt-6-astra, gpt-6-sol, gpt-6-luna, dan gpt-5.6-sol 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 - GPT:
gpt-6-astra,gpt-6-sol,gpt-6-luna,gpt-5.6-sol,gpt-5.6-luna,gpt-5.6-terra,gpt-5.5
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.com/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' },
{ id: 'gpt-6-astra', name: 'GPT 6 Astra' },
{ id: 'gpt-6-sol', name: 'GPT 6 Sol' },
{ id: 'gpt-6-luna', name: 'GPT 6 Luna' },
{ id: 'gpt-5.6-sol', name: 'GPT 5.6 Sol' },
{ id: 'gpt-5.6-luna', name: 'GPT 5.6 Luna' },
{ id: 'gpt-5.6-terra', name: 'GPT 5.6 Terra' },
{ id: 'gpt-5.5', name: 'GPT 5.5' },
],
};
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.com/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' },
{ id: 'gpt-6-astra', name: 'GPT 6 Astra' },
{ id: 'gpt-6-sol', name: 'GPT 6 Sol' },
{ id: 'gpt-6-luna', name: 'GPT 6 Luna' },
{ id: 'gpt-5.6-sol', name: 'GPT 5.6 Sol' },
{ id: 'gpt-5.6-luna', name: 'GPT 5.6 Luna' },
{ id: 'gpt-5.6-terra', name: 'GPT 5.6 Terra' },
{ id: 'gpt-5.5', name: 'GPT 5.5' }
]
};
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
Kirim permintaan minimal dalam mode headless untuk memverifikasi konfigurasi, API key, dan model:
export TEAMOROUTER_API_KEY="sk-teamo-xxxxxx"
dsh --profile headless "Reply with OK only"
Jika terminal mengembalikan OK, berarti DeepSeek Harness berhasil memanggil model melalui TeamoRouter. Jalankan dsh web untuk membuka antarmuka web.
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, serta beberapa model GPT:
llm-pi-ai:
providers:
teamorouter:
displayName: TeamoRouter
apiKeyEnv: TEAMOROUTER_API_KEY
api: openai-completions
baseURL: https://api.teamorouter.com/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
- id: gpt-6-astra
- id: gpt-6-sol
- id: gpt-6-luna
name: GPT 6 Astra
- id: gpt-5.6-sol
name: GPT 5.6 Sol
- id: gpt-5.6-luna
name: GPT 5.6 Luna
- id: gpt-5.5
name: GPT 5.5
- id: gpt-5.4
name: GPT 5.4
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.com/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.