FirenzeClaw

Kimi Session Orchestrator

Community FirenzeClaw
Updated

PM 视角 Kimi Code CLI 多 session 编排系统——28 MCP 工具,自适应工作流引擎 + 三层共享内存 + 权限策略引擎

Kimi Session Orchestrator

LicenseVersionNodeMCP Tools

Kimi Code CLI 的 PM 视角多 session 编排系统——28 个 MCP 工具,支持自适应工作流引擎 + 三层共享内存 + 权限策略管理。

架构

外部用户 (浏览器 / curl)
    ↕ HTTP + WebSocket (端口 3456)
┌──────────────────────────────┐
│   kimi-session-orchestrator MCP 服务器 │
│   ├─ Express HTTP Server      │
│   ├─ WebSocket Server         │
│   ├─ WireClient (REST + WS推送 + 心跳重连) │
│   ├─ WorkflowEngine (自适应工作流)      │
│   ├─ PolicyEngine (权限策略引擎)       │
│   ├─ MemoryStore (SQLite 共享记忆)     │
│   └─ MCP stdio transport      │
└─────────────┬────────────────┘
              ↕ Bearer Token REST API
┌─────────────────────────────┐
│   Kimi Server (kimi web)    │  端口 5494
│   POST /api/v1/sessions/... │
└─────────────────────────────┘

快速开始

前置条件

  • Node.js ≥ 22node:sqlite 内置模块要求)
  • Kimi Code CLI ≥ 0.22.3
  • Git Bash(Windows)或 bash(Linux/macOS)

安装

git clone https://github.com/FirenzeClaw/kimi-session-orchestrator.git
cd kimi-session-orchestrator
npm install
npm run build

启动

# 1. 启动 Kimi Server(⚠️ --port 5494 在 Linux 上必须显式指定,否则随机端口导致无法连接)
kimi web --no-open --port 5494

# 2. 设置 token(Kimi Server 启动时打印)
export KIMI_SERVER_TOKEN="your-token-here"

# 3. 启动 Tunnel
npm start

Tunnel 启动后自动连接 Kimi Server,选择最近 session,初始化记忆库(如 .kimi-tunnel/ 存在)。

平台差异:Windows 上 kimi web --no-open 默认固定端口 5494,--port 可省略。Linux 上默认随机端口,因此 --port 5494 是必须的,否则 orchestrator 无法找到 Kimi Server。若启动后需要恢复连接,tunnel 会每 10s 自动重试。

注册到 Kimi Code CLI

~/.kimi-code/mcp.json 中添加(路径按实际安装位置调整):

{
  "mcpServers": {
    "kimi-session-orchestrator": {
      "command": "node",
      "args": ["<项目绝对路径>/dist/index.js"],
      "env": {
        "KIMI_SERVER_TOKEN": "your-token-here",
        "KIMI_SERVER_URL": "http://127.0.0.1:5494"
      }
    }
  }
}

