为 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
核心功能
Provider 适配器
- 内置对两个上游提供商的支持:Databricks(默认)和 Azure Anthropic。
- 请求会被标准化,使 CLI 接收到标准的 Claude 风格响应。
仓库智能
- 为你的工作区构建轻量级 SQLite 索引,捕获:
- 符号定义与引用
- 框架与依赖提示
- 语言混合检测
- Lint/测试配置发现
- 生成
CLAUDE.md摘要,为模型提供项目的结构化上下文。
Git 工作流集成
- 类似 Claude Code 的 Git 助手:
status、diff、stage、commit、push、pull- Diff 审查摘要
- 发布说明生成
- 策略守卫(环境变量):
POLICY_GIT_ALLOW_PUSHPOLICY_GIT_REQUIRE_TESTSPOLICY_GIT_TEST_COMMAND
Prompt 缓存
- 基于提示签名的本地 LRU+TTL 缓存:
- 加速重复提示
- 减少 Databricks/Azure 令牌消耗
- 避免重复执行相同的分析步骤
- 调用工具时会自动绕过缓存,以防止不安全的副作用。
MCP 编排
- 自动发现 MCP 清单,启动服务器,使用 JSON‑RPC 包装,并将所有工具暴露给助手。
- 可选的 Docker 沙箱在需要时隔离 MCP 工具。
工作区工具
- 仓库索引与符号搜索
- Diff 审查
- 测试运行器
- 文件 I/O 实用工具
- 轻量级任务跟踪器(TODO 存储在 SQLite 中)
完全透明
- 所有活动均记录为结构化的 Pino 日志,包括:
- 请求/响应追踪
- 仓库索引器事件
- Prompt 缓存命中/未命中
- MCP 注册表诊断
架构概览
代码库故意保持小而易于 hack——所有内容都位于 src/ 目录下。
安装 Lynkr
先决条件
- Node.js 18+
- npm
- Databricks 或 Azure Anthropic 凭证
- (可选)用于 MCP 沙箱的 Docker
- (可选)Claude Code CLI
安装选项
# From npm
npm install -g lynkr
# Homebrew
brew tap vishalveerareddy123/lynkr
brew install lynkr
# From source
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 获取返回 HTML 框架 | 不支持 JS 执行 | 使用 JSON API 而非 HTML 页面 |
路线图
- Per‑file threaded diff comments
- Risk scoring on diffs
- LSP bridging for deeper language understanding
- Declarative “skills” layer
- Historical coverage and test dashboards
为什么我构建了它
我喜欢 Claude Code 的用户体验,但我需要:
- 完全本地执行
- 能够接入 Databricks 和 Azure Anthropic
- 自定义工具和 MCP 服务器
- 对内部行为的完整可见性
- 在没有平台限制的情况下快速实验
如果您正在探索在 Databricks 或 Azure 上的 AI 辅助开发,并希望对后端拥有更多控制,Lynkr 可能会有帮助。
GitHub:
欢迎贡献、提出想法和报告问题。