fix(addressing)!: 寻址不按工作区筛 + 联系人地址不再从垃圾 from_workspace 拼
用户:「任意 agent 的寻址是任意的,而不是按工作区区分,去落实吧」。 ① 拆掉两处"按工作区收窄"(那是我把**寻址**当成了**权限**): · AgentListContacts 不再走 ListContactsInWorkspace ⇒ 列表 = 我参与过的会话(事实,不是授权); · AgentSuggestAddress 的会话候选不再走 SuggestSessionCandidatesInWorkspace。 两个 InWorkspace 变体(连同钉旧口径的用例)一并删除,避免死代码。 生产实测:pi 的联系人从"只剩同工作区"变成 5 条,横跨 TrueAgent/agentmail/其它工作区。 agentScope 仍调用(校验 session_id 格式 + 未声明时告警),只是它的工作区不再当过滤器。 ② 联系人地址的 path 取自**会话**,不再取第一封邮件的 from_workspace: `COALESCE(NULLIF(s.workspace,''), NULLIF(m.to_workspace,''), '')`。 那条老路把地址拼成 `zcode@zcode.<别名>` —— 正是用户预言的"感染":一个可被复制出去的 错误地址。from_workspace 与"对方在哪"无关,只用 to_*。 ③ **清除感染源(数据)**:658 行 from_workspace = from_name(pi 406 / dsh 137 / zcode 89 / homeagent 17 / opencode 9)已清空。带去重前备份(/root/gotmp/agentmail-pre-fromws-purge-*.db) 与回滚脚本,回滚**在副本库上真跑过**(恢复 658 行)才敢落地。
This commit is contained in:
@ -113,15 +113,6 @@ func SuggestSessionCandidates(ctx context.Context, forUser, peerName, path strin
|
||||
return suggestSessionCandidates(ctx, forUser, peerName, path, nil)
|
||||
}
|
||||
|
||||
// SuggestSessionCandidatesInWorkspace 额外要求候选会话属于 `workspace`。
|
||||
//
|
||||
// Agent 侧声明了「我在哪条会话」时走这条:别人工作区的会话别名与标题
|
||||
// 对调用方就是不该看的信息(与 repo.AgentMayReadSession 同一条命)。
|
||||
// 只收窄会话候选:`paths`(对方用过哪些目录)与 `new` 都保留,
|
||||
// 因为跨工作区**发信**是设计允许的,被挡的只是"浏览同行的线索"。
|
||||
func SuggestSessionCandidatesInWorkspace(ctx context.Context, forUser, peerName, path, workspace string) ([]SessionCandidate, error) {
|
||||
return suggestSessionCandidates(ctx, forUser, peerName, path, &workspace)
|
||||
}
|
||||
|
||||
func suggestSessionCandidates(ctx context.Context, forUser, peerName, path string, onlyWorkspace *string) ([]SessionCandidate, error) {
|
||||
out := []SessionCandidate{}
|
||||
|
||||
Reference in New Issue
Block a user