证据等级:A1 + A0 + B
- A1:固定版本encoding_dsv4.py可确认 DSML 特殊 Token、模板和参数编码逻辑存在。
- A0(本项目 API Spike):公开 API 返回标准 OpenAI-compatibletool_calls,客户端不需要 DSML 解析器。
- B:DSML 是否减少 Token、降低生成错误或改善推理效率,仍需专用 benchmark。
请先阅读 研究方法与事实校准。创新点索引:I-15
系列:LLM + Harness = Agent
关联:I-14 Reasoning Content 回传策略 · I-13 Byte-Stable Prefix 架构假设
DeepSeek V4 的编码源码中存在 DSML(DeepSeek Markup Language)特殊 Token 和 XML 风格工具调用模板。这说明模型编码层可能使用专门格式表示工具调用。
但客户端 Harness 应以实际公开 API 契约为准。本项目 2026-07-16 的 API Spike 已观察到:
客户端发送 OpenAI-compatible tools / JSON Schema
→ 服务端内部完成编码、模型生成和结果转换
→ 客户端收到标准 tool_calls
因此,以下早期结论已被否定:
tool_calls 数据结构”。DSML 当前最有价值的研究方向,不是让客户端绕过公共协议,而是理解:模型内部工具表示如何影响服务端行为、Token 使用、错误恢复和未来 Provider 能力。
Harness 实际发送和接收的结构,例如:
{
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
},
"required": ["city"]
}
}
}
]
}
响应中的标准结构:
{
"tool_calls": [
{
"id": "call_xxx",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\":\"北京\"}"
}
}
]
}
这是 Provider Adapter 必须支持的契约。
服务端可能执行:
JSON Schema
→ 模型专用 Prompt / Token 表示
→ 模型输出
→ 结构化解析
→ 标准 API Response
客户端通常看不到这层,也不应根据 tokenizer 源码猜测线上服务的全部实现。
encoding_dsv4.py 中的 DSML 模板属于模型输入/输出编码逻辑。它可以证明某种内部表示存在,但不能单独证明:
固定源码中定义了类似:
dsml_token = "|DSML|"
工具调用模板使用 XML 风格标签:
<|DSML|tool_calls>
<|DSML|invoke name="get_weather">
<|DSML|parameter name="city" string="true">北京</|DSML|parameter>
</|DSML|invoke>
</|DSML|tool_calls>
这可以支持以下 A1 结论:
DeepSeek V4 编码实现包含模型专用的结构化工具调用表示。
编码逻辑通过 string="true|false" 区分:
这是一种内部类型编码设计。它可能减少字符串转义复杂度,但“节省多少 Token、是否降低错误率”仍是 B 级推论。
源码中存在 DSML 渲染和解析代码,说明完整编码链路需要处理:
这证明服务端或本地推理栈需要相应转换逻辑,但不能推出每个 API 客户端都要重复实现。
本项目的固定 Spike 记录显示:
输入:标准 OpenAI-compatible tools
输出:标准 tool_calls
客户端:无需 DSML Parser
因此 Provider Adapter 的默认实现应:
tool_calls;name、arguments、id 和 finish_reason;当前 Spike 不能证明:
因此需要 Capability Snapshot,而不是把一次观察写死为永久协议。
Provider Adapter 的优先级:
真实 API 行为
> 官方 API 文档
> 官方 SDK
> 模型编码源码
> 第三方实现
> 工程推论
编码源码用于解释和提出实验,不用于绕过公开契约。
建议 Runtime 内部使用统一类型:
interface ToolCall {
id: string;
name: string;
arguments: unknown;
rawArguments?: string;
provider: string;
protocolVersion: string;
}
Provider Adapter 负责:
内部 Tool Definition
↔ Provider Request
↔ Provider Response
↔ 内部 ToolCall
这样未来即使 Provider 暴露 DSML、JSON、Protobuf 或其他格式,Orchestrator、Policy 和 Tool Runtime 都不需要重写。
无论服务端返回 JSON 还是其他格式,都必须:
结构化格式只降低解析歧义,不提供安全保证。
为了便于诊断和可能的 Prefix Cache 复用:
矩阵:
Flash / Pro
thinking / non-thinking
stream / non-stream
single / parallel / sequential tools
valid / invalid schema
valid / malformed arguments
记录:
finish_reason;只有在可获得相同 Tokenizer 和相同语义表示时,才能比较:
JSON representation token count
DSML representation token count
escaping overhead
schema size
argument size
不能根据字符数量估算 Token 数量,也不能仅凭特殊 Token 名称断言更省。
在固定任务集上比较:
valid structured-call rate
argument schema pass rate
incorrect tool-name rate
truncated call rate
recovery success rate
如果公共 API 已完成 DSML→标准结构转换,客户端只能测量端到端结果,不能直接把收益归因于 DSML。
如果未来使用本地 V4 权重或低层推理接口,需要单独确认:
本地推理结论不能自动外推到托管 API,反之亦然。
错误链条:
Tokenizer 中有 DSML
→ API 一定接收 DSML
→ API 一定返回 DSML
→ 客户端必须写 Parser
每一步都需要独立证据。
直接拼接私有 Token 可能造成:
除非官方提供稳定接口和兼容承诺,否则不应进入产品主路径。
即使 DSML 少用一些 Token,也不代表:
格式指标和任务指标必须分开。
默认路径:OpenAI-compatible Tool API
内部表示:Provider-neutral ToolCall
验证层:Schema + Policy + Permission + Side-effect classification
遥测层:Protocol version + Tool schema fingerprint + Parse errors
实验路径:独立 DSML/tokenizer benchmark,不进入默认客户端执行链路
Provider Capability 建议记录:
provider: deepseek
endpoint: <redacted-host-id>
model: deepseek-v4-pro
observed_at: 2026-07-16
request_tools_format: openai-compatible-json-schema
response_tool_calls_format: openai-compatible
dsml_visible_on_wire: false
source_commit: <fixed-commit>
limitations:
- endpoint/account/time scoped
- local inference not tested
DSML 是值得研究的模型编码机制,但当前客户端架构结论非常明确:
源码用于提出问题,Wire Evidence 决定客户端实现。
← 返回全部 18 篇研究