JianFeeeee
d84c198975
fix(mcp)★★: admin 签的 key 接不上 MCP —— 缺 agents 行
## 断点(实测出来的,不是推断)
POST /admin/agent-keys {agent_name:"mcp-probe-tmp"} → 签发成功,key 绑定正确
GET /mcp 用这把 key → {"error":"密钥尚未绑定 Agent,请先调用 /agent/register 完成注册"}
`CreateAgentKey` 只写 `agent_keys`,**不建 `agents` 行** ⇒
`VerifyAgentKey` 返回空身份 ⇒ `AgentAuth` 拒掉。
而它自己的注释一直写着「登记密钥会**级联建 agents 行**,绕过注册检查」
—— **注释与实现不符**。
## 为什么这条断路没被报出来
报给客户端的是「请先调用 /agent/register 完成注册」,而 MCP 宿主
(Codex / Claude Desktop 等)**永远不会**去调它 —— 它只按配置发
`tools/list`。于是「admin 建身份 → 填进 MCP 配置 → 用」这条路是断的,
而断点没有任何报错指向 admin 侧。
## 修复
签 key 时顺带 `INSERT INTO agents`(ON CONFLICT DO NOTHING)。
★ **刻意不写成 online。** `CreateOrUpdateAgent` 那套是「插件刚启动、
自报家门」的语义(status='online' + last_seen=NOW());而 admin 预建的
身份**此刻还没连上**。写成 online 的症状很具体:WebUI 联系人里出现一个
「在线」却永远不回信的幽灵,而排查会先怀疑「是不是它卡住了」。
首次握手时 `TouchAgentLastSeen` 会把它改成在线 —— 那才是真的。
已有身份不会被改动任何字段(有判据钉住 secret/platform 不被覆盖)。
## 判据(3 格,2 个变异都转红)
- 签 key 后 agents 行存在,且 `VerifyAgentKey` 能解出身份
(不建行 → 转红)
- 预建身份不是 online、没有 last_seen
(offline → online → 转红)
- 已有 agent 的 secret/platform 不被签 key 改坏
14 包全绿。
2026-10-04 17:08:15 +08:00
..
2026-09-08 19:16:35 +08:00
2026-09-14 08:32:22 +08:00
2026-10-04 12:03:58 +08:00
2026-10-04 12:03:58 +08:00
2026-09-08 19:16:35 +08:00
2026-10-04 17:08:15 +08:00
2026-09-26 07:44:33 +08:00
2026-09-14 15:49:45 +08:00
2026-09-30 17:30:27 +08:00
2026-09-28 09:50:24 +08:00
2026-10-04 17:08:15 +08:00
2026-09-08 19:16:35 +08:00
2026-10-02 15:37:34 +08:00
2026-09-14 11:07:03 +08:00