为 Databricks LLM 模型仿真 Claude Code 后端(含 MCP、Git 工具和 Prompt 缓存)
Source: Dev.to
介绍
Claude Code 很快就成为我最喜欢的仓库感知 AI 工作流工具之一。它能够理解你的代码库、浏览文件、汇总差异、运行工具,并通过简单的 CLI 与 Git 集成。
问题所在: 官方的 Claude Code 后端只能与 Anthropic 托管的模型配合使用。如果你想使用 Databricks 托管的 Claude 模型、通过 Azure 的 Anthropic 端点路由请求、添加本地工具和模型上下文协议(MCP)服务器、启用提示缓存,或自行运行后端进行实验,就会束手无策。
解决方案: Lynkr,一个自托管的兼容 Claude Code 的代理。
GitHub:
Lynkr 的功能
Lynkr 是一个 HTTP 代理,能够:
- 模拟 Claude Code 后端。
- 将请求转发至 Databricks 或 Azure Anthropic。
- 接入工作区工具、Git 辅助、提示缓存和 MCP 服务器。
你仍然使用普通的 Claude Code CLI,只需把它指向自己的后端:
Claude Code CLI → Lynkr → Databricks / Azure Anthropic / MCP tools
核心特性
提供商适配器
- 内置对两种上游提供商的支持:Databricks(默认)和 Azure Anthropic。
- 请求会被标准化,使 CLI 收到符合 Claude 风格的响应。
仓库智能
- 为工作区构建轻量级 SQLite 索引,捕获:
- 符号定义与引用
- 框架与依赖提示
- 语言混合检测
- Lint/测试配置发现
- 生成
CLAUDE.md摘要,为模型提供结构化的项目上下文。
Git 工作流集成
- 类似 Claude Code 的 Git 辅助:
status、diff、stage、commit、push、pull- 差异审查摘要
- 发布说明生成
- 策略守卫(环境变量):
POLICY_GIT_ALLOW_PUSHPOLICY_GIT_REQUIRE_TESTSPOLICY_GIT_TEST_COMMAND
提示缓存
- 基于提示签名的本地 LRU+TTL 缓存:
- 加速重复提示
- 减少 Databricks/Azure 令牌消耗
- 防止重复执行相同的分析步骤
- 调用工具时自动绕过缓存,以防产生不安全的副作用。
MCP 编排
- 自动发现 MCP 清单,启动服务器,使用 JSON‑RPC 包装,并将所有工具暴露给助手。
- 可选的 Docker 沙箱在需要时隔离 MCP 工具。
工作区工具
- 仓库索引与符号搜索
- 差异审查
- 测试运行器
- 文件 I/O 实用工具
- 轻量级任务追踪器(TODO 存储在 SQLite 中)
完全透明
- 所有活动均使用结构化的 Pino 日志记录,包括:
- 请求/响应追踪
- 仓库索引器事件
- 提示缓存命中/未命中
- MCP 注册表诊断
架构概览
代码库故意保持小而易于 hack——所有内容都位于 src/ 目录下。
安装 Lynkr
先决条件
- Node.js 18+
- npm
- Databricks 或 Azure Anthropic 凭证
- (可选)用于 MCP 沙箱的 Docker
- (可选)Claude Code CLI
安装方式
# 从 npm
npm install -g lynkr
# Homebrew
brew tap vishalveerareddy123/lynkr
brew install lynkr
# 从源码
git clone https://github.com/vishalveerareddy123/Lynkr.git
cd Lynkr
npm install
配置代理
为上游提供商(Databricks 或 Azure Anthropic)以及所需的策略标志设置相应的环境变量。以下是 Azure Anthropic 的示例:
export ANTHROPIC_API_KEY=your_key_here
export ANTHROPIC_ENDPOINT=https://anthropic.azure.com/anthropic/v1/messages
export PROVIDER=azure_anthropic
接入 Claude Code CLI
本地运行 Lynkr(默认端口 8080),并让 Claude Code 指向它:
lynkr start --port 8080
配置 Claude Code 使用代理,例如:
export CLAUDE_CODE_ENDPOINT=http://localhost:8080
随后在你的仓库中照常运行 CLI;所有工具调用、聊天、差异和导航都会通过 Lynkr 进行。
示例:调用工具
curl -X POST http://localhost:8080/v1/messages \
-H "Content-Type: application/json" \
-d '{
"model": "claude-2.1",
"messages": [{"role":"user","content":"Summarize the recent diff"}]
}'
故障排查要点
| 症状 | 可能原因 | 解决办法 |
|---|---|---|
| 缺少路径 | 工具参数错误 | 检查传递给工具的文件/路径是否正确 |
| Git 命令被阻止 | 未设置 POLICY_GIT_ALLOW_PUSH | 导出 POLICY_GIT_ALLOW_PUSH=true |
| 未发现 MCP 服务器 | 清单位置缺失 | 确保 MCP 清单文件位于工作区根目录或已配置的路径 |
| 提示缓存未生效 | 请求中使用了工具 | 工具调用会自动绕过缓存;移除工具调用后再测试缓存 |
| Web fetch 返回 HTML 框架 | 不支持 JS 执行 | 使用 JSON API 替代 HTML 页面 |
路线图
- 按文件的线程化差异评论
- 差异风险评分
- LSP 桥接以实现更深层的语言理解
- 声明式 “技能” 层
- 历史覆盖率和测试仪表盘
我为何构建它
我热爱 Claude Code 的用户体验,但需要:
- 完全本地执行
- 能够接入 Databricks 与 Azure Anthropic
- 自定义工具和 MCP 服务器
- 对内部行为的完整可视化
- 在不受平台限制的情况下快速实验
如果你正在探索 Databricks 或 Azure 上的 AI 辅助开发,并希望对后端拥有更多控制权,Lynkr 可能会对你有帮助。
GitHub:
欢迎贡献、提出想法和报告问题。