AI编码助手多智能体编排服务

kemdiCode MCP是一个支持持久化认知、多智能体编排和分布式集群通信的AI编码助手扩展服务,适用于复杂代码分析和团队协作场景。

  • by kemdi-pl
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 kemdi-pl/kemdicode-mcp

使用说明

Persistent Cognition, Cluster Bus & Magistrale, Parallel Multi-Agent Orchestration with Live Monitoring for AI Coding Assistants


kemdiCode MCP 是一个 模型上下文协议 该服务器通过持久认知、多代理编排、分布式集群通信和上下文压缩扩展了AI编码助手。 63工具 跨15个类别,由Redis支持跨会话状态,8个LLM提供程序支持嵌入式AI执行。

洛伦兹启发的压实管道 --通过庞加莱截面进行相位检测,通过吸引子循环去重进行轨道压缩,以及CTC扰动影响评分——保持了跨上下文窗口边界的推理连续性。

集群巴士和Magistrale --两层总线(ClusterBus L3用于集群间Redis发布/订阅,GlobalEventBus L1用于进程内事件),具有18种信号类型、基于MetaRouter标签的路由、反放大桥和LLM Magistrale,用于跨集群的分布式快速执行(4种策略:先赢、n中最佳、共识、回退链)。

九种思维 --九种专门的认知主体(苏格拉底式、本体论者、种子架构师、评估者、逆向者、黑客、简化者、研究者、架构师),每种都有不同的思维方式。受启发于 衔尾蛇 哈里·蒙罗。按需加载,从不预加载。

33个测试文件中的741个测试。适用于Claude Code、Cursor、Windsurf、VS Code、Zed和任何兼容MCP的客户端。


安装

bun install -g kemdicode-mcp
Claude Code
claude mcp add kemdicode-mcp -- kemdicode-mcp --stdio
Cursor — ~/.cursor/mcp.json
{
  "mcpServers": {
    "kemdicode-mcp": {
      "command": "kemdicode-mcp",
      "args": ["--stdio"]
    }
  }
}
Windsurf — ~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "kemdicode-mcp": {
      "command": "kemdicode-mcp",
      "args": ["--stdio"]
    }
  }
}
VS Code (GitHub Copilot) — .vscode/mcp.json
{
  "mcp": {
    "servers": {
      "kemdicode-mcp": {
        "command": "kemdicode-mcp",
        "args": ["--stdio"]
      }
    }
  }
}
Zed — ~/.config/zed/settings.json
{
  "context_servers": {
    "kemdicode-mcp": {
      "command": {
        "path": "kemdicode-mcp",
        "args": ["--stdio"]
      }
    }
  }
}
KiroCode / RooCode — .kiro/settings/mcp.json
{
  "mcpServers": {
    "kemdicode-mcp": {
      "command": "kemdicode-mcp",
      "args": ["--stdio"]
    }
  }
}
HTTP Transport (multi-session)
kemdicode-mcp --port 3100
Redis (required for persistence)

没有Redis,只有无状态工具(代码智能、AI调用)才能发挥作用。

# Docker (recommended)
docker run -d -p 6379:6379 redis:alpine

# macOS
brew install redis && brew services start redis

# Debian/Ubuntu
sudo apt install redis-server && sudo systemctl start redis
Build from Source
git clone https://github.com/kemdi-pl/kemdicode-mcp.git
cd kemdicode-mcp
bun install && bun run build && bun run start

配置

大语言模型提供商

kemdiCode支持8个LLM提供商,具有统一的 provider:model:thinking 语法。

别名 提供者 SDK 身份验证
o OpenAI 原生 OPENAI_API_KEY
a 人类学 本土 ANTHROPIC_API_KEY
g 双子座 原住民 GEMINI_API_KEY
q 格鲁克 OpenAI-compat GROQ_API_KEY
d DeepSeek OpenAI兼容 DEEPSEEK_API_KEY
l Ollama OpenAI同胞 (无)
r OpenRouter OpenAI兼容 OPENROUTER_API_KEY
p 困惑 OpenAI兼容 PERPLEXITY_API_KEY

思考令牌控制:

o:o3:high                     # OpenAI reasoning effort (low/medium/high)
a:claude-sonnet-4-6:4k        # Anthropic thinking budget (4096 tokens)
g:gemini-2.5-flash:8k         # Gemini thinking budget (8192 tokens)

自定义端点(运行时热重新加载):

ai-config --action add-custom --name minimax --baseURL https://api.minimax.io/v1 --apiKey sk-...
# Then use: custom:minimax:MiniMax-M2.5