注意:Linux 上 KIMI_SERVER_URL 必须显式设置(默认 http://127.0.0.1:5494),确保与 kimi web --port 一致。

然后 /reload 即可使用。

安装 Skill

cp -r skills/kimi-session-orchestrator ~/.agents/skills/kimi-session-orchestrator

新 session 加载 skill 后自动触发 PM 启动协议——读取 coordinator-guide 建立基线,询问角色、目标和决策模式。详见 Linux 部署 → 安装 PM Skill。

MCP 工具

Session 管理

工具 描述
create_session 创建新 session,支持 cwd/permission_mode/memory_level/from_session/policy
list_sessions 列出所有 session(按更新时间倒序)
get_session_info 查看 session 详情(含 wire.jsonl 路径、标题、cwd)
get_tunnel_status Wire 连接状态、客户端数、运行时间、WS 连接状态

任务下发

工具 描述
execute_prompt 发送 prompt(即发即返),支持 auto_mode/thinking/policy/skip_memory
chat_with_session 向已有 session 发送任务(即发即返)
run_flow 多步流程:创建 session → 逐步下发 → 自动等待每步完成
execute_workflow 执行工作流模板:加载模板 → 自动驱动 → 自适应调整
continue_workflow 对暂停的工作流执行决策(retry/skip/abort/manual)

状态监控

工具 描述
poll_session 结构化轮询 session 状态(WS 缓存优先,active/swarm/awaiting/done/error/idle)
list_io_records 快速提取 prompt ↔ 回复(过滤 tool_call/thinking 噪音)
read_session_log 读取完整对话日志,支持分页和增量
watch_session WS 后台监听,主动等待 session 完成
get_watch_result 获取后台监听结果(非阻塞)
continue_watch 拿结果 + 发下一步 + 启动新监听

共享记忆(v2.5+)

工具 描述
memory_set 写入键值对到命名空间,自动版本递增
memory_get 读取条目,支持 namespace/key 过滤 + 过期条目
memory_list 列出命名空间键名(前缀匹配)
memory_delete 删除指定条目
memory_status 知识库全景:条目数、命名空间分布、最后更新
memory_archive 将 session L2 findings 归档为 L1 learnings

v2.6 注入策略create_session(memory_level) 自动注入记忆索引(命名空间 + 键名 + 读取建议),task session 首 turn 自主调用 memory_get 按需拉取。注入文本从 ~600B 降至 ~200B。

工作流模板

工具 描述
learn_workflow 从描述或历史 session 学习工作流,生成 YAML 模板
list_templates 列出可用模板(名称、版本、步骤数)

权限策略

工具 描述
list_policies 列出内置 + 自定义策略,含验证状态
approve_tool PM 放行被阻断的工具调用(once/session scope)
deny_tool PM 拒绝被阻断的工具调用

推送

工具 描述
stream_response 实时推送结果到所有 WebSocket 调试客户端
set_watch_output 设置监听结果文件路径,完成后自动写入

REST API

端点 方法 描述
/ GET Web 调试控制台 (v2.3)
/workflow-console.html GET PM Dashboard — Session 健康监控、注意力预警、Skill 调度日志
/api/status GET 隧道状态
/api/execute POST 发送 prompt 并等待回复
/api/send POST 发送 prompt 并等待回复(与 /api/execute 相同机制)
/ws WebSocket 实时双向通信

示例

curl -X POST http://localhost:3456/api/execute \
  -H "Content-Type: application/json" \
  -d '{"prompt":"写一个 Python hello world","timeout_ms":60000}'

智能思考过滤

  • 默认:排除思考链内容,仅返回文本回复
  • 自动触发:当回复含"不确定/可能/需要更多"等模糊词时,自动读取思考内容确认意图
  • 手动:设置 include_thinking: true 强制包含

项目结构

src/
├── index.ts                   # 入口:DI 装配,启动 HTTP+MCP,初始化记忆库
├── types.ts                   # TunnelServices 接口(wireClient/messageQueue/workflowEngine/policyEngine/memoryStore/tunnelProjectRoot)
├── mcp-server.ts              # MCP stdio 服务器(注册 28 个工具)
├── http-server.ts             # Express + WebSocket 装配入口
├── wire-client.ts             # Kimi Server REST + WS 推送 + 心跳探测自动重连
├── message-queue.ts           # WebSocket pub/sub 广播
├── session-store.ts           # 文件系统扫描 + 路径解析
├── session-log-reader.ts      # wire.jsonl 日志解析 + IO 提取 + sanitizeText
├── workflow-template.ts       # 模板类型定义 + YAML 解析 + Zod 校验
├── workflow-store.ts          # 模板持久化(templates/ CRUD)
├── workflow-engine.ts         # 自适应工作流引擎
├── policy-types.ts            # 策略类型 + Zod schema + 已知工具清单
├── policy-builtins.ts         # read-only / safe-edit / full-access
├── policy-store.ts            # YAML 策略文件 CRUD(.kimi-tunnel/policies/)
├── policy-engine.ts           # 策略解析/检查/绑定 + BlockEvent 追踪
├── memory-store.ts            # SQLite 持久化 + buildInjection()(索引注入)
├── memory-injector.ts         # 注入文本构建(thin wrapper → memory-store)
├── tools/
│   ├── create-session.ts      # 创建新 session(含 memory_level/policy)
│   ├── execute-prompt.ts      # 发送 prompt(即发即返 + 自动注入)
│   ├── chat-with-session.ts   # 多轮编排
│   ├── list-sessions.ts       # 列出所有 session
│   ├── get-session-info.ts    # 查看 session 详情
│   ├── read-session-log.ts    # 读取对话日志
│   ├── list-io-records.ts     # 快速 IO 提取
│   ├── poll-session.ts        # 结构化状态轮询
│   ├── run-flow.ts            # 多步流程执行
│   ├── stream-response.ts     # WebSocket 推送
│   ├── get-tunnel-status.ts   # 隧道状态
│   ├── learn-workflow.ts      # 学习工作流
│   ├── execute-workflow.ts    # 执行工作流模板
│   ├── list-workflow-templates.ts # 列出模板
│   ├── continue-workflow.ts   # 工作流决策
│   ├── session-watch.ts       # watch_session/get_watch_result/continue_watch/set_watch_output
│   ├── memory-set.ts          # 写入记忆条目
│   ├── memory-get.ts          # 读取记忆条目
│   ├── memory-list.ts         # 列出记忆键名
│   ├── memory-delete.ts       # 删除记忆条目
│   ├── memory-status.ts       # 记忆库状态
│   ├── memory-archive.ts      # 归档 session findings
│   ├── list-policies.ts       # 列出策略
│   ├── approve-tool.ts        # 放行阻断工具
│   └── deny-tool.ts           # 拒绝阻断工具
└── public/
    ├── console.html           # Web 调试控制台
    └── workflow-console.html  # PM Dashboard 监管面板(四区:健康/阻断/工作流/Skill)

共享记忆系统(v2.5+)

┌─────────────────────────────────────────────────┐
│ L1: 项目知识库 (.kimi-tunnel/memory.db)          │
│ PM 一次性录入 → task session 启动时自动注入索引    │
│ project/meta / decisions / risks / learnings    │
├─────────────────────────────────────────────────┤
│ L2: Session 上下文 (session:<id>/*)             │
│ 创建时写入,运行时更新,退役后归档                  │
├─────────────────────────────────────────────────┤
│ L3: 学习沉淀 (learn skill → 向量库)              │
│ 从 L1+L2 提取可复用模式                          │
└─────────────────────────────────────────────────┘

PM 操作:                            Task session 首 turn:
  memory_set(ns, key, value)         → 收到索引 → memory_get(ns)
  create_session(memory_level=full)  → 评估关联 → 拉取条目 → 执行任务
  execute_prompt(task)               → 同一 turn 完成上下文建立 + 工作

权限策略系统(v2.4+)

  • 三层架构:Session 级策略(create_session policy 参数) + 任务级策略(execute_prompt policy 参数) + 工具级拦截(WireClient approveAll)
  • 3 内置策略read-only(只读)/ safe-edit(安全编辑,禁 shell 命令)/ full-access(全部允许)
  • 自定义 YAML.kimi-tunnel/policies/<name>.yaml
  • PM Dashboard:实时阻断事件面板,支持 approve/deny(once/session scope)

参考文档

文档 用途
API.md Kimi Server REST API 完整参考
docs/coordinator-guide.md 统筹 Session 准入规范(PM视角 v2.6)
docs/issues/memory-init-timing.md [FIXED] MemoryStore 启动初始化缺陷
docs/issues/memory-cross-project-injection.md [FIXED] 跨项目注入静默失效
specs/001-adaptive-workflow-engine/ 自适应工作流引擎 [DONE]
specs/002-session-memory-share/ Session 冷启动记忆共享 [DONE]
specs/003-permission-policy/ 权限与策略管理 [DONE]
specs/004-memory-lazy-inject/ 记忆注入策略升级——索引+按需自读 [DONE]

Linux 部署

前置条件

node -v   # ≥ 22
kimi --version  # ≥ 0.22.3

一键部署

git clone https://github.com/FirenzeClaw/kimi-session-orchestrator.git
cd kimi-session-orchestrator
npm install && npm run build

启动

# 终端 1: Kimi Server(⚠️ Linux 上 --port 5494 是必须的,不可省略)
kimi web --no-open --port 5494
# 记下输出的 Token

# 终端 2: Tunnel
export KIMI_SERVER_TOKEN="<token>"
npm start

注册 MCP

mkdir -p ~/.kimi-code

cat > ~/.kimi-code/mcp.json << 'EOF'
{
  "mcpServers": {
    "kimi-session-orchestrator": {
      "command": "node",
      "args": ["/home/user/kimi-session-orchestrator/dist/index.js"],
      "env": {
        "KIMI_SERVER_TOKEN": "<token>",
        "KIMI_SERVER_URL": "http://127.0.0.1:5494"
      }
    }
  }
}
EOF

注意args 中的路径需为绝对路径,按实际 clone 位置调整。KIMI_SERVER_URL 必须与 kimi web --port 一致(Linux 上默认为随机端口,必须显式指定)。/reload 后生效。

安装 PM Skill

将 skill 注册到 Agent 系统(skill 加载时自动读取 coordinator-guide 并询问 PM 模式):

# 复制 skill 目录(含 SKILL.md + coordinator-guide.md)
cp -r skills/kimi-session-orchestrator ~/.agents/skills/kimi-session-orchestrator

# 新 session 自动加载,触发 PM 启动协议:
#   ① 读取 coordinator-guide 建立规范基线
#   ② 询问角色(PM/执行)+ 目标 + 决策模式(自主/等待)

构建脚本 Linux 兼容

项目 package.json 的 build 脚本使用 cp -r,兼容 Linux。若 dist/public/ 不存在:

mkdir -p dist/public && npm run build

兼容性确认

组件 Linux 备注
node:sqlite Node 22+ 内置
path.join/dirname 全项目使用跨平台 API
文件路径 统一 replace(/\\/g, "/") 归一化
MCP stdio 标准协议
Kimi Server CLI kimi web 跨平台
Wire Client 重连 启动失败后每 10s 自动重试(v2.6.1+),指数退避最长 ~63s
Kimi Server 端口 ⚠️ Linux 默认随机端口,必须 kimi web --port 5494 或设置 KIMI_SERVER_URL

License

MIT

MCP Server · Populars

MCP Server · New