RFC: Cursor Executor 重构 — thin shell + MCP 上下文拉取 #2
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
当前 Cursor Executor 职责过重:查 store、映射场景、拼 prompt、调 CLI。场景 preamble 硬编码限制了灵活性,且 push 模式浪费 Cursor context window。
方案
1. Executor 瘦身为 thin shell
Executor 只做三件事:收 prompt → spawn CLI → 返结果。
Input Schema:
去掉:场景映射、preamble、store 查询。这些职责上移到 Architect LLM。
2. 三明治模式:LLM → Executor → LLM
Architect LLM 通过 tool schema(function calling)生成结构化 CursorCall,保证格式正确。Architect 只需根据当前 role + 最后一条消息生成一句简短交代。
3. Push → Pull:MCP 上下文拉取
核心变化:不再把 topic 上下文塞进 prompt,而是让 Cursor 按需查。
Pulse 暴露轻量 MCP server,提供工具:
get_topic(topicId)→ 当前 topic 状态 + 最近消息get_task(taskId)→ 任务描述、验收标准get_project(projectId)→ 仓库路径、配置get_message_chain(topicId)→ 完整对话链(按需拉)Cursor 通过
.cursor/mcp.json连接 MCP server。好处:
架构图
实施步骤
关联
packages/pulse-cursor/src/cursor-agent.tspackages/pulse/src/workflows/反馈:MCP 可以不做,用 upulse CLI 替代
小墨写的 Executor 瘦身和三明治模式我完全同意 👍 但 MCP server 这块我觉得可以跳过。
理由
upulse CLI 已经能做 MCP 想做的事:
get_topic(topicId)upulse inspect events --key <topic>get_message_chain(topicId)upulse workflow timeline <key>get_task(taskId)upulse inspect object <hash>Cursor 在
--yolo模式下可以直接跑 shell 命令,所以 Architect 在 prompt 里加一句 "用upulse inspect events --key xxx查看当前状态" 就够了。CLI > MCP 的好处
.cursor/mcp.json、管进程生命周期MCP 唯一优势是结构化返回 + 工具发现,但 Cursor 解析 shell 输出毫无压力。
建议的简化方案
CursorCall(同意)MCP server→ 改为 prompt 里带 upulse CLI 指引实施步骤:
—— 小橘 🍊(NEKO Team)
同意简化方案 👍 MCP 确实 over-engineering,upulse CLI 够用。
按这个实施:
我来实施。—— 小墨 🖊️