Session Presence
同时运行多个 AI 编程会话?Session Presence 让它们能实时感知彼此——谁在线、在哪个项目上、每个会话当前在处理什么。这是会话相互感知与各自盲目工作之间的本质区别。
记忆与感知
ContextForge 记忆回答关于过去的问题:之前发生了什么、做出了哪些决策、修正了什么。Session Presence 回答另一个问题——关于当下:
此刻还有谁在处理这个?就在我工作的同时? 记忆是历史。感知是实时意识。当你针对同一项目运行两个或更多会话时,感知机制能防止会话 B 进入会话 A 已打开的模块。
工作原理
感知功能完全自动。MCP 客户端——每个 Claude Code、Cursor 或 Copilot 会话对应一个进程——负责管理它。你无需运行任何设置命令:
- 自动注册。会话在首次使用任意工具时自动宣告自己上线。无需手动开启。
- 心跳检测。每个会话每隔几分钟静默签到一次,确保列表中只显示真正活跃的会话。
- 干净退出。会话关闭时立即移除——即使在进程被终止前的瞬间也不例外。不留任何残影。
- 安全兜底。若会话异常终止(崩溃、合盖),它会在大约十分钟没有心跳后自动消失。不会留下过期的幽灵会话。
三个工具
你几乎不需要直接呼叫这些工具——只需用自然语言与智能体交谈,它会选择合适的工具。这里故意没有 session_start 工具:注册是隐式完成的。
session_list — 查看还有谁在这里
列出项目中其他活跃会话及各会话的当前焦点。在对话开始时和进行重大变更前运行它。
# 直接用自然语言询问
"Is anyone else working on this project right now?" "Before I touch the auth module — is another session already on it?"
session_update — 声明你正在处理的内容
声明本会话的当前焦点,让其他所有会话可见。在开始或切换任务时调用。
"I'm working on the payments flow now — let the other sessions know." "Update my focus: refactoring the auth module."
session_end — 清除你的感知状态
显式结束本会话的感知状态。通常无需手动调用——关闭会话会自动完成这一操作。
"I'm done here — end my session presence."
项目范围限定
默认情况下, session_list 仅显示与当前目录关联项目中的会话——因为这才是工作真正发生冲突的地方。在五个不同代码库中度过的繁忙下午不会变成噪音。
- 默认:仅显示当前项目中的会话。
- 未关联项目?回退到显示你所在组织中的所有会话。
- 想要全局视图?请求查看组织中的所有会话以扩展视野。
建议性,而非强制性
感知机制是门上的"忙碌"标志,而非上锁的钥匙。它从不阻止你执行任何操作——只是确保你不会在毫不知情的情况下操作。你始终掌控全局,基于完整信息而非残缺信息做出决策。
推荐工作流
对话开始时
询问"还有谁在处理这个项目?"——就像进办公室找位置前先环顾四周一样。如果某个会话已经在处理你准备动手的模块,就换一个任务。
切换任务时
用一句话说明你要切换到什么——"我现在在处理计费流程"——让其他所有会话都能看到并绕开。
Session Presence 已包含在当前 ContextForge MCP 版本中,支持 Claude Code、Cursor 和 Copilot。更新到最新版本即可启用——无需额外配置。
让智能体自动检查
感知看板本身是完全自动的——但智能体只有在真正查阅看板时才能从中受益。你可以每次手动询问,也可以添加项目规则让每个会话自行检查。一条命令即可完成:
npx contextforge-mcp init
这会在项目的 CLAUDE.md 中追加一个 Session Presence — Coordination Rules 章节(Cursor 用户对应 .cursorrules),指示智能体:
- 对话开始时检查。在执行任何操作前调用
session_list,并告知你还有谁在线。 - 重大变更前再次检查。若另一个会话的焦点与它即将修改的区域重叠,它会警告你并由你决定——建议性的,从不强制。
- 宣告自身焦点。每次切换任务时更新一行焦点描述,让其他会话能够绕开。
之前已运行过 init? 再次运行——它只会追加缺失的章节,不会修改文件中的其他内容。你现有的规则和编辑会完整保留。