带有状态REPL的代码模式

Reddit r/AI_Agents 工具

摘要

作者介绍了 ptc_runner_mcp,这是一个 MCP 服务器,它提供了一个有状态的、沙盒化的 REPL,使用类似 Clojure 的语言,允许 AI 代理进行探索性计算,而不会使上下文窗口过载。

我一直致力于开发 `ptc_runner_mcp`——一个 MCP 服务器,它为 AI 智能体提供一个有状态、沙盒化的 REPL,使用类似 Clojure 的小型语言。在使用 MCP 的过程中,我反复遇到的问题不仅仅是工具发现,更是工具调用之后发生了什么。许多智能体任务本质上是探索性计算任务。如果所有数据都回流到模型上下文中,LLM 就会开始在“脑子里”做计算——这就是错误结果和上下文窗口缩水的根源。`ptc_runner_mcp` 暴露了一个主要工具:`lisp_eval`。在 `lisp_eval` 内部,智能体获得一个类似 REPL 的会话。它可以检查可用的 MCP 服务器/工具,调用它们,将结果存储在会话内存中,定义辅助函数,并在同一状态下继续工作。发现过程也是 REPL 形态的——智能体无需将每个工具的模式预先推入上下文,而是可以使用它已经理解的东西:`(mcp/servers)` `(dir 'github)` `(doc 'github/search_issues)` `(apropos "calendar")`。然后它可以发起一个小的探测调用,了解结果形状,获取真正的数据,并在本地进行计算。例如,它无需将 1000 条记录拉入对话中,而是可以这样操作: ```clojure (def traces (fetch-all-traces "org-acme" "production")) (defn cost [t] (Double/parseDouble (get t "total_cost"))) (->> traces (group-by day) (map (fn [[day xs]] {:day day :total (reduce + (map cost xs))})) (sort-by :total)) ``` 模型看到的是计算的结果(如果太长则会被截断)。在下一轮交互中,它可以继续使用已定义的辅助函数。 我采用这种方式的另一个原因是性能和运维的简洁性。会话运行在 BEAM 上,因此非常轻量。你可以在单台机器上保持大量并发、有状态的 REPL 会话并保持低延迟,而无需管理一个由更笨重的 Python/JS 沙盒组成的池。
查看原文

相似文章

使用 MCP 进行代码执行:构建更高效的智能体

Anthropic Engineering

本文来自 Anthropic,探讨了如何将代码执行与 Model Context Protocol (MCP) 相结合,以提升 AI 智能体的效率。文章分析了工具定义和中间结果导致的 token 过载等挑战,并提出代码执行作为降低延迟和成本的解决方案。

@akshay_pachaar: MCP 与 CLI 之争。在 2025 年的大部分时间里,AI 工程师们对此争论不休。怀疑论者摆出了真实数据:- Playwright MCP …

X AI KOLs Following

Anthropic 的“代码模式”(Code Mode)重新定义了 MCP 与 CLI 之争。它让 AI 代理编写代码,通过运行时调用工具,而不是将完整的模式加载到上下文中,从而大幅减少了 token 消耗。这种方法结合了 MCP 的强类型契约与懒加载机制,证明了该协议正在演进,而非走向消亡。