插件安装失败:跨身份(匿名→登录)归属冲突报「账号/插件/版本已变化」
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 395
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
**提交人**: lima
**客户端版本**: 0.1.28
---
## 现象
登录账号后,从插件市场安装 **Web Search**(cindy-web-search)报错:
> 操作期间账号、插件或版本已发生变化,请确认最新状态后重试。
该插件此前在**未登录状态**下安装过,登录后无法安装。
## 复现步骤
1. 未登录状态下安装 Web Search 插件(成功)
2. 登录 Cindy 账号
3. 在插件市场重新安装 Web Search → 报上述错误
## 期望行为
登录账号后能正常安装 Web Search 插件;或提供把匿名身份下的插件记录迁移/解绑到登录账号的机制。
## 实际行为
安装请求被拒绝并提示「账号/插件/版本已变化」。客户端层面的重启、卸载旧记录均无法修复。
## 已尝试(均无效)
- 完全退出应用并重启
- 在旧(未登录)身份下卸载该插件后再用登录账号安装
## 本地诊断信息
存在多个 owner 身份目录。Web Search 的安装历史绑在匿名/本地设备身份下:
旧匿名身份 ledger(卸载后):
```
"cindy-web-search": {
"pluginId": "c1994cfb82c856a99831a4663",
"installed": false,
"scope": "public",
"source": "market",
"version": "1.2.2"
}
// defaultInstallOptOuts.local-v1 包含该 pluginId
c1994cfb82c856a99831a4663
```
当前登录身份 ledger 中**无**该插件条目。
## 推测根因
服务端把该插件的安装/卸载历史绑在了匿名设备身份(local-v1)上。当用登录账号作用域发起安装时,身份/作用域匹配失败,服务端拒绝并返回「账号/插件/版本已变化」。客户端层面的卸载/重启无法修复,因为服务端归属记录不会随本地操作更新。
---
**OS**: darwin arm64 (25.4.0)
**界面语言**: zh-CN
Contributor guide
Research direction
Start by tracing the plugin-market installation request and how it resolves the anonymous local-v1 owner versus the logged-in account. Reproduce the anonymous-install to login-install sequence and inspect the two ledger states described in the issue. Done means the logged-in account can install cindy-web-search successfully, or the ownership conflict has a defined migration or unlink path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- authentication, backend-api-design
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100