@chenlongapps/opencode-token-usage 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/README.zh-CN.md +4 -4
- package/ROADMAP.md +6 -0
- package/dist/pricing.js +26 -8
- package/docs/pricing.md +14 -9
- package/docs/verification.md +17 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
<p align="center">A session-tree token usage monitor for OpenCode 2.</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<a href="https://www.npmjs.com/package/@chenlongapps/opencode-token-usage"><img alt="npm" src="https://img.shields.io/npm/v/%40chenlongapps%2Fopencode-token-usage?style=flat-square&logo=npm" /></a>
|
|
7
|
-
<a href="https://opencode.ai/"><img alt="OpenCode 2" src="https://img.shields.io/badge/OpenCode-2-5A67D8?style=flat-square" /></a>
|
|
8
|
-
<a href="https://github.com/chenlongapps/opencode-token-usage/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/chenlongapps/opencode-token-usage/ci.yml?style=flat-square&branch=main&label=ci" /></a>
|
|
9
|
-
<a href="LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-yellow?style=flat-square" /></a>
|
|
6
|
+
<a href="https://www.npmjs.com/package/@chenlongapps/opencode-token-usage" target="_blank" rel="noopener noreferrer"><img alt="npm" src="https://img.shields.io/npm/v/%40chenlongapps%2Fopencode-token-usage?style=flat-square&logo=npm" /></a>
|
|
7
|
+
<a href="https://opencode.ai/" target="_blank" rel="noopener noreferrer"><img alt="OpenCode 2" src="https://img.shields.io/badge/OpenCode-2-5A67D8?style=flat-square" /></a>
|
|
8
|
+
<a href="https://github.com/chenlongapps/opencode-token-usage/actions/workflows/ci.yml" target="_blank" rel="noopener noreferrer"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/chenlongapps/opencode-token-usage/ci.yml?style=flat-square&branch=main&label=ci" /></a>
|
|
9
|
+
<a href="LICENSE" target="_blank" rel="noopener noreferrer"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-yellow?style=flat-square" /></a>
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
<p align="center">
|
package/README.zh-CN.md
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
<p align="center">面向 OpenCode 2 的会话树 token 用量监视器。</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<a href="https://www.npmjs.com/package/@chenlongapps/opencode-token-usage"><img alt="npm" src="https://img.shields.io/npm/v/%40chenlongapps%2Fopencode-token-usage?style=flat-square&logo=npm" /></a>
|
|
7
|
-
<a href="https://opencode.ai/"><img alt="OpenCode 2" src="https://img.shields.io/badge/OpenCode-2-5A67D8?style=flat-square" /></a>
|
|
8
|
-
<a href="https://github.com/chenlongapps/opencode-token-usage/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/chenlongapps/opencode-token-usage/ci.yml?style=flat-square&branch=main&label=ci" /></a>
|
|
9
|
-
<a href="LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-yellow?style=flat-square" /></a>
|
|
6
|
+
<a href="https://www.npmjs.com/package/@chenlongapps/opencode-token-usage" target="_blank" rel="noopener noreferrer"><img alt="npm" src="https://img.shields.io/npm/v/%40chenlongapps%2Fopencode-token-usage?style=flat-square&logo=npm" /></a>
|
|
7
|
+
<a href="https://opencode.ai/" target="_blank" rel="noopener noreferrer"><img alt="OpenCode 2" src="https://img.shields.io/badge/OpenCode-2-5A67D8?style=flat-square" /></a>
|
|
8
|
+
<a href="https://github.com/chenlongapps/opencode-token-usage/actions/workflows/ci.yml" target="_blank" rel="noopener noreferrer"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/chenlongapps/opencode-token-usage/ci.yml?style=flat-square&branch=main&label=ci" /></a>
|
|
9
|
+
<a href="LICENSE" target="_blank" rel="noopener noreferrer"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-yellow?style=flat-square" /></a>
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
<p align="center">
|
package/ROADMAP.md
CHANGED
|
@@ -82,6 +82,12 @@ Steps 1,234
|
|
|
82
82
|
* [x] 已收录模型永久保留,后续持续核验价格和来源
|
|
83
83
|
* [x] 通过单元测试与 OpenCode 2.0.11 打包集成验证
|
|
84
84
|
|
|
85
|
+
## v0.3.2 — GPT-6 Sol / Luna 定价
|
|
86
|
+
|
|
87
|
+
* [x] 根据 OpenAI 官方 Standard 价格补全两款模型的短、长上下文费率
|
|
88
|
+
* [x] 将 OpenAI 长上下文切换边界校正为传入 token 超过 272,000
|
|
89
|
+
* [x] 通过类型检查、45 项自动化测试及构建
|
|
90
|
+
|
|
85
91
|
## v0.4.0 — 用量命令
|
|
86
92
|
|
|
87
93
|
目标:按需提供比侧边栏更详细的 token 信息。
|
package/dist/pricing.js
CHANGED
|
@@ -2,48 +2,62 @@ export const OFFICIAL_PRICE_SNAPSHOT = {
|
|
|
2
2
|
verified: "2026-09-23",
|
|
3
3
|
newModelCutoff: "2026-03-22",
|
|
4
4
|
entries: [
|
|
5
|
-
// OpenAI standard processing.
|
|
6
|
-
//
|
|
5
|
+
// OpenAI standard processing. Tier sizes are exclusive thresholds, so
|
|
6
|
+
// 272,000 implements the official ">272K input tokens" boundary.
|
|
7
7
|
{
|
|
8
8
|
id: "gpt-5.5", released: "2026-04-23", source: "https://developers.openai.com/api/docs/pricing",
|
|
9
9
|
prices: [
|
|
10
10
|
{ input: 5, output: 30, cache: { read: 0.5 } },
|
|
11
|
-
{ tier: { type: "context", size:
|
|
11
|
+
{ tier: { type: "context", size: 272_000 }, input: 10, output: 45, cache: { read: 1 } },
|
|
12
12
|
],
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
id: "gpt-5.5-pro", released: "2026-04-23", source: "https://developers.openai.com/api/docs/pricing",
|
|
16
16
|
prices: [
|
|
17
17
|
{ input: 30, output: 180 },
|
|
18
|
-
{ tier: { type: "context", size:
|
|
18
|
+
{ tier: { type: "context", size: 272_000 }, input: 60, output: 270 },
|
|
19
19
|
],
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
id: "gpt-5.6-sol", released: "2026-07-09", source: "https://developers.openai.com/api/docs/pricing",
|
|
23
23
|
prices: [
|
|
24
24
|
{ input: 4, output: 20, cache: { read: 0.4, write: 5 } },
|
|
25
|
-
{ tier: { type: "context", size:
|
|
25
|
+
{ tier: { type: "context", size: 272_000 }, input: 8, output: 30, cache: { read: 0.8, write: 10 } },
|
|
26
26
|
],
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
id: "gpt-5.6-terra", released: "2026-07-09", source: "https://developers.openai.com/api/docs/pricing",
|
|
30
30
|
prices: [
|
|
31
31
|
{ input: 2, output: 12, cache: { read: 0.2, write: 2.5 } },
|
|
32
|
-
{ tier: { type: "context", size:
|
|
32
|
+
{ tier: { type: "context", size: 272_000 }, input: 4, output: 18, cache: { read: 0.4, write: 5 } },
|
|
33
33
|
],
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
id: "gpt-5.6-luna", released: "2026-07-09", source: "https://developers.openai.com/api/docs/pricing",
|
|
37
37
|
prices: [
|
|
38
38
|
{ input: 0.2, output: 1.2, cache: { read: 0.02, write: 0.25 } },
|
|
39
|
-
{ tier: { type: "context", size:
|
|
39
|
+
{ tier: { type: "context", size: 272_000 }, input: 0.4, output: 1.8, cache: { read: 0.04, write: 0.5 } },
|
|
40
40
|
],
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
id: "gpt-6-astra", released: "2026-09-04", source: "https://developers.openai.com/api/docs/pricing",
|
|
44
44
|
prices: [
|
|
45
45
|
{ input: 10, output: 50, cache: { read: 1, write: 12.5 } },
|
|
46
|
-
{ tier: { type: "context", size:
|
|
46
|
+
{ tier: { type: "context", size: 272_000 }, input: 20, output: 75, cache: { read: 2, write: 25 } },
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: "gpt-6-sol", released: "2026-09-22", source: "https://developers.openai.com/api/docs/pricing",
|
|
51
|
+
prices: [
|
|
52
|
+
{ input: 2, output: 10, cache: { read: 0.2, write: 2.5 } },
|
|
53
|
+
{ tier: { type: "context", size: 272_000 }, input: 4, output: 15, cache: { read: 0.4, write: 5 } },
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: "gpt-6-luna", released: "2026-09-22", source: "https://developers.openai.com/api/docs/pricing",
|
|
58
|
+
prices: [
|
|
59
|
+
{ input: 0.1, output: 0.5, cache: { read: 0.01, write: 0.125 } },
|
|
60
|
+
{ tier: { type: "context", size: 272_000 }, input: 0.2, output: 0.75, cache: { read: 0.02, write: 0.25 } },
|
|
47
61
|
],
|
|
48
62
|
},
|
|
49
63
|
// The official ChatGPT SKU `chat-latest`. OpenRouter serves it under the
|
|
@@ -80,6 +94,10 @@ export const OFFICIAL_PRICE_SNAPSHOT = {
|
|
|
80
94
|
source: "https://platform.claude.com/docs/en/about-claude/pricing",
|
|
81
95
|
prices: [{ input: 10, output: 50, cache: { read: 0.25, write: 12.5 } }],
|
|
82
96
|
},
|
|
97
|
+
{
|
|
98
|
+
id: "claude-opus-5-5", aliases: ["claude-opus-5.5"], released: "2026-09-22", source: "https://platform.claude.com/docs/en/about-claude/pricing",
|
|
99
|
+
prices: [{ input: 4, output: 20, cache: { read: 0.2, write: 5 } }],
|
|
100
|
+
},
|
|
83
101
|
// Google paid Standard API rates. Cache storage is billed separately by
|
|
84
102
|
// time and is intentionally not represented as a cache-write token rate.
|
|
85
103
|
{
|
package/docs/pricing.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 内置官方价格快照
|
|
2
2
|
|
|
3
|
-
v0.3.0
|
|
3
|
+
插件自 v0.3.0 起,在 OpenCode 当前模型目录没有可用于某条消息的完整价格时,使用本页所列的厂商官方标准价补全。v0.3.2 快照核验于 **2026-09-23**,共收录 74 个模型,金额均为美元 / 100 万 token。
|
|
4
4
|
|
|
5
5
|
## 规则
|
|
6
6
|
|
|
@@ -18,15 +18,17 @@ v0.3.0 在 OpenCode 当前模型目录没有可用于某条消息的完整价格
|
|
|
18
18
|
|
|
19
19
|
| 模型 | 发布日期 | Input | Output | Cache Read | Cache Write | 长上下文档位 |
|
|
20
20
|
| --- | --- | ---: | ---: | ---: | ---: | --- |
|
|
21
|
-
| `gpt-5.5` | 2026-04-23 | 5 | 30 | 0.5 | — |
|
|
22
|
-
| `gpt-5.5-pro` | 2026-04-23 | 30 | 180 | — | — |
|
|
23
|
-
| `gpt-5.6-sol` | 2026-07-09 | 4 | 20 | 0.4 | 5 |
|
|
24
|
-
| `gpt-5.6-terra` | 2026-07-09 | 2 | 12 | 0.2 | 2.5 |
|
|
25
|
-
| `gpt-5.6-luna` | 2026-07-09 | 0.2 | 1.2 | 0.02 | 0.25 |
|
|
26
|
-
| `gpt-6-astra` | 2026-09-04 | 10 | 50 | 1 | 12.5 |
|
|
21
|
+
| `gpt-5.5` | 2026-04-23 | 5 | 30 | 0.5 | — | >272K:10 / 45 / 1 / — |
|
|
22
|
+
| `gpt-5.5-pro` | 2026-04-23 | 30 | 180 | — | — | >272K:60 / 270 / — / — |
|
|
23
|
+
| `gpt-5.6-sol` | 2026-07-09 | 4 | 20 | 0.4 | 5 | >272K:8 / 30 / 0.8 / 10 |
|
|
24
|
+
| `gpt-5.6-terra` | 2026-07-09 | 2 | 12 | 0.2 | 2.5 | >272K:4 / 18 / 0.4 / 5 |
|
|
25
|
+
| `gpt-5.6-luna` | 2026-07-09 | 0.2 | 1.2 | 0.02 | 0.25 | >272K:0.4 / 1.8 / 0.04 / 0.5 |
|
|
26
|
+
| `gpt-6-astra` | 2026-09-04 | 10 | 50 | 1 | 12.5 | >272K:20 / 75 / 2 / 25 |
|
|
27
|
+
| `gpt-6-sol` | 2026-09-22 | 2 | 10 | 0.2 | 2.5 | >272K:4 / 15 / 0.4 / 5 |
|
|
28
|
+
| `gpt-6-luna` | 2026-09-22 | 0.1 | 0.5 | 0.01 | 0.125 | >272K:0.2 / 0.75 / 0.02 / 0.25 |
|
|
27
29
|
| `chat-latest`(别名 `gpt-chat-latest`) | 2026-05-05 | 5 | 30 | 0.5 | — | — |
|
|
28
30
|
|
|
29
|
-
`gpt-5.6-sol` 的当前标准价是限期促销价;快照采用核验日官网显示的费率。`chat-latest` 是官方 ChatGPT SKU,OpenRouter 上的 `gpt-chat-latest` 作为精确别名指向同一条目。
|
|
31
|
+
`gpt-6-sol` 和 `gpt-6-luna` 的发布日期见 [OpenAI API 更新日志](https://developers.openai.com/api/docs/changelog)。表内 OpenAI 长上下文价格在传入 token 超过 272,000 时对整条请求生效。`gpt-5.6-sol` 的当前标准价是限期促销价;快照采用核验日官网显示的费率。`chat-latest` 是官方 ChatGPT SKU,OpenRouter 上的 `gpt-chat-latest` 作为精确别名指向同一条目。
|
|
30
32
|
|
|
31
33
|
## Anthropic
|
|
32
34
|
|
|
@@ -40,8 +42,11 @@ v0.3.0 在 OpenCode 当前模型目录没有可用于某条消息的完整价格
|
|
|
40
42
|
| `claude-sonnet-5` | 2026-06-29 | 2 | 10 | 0.2 | 2.5 |
|
|
41
43
|
| `claude-opus-5` | 2026-07-24 | 5 | 25 | 0.5 | 6.25 |
|
|
42
44
|
| `claude-fable-5-1` | 2026-09-01 | 10 | 50 | 0.25 | 12.5 |
|
|
45
|
+
| `claude-opus-5-5` | 2026-09-22 | 4 | 20 | 0.2 | 5 |
|
|
43
46
|
|
|
44
|
-
Cache Write 采用官方 5 分钟写入价。OpenCode 的聚合字段不区分 5 分钟与 1 小时 TTL,无法从历史消息可靠应用 1 小时写入价。OpenRouter 的 `claude-opus-4.7`、`claude-opus-4.8` 圆点写法注册为对应条目的精确别名。
|
|
47
|
+
Cache Write 采用官方 5 分钟写入价。OpenCode 的聚合字段不区分 5 分钟与 1 小时 TTL,无法从历史消息可靠应用 1 小时写入价。OpenRouter 的 `claude-opus-4.7`、`claude-opus-4.8`、`claude-opus-5.5` 圆点写法注册为对应条目的精确别名。
|
|
48
|
+
|
|
49
|
+
`claude-opus-5-5` 的 Cache Read 是官方 0.05 倍基础输入价的特殊乘率(多数 Claude 模型为 0.1 倍),按官方标价 $0.20 / M 收录。
|
|
45
50
|
|
|
46
51
|
## Google
|
|
47
52
|
|
package/docs/verification.md
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
# 验证记录
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## v0.3.2(GPT-6 Sol / Luna 价格更新,SDK 2.0.11)
|
|
4
|
+
|
|
5
|
+
验证日期:2026-09-23。根据 [OpenAI API 更新日志](https://developers.openai.com/api/docs/changelog),`gpt-6-sol` 和 `gpt-6-luna` 于 2026-09-22 发布;[官方定价页](https://developers.openai.com/api/docs/pricing)列出两者的 Standard 短、长上下文四类 token 费率。内置快照由 72 个模型增至 74 个。根据 [Sol](https://developers.openai.com/api/docs/models/gpt-6-sol) 与 [Luna](https://developers.openai.com/api/docs/models/gpt-6-luna) 模型说明,传入 token 超过 272,000 时才使用长上下文价格;同轮也将已有 OpenAI 条目的边界从 271,999 校正为 272,000。
|
|
6
|
+
|
|
7
|
+
| 检查 | 结果 |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| `npm run typecheck` | 通过 |
|
|
10
|
+
| `npm test` | 45 项通过,新增两款模型的费率、精确匹配和档位边界断言 |
|
|
11
|
+
| `npm run build` | 通过 |
|
|
12
|
+
|
|
13
|
+
本轮未重跑 `npm run test:smoke`;下方的打包集成记录对应更新前的 72 模型快照。
|
|
14
|
+
|
|
15
|
+
## v0.3.1(SDK 2.0.11)
|
|
4
16
|
|
|
5
17
|
验证日期:2026-09-23。环境:macOS、Node.js v22.23.2、npm 10.9.8、OpenCode v2.0.11;`@opencode/plugin`、`@opencode/client`、`@opencode/schema` 和 `@opencode/theme` 均精确锁定为 2.0.11。
|
|
6
18
|
|
|
@@ -9,17 +21,19 @@
|
|
|
9
21
|
| 检查 | 结果 |
|
|
10
22
|
| --- | --- |
|
|
11
23
|
| `npm run typecheck` | 通过 |
|
|
12
|
-
| `npm test` |
|
|
24
|
+
| `npm test` | 44 项通过 |
|
|
13
25
|
| `npm run build` | 通过,输出 ESM 与类型声明 |
|
|
14
26
|
| `npm run test:smoke` | 通过,使用实际 `.tgz` 安装产物和真实 OpenCode 2.0.11 |
|
|
15
27
|
|
|
16
28
|
SDK 从 2.0.9 升级到 2.0.11 后,四个顶层 OpenCode 包及锁文件中的传递依赖均已统一到 2.0.11。`@opencode/plugin` 两版的导出结构一致;包内容差异除依赖版本外,仅为 `ToastOptions` 新增可选的 `sessionID` 类型字段。
|
|
17
29
|
|
|
30
|
+
本次发放在内置官方价格快照中新增 Anthropic `claude-opus-5-5`(2026-09-22 发布,$4 / $20,5 分钟缓存写入 $5,缓存读取按官方 0.05 倍基础输入价计为 $0.20),OpenRouter 圆点写法 `claude-opus-5.5` 注册为精确别名;快照由 71 个模型增至 72 个,新增测试锁定官方费率、0.05 倍缓存读取乘率、OpenRouter 与 Bedrock 包装格式匹配。
|
|
31
|
+
|
|
18
32
|
新增共享性能监视器测试覆盖:查看会话 A 时捕获独立会话 B 的流,切换到 B 后立即恢复实时 TPS/TTFT;生成中切走、继续接收 delta 再切回;控制器销毁重建后恢复共享流;不同会话树隔离、新子代理即时纳入,以及删除会话清理运行期状态。既有重复事件去重与完成后收敛为精确 TPS 的断言继续通过。
|
|
19
33
|
|
|
20
34
|
新增 Steps 计数覆盖:`summarize` 对带与不带 `tokens` 的 assistant 消息各计一个 step、compaction 与 user 消息不计、无 summary 时显示 `—`;`uniqueMessages` 链路上分叉继承副本不重复计数(快照 2 个 step、独立分叉树 1 个 step)、compaction 不产生 step、孙会话视图与根视图同为 6 个 step;行序断言锁定 Context → Steps → Input,无 Context 时 Steps 位于面板第一行。基准行数由 6 行调整为 7 行。
|
|
21
35
|
|
|
22
|
-
v0.3.0 成本测试覆盖:assistant 与 compaction 按消息实际 `model` 和五类 token 分别计算,混合模型树各自采用对应价格,消息自带 `cost` 不参与主 Cost。当前 OpenCode 模型目录中的完整适用价格优先;适用档位或实际使用类别缺价时,整条消息回退到内置官方快照,不拼接两套费率。官方目录测试锁定
|
|
36
|
+
v0.3.0 成本测试覆盖:assistant 与 compaction 按消息实际 `model` 和五类 token 分别计算,混合模型树各自采用对应价格,消息自带 `cost` 不参与主 Cost。当前 OpenCode 模型目录中的完整适用价格优先;适用档位或实际使用类别缺价时,整条消息回退到内置官方快照,不拼接两套费率。官方目录测试锁定 72 个 2026-03-22 至 2026-09-22 发布的模型、来源 URL、唯一 ID、OpenAI/xAI/通义千问/MiniMax/Sakana 长上下文与上下文档位边界,以及 OpenRouter、Bedrock、Vertex 等包装格式和明确别名;相似名称不得猜价。目录按 OpenCode 当前模型目录(`temp/models.json`,210 个模型)补齐主流厂商:OpenAI、Anthropic、Google、xAI、Mistral、Cohere 之外新增 Z.ai(GLM)、DeepSeek、Moonshot(Kimi)、阿里云百炼(Qwen)、小米(MiMo)、MiniMax、腾讯(混元)、StepFun、Meta、Inception、Upstage、Arcee AI、ByteDance Seed、Sakana、Aion Labs、美团(LongCat);DeepSeek V4.1 Flash 与 V4 Pro 按厂商官方峰值最高价估算,旧 Flash、Vision Exp 和日期版本通过精确别名匹配。Step 5 Preview 的缓存写入按官方“cache-miss Input 包含首次缓存写入”规则使用 `$1 / M`。OpenRouter 圆点写法 `claude-opus-4.7`/`4.8`/`5.5`、官方 ChatGPT SKU `chat-latest`(别名 `gpt-chat-latest`)、Mercury 2.5、Solar Pro 4、Seed 2.1 Turbo、Fugu 版本、Aion 的 `aion-labs/` 前缀与 LongCat 网关链路同样通过精确别名匹配。窗口外的 `grok-4.20`、Fast/Priority 档、图片/音频/视频、免费与无官方标准价的模型均不收录;`kwaipilot/kat-coder-pro-v2.5`、`inclusionai/ling-3.0-*` 和 `bytedance-seed/seed-2.0-code` 只有网关或第三方报价,未据此猜价。缺价显示 `Cost —`,已知小计与缺价消息并存时显示 `· partial`,明确零价显示 `$0.00`。
|
|
23
37
|
|
|
24
38
|
### 真实 OpenCode 集成
|
|
25
39
|
|