CLI标志

kemdicode-mcp [options]

  --stdio                 Stdio transport (subprocess mode for MCP clients)
  -m, --model <spec>      Primary AI model (provider:model:thinking)
  -f, --fallback <spec>   Fallback model on quota/error
  --port <n>              HTTP server port (default: 3100)
  --host <addr>           Bind address (default: 127.0.0.1)
  --redis-host <addr>     Redis host (default: 127.0.0.1)
  --redis-port <n>        Redis port (default: 6379)
  --no-context            Disable Redis context sharing
  --compact               Minimal output

工具参考

15个类别的63个工具。整合工具使用 action 参数(例如。, task action=create|get|list|update|delete).

类别 工具
核心AI ask-ai plan build brainstorm batch pipeline
代码智能 find-definition find-references semantic-search
多LLM multi-prompt consensus-prompt enhance-prompt mind-chain
认知 decision-journal confidence-tracker mental-model intent-tracker error-pattern self-critique smart-handoff context-budget
代理 agent agent-comm monitor
上下文 shared-thoughts get-shared-context feedback
看板 task task-multi board workspace
记忆 memory checkpoint
递归 invoke-tool invoke-batch invocation-log agent-orchestrate
会话 session
思考 thinking-chain
知识图谱 graph-query graph-find-path loci-recall sequence-recommend
集群总线 cluster-bus-status cluster-bus-topology cluster-bus-send cluster-bus-magistrale cluster-bus-flow cluster-bus-routing cluster-bus-inspect cluster-bus-file-read audit-scheduler
MCP客户端 client-sampling client-elicit client-roots
系统 env-info memory-usage ai-config ai-models tool-health config ping help

建筑

事件总线(2层)

L3  ClusterBus     Redis Pub/Sub cross-process signaling
                   18 signal types, 4 send modes (unicast/broadcast/routed/multicast)
                   HMAC auth, bloom filter dedup, backpressure, circuit breaker
    ----bridges--> hop limit 5, source prefix guard
L1  GlobalEventBus In-process async events, namespaced, max chain depth 8
                   Redis bridge for cross-session propagation

洛伦兹语境压缩

在压缩边界上保持推理连续性的三种算法:

  1. 相位检测 --庞加莱截面分析。连续的Jensen Shannon分歧确定了话题转换。阶段边界携带了关于推理轨迹的最大信息。

  2. 轨道压缩 --洛伦兹吸引子循环检测。具有贪婪循环搜索的NxN TF-IDF余弦相似性矩阵(长度2-10,最小2次重复)。保留第一个循环,修剪重复。

  3. 扰动影响 --JSD(full_context,context_without_item)量化每个项目的贡献。高冲击项目是压实后幸存的因果锚。

九种思维

九种专门的认知主体,每种都有不同的思维方式。受启发于 衔尾蛇 哈里·蒙罗:

思维 模式 核心问题
socratic 质疑 “你在假设什么?”
ontologist 分类 “这到底是什么?”
seed-architect 结晶 “这是完整和明确的吗?”
evaluator 验证 “我们建造了正确的东西吗?”
contrarian 对抗 “如果相反的情况属实呢?”
hacker 横向 “哪些约束是真实的?”
simplifier Reductive “最简单可行的方法是什么?”
researcher 证据 “我们实际上有什么证据?”
architect 结构性 “如果我们重新开始,我们会这样建造吗?”

使用任何头脑作为 agent 参数: ask-ai --agent socratic --prompt "...".为多角度分析撰写它们:苏格拉底→ 本体论者→ 种子建筑师(辩证推进)。

能动循环

自主代理执行,子代理生成(最大深度2,全局预算10),通过以下方式注入文件上下文 @path 语法和完整的编排ID可追溯性。

并行代理 --通过并行方式启动2-10个代理 agent-orchestrate --parallel每个人都有一个独特的 orchestrationId,通过Redis和内存缓存实时跟踪。通过以下方式汇总结果 Promise.allSettled.

实时监控 --代理运行时查询编排状态(MCP在工具调用期间阻塞,因此使用HTTP):

# List all active orchestrations
curl http://localhost:3100/orchestrations

# Get specific orchestration status
curl http://localhost:3100/orchestrations/<id>

# Or via MCP tool (when not blocked)
monitor --view orchestrations

编排ID可追溯性 --每个代理循环都会得到一个UUID。子代理通过以下方式向母公司推荐 parentOrchestrationId所有认知记录(决策、信心、意图、错误、批评、交接)都带有 orchestrationId 以实现嵌套代理层次结构的完全可追溯性。

