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.jsVS代码(副本):
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.4MCP工具
| 工具 | 说明 |
|---|---|
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提供程序/模型 |
工作流程
- 请求 --用户要求使用工具(例如,“创建颜色转换器”)
- 合成 --LLM生成工具代码
- 测试 --提交前使用示例参数进行验证
- 批准 --人工审查和批准代码
- 执行 --工具在沙盒环境中运行
- 商店 --批准的工具在会话中持续存在
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
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密钥未存储在配置文件中
状态
生产就绪 --第一阶段完成。
