⚙️ SenseNova 模型接入配置
商汤的模型服务,兼容 OpenAI 和 Anthropic 两套协议。agent 都不默认支持,需要手动写 provider 配置。
🔌 接口
认证走 Authorization: Bearer $SENSENOVA_API_KEY(sk- 开头,控制台 token-plan 申请)。每个 agent 单独一把 key,方便监控和轮换。
| 协议 | Endpoint | baseURL 填什么 |
|---|---|---|
| OpenAI Chat Completions | POST /v1/chat/completions | https://token.sensenova.cn/v1,带 /v1 |
| OpenAI Responses | POST /v1/responses | 同上,带 /v1 |
| OpenAI 图像 | POST /v1/images/generations、/v1/images/edits | 同上,带 /v1 |
| Anthropic Messages | POST /v1/messages | https://token.sensenova.cn,不带 /v1 |
| 模型列表 | GET /v1/models | — |
最大的坑:OpenAI 侧要带
/v1,Anthropic 侧不能带。Anthropic SDK 自动拼/v1/messages,重复了变成.../v1/v1/messages,直接 404。
📋 模型清单
官方目前共 7 个模型(文档侧栏与 models-overview 一致,2026-09-26 核对)。
🤖 对话 / Agent 模型
配进 agent 对话槽位用这批。
| Model ID | 定位 | 输入 | 上下文 | 单次输出上限 |
|---|---|---|---|---|
sensenova-6.8-flash-lite | 轻量多模态 agent 模型,数据分析 + 复杂信息呈现 | text, image | 262144 | 65536 |
deepseek-v4-flash | DeepSeek 高效经济型通用模型,V4 Flash 0731 GA | text | 1M | 64K(非推理模式默认 8K) |
deepseek-flash | DeepSeek V4.1 Flash,兼顾推理效率与成本 | text, image, video | 1M | 393216(默认 131072) |
glm-5.2 | 智谱旗舰开源,长程 coding + 复杂工程 | text | 1M | 128K(默认 64K) |
kimi-k3 | 月之暗面旗舰开源,2.8T 参数,原生视觉 agent | text, image | 1M | 1024*1024 - prompt_tokens(默认 128K) |
全部支持 tools / json_mode / reasoning,量化 fp8。实际能力以 GET /v1/models 返回的 supported_features / input_modalities 为准。
容易搞错的几处:
deepseek-flash才是 V4.1,ID 里没有 “v4.1”;deepseek-v4-flash是 V4 Flash 0731 GA- video 输入只在 Chat Completions 接口支持,Anthropic Messages 和 Responses API 都不收 video
- Kimi K3 用
max_completion_tokens字段,不是max_tokens deepseek-flash单次输出上限 393216(384K),比其他都高max_tokens超了不会报错,直接finish_reason: length截断,内容可能只剩一半
🖼️ 图像模型(U 系列)
不能配进 agent 的对话槽位——U 系列只做同步图像生成和编辑。
| Model ID | 定位 |
|---|---|
sensenova-u1.5-lite | 生成 + 编辑一体,支持参考图,构图 / 光影 / 材质 / 细节更好 |
sensenova-u1.5-fast | 加速版,即时创作、高效修改 |
都是 Neo-unify 架构,走独立接口:文生图 POST /v1/images/generations,编辑 POST /v1/images/edits。
关键参数(两版相同):
size:宽高必须是 32 的倍数,512–4096,长宽比不超过 3:1。推荐2048x2048、2720x1536、1536x2720、1664x2496、2496x1664(2K),4096x4096(4K)n:只支持1watermark:每次都显式指定。公测期false免费,官方说明以后可能改默认值收费response_format:b64_json(默认)或url。url 返回的链接 24 小时过期,过期不可访问output_format:png(默认)/jpeg/webpprompt_extend:默认true自动扩写 prompt,失败自动回退原文
这两个不是 Chat Completions 接口,也不接受 image 输入。
📡 接入状态
| agent | 协议 | 配置位置 | 状态 |
|---|---|---|---|
| OpenCode | OpenAI | ~/.config/opencode/opencode.json | 已配置 |
| harness | OpenAI | $DSH_HOME/settings.yaml | 待接 |
OpenCode
配置文件 ~/.config/opencode/opencode.json。Windows 是 C:\Users\你\.config\opencode\opencode.json——注意是 .config 不是 %AppData%,目录不存在要手动建。
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"sense-nova": {
"npm": "@ai-sdk/openai-compatible",
"name": "SenseNova",
"options": {
"baseURL": "https://token.sensenova.cn/v1",
"apiKey": "sk-xxx"
},
"models": {
"sensenova-6.8-flash-lite": {
"name": "SenseNova 6.8 Flash-Lite",
"modalities": { "input": ["text", "image"], "output": ["text"] },
"limit": { "context": 262144, "output": 65536 }
},
"deepseek-v4-flash": {
"name": "DeepSeek V4 Flash",
"modalities": { "input": ["text"], "output": ["text"] },
"limit": { "context": 1000000, "output": 65536 }
},
"deepseek-flash": {
"name": "DeepSeek V4.1 Flash",
"modalities": { "input": ["text", "image"], "output": ["text"] },
"limit": { "context": 1000000, "output": 393216 }
},
"glm-5.2": {
"name": "GLM-5.2",
"modalities": { "input": ["text"], "output": ["text"] },
"limit": { "context": 1000000, "output": 131072 }
},
"kimi-k3": {
"name": "Kimi K3",
"modalities": { "input": ["text", "image"], "output": ["text"] },
"limit": { "context": 1000000, "output": 131072 }
}
}
}
}
}只需把 sk-xxx 换成你的 key。改完必须重启 OpenCode,只保存不生效。日常换模型用 /models 选,不用改这个文件。
两点说明:
deepseek-v4-flash的context: 1000000不是 SenseNova 文档写的——SenseNova 没标这个模型的上下文。取的是 DeepSeek 自己的模型元数据(OpenRouter 上deepseek/deepseek-v4-flash的context_length)。请求报 400 就调小- U 系列不在这里配(
sensenova-u1.5-lite/fast走图像接口,不是对话模型)。deepseek-flash支持 video 输入,但 video 只有原生 API 支持,不走 OpenCode
harness
DeepSeek 官方的开源 agent harness,CLI 叫 dsh,基于 Cordis 的 ” 一切皆插件 ” 架构。开发者预览版,会有破坏性变更。
npx @deepseek-ai/dsh web # Web UI 默认 http://127.0.0.1:3080配置在 $DSH_HOME/settings.yaml(设置页顶部「打开配置文件」可直接打开)。密钥单独存 $DSH_HOME/.credentials.yaml,只写不读,页面只会拿到脱敏描述符。
模型变更下一次请求就生效,不用重启。
1️⃣ 方式一:模型页表单
设置 → 模型 → 添加自定义提供方:
| 字段 | 值 |
|---|---|
| Provider ID | sensenova(小写,永久不可改) |
| 显示名称 | SenseNova |
| API 地址 | https://token.sensenova.cn/v1 |
| API 协议 | openai-completions |
| API 密钥 | sk-xxx |
| 模型 | 至少一个,填 ID / 显示名 / 上下文窗口 / 最大输出 |
也能在模型目录里点「获取可用模型」探测,它调 GET /models 返回可勾选列表。探测失败或列表为空就手动填 ID,效果完全一样。
Provider ID 是永久的——请求、已保存会话、模型默认值、凭据引用都用它。要改名字只能新建再删旧的。
每个模型填什么
| Model ID | 显示名称 | 上下文窗口 | 最大输出 |
|---|---|---|---|
sensenova-6.8-flash-lite | SenseNova 6.8 Flash-Lite | 262144 | 65536 |
deepseek-v4-flash | DeepSeek V4 Flash | 1000000 | 65536 |
deepseek-flash | DeepSeek V4.1 Flash | 1000000 | 393216 |
glm-5.2 | GLM-5.2 | 1000000 | 131072 |
kimi-k3 | Kimi K3 | 1000000 | 131072 |
来源:
sensenova-6.8-flash-lite的数字全部来自 SenseNova 官方文档deepseek-v4-flash的 1M 上下文 SenseNova 文档没写,取的是 DeepSeek 自己的模型元数据(OpenRouter 上deepseek/deepseek-v4-flash的context_length: 1048576)。输出 65536 是 SenseNova 文档标的max_tokens上限deepseek-flash的 393216、glm-5.2的 131072 都是 SenseNova 文档标的 range 上限kimi-k3的 131072 是文档标的默认值,硬上限其实是1024*1024 - prompt_tokens——大上下文请求的实际输出空间比 128K 大,这里填保守值
表单里没有图片输入和推理等级的字段,那两个只能走方式二。表单和 $DSH_HOME/settings.yaml 是同一份文档:先用表单填基础字段,再手写追加高级字段,两边不冲突。
harness 内置的
moonshotai/zai是直连月之暗面和智谱官方端点,不是走 SenseNova。用 SenseNova 供的 Kimi、GLM 还是得建自定义提供方。
2️⃣ 方式二:settings.yaml
表单只开放:密钥、显示名、API 地址、API 协议、每个模型的 ID / 显示名 / 上下文窗口 / 最大输出。图片输入、推理等级、请求兼容开关都不在表单里,必须写文件:
llm-pi-ai:
providers:
sensenova:
apiKeyEnv: SENSENOVA_API_KEY
api: openai-completions
baseURL: https://token.sensenova.cn/v1
compat:
supportsDeveloperRole: false
maxTokensField: max_tokens
models:
- id: sensenova-6.8-flash-lite
input: [text, image]
reasoningEfforts:
off: none
high: high
max: max
- id: deepseek-v4-flash
- id: deepseek-flash
input: [text, image]
- id: glm-5.2
- id: kimi-k3
input: [text, image]用表单填的话密钥进 .credentials.yaml;手写这份 YAML 就用 apiKeyEnv 指向环境变量。
四个字段为什么必须写:
input: [text, image]:手动录入的模型一律按纯文本对待,不声明的话附图片在发送前就被拒,还会点名是哪个模型compat.supportsDeveloperRole: false:pi-ai 不认识 SenseNova 的地址,会按 OpenAI 的规矩发请求——推理模型的系统提示词走role: "developer",而 SenseNova 只认system/user/assistant/toolcompat.maxTokensField: max_tokens:OpenAI 默认写max_completion_tokens,SenseNova 认max_tokens(只有 Kimi K3 反过来用max_completion_tokens)reasoningEfforts:手动录入的模型不声明等级就出不来推理菜单。SenseNova 关闭思考是reasoning_effort: "none",不是省略参数,所以off要写none,不能留空
其他四个模型也支持 reasoning,需要推理菜单就把同一段 reasoningEfforts 复制过去。路由级的 compat / defaultInput 是模型的默认值,模型自己的逐字段胜出。所有开关都必须给值——冒号后留空(supportsDeveloperRole:)会被拒而不是忽略。
🩹 排错
MISSING_CREDENTIAL:用模型页存密钥,或提供被引用的环境变量UNKNOWN_MODEL:选了没配的模型,或自定义提供方里漏了这个模型- 「获取可用模型」401:密钥错
- 「获取可用模型」提示既没有
data数组也没有models对象:探测读不到这个端点的列表格式,手动填 ID - 密钥和地址都对,但每个请求都被拒:请求形状跟 OpenAI 不一样。先在路由上设
compat.supportsDeveloperRole: false和compat.maxTokensField: max_tokens - 只有推理模型失败:系统提示词走
developer角色被拒。设compat.supportsDeveloperRole: false - 手动录入的模型没有推理等级菜单:没声明等级。加
reasoningEfforts - 图片发送前被拒:该模型没声明图片模态。加
input: [text, image] - 网关拒绝带图片的请求:声明了它实际不提供的能力。从
input或defaultInput去掉image,然后开新会话——已附的图片留在会话日志里,旧会话会一直重复失败
🎛️ 推荐参数(Flash-Lite)
max_tokens:标准任务 2048–4096;reasoning 模式 ≥4096。reasoning 内容和正式输出共享max_tokens配额stream: true:长文本生成推荐开,防超时temperature:默认 1;创作 1.3–1.5;代码生成 0.2–0.5- 多轮对话:历史只回传
content,不要回传reasoning,省 token thinking:enabled/disabled,默认 enabledreasoning_effort:low/medium/high/max,默认 high,none等于关闭- reasoning 模式和 JSON mode 不建议同时开
- 结构化输出用
response_format: {"type": "json_object"},prompt 里要显式出现json并给示例
💰 额度与限流
2026-08-28 起改成积分制,账号里有两类:
- 通用积分:所有模型共用
- Flash-Lite 专属积分:只用于 Flash-Lite 系列;用 Flash-Lite 时先扣专属,扣完回退扣通用
公测额度:滚动 5 小时 60,000 + 滚动周 600,000,两层并存。公测返还:Flash-Lite 每消耗 1 专属积分返还 1 通用积分(按日汇总、按小时到账、30 天有效、不占滚动额度、不自动解锁新模型)。从通用池扣的不参与返还。
429 = quota_exceeded_error,指数退避。其他:400 invalid_request_error / failed_precondition_error,403 permission_denied_error,404 not_found_error(模型 ID 错或已下线),408 canceled_error,500 internal_server_error。
🕘 状态记录
- 2026-09-26:harness 方式一补上每个模型的上下文窗口和最大输出。
deepseek-v4-flash的 1M 上下文从 OpenRouter 上的 DeepSeek 模型元数据拿到,SenseNova 文档没写,两处都标了来源。 - 2026-09-26:补上 harness 一节。harness = DeepSeek 官方的
dsh(deepseek-ai/deepseek-harness,” 一切皆插件 ”)。配置在$DSH_HOME/settings.yaml,模型变更下一次请求生效不用重启。 - 2026-09-26:OpenCode 配置块的
models从 1 个补到 5 个对话模型,limit按各模型参数表填;deepseek-v4-flash上下文官方未标,标为保守估值待核实。 - 2026-09-26:模型清单补齐到官方全量 7 个,逐个核对参数表(上下文、输出上限、输入模态、特性),不再只抄 overview 的描述列。
- 2026-09-26:只保留 OpenCode 和 harness,删掉 Claude Code 和其他 agent。
- 2026-09-26:删掉安装步骤,各 agent 只留配置文件位置和可直接粘贴的配置块,模板只需替换
apiKey。 - 2026-09-26:按官方文档
platform.sensenova.cn/docs全面重写。修正三处——① baseURL 规则只适用于 OpenAI 侧,Anthropic 侧不能带/v1;②context_length官方 262144,之前抄的 256000;③ 模型 ID 清单,deepseek-flash才是 V4.1,之前记的deepseek-v4-pro不存在。
🔗 相关
- NVIDIA NIM 配置(对比参考):NVIDIA NIM 模型接入配置
- harness 桌面版客户端:DeepSeek-Harness桌面版
- 官方文档:https://platform.sensenova.cn/docs
- 控制台:https://platform.sensenova.cn/console/keys
- DeepSeek Harness:https://deepseek.com/harness
- DeepSeek Harness 文档:https://deepseek-harness.github.io/deepseek-harness/
- DeepSeek Harness 源码:https://github.com/deepseek-ai/deepseek-harness