工具访问 --默认情况下,所有kemdiCode工具都可供代理使用(只读、看板、思维链——无需shell/文件写入)。使用 allowedTools 或 blockedTools 为每个代理定制。

并发模型

  • 通过以下方式进行每次会话隔离 AsyncLocalStorage (通过异步链传播)
  • 用于任务状态突变的Redis事务(MULTI/EXEC、Lua脚本)
  • 具有SET NX PX、Lua CAS释放、3次重试退避的分布式锁

实际使用情况

kemdiCode工具在三个层次上工作。以下是开发人员每天遇到的实际场景。

第一级:无状态工具(无AI代理)

Claude Code(或Cursor等)直接调用kemdiCode工具——没有嵌入式AI,只有结构化认知和代码智能。

场景:“我在各个项目中都遇到了相同的Redis超时错误”

# 1. Check if you've seen this before
error-pattern action=match errorType="redis-timeout"
# → Returns: "Pattern found: connection pool exhaustion under load.
#    Fix: set maxRetriesPerRequest=3, enable enableOfflineQueue=false"

# 2. It's a new variant — record it
error-pattern action=record \
  errorType="redis-timeout" \
  pattern="ETIMEDOUT after 200 concurrent writes in bull queue" \
  fix="Switch from ioredis default to pooled connection with family=6 on k8s"

# 3. Track the decision
decision-journal action=record \
  question="How to handle Redis under Bull queue load?" \
  options='["connection pool","Redis Cluster","separate Redis instance"]' \
  chosen="connection pool" \
  reasoning="Cluster adds ops complexity, separate instance adds cost"

场景:“Sprint计划——在3个开发人员中组织15个任务”

# Create workspace + board
workspace action=create name="Q1 Auth Rewrite"
board action=create name="Sprint 12" workspaceId=<ws-id>

# Batch create tasks
task action=create boardId=<board-id> title="Migrate session store to Redis" priority=high labels='["backend"]'
task action=create boardId=<board-id> title="Add PKCE flow to OAuth" priority=high labels='["security"]'
task action=create boardId=<board-id> title="Write E2E tests for login" priority=medium labels='["testing"]'
# ... more tasks

# Assign and track
task action=assign taskId=<id> assignee="alice"
task action=update taskId=<id> status="in-progress"
board action=status boardId=<board-id>
# → Shows kanban: 3 todo, 2 in-progress, 1 done

场景:“加入团队后浏览不熟悉的代码库”

# Find where auth middleware is defined
find-definition --symbol "authMiddleware" --path "@src/"

# Find all places it's used
find-references --symbol "authMiddleware" --path "@src/"

# Search by concept, not just text
semantic-search --query "rate limiting per user" --path "@src/"

# Persist findings for next session
memory action=write name="auth-architecture" \
  content="authMiddleware in src/middleware/auth.ts, used in 14 routes. Rate limiting in src/middleware/rateLimit.ts uses sliding window with Redis MULTI."

第二级:AI代理(嵌入式LLM执行)

kemdiCode在内部调用外部LLM进行推理、分析和生成。你的IDE的AI不做这项工作——kemdiCode自己的代理做。

场景:“调试API响应时间从50ms变为3秒的原因”

# Start structured reasoning with the plan agent
agent-orchestrate \
  --agent plan \
  --task "Analyze why GET /api/users went from 50ms to 3s. Check @src/routes/users.ts and @src/services/userService.ts for N+1 queries, missing indexes, or unnecessary joins." \
  --sessionId "debug-perf" \
  --maxIterations 10 \
  --enableCognition true

# The agent autonomously:
# 1. Reads the files via find-definition / find-references
# 2. Identifies: userService.getAll() does 3 sequential DB calls
# 3. Records in error-pattern: "N+1 query in user list endpoint"
# 4. Records in decision-journal: "Consolidate to single JOIN query"
# 5. Returns: "Root cause: 3 sequential queries per user (N+1). Fix: replace
#    with single LEFT JOIN on user_roles and user_preferences."

场景:“我们提出的微服务拆分是个好主意吗?”

使用 mind-chain --连续的思维切换,每个思维都建立在前一个思维的基础上:

# One call — 4 Minds analyze in sequence, each seeing previous outputs
mind-chain \
  --composition custom \
  --minds '["architect", "contrarian", "researcher", "simplifier"]' \
  --prompt "Evaluate splitting the monolith at @src/ into auth-service, user-service, and notification-service. We have 3 developers and 45 shared models."

