Skip to content

[bug] project/user scope 隔离不完整:recall 仍双 scope、auto-recall upvote 落 user、hooks inject 与 pull manifest 不一致 #85

Description

@jeff-r2026

承接 #58 / #73(均已 CLOSED)。在当前 tencent-main 分支上复查发现 scope 隔离仍有未落地与不一致之处:

1. recall 仍在合并 user + project 双 scope(与 #73 期望相反)

#73 的期望是:检测到 project scope 时只查 project、跳过 user。但当前 recall() 仍然把 project 与 user 两个索引都搜出来再合并去重:

// src/recall.ts:234-280
// Try project scope first ... 然后 Try user scope ... 合并 allResults

auto-recall 只用单一 scope 索引(src/auto-recall.ts:557-565)。结果是手动 recall 与 hook 自动 recall 行为不一致,且未按 #73 完成隔离。需确认 #73 是否未合并到本分支。

2. auto-recall 在 project scope 下把 upvote 写到 user repo

读索引按 project scope,但 upvote 固定走 requireInit()(user):

// src/auto-recall.ts:651-653
const { localConfig } = await requireInit();
await autoUpvote(results, localConfig.username, localConfig.repo.localPath);

project 场景下投票数据落到 user 的 repo/username,归属错误。

3. hooks injectpull 对 project scope 的 manifest 处理不一致

  • hooks inject:project scope 下同时写 project ~/.claude/ 等 user 目录,且用 project 的 manifest 去 reconcile user settings(src/hooks-cmd.ts:18-29,73-76)。
  • pull 的 reconcile:每个 scope 各用各自的 baseDir + manifest(src/pull.ts:1147-1159src/hooks.ts:478)。

~/.cursor/hooks.json 等被 project manifest 跟踪,下次 user pull 又用 user manifest reconcile 同一文件,可能造成重复注入/误清理。#44 只修了 hooks remove 的双目录清理,未覆盖 inject 这条。

4. 其他

  • tags subscribe/unsubscribe 完全忽略 project scope,始终写 ~/.teamai/config.yamlsrc/tags.ts:70-124)。
  • contribute 写完 learnings 不重建 search-index,需等下次 pull 才进 recall(src/contribute.ts)。
  • project config 缺 projectRoot 字段时 getTeamaiHome('project') 静默退化为 ~/.teamai/src/types.ts:692-697),index/state/env/hooks 全落到 user home;detectProjectConfig() 不用 cwd 补全 projectRoot。

建议

统一以 #73 的“project 命中即隔离 user”为准则核对所有读/写路径(recall / auto-recall upvote / hooks inject / tags / contribute),并补回归测试。

严重程度:高(数据归属与一致性)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions