dsh-connect-agnes-token-plan 0.8.1 → 0.10.0

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/CHANGELOG.md CHANGED
@@ -2,6 +2,33 @@
2
2
 
3
3
  本文件只记**公开行为变化**(新增能力、破坏性改动、重要修复)。实现细节、重构与测试加固请直接看 `git log`。
4
4
 
5
+ ## [0.10.0] — 2026-10-04
6
+
7
+ ### AgnesCode 目录改读 `/v2/models`:模型名带上平台真实的积分倍率与促销标
8
+
9
+ - **目录端点从 `/v1/models` 换到 `{origin}/v2/models`**:两者是同一 host 上的**两条不同目录**,不是同一份数据——v1 只有 8 行且**不带任何按模型价格**,v2 有 9 行且其中 8 行带平台自己的 `points_cost_multiplier`。桌面端一直读 v2,这就是它的选择器能显示 `1.20x` / `1.85x` 而本插件此前什么都不显示的原因。此前的结论「AgnesCode 不存在按模型倍率」**是错的**,根因是端点选错(详见 `docs/ROADMAP.md` §6.3.1「倍率字段正记」)。
10
+ - **模型显示名带上倍率 `Name · xNN.NN`**:pi-ai 的 descriptor 没有承载计费的字段(`cost` 是每 token 美元,本网关是积分制),所以倍率走**显示名**——这是 DSH 选择器唯一会渲染的表面。拼写沿用兄弟插件 `dsh-connect-sensenova-token-plan` 与 WorkBuddy 自有选择器既有的 `· x` 形态,**不引入第二套约定**。
11
+ - **`0` 是已公布的价格(免费),不是缺失读数**:`×0.00` 与「未声明」是两件事,前者照常显示、后者才不画。为此新增 `numZeroOk()`——仓库既有的 `num()` / `numOrNull()` 都以 `> 0` 为准,直接复用会把「免费」静默变成「没读到」。
12
+ - **面板花名册新增促销标芯片**(`display_label`,如 `限时七折`):用桌面端同款蓝底配色,与中性灰底的「会员」徽章刻意区分——一个是**平台定价事实**,一个是**账号状态**。平台在**每一行**都放这个键、未促销的值为空串,因此判据是「非空才画」,而不是「键存在就画」。
13
+ - **`auto` 行排除**:v2 多出的 `auto` 是路由别名而非模型(无价格、无厂商),按 id 显式排除;判据不取「没有倍率」,以免平台给它定价后它悄悄回到花名册。
14
+ - **会员门槛字段随端点迁移**(`is_member_only` 布尔 → `allowed_subscription` 列表):映射规则为「列表非空即会员」,已对 v1 逐行核对 **8/8 一致**,属**重新编码**而非重新解释。
15
+ - **修:改价不触发重注册**(`catalogSignature` 现纳入倍率)。签名原先只编码 `id:vision`,而倍率已进显示名——`glm-5.2` 从 `1.85` 改到 `9.99` 时签名**完全相同**,选择器会一直显示旧倍率。平台在促销边界上确实会改价(`glm-5.2` 当前带 `限时七折`),所以这是会真实发生的路径。**操作者手填的伪倍率仍不触发重注册**(它在签名之后才挂上),原裁定不变。
16
+ - **修:AgnesCode tab 在文档隐藏时停止轮询**(与 `PanelPage` 对齐),不再在后台空转。
17
+ - **修:`render.test.mjs` 的午夜 flake**:`now + 1h` 在 23:00 之后跨到次日,而断言仍要求「同日」的裸时钟——每天 23:00–00:00 之间该门禁固定转红 1 项。改为按构造恒为当天的时刻。详见 `docs/PITFALLS.md` §48(与 §41「护栏的存活守卫自己漏了平台假设」同族,这次漏的是**时间**假设)。
18
+ - **文档**:`docs/AGNES-API.md` §7.3 记入「单次 chat 请求图像上限 4 张」的 400 实测(官方文档未公示该上限);`docs/PITFALLS.md` 新增 §48(午夜 flake)与 §49(`num()` 把「免费」塌成「未声明」)。
19
+ - 影响面:`src/host/{agnescode.ts, agnescode-models.ts, provider-publish.ts, util.ts, routes/agnescode.ts}`、`src/client/{agnescode-tab.ts, wire.ts, styles.ts, i18n.ts}`、`test/{agnescode, publish-core, render, live-agnescode}`、`docs/{ROADMAP, AGNES-API, PITFALLS, TESTING}`。
20
+
21
+ ## [0.9.0] — 2026-10-03
22
+
23
+ ### UI:开关统一为项目品牌色,积分额度拆成三张卡片
24
+
25
+ - **开关改用 `--agnes-brand`(#1E40AF 科技蓝)**,不再跟着 DSH 的中性色走:DSH 的 `--dsw-alias-brand-primary` 在暗色模式下解析为近黑 `#0f1115`,开关 ON 态看起来像个空白白色胶囊(2026-10-03 实测截图确认)。项目自己的蓝色已在 tab 激活下边框、额度进度条、用量进度条、模型 checkbox accent 中使用,开关纳入同一套 token。几何仍沿用 DSH 原生 Switch(36×20 capsule、2px padding、16×16 thumb、`translateX(16px)` 运动、120ms ease),颜色用项目自己的。
26
+ - **新增共享 `Switch` 组件**(`src/client/switch.ts`):提供方开关、出图/视频工具开关、AgnesCode 开关统一走这一个组件,消除三份重复的胶囊样式。原生 `<input type="checkbox">` + `appearance:none`,浏览器自动暴露 `aria-checked` 与焦点环,键盘可达性免费。
27
+ - **积分额度从一张宽卡片拆成三张小卡片**:原卡片在 861px 面板宽度内只占左边约 200px(标题「积分余额」+ 大数字 1200 + 小字「时效 1200 · 永久 0」),右侧约 660px 空白。现拆为「积分余额 / 时效 / 永久」三张 min-width 卡片(`flex: 1 1 160px` + `minWidth: 120` + `flexWrap: wrap`),面板宽时一排、窄时换行堆叠。字典 key `agnescode.balanceSplit` 退役,新增 `agnescode.balanceTimeLabel` / `agnescode.balancePermanentLabel`。
28
+ - **模型清单头部重排**:原来一行塞了三种不同性质的信息(标题 + 机制说明 + 实时默认档位)。现标题与默认档位一行(左右分布),机制说明移到卡片底部 footnote。
29
+ - **移除「解除关联」**:它的两个副作用(删除本地 JWT + 注销 provider)已分别由「检测本机登录态」(重新采集覆盖 JWT)与「注册 AgnesCode 提供方」开关(关闭即注销)覆盖,按钮没有独立能力,纯增加误触风险。`POST /agnescode` 的 `logout` action、host route handler、字典 key、面板按钮一并删除。
30
+ - 影响面:`src/client/{switch.ts, provider-controls.ts, model-picker.ts, agnescode-tab.ts, i18n.ts}`、`src/host/routes/agnescode.ts`、`docs/{API.md, ARCHITECTURE.md}`、`test/{render, agnescode}.test.mjs`。
31
+
5
32
  ## [0.8.1] — 2026-10-03
6
33
 
7
34
  ### 修复:AgnesCode provider 补全思考契约——档位可用,`off` 诚实不提供
package/README.md CHANGED
@@ -1,77 +1,89 @@
1
1
  # dsh-connect-agnes-token-plan
2
2
 
3
- Agnes 接入的 DSH **Plugins 页**插件卡**全家桶**(三个 tab):① **积分额度** tab——登录一次 Agnes 控制台,实时查看四类额度窗口与账号累计用量,令牌失效自动重登,之后无需再管;② **接入 API** tab——把 Agnes 模型注册为 DSH provider,参与对话与出图;③ **AgnesCode** tab(可选、默认关)——读取本机 AgnesCode 桌面端登录态接入桌面端上游。两条上游凭据相互独立。此外 429 自愈在后台生效:限频被误判为"额度耗尽"时在 Host 侧纠正回退避重试,模型不会无端消失。
3
+ 把 Agnes 接进 DSH 的 **Plugins 页**插件卡。**DSH** 即 **DeepSeek Harness**;**Agnes** 是商汤科技的模型平台(本插件对接其控制台 API 与推理 API)。
4
4
 
5
- ## 功能
5
+ > **第一次读这个仓库?先看这三句。**
6
+ >
7
+ > 1. **这是给 DeepSeek Harness 用的插件**,不是独立应用;所有入口都在 DSH 的 Plugins 页那张卡上(三个 tab,见下)。
8
+ > 2. **三种「红」是正常的,不是回归**:① `store/routes/wiring.test.mjs` 等 peer 套件报 `cannot resolve the peer dependency` —— 那是 DSH runtime 自带的包不在本仓库,属环境问题,先查 `test/peer-roots.mjs`;② 没装 `dsh` CLI 时 e2e 会 SKIP,属预期;③ 若在 **23:00–00:00** 之间单独跑 `render.test.mjs` 报红,那是历史上的午夜窗口缺陷(已修,见 [docs/PITFALLS.md](docs/PITFALLS.md) §48),升级到含该修复的版本即消失。
9
+ > 3. **见到「奇怪」的写法先别定罪**——本仓多数刻意的取舍都在 [docs/PITFALLS.md](docs/PITFALLS.md) / [docs/ADR.md](docs/ADR.md) 有明文出处。**动手前先 grep 一遍 docs/**。
10
+ >
11
+ > 协作会话的完整纪律见 [AGENTS.md](AGENTS.md)。
6
12
 
7
- Agnes 的 Token Plan **按窗口限流**,不是积分余额——账号级四个维度各有上限,用超了只能等窗口滚过:
13
+ - **积分额度**——登录一次,实时查看积分余额、额度窗口与每模型消耗,令牌自动续期,之后无需再管;
14
+ - **接入 API**——把爱思模型注册为 DSH provider,参与对话、出图与出视频;
15
+ - **Agnescode**——上游限流较宽松的另一条爱思办公产品线,独立账号、独立积分。
8
16
 
9
- | 维度 | 上限字段 | 窗口 |
10
- |---|---|---|
11
- | 模型请求 | `concurrency_limit` | `concurrency_window_h`(各档均为 5 小时) |
12
- | 每周请求 | `text_weekly_limit` | 168 小时 |
13
- | 生图 | `image_daily_limit` | 24 小时 |
14
- | 视频 | `video_daily_limit` | 24 小时 |
17
+ 面板分三个 tab,按「先看数、再接入、最后可选加桌面端上游」排序:
15
18
 
16
- 这个面板把数字搬进 DSH 的 Plugins 页,写代码时不用切网页就能盯住:
19
+ ## 积分额度
17
20
 
18
- - **额度窗口**:四个窗口的上限、周期与**平台报出的已用量**(`used / limit` 与百分比)。面板直接引用控制台自己的「当前用量」,进度条是逐字转写、不做减法;`usage_pct` 也是平台算好的
21
+ 将 Agnes 的 Token Plan 接入dsh,,用超了只能等窗口重置。这个 tab 把数字搬进 DSH,写代码时不用切网页就能盯住:
22
+
23
+ - **额度窗口**:模型请求(5 小时滚动)、每周请求、生图与视频(各 24 小时),**平台报出已用量**、独立滚动,(含百分比与重置时间)
19
24
  - **账号累计用量**:控制台口径的累计请求 / 文本 Token / 生图 / 视频秒数 / 活跃天数,以及近 N 天的分桶柱图
20
- - **套餐对比**:平台**公开**的套餐目录(六档:入门版 / 专业版 / 高级版 × 月付 / 年付),无需登录即可读,用来回答"升级能买到什么"
21
- - **模型清单**:当前 Key 实际能调哪些模型,其中哪些能看图(按平台 `input_modalities` 判定,不靠名字猜)
22
- - **可选接入**:把 Agnes 模型接进 DSH 对话,思考强度可选;并可注册出图 / 视频工具
23
- - **桌面端上游(默认关)**:面板「AgnesCode」tab 读取本机 AgnesCode 桌面端的登录态,独立 provider 与独立积分池
25
+ - **套餐对比**:平台**公开**的套餐目录(六档),无需登录即可读,用来回答"升级能买到什么"
24
26
 
25
- 面板**不代你操作账务**:不改套餐、不代扣额度、不碰 Key 明文;数据来自 Agnes 控制台自己的 API,与网页控制台口径一致。真正会「动」的四部分——注册 provider、挂出图工具、挂视频工具、接入 AgnesCode 桌面端上游——全部 opt-in 且**默认关闭**,不打开时插件退化为纯信息展示。
27
+ ![「积分额度」tab](assets/panel-credit.png)
26
28
 
27
- **注册 provider 时**(面板开关打开),插件把 Agnes 模型接进 DSH 的对话模型选择器,并在 Host 侧纠正 peer 对限频 429 的误判(peer 的 `isQuotaExceededError` 命中面过宽,任何带额度措辞的 429——如 `out of rate budget`——都会被抢判成「额度耗尽」而不重试)——限频真正退避重试,模型不再无端 "消失"。
29
+ 首次使用在「连接 Agnes 控制台」填一次账号和密码(Agnes 不发 refresh token,续期就是自动重登一次)。登录失败时表单会直接显示 Agnes 返回的原因;密码错误属于**凭据型拒绝**,面板**绝不自动重试**(Agnes 有失败次数锁定)。想清除账号,用面板底部的按钮。
28
30
 
29
- ## 安装
31
+ ## 接入 API(可选)
30
32
 
31
- 1. 在 DSH「插件」页搜索 `dsh-connect-agnes-token-plan` 点击安装,或运行:
33
+ 把 Agnes 模型注册为 DSH provider,参与对话与出图。
32
34
 
33
- ```powershell
34
- dsh plugin --profile web add dsh-connect-agnes-token-plan # Web 端
35
- dsh plugin --profile desktop add dsh-connect-agnes-token-plan # 桌面端
36
- ```
35
+ - **模型清单**:在「API Key」卡粘贴 Key 保存`AGNES_TOKEN_PLAN_API_KEY`,Host 以 `agnes-token-plan` 之名注册 OpenAI 兼容 provider,模型列表随 `/v1/models` 自动刷新;
36
+ - **语言模型**:显示当前 Key 实际能调哪些模型,其中哪些能看图(按平台 `input_modalities` 判定,不靠名字猜)。
37
+ - **出图工具**:Host 给 agent 注册 `agnes_draw_image` ,出图模型按 catalog 的 `output_modalities` 结构化判定。
38
+ - **视频工具**:Host 给 agent 注册 `agnes_video_generate`,按选中模型分派 V2.0 / 2.5 两套互斥参数。
39
+ - 开关与勾选都在面板热生效,无需重启。但工具的实际挂载 / 缺席发生在**下一次 Host 启动**(agent tools 没有 unregister 语义)。细节见 [docs/SETUP.md](docs/SETUP.md) §3、[docs/PROVIDER-HOT-RELOAD.md](docs/PROVIDER-HOT-RELOAD.md) 与 [docs/AGNES-API.md](docs/AGNES-API.md) §7.5。
37
40
 
38
- 2. **完全退出 DSH(含托盘)再启动**。
41
+ ![「接入 API」tab](assets/panel-API-provider.png)
39
42
 
40
- > 装到的是哪一版由源决定:安装器会询问 profile 配的 registry,**默认含 `registry.npmmirror.com`,刚发布的版本在镜像上可能延迟几分钟**,官方源立即可用;要确认拿到了哪一版,对照 `npm view dsh-connect-agnes-token-plan version --registry=https://registry.npmjs.org`。三种 target 形态(npm 包名 / git 地址 / 本地路径)见 [docs/SETUP.md](docs/SETUP.md)。
43
+ 注意:`sk-` 走 API 按量计费,`cpk-` 走订阅配额(本 tab 只读订阅配额),两类 Key 有独立限制池,需从官网了解实际限制。
41
44
 
42
- ## 快速开始
45
+ ## AgnesCode(可选,默认关)
43
46
 
44
- 1. 打开 DSH 的 **Plugins 页**,找到 `dsh-connect-agnes-token-plan` 的插件卡(面板是页内的内联卡片,**不在侧边栏**)。
45
- 2. 在「积分额度」tab 点「连接 Agnes 控制台」,填一次账号和密码,点登录。
46
- 3. 之后令牌失效会自动重登(Agnes 不发 refresh token,续期的唯一路径就是重登一次),无需再操作。
47
+ **读取 AgnesCode 桌面端** 留在本机的加密会话文件,获取登录态,再以 provider id `agnescode` 注册**独立** provider、独立积分池——两条上游凭据互不相通:
47
48
 
48
- 登录失败时表单会直接显示 Agnes 返回的原因;密码错误属于**凭据型拒绝**,面板**绝不自动重试**(Agnes 有失败次数锁定),只有你主动点「登录」才会再发一次。想清除账号,用面板底部的按钮。
49
49
 
50
- ## 它是怎么工作的
50
+ 1. **接口地址**:写在会话文件里、**按账号跟随**,钉死在 Agnes 域名族内,地址不对就拒绝使用;
51
+ 2. **显示口径**:积分是**订阅池**(时效 + 永久);模型清单带「会员」标记而不隐藏——会员门槛是账号状态,不是模型不存在;
52
+ 3. **约 28 天续期一次**:JWT 过期后没有自动路径,开一次桌面 App、再点「检测本机登录态」重新采集即可。
51
53
 
52
- 登录原理一句话:Host 在后台向 `{consoleBase}/api/user/login` 发**一次**账号密码 POST 换取 access token(Agnes 没有 OIDC 跳转、没有 refresh token),令牌过期或被拒时用同一路径**重登一次**;面板打开时才轮询一个只读本地路由,关掉即停。协议细节(一跳登录、密码明文过 TLS 与「不落盘」纪律、防锁号节流)见 [docs/AUTH.md](docs/AUTH.md),接口契约见 [docs/AGNES-API.md](docs/AGNES-API.md)。
54
+ 协议探针记录见 [docs/ROADMAP.md](docs/ROADMAP.md) §6.3。
53
55
 
54
- **窗口「已用」是平台报出的,面板不计算**:`/api/cn/user/subscription` 直接返回每个窗口的 `used` / `limit` / `reset_at` / `usage_pct`(控制台「当前用量」那一屏的数据源),面板逐字转写并渲染进度条。但 `overview` / `series` 是**账号累计**口径,覆盖的是一段更长的时间——**不能用它去减窗口上限**,那个「剩余」跨周期、没人能担保,所以面板把「窗口用量」与「账号累计」作为两个独立事实并排显示,并明说不可相减。
56
+ ![AgnesCode tab](assets/panel-AgnesCode.png)
55
57
 
56
- ## 把 Agnes 模型接进 DSH(可选)
58
+ 注意:检测不到登录态时,面板会逐条列出探测过哪些文件、各自为什么没成(「没装 App」「解不开密」「会话里没有令牌」是三种不同的处理);
57
59
 
58
- 「接入 API」tab 的三张卡按"你为什么来这"排序,而不是按依赖排序:**语言模型**(注册 provider + 勾选推送哪些模型)、**出图工具**——两张都在最前且默认展开;**API Key** 收在最后(默认收起),它是前两张卡的前置条件,由它们指回来。
60
+ ## 边界
59
61
 
60
- 在「API Key」卡里粘贴 API Key 保存(免费版 `sk-` 或 Token Plan `cpk-` 皆可):Host 即以 `agnes-token-plan` 之名注册 OpenAI 兼容 provider,模型列表随 `/v1/models` 自动刷新,还能在「语言模型」卡勾选具体要推送哪些模型。Key 只进 DSH 凭据(引用名 `AGNES_TOKEN_PLAN_API_KEY`)、面板永不回显。开关与勾选都在面板热生效,无需重启。细节见 [docs/SETUP.md](docs/SETUP.md) §3 与 [docs/PROVIDER-HOT-RELOAD.md](docs/PROVIDER-HOT-RELOAD.md)。
62
+ - 面板**不代你操作账务**——不改套餐、不代扣额度、不碰 Key 明文;数据来自 Agnes 控制台自己的 API,与网页控制台口径一致。
63
+ - 注册 provider、挂出图工具、挂视频工具、接桌面端上游,全部 opt-in 且**默认关闭**;一个都不打开时,插件退化为纯信息展示。
61
64
 
62
- > **免费版与付费 Token Plan 共用同一个 API Key 输入框**:`sk-`(免费版)与 `cpk-`(Token Plan)两类 Key 都走同一份 `/v1/models` 目录,本插件对前缀不做限制。**计费双轨**——`sk-` 走 API 按 token / 张 / 秒计费(`agnes-2.5-flash` / `agnes-3.0-flash` / 图片模型当前优惠价 `$0`,`agnes-2.5-pro` 按刊例价),`cpk-` 走 Token Plan 订阅配额(四窗口)。面板「积分额度」tab 只读**订阅配额**,不读 API 按量余额;两类 Key 使用**独立限制池**,换 Key 即换池。两者都能在此粘贴。
65
+ ## 安装
63
66
 
64
- ## 出图工具(可选,默认关)
67
+ 1. 在 DSH「插件」页搜索 `dsh-connect-agnes-token-plan` 点击安装,或运行:
68
+
69
+ ```powershell
70
+ dsh plugin --profile web add dsh-connect-agnes-token-plan # Web 端
71
+ dsh plugin --profile desktop add dsh-connect-agnes-token-plan # 桌面端
72
+ ```
65
73
 
66
- 面板「出图工具」卡(在「语言模型」下方,默认展开)打开开关后,Host 给 agent 注册工具 `agnes_draw_image`(首选模型由 `drawModelId` 指定),鉴权走同一把 `AGNES_TOKEN_PLAN_API_KEY`。出图模型优先按 catalog 的 `output_modalities` 结构化判定,该字段在 Agnes 目录上**缺失**时退回模型名里的 `image` 段(名字兜底才是实际命中的路径)。注意:工具的实际挂载 / 缺席发生在**下一次 Host 启动**(agent tools 没有 unregister 语义),开关值本身立即生效。
74
+ 2. **完全退出 DSH(含托盘)再启动**。
67
75
 
68
- ## 视频工具(可选,默认关)
76
+ 3. 打开 DSH 的 **Plugins 页**,找到 `dsh-connect-agnes-token-plan` 的插件卡(面板是页内的内联卡片,**不在侧边栏**)。
69
77
 
70
- 面板「视频工具」卡(在「出图工具」下方,默认展开)打开开关后,Host 给 agent 注册工具 `agnes_video_generate`(首选模型由 `videoModelId` 指定),鉴权同样走 `AGNES_TOKEN_PLAN_API_KEY`。与出图**不同**的是协议:图片一次请求同步返回,视频是**异步任务制**——建任务后轮询到完成。**V2.0 与 2.5 两个参数体系都覆盖**,工具按选中模型分派请求体:V2.0(`agnes-video-v2.0`)走 `width`/`height`/`num_frames`/`frame_rate`,2.5(`agnes-video-2.5` / `agnes-video-2.5-flash`)走 `mode`/`seconds`/`size`/`aspect_ratio`。两套字段互斥、永不同时发给同一模型,但处理是**不对称**的:V2.0 帧数字段发到 2.5 模型会被换算成最接近的整秒(`121 @ 24fps → 5s`),保留「不判断家族也能出片」的退路;反过来,2.5 专有字段发到 V2.0 模型会**当场报错并给出修法**——工具不会静默丢弃,丢弃等于让你以为拿到 10 秒 2K、实际拿到 5 秒 720P。自动选择优先 V2.0,目录里没有 V2.0 时回落第一个 2.5 模型;面板仍会把 2.5 家族单独点名。协议细节与校验规则见 [docs/AGNES-API.md](docs/AGNES-API.md) §7.5。
78
+ > 装到的是哪一版由源决定:安装器会询问 profile 配的 registry,**默认含 `registry.npmmirror.com`,刚发布的版本在镜像上可能延迟几分钟**,官方源立即可用;要确认拿到了哪一版,对照 `npm view dsh-connect-agnes-token-plan version --registry=https://registry.npmjs.org`。三种 target 形态(npm 包名 / git 地址 / 本地路径)见 [docs/SETUP.md](docs/SETUP.md)。
79
+
80
+ ## 它是怎么工作的
71
81
 
72
- ## 桌面端上游:AgnesCode(可选,默认关)
82
+ 登录原理:
83
+ - Host 在后台向 `{consoleBase}/api/user/login` 发**一次**账号密码 POST 换取 access token(Agnes 没有 OIDC 跳转、没有 refresh token),令牌过期或被拒时用同一路径**重登一次**;
84
+ - `/api/cn/user/subscription` 直接返回每个窗口的 `used` / `limit` / `reset_at` / `usage_pct`(控制台「当前用量」那一屏的数据源),面板逐字转写、不做减法。下方的「账号累计用量」统计同理,
85
+ - 面板打开时才轮询一个只读本地路由,关掉即停。协议细节(一跳登录、密码明文过 TLS 与「不落盘」纪律、防锁号节流)见 [docs/AUTH.md](docs/AUTH.md),接口契约见 [docs/AGNES-API.md](docs/AGNES-API.md)。
73
86
 
74
- 面板「AgnesCode」tab 接的是 **AgnesCode 桌面端**的登录态:微信扫码发生在桌面 App 里,本插件只**读取** App 留在本机的加密会话文件(Chromium os_crypt,密钥经系统 DPAPI 解封,全程内存使用、不落盘不显示;解出的凭据随后存入 DSH 凭据服务,与账号密码同一纪律),并以 provider id `agnescode`(显示名 AgnesCode)注册**独立** provider。它的接口地址写在会话文件里、**按账号跟随**(钉死在 Agnes 域名族内,地址不对就拒绝使用);显示的积分是**订阅池**口径(时效 + 永久),模型清单带「会员」标记(会员门槛是账号状态,不是模型不存在,所以标记而不隐藏)。检测不到登录态时,面板逐条列出**探测过哪些文件、各自为什么没成**——「没装 App」「解不开密」「会话里没有令牌」是三种不同的处理方式,不会笼统叫你重新登录。JWT 有效期约 28 天,过期后开一次桌面 App 再点「检测本机登录态」即可;协议探针记录见 [docs/ROADMAP.md](docs/ROADMAP.md) §6.3。
75
87
 
76
88
  ## 运维诊断:这台机器现在挂没挂 provider?
77
89
 
@@ -90,7 +102,7 @@ npm run doctor:json # 机器读:JSON(可进你的巡检 / 工单脚本
90
102
  - [docs/API.md](docs/API.md) — 路由与控制台端点
91
103
  - [docs/AGNES-API.md](docs/AGNES-API.md) — Agnes 接口全集(控制台额度侧 + 推理侧)
92
104
  - [docs/TESTING.md](docs/TESTING.md) — 测试体系
93
- - [docs/PITFALLS.md](docs/PITFALLS.md) — 真实踩坑(41 条)
105
+ - [docs/PITFALLS.md](docs/PITFALLS.md) — 真实踩坑(49 条)
94
106
  - [CHANGELOG.md](CHANGELOG.md) — 版本变化
95
107
 
96
108
  AI 协作会话请先读 [AGENTS.md](AGENTS.md)。
@@ -98,7 +110,6 @@ AI 协作会话请先读 [AGENTS.md](AGENTS.md)。
98
110
  ## 诚实声明
99
111
 
100
112
  - 面板显示的是**控制台自己的口径**,与网页控制台一致;`GET /v1/models` 只区分权限,不计费也不占推理额度;
101
- - 窗口卡片里的「已用」是控制台报出的「当前用量」,面板逐字转写、不做减法;下方「账号累计」覆盖的是另一段时间,不能与窗口上限相减;
102
113
  - 令牌被拒时面板明确提示重新登录,而不是静默显示旧数据;
103
114
  - 凭据(账号、access token)只经 DSH 凭据服务保存,**密码不落盘**;本插件不写任何明文凭据文件或调试日志。
104
115
 
Binary file
Binary file
Binary file