# Or use a predefined composition:
mind-chain --composition adversarial \
  --prompt "Should we split the monolith into microservices? @src/"

# Full review with 6 Minds + synthesis:
mind-chain --composition full-review \
  --prompt "Architecture decision: monolith vs microservices for @src/"

链运行:建筑师建议→ 逆向挑战→ 研究人员事实核查→ Simplifier找到了务实的道路→ 综合结合了所有观点。

场景:“让3名LLM审查关键的安全更改”

# Send to GPT-4o, Claude, and Gemini in parallel
multi-prompt \
  --prompt "Review this OAuth implementation for security vulnerabilities: @src/auth/oauth.ts" \
  --models '["o:gpt-4.1", "a:claude-sonnet-4-6", "g:gemini-2.5-pro"]' \
  --agent evaluator

# Or use CEO-and-Board consensus
consensus-prompt \
  --prompt "Is this PKCE implementation correct and secure? @src/auth/pkce.ts" \
  --boardModels '["o:gpt-4.1", "g:gemini-2.5-pro", "d:deepseek-v3"]' \
  --ceoModel "a:claude-sonnet-4-6"
# → Board votes + CEO synthesizes a final verdict with reasoning

第三级:集群总线和Magistrale(分布式LLM编排)

多个LLM节点通过Redis Pub/Sub进行通信。当您需要更广泛的上下文时,请使用此方法——将同一问题分派给具有不同专业化的多个模型。

场景:“设计一个速率限制器——从3个模型中获得最佳答案”

# Dispatch to all registered clusters, pick the best response
cluster-bus-magistrale \
  --prompt "Design a distributed rate limiter for a REST API with 10K req/s. Must handle multi-region, be Redis-backed, and support per-user and per-IP limits. Include TypeScript implementation." \
  --strategy "best-of-n"

# Magistrale:
# 1. Sends the prompt to Cluster A (GPT-4.1), Cluster B (Claude), Cluster C (Gemini)
# 2. Each cluster runs PassController (multi-pass refinement)
# 3. Scores responses: quality 0.45, detail 0.25, relevance 0.15, latency -0.15
# 4. Returns the highest-scoring implementation

场景:“架构决策——需要共识,而不仅仅是一种意见”

# Require agreement between models
cluster-bus-magistrale \
  --prompt "For a real-time collaboration feature (like Google Docs), should we use CRDTs, OT, or a simpler last-write-wins approach? Team has 2 backend devs, deadline is 6 weeks." \
  --strategy "consensus"

# Consensus strategy:
# 1. All clusters generate independent responses
# 2. TF-IDF cosine similarity scoring between responses (threshold 0.3)
# 3. If agreement: returns consensus answer
# 4. If disagreement: returns all positions with similarity scores

场景:“生产事故——需要最快的答案”

# First model to respond wins
cluster-bus-magistrale \
  --prompt "Our PostgreSQL replication lag jumped to 30s. WAL sender is active, network is fine. What should we check first?" \
  --strategy "first-wins"

# Returns in ~1s from whichever model responds fastest

场景:“深度代码分析——让集群产生自己的代理”

# Each cluster spawns an autonomous agent with tool access
cluster-bus-magistrale \
  --prompt "Find potential race conditions in the authentication module" \
  --strategy "first-wins" \
  --orchestrate true \
  --orchestrateAgent "plan" \
  --orchestrateMaxIterations 8 \
  --orchestrateAllowedTools '["find-definition", "find-references", "semantic-search"]'

# Orchestration:
# 1. Magistrale dispatches to clusters with orchestrate payload
# 2. Each cluster spawns a full agentic loop (not just an LLM call)
# 3. Agent reasons, calls tools (find-definition, semantic-search), iterates
# 4. Returns structured analysis with tool call evidence

发展

bun install                    # Install dependencies
bun run build                  # Compile TypeScript
bun run dev                    # Hot reload
bun run test                   # Run 741 tests
bun run typecheck              # Type check
bun run lint                   # ESLint
bun run format                 # Prettier

添加工具

  1. 在中创建文件 src/tools/<category>/
  2. 定义Zod模式 .describe() 每个字段
  3. 实施 UnifiedTool 接口
  4. 通过注册 registerLazyTool() 在 src/tools/index.ts
  5. 在中添加注释 src/tools/annotations-map.ts

文档


许可证

GNU通用公共许可证v3.0

作者

大卫 Irzyk — dawid@kemdi.pl — Kemdi Sp. z o.o.