Repository navigation
[REQ-1414][VERIFY-1] 四种账户态下模型到底搜不搜得到 #1433
Description
Activity
- addedtype:verificationIndependent verification: runtime/E2E/security/performance matrixIndependent verification: runtime/E2E/security/performance matrix
on Sep 24, 2026 在途状态(2026-09-24,供接手用)
已跑完并入库的(证据在 lane 的 worktree
.worktrees/1433-verify,未提交):
本地腿四格 × 3 轮 × 2 provider 全绿(kill-switch 反向臂sovereignty_denied、零出网);
①那一列四格(真 DeepSeek 模型,共 17 次调用,其中 3 次为废弃冒烟);
#1415的登记第一次被真代理判过(mcp.exa.ai/search.parallel.ai→allow/200,
反向臂example.com→deny/unregistered/403);
打包产物上复现#1411的四格工具表(零凭证零花费)。模型 key:owner 2026-09-24 批准使用。文件在会话 scratchpad
(ac1433-model-keys.env,0600,DEEPSEEK_API_KEY+ZHIPU_API_KEY),不在任何仓内。
收工扫描证实证据目录零泄漏(完整值 / 前 12 / 后 12 三种片段各 0 命中,并用一根必在的针自证扫描有效)。
ALPHA_MCP_TOKEN没有给 —— 它是平台代付凭证,用它跑会真扣 owner 云额度,属于另一笔支出。零余额账户 —— 编排者更正了一条自己加错的约束:
原派发书写「走正常注册路径,不要直接写库」,owner 从未说过这句。
owner 原话:「你只要写进去一个账号就可以了,它只是一个测试账号而已」+「不影响,没关系」。
⇒ 已撤销该约束,改为直接在alpha-web的 Postgres 插一行测试用户(users.phoneUNIQUE NOT NULL,
挑明显非真人的号),不走send-otp/verify-otp。目标仍是 402 的实际 wire body
(基线 §九 第 5 条至今未闭合的缺口)。仍守两条:只插这一行、不动任何已有数据(尤其 owner 的
u_a3b0aadfe01e);拿到 401 就照旧标未测,不拿 401 充数。已实读确认、可直接用的判断:租户是
getTenant查不到就seed(id),
新租户天然零余额、零 DDL;被拒的 preauth 零副作用、不产生payment_credited、对账干净。仍未测且理由已清:云腿·登录有额度(缺 token 且真扣额度)· 云腿·登录无额度(本条在做)·
打包实例真模型回合(providers.add拒收回环 base URL ⇒#1144配方失效,
坐标network-egress-derived.ts:96,源自 owner 2026-09-21 裁决)· 打包实例两个登录格(mock keychain)·
登录态真实工具表下模型选哪条腿 · 打包 sidecar 的useEnvProxy()是否真生效 ·ctx.ask是否拦(读码得出)。一条硬事实:
mcp_accessTTL 5 分钟(alpha-web/app/api/oauth/token/route.ts:99-111)
⇒「owner 建好账号把 token 发过来」这条路不成立,到手即过期。本 lane 产出的两张衍生票:
#1445(搜网额度用尽被伪装成结果)、
#1448(逃生开关语义写宽了,owner 裁决只管我们自己的两条腿)。两张都已派。那 2 条
device_sessions我的裁决:留着,不撤理由是「不动」这一边的代价更小,而且它是唯一不用再写一次生产库的选项:
- 那个账号是零余额的。
u_0000000c1433的ledger_facts实读 0 条、payment_orders
0 条,而 preauth 对它恒拒(本票刚测出来的 402 就是这个)。
拿着它的 refresh token 能做的事 = 拿着它的密码能做的事 = 什么也做不了; - 撤销是一次
UPDATE,越出本票拿到的「只插一行、不动任何已有数据」的授权面; - 它今天还有用:云腿「登录有额度」那一格将来要测时,复用它比再插一个账号干净。
如果哪天要清掉,正确的动作是连
users行一起删,而不是只撤会话 —— 只撤会话会留下
一个「登录不进去但还在册」的半死账号,比留着更难解释。本票的收口状态
矩阵四格里,①(发不发
tool_calls)与 ② 本地腿全部真绿;② 云腿两格里
「无额度」真绿(402 原文入库),「有额度」未测 —— 它要一个有真余额的账户,
而给这个账号充值会真的动钱,那是 owner 的决定,不是本票能自己做的。打包实例上的真模型回合同样未测:
providers.add拒收回环 base URL
(network-egress-derived.ts:96,owner 2026-09-21「不再支持本地模型」的裁决),
#1144那套取证配方结构上已失效。三条替代形状列在证据 README §7.1,都不是
VERIFY 票能自己定的。打包实例的工具表那一半已经拿到了 —— 四个模型 id 在 kill-switch 下全部不含
websearch、登出态全部含,#1411的四格表在打包产物上复现。证据已合入
docs/verification/2026-09-24-1433-four-account-states-websearch/。- 那个账号是零余额的。
- added a commit that references this issue
on Sep 26, 2026
我们要确认一件事:在四种不同的账户状态下,模型到底搜不搜得到网。
这四种是:没登录(自带 key)、登录且有额度、登录但额度空了、以及我们把搜网整个关掉的开关打开时。
为什么值得单独做:前面几张票改的是「工具在不在模型手里」,那是从代码结构推出来的。而「模型真的发出了搜索请求」和「真的拿回了结果」是两件不同的事 —— 中间还隔着模型自己的判断(它可能压根不去调)。只有在装好的 app 上真跑一遍,才知道用户拿到的是什么。
不做会怎样:我们会以为改好了,而实际是「代码看起来对」;真出问题是用户先发现。
给实现方 —
[REQ-1414][VERIFY-1]父票
alpha-code#1414。方案基线 §七 VERIFY-1,owner 2026-09-24 批准。这是 VERIFY 票:只测,不修。测出坏的转 bug 票挂父票。
矩阵
{登出 / BYOK、登录有额度、登录无额度、kill-switch} × {搜网}
每格必须把两件事分开记
tool_calls;本机陷阱(基线原文):模型自己的策略层会先于被测接缝生效 —— 它可能压根不去调那个工具。
所以「没拿到结果」不等于「工具坏了」,两件事必须分开记,否则这份证据会把两种失败混成一种。
前置缺口(基线 §九 第 5 条,必须先解决或明确记为未测)
本轮没有一个零余额的真账户 ⇒ 402 的实际 wire body 从未跑过。
「登录无额度」这一格要么先造出这样的账户,要么明确标为未测,不要用推导充当证据。
载体
打包实例。 按既有约定,打包版的真机取证要 owner 动手 —— 所以这张票的执行方式要先和主 session 对齐:
哪一部分你能自己跑(服务端、引擎层),哪一部分必须 owner 点。不要把整格推给 owner。
Out of scope
webfetch):alpha-code#1412。