revert(过度矫正): 撤回"目录合不合法"的两道门槛 —— 错在投递,不在值

用户否掉了我上一步的方向:「?拒收那个目录干啥?明明是你的网关投递逻辑造成的错误」。

他是对的。/home 是**合法目录**,平台不该替用户裁定"哪个目录算工作目录":
网关地址受理处的 400、建议接口的过滤、桥侧的同类闸(revert 141003d)全部撤回。
判据随之删除 —— 判据不该给错误的实现护航(那会让错的东西看起来有保障)。

保留的是**真修复**(ad1f3f1,已在线):
- 会话解析按 (path, 别名):错投的根因是解析只看别名、path 被当提示;
- 唯一索引 (path, 别名);无 path 时"唯一才认,否则报歧义";
- 毒数据清理(/home 污染值 0|0|0)。
核心回归判据 TestFindNamedSessionForRequiresPath 保留。

仍未修(用户指的那一处):SSE 投递只按 name 广播 —— 同名不同 path 的客户端谁接到谁处理。
下一 commit:投递也带会话身份,只投给声明了该会话的客户端。
This commit is contained in:
2026-09-15 12:54:25 +08:00
parent 82c51e7a8e
commit 7e1adfd731
3 changed files with 8 additions and 88 deletions

View File

@ -82,32 +82,3 @@ func TestFindNamedSessionForRequiresPath(t *testing.T) {
t.Fatalf("没参与过这条线索的名字不该命中,实际 %v", err)
}
}
// IsPlausibleWorkspace:地址受理与"目录建议"共用的一条规则。
//
// 它存在的意义是**堵住源头**:一个 `/home` 这样的值进了地址,会话的 workspace 就错了,
// 桥会把 worker 起在那里(实测 cwd=/home),那个 worker 发的信继续带 /home,
// 建议接口再把它学成第一条候选 —— 自我强化。所以这里两侧都钉:
// 实测污染过的形状必须是 false,真实工作目录必须是 true。
func TestIsPlausibleWorkspace(t *testing.T) {
cases := []struct {
in string
want bool
why string
}{
{"/home", false, "一切的家目录(实测污染值)"},
{"/root", false, "进程家目录(实测污染值)"},
{"/root/.pi/mail-sessions/8f056b73", false, "会话存储目录(实测污染值)"},
{"/home/program/agentmail/../llmsproxy", true, "含 .. 但归一化后是具体目录"},
{"rel/path", false, "相对路径不是地址里的 path"},
{"", false, "空"},
{"/home/program/agentmail", true, "真实工作目录"},
{"/home/newqqagent", true, "homeagent 的真实工作目录"},
{"/tmp/remotebot-ws", true, "尚未创建的注册目录也要放行(不做存在性检查)"},
}
for _, c := range cases {
if got := IsPlausibleWorkspace(c.in); got != c.want {
t.Errorf("IsPlausibleWorkspace(%q) = %v, want %v(%s)", c.in, got, c.want, c.why)
}
}
}