动态工具生成系统

一个基于LLM的动态生成TypeScript工具的系统,需要人工审批并在沙箱环境中安全执行。

  • by EyeSeeThru
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 EyeSeeThru/jit-tool-synthesis

使用说明

JIT工具合成v4

LLM驱动的按需工具生成,具有人在环审批和安全执行。

概述

该系统使用LLM动态生成TypeScript工具,在执行前需要人工批准,并在沙盒环境中运行它们。

建筑

┌─────────────┐     ┌──────────────┐     ┌─────────────┐
│ Synthesizer │────▶│   Approval   │────▶│  Sandbox    │
│   (LLM)     │     │ (Human Gate) │     │ (Execution) │
└─────────────┘     └──────────────┘     └─────────────┘
       │                   │                    │
       ▼                   ▼                    ▼
  Generates TS        Waits for            Runs in
  tool code          human approval       isolated env

组件

文件 目的
synthesizer.ts 使用任何与OpenAI兼容的LLM生成工具代码
approval.ts 人在回路门——执行前需要批准
sandbox.ts 生成代码的安全执行环境
registry.ts 工具持久性和存储
server.ts MCP服务器集成
config.ts 运行时配置管理

供应商不可知

此工具适用于 任何 与OpenAI兼容的LLM API:

  • OpenRouter -100+型号(克劳德、GPT、火焰等)
  • 开放人工智能 --GPT-4o、o3等。
  • 奥拉玛 --当地模特(Llama、Qwen等)
  • LM 工作室 --带有GUI的本地模型
  • 格罗克 --快速推理
  • 任何 其他兼容OpenAI的API

设置

# Install dependencies
npm install

# Copy environment template
cp .env.example .env

配置LLM提供程序

编辑 .env 提供您的提供商详细信息:

# Option 1: OpenRouter (default - 100+ models)
LLM_API_KEY=your-openrouter-key
LLM_BASE_URL=https://openrouter.ai/api/v1
LLM_MODEL=anthropic/claude-sonnet-4-6

# Option 2: OpenAI direct
LLM_API_KEY=sk-...
LLM_BASE_URL=https://api.openai.com/v1
LLM_MODEL=gpt-5.4

# Option 3: Ollama (local)
LLM_BASE_URL=http://localhost:11434/v1
LLM_MODEL=llama-3.3

# Option 4: Groq
LLM_API_KEY=gsk_...
LLM_BASE_URL=https://api.groq.com/openai/v1
LLM_MODEL=llama-3.3-70b-versatile

用法

构建

npm run build

使用MCP检查员进行测试

验证一切正常的最快方法:

npx @modelcontextprotocol/inspector node dist/server.js

连接到MCP客户端

此服务器与 任何 MCP客户端。配置示例:

克劳德桌面版 --添加到您的Claude Desktop MCP设置中:

{
  "mcpServers": {
    "jit-tool-synthesis": {
      "command": "node",
      "args": ["/absolute/path/to/jit-tool-synthesis/dist/server.js"],
      "env": {
        "LLM_API_KEY": "your-api-key",
        "LLM_BASE_URL": "https://openrouter.ai/api/v1",
        "LLM_MODEL": "anthropic/claude-sonnet-4-6"
      }
    }
  }
}

克劳德代码:

claude mcp add jit-tools node /absolute/path/to/jit-tool-synthesis/dist/server.js

VS代码(副本):

code --add-mcp '{"name":"jit-tools","type":"stdio","command":"node","args":["/absolute/path/to/jit-tool-synthesis/dist/server.js"]}'

光标 --添加到 .cursor/mcp.json:

{
  "mcpServers": {
    "jit-tools": {
      "command": "node",
      "args": ["/absolute/path/to/jit-tool-synthesis/dist/server.js"],
      "env": { "LLM_API_KEY": "your-api-key" }
    }
  }
}

运行时配置

您可以在不重新启动的情况下更改LLM提供程序:

# View current config
get_config

# Change model at runtime
set_config model=openai/gpt-5.4

MCP工具

工具 说明
synthesize_tool 从自然语言生成新工具
test_tool 在批准之前,使用示例参数测试待定工具
approve_tool 激活挂起的工具
reject_tool 丢弃待处理的工具
execute_tool 运行经批准的工具
list_generated_tools 列出所有批准的工具
get_tool 查看工具详细信息
remove_tool 删除工具
list_pending 列出等待批准的工具
get_config 查看LLM配置
set_config 在运行时更改LLM提供程序/模型

工作流程

  1. 请求 --用户要求使用工具(例如,“创建颜色转换器”)
  2. 合成 --LLM生成工具代码
  3. 测试 --提交前使用示例参数进行验证
  4. 批准 --人工审查和批准代码
  5. 执行 --工具在沙盒环境中运行
  6. 商店 --批准的工具在会话中持续存在

环境变量

变量 描述 默认值
LLM_API_KEY 您的提供商的API密钥 (云需要)
LLM_BASE_URL API端点 https://openrouter.ai/api/v1
LLM_MODEL 要使用的模型 人/claude-sonnet-4-6

还支持(传统): OPENROUTER_API_KEY, OPENAI_API_KEY, OPENAI_BASE_URL, SYNTHESIZER_MODEL

安全

  • 生成的代码在隔离的VM沙箱中运行
  • 阻塞的模式可以防止危险的代码(进程、需求、评估等)
  • API密钥未存储在配置文件中

状态

生产就绪 --第一阶段完成。