Smalltalk远程编码服务

一个通过模型上下文协议(MCP)使AI代理能够与实时Smalltalk对象内存交互的服务,适用于远程编程和AI代理学习。

  • by ccrraaiigg
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ccrraaiigg/smalltalk-mcp

使用说明

闲聊mcp

用于对远程Smalltalk进行实时编码的MCP服务器

概述

该项目使AI代理能够与实时Smalltalk进行交互 通过模型上下文协议(MCP)访问对象存储器。

建筑

AI Agent (MCP client)
  ↓ MCP protocol (HTTP/SSE)
Deno Bridge Server (bridge.js)
  ↓ Tether protocol (binary)
SqueakJS Browser Instance (Caffeine object memory)

网桥服务器通过Tailscale漏斗暴露,使得SqueakJS 远程AI代理可以访问。

运作原理

  1. 代理获取初始对象 -AI代理使用 peer 获取对第一个暴露的Smalltalk对象(Tether实例)的引用的工具
  2. 代理发送消息 -代理人使用 send 工具,用于将Smalltalk消息发送到实时映像中的对象,以JSON形式传递参数
  3. 桥梁翻译 -MCP服务器将JSON参数转换为Tether二进制协议,以传输到Smalltalk
  4. 现场执行 -Smalltalk映像执行消息并返回Tether编码的结果
  5. 响应翻译 -MCP服务器将Tether结果转换回JSON,并将对象引用作为整数标签
  6. 工具调用缓存 -MCP服务器将每个工具调用和响应作为资源缓存,可通过时间戳访问
  7. 语义积累 -代理通过连续的交互建立对对象记忆的理解
  8. 源代码访问 -代理可以通过MCP资源读取方法源代码(格式: file:///source/<class>/<selector>)
  9. 方法编译 -代理可以使用以下命令编译和安装新方法 compileMethod 工具

关键洞察

代理仅使用Smalltalk对象的标签(32位 Tether协议定义的无符号整数)。代理累积 通过上下文窗口了解这些对象的语义知识 探索-发送信息、观察结果和建立心理 实时系统的模型。MCP服务器处理所有Tether编码/解码, 因此代理完全使用JSON。

文件

  • bridge.js -桥接MCP和Tether协议的Deno服务器
  • tether.js -Tether协议的JavaScript实现
  • tether-encoding.md -Tether消息编码/解码参考指南

示例

评价 3 + 4:

send(
  receiver: 1073741827,      // SmallInteger 3 (tag: 3 + 1073741824)
  selector: "+",
  arguments: "[4]"           // JSON array containing SmallInteger 4
)
// Returns: {"result": 1073741831}  // SmallInteger 7 (tag for 7)

代理在远程对象引用时使用JSON作为消息参数 表示为由Tether定义的32位无符号整数(标签) 协议。

本项目工作流程

用户和代理通过不断增长的用例协同工作 复杂性,开发解释代理是什么的Markdown文件 通过与Smalltalk交互来学习Smalltalk。这将提供 为未来的代理提供有关如何使用Smalltalk和启用配对的上下文 与用户一起编程。