Yomi APIYomi API帮助文档 返回控制台

English

Yomi API / 帮助文档 / DeepSeek Harness

快速接入 Agent

DeepSeek Harness

DeepSeek Harness(命令 dsh)是 DeepSeek 于 2026 年 8 月 13 日发布的 AI 编程 agent,带 Web 界面、会话管理与工具调用能力。支持 OpenAI 兼容服务商,把配置指向 Yomi API 即可使用 deepseek-v4-pro 等模型。

前置准备

  • Node.js:24(dsh 硬性要求,npm 随 Node 自带)。装完重开终端,用 node --version 验证,输出应以 v24 开头。
  • API 密钥:在控制台「秘钥管理」创建并复制保存,密钥仅创建时可见,sk- 开头。

安装

通过 npm 全局安装,macOS、Linux 与 Windows 命令相同:

npm install -g @deepseek-ai/dsh

一步配置并启动

无需手改配置文件:把下面命令中的 sk-你的密钥 换成真实密钥后,整段复制运行即可。脚本会自动安装 dsh、备份并合并已有的 ~/.dsh/settings.yaml(不会删除主题等个人配置)、把密钥写入 ~/.dsh/.env(权限 0600),最后自动启动 dsh web。

macOS / Linux

bash <<'YOMI_SETUP'
set -e

npm install -g @deepseek-ai/dsh
YOMI_API_KEY="sk-你的密钥"
export YOMI_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.yomiapi = {
  displayName: 'Yomi API',
  apiKeyEnv: 'YOMI_API_KEY',
  api: 'openai-completions',
  baseURL: 'https://api.yomiapi.com/v1',
  models: [
    { id: 'deepseek-v4-pro', name: 'DeepSeek V4 Pro' },
    { id: 'deepseek-v4-flash', name: 'DeepSeek V4 Flash' },
    { 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' },
    { id: 'gpt-5.4', name: 'GPT 5.4' },
    { id: 'kimi-k3', name: 'Kimi K3' },
    { id: 'glm-5.2', name: 'GLM 5.2' },
  ],
};
current['agent-default-model'] = {
  provider: 'yomiapi',
  model: 'deepseek-v4-pro',
};

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('YOMI_API_KEY='),
);
lines.push('YOMI_API_KEY=' + process.env.YOMI_API_KEY);
fs.writeFileSync(envPath, lines.join('\n') + '\n', { mode: 0o600 });

console.log('Yomi API configured. Default model: deepseek-v4-pro');
NODE

dsh web
YOMI_SETUP

Windows PowerShell

在 PowerShell 中运行同样内容的脚本:

npm install -g @deepseek-ai/dsh

$env:YOMI_API_KEY = 'sk-你的密钥'
$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.yomiapi = {
  displayName: 'Yomi API',
  apiKeyEnv: 'YOMI_API_KEY',
  api: 'openai-completions',
  baseURL: 'https://api.yomiapi.com/v1',
  models: [
    { id: 'deepseek-v4-pro', name: 'DeepSeek V4 Pro' },
    { id: 'deepseek-v4-flash', name: 'DeepSeek V4 Flash' },
    { 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' },
    { id: 'gpt-5.4', name: 'GPT 5.4' },
    { id: 'kimi-k3', name: 'Kimi K3' },
    { id: 'glm-5.2', name: 'GLM 5.2' },
  ],
};
current['agent-default-model'] = {
  provider: 'yomiapi',
  model: 'deepseek-v4-pro',
};

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('YOMI_API_KEY='),
);
lines.push('YOMI_API_KEY=' + process.env.YOMI_API_KEY);
fs.writeFileSync(envPath, lines.join('\n') + '\n', { mode: 0o600 });

console.log('Yomi API configured. Default model: deepseek-v4-pro');
'@ | node

if ($LASTEXITCODE -eq 0) {
  dsh web
}

脚本跑完后终端会显示本地地址(通常 http://127.0.0.1:3080),浏览器打开新建会话即可。以后使用:cd 到项目目录后运行 dsh web。

验证连通

export YOMI_API_KEY="sk-你的密钥"
dsh --profile headless "Reply with OK only"

返回 OK 即 dsh 已通过 Yomi API 成功调用模型。

手动配置与模型切换

也可以手动编辑 ~/.dsh/settings.yaml。完整示例:

llm-pi-ai:
  providers:
    yomiapi:
      displayName: Yomi API
      apiKeyEnv: YOMI_API_KEY
      api: openai-completions
      baseURL: https://api.yomiapi.com/v1
      models:
        - id: deepseek-v4-pro
          name: DeepSeek V4 Pro
        - id: deepseek-v4-flash
          name: DeepSeek V4 Flash
        - 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
        - id: gpt-5.4
          name: GPT 5.4
        - id: kimi-k3
          name: Kimi K3
        - id: glm-5.2
          name: GLM 5.2

agent-default-model:
  provider: yomiapi
  model: deepseek-v4-pro

修改 agent-default-model.model 即可切换默认模型(已有会话可能沿用原模型,改完刷新页面、新建会话生效);会话中也可从模型选择器手动切换。模型目录持续更新,以控制台「模型服务」(模型广场)或以下命令返回为准:

curl https://api.yomiapi.com/v1/models -H "Authorization: Bearer sk-你的密钥"
默认模型推荐 deepseek-v4-pro(8 月 13 日官方新旗舰);追求更快更省可换 deepseek-v4-flash;gpt-5.6 系列、Kimi K3、GLM 5.2 同配可用。

故障排查

401 / invalid_bearer_token

检查密钥完整、无多余空格、sk- 开头、未在控制台删除;仍报错就重建密钥。

dsh 命令找不到

重开终端;仍不行检查 npm 全局 bin 目录是否在 PATH(npm bin -g)。

node --version 不是 v24 开头

dsh 要求 Node.js 24,换装后再试。