streamctx
by huzjie
README.md
# streamctx — MCP 2.1 流式上下文引擎
> 把 Anthropic MCP 2.1「实时流式上下文更新」从协议概念,落地为一套可运行、可部署、可嵌入的增量上下文交付引擎。
[](https://www.python.org/)
[](LICENSE)
[](.github/workflows/ci.yml)
## 一句话
MCP 2.1 引入了**流式上下文更新**:AI 助手通过增量事件接收上下文变化,而无需每次全量重载,从而把长会话的上下文加载延迟降低最高 75%、显著节省 Token。`streamctx` 是这一能力的**开源、零重型依赖**实现——一套「服务端 + SDK + 传输 + 预算 + 可观测」完整的增量上下文引擎。
## 为什么需要它
传统 MCP 的上下文是「全量快照」模型:每次上下文变化,客户端都要重新拉取整份上下文。上下文一大,这就是灾难:
- **延迟高**:每轮都全量传输,网络往返成本与上下文体积成正比
- **Token 浪费**:大量未变化的内容被反复重传
- **无法流式**:无法在长会话中边用边更新
`streamctx` 用「增量 diff + 版本向量 + 断点续传」解决上述问题:只推送变化的部分,客户端按 seq 应用,落后太多时自动降级为全量快照。
## 特性
- ✅ **增量 diff**:行级 LCS 最小化差异,只推送变化部分
- ✅ **版本向量 + Lamport 时钟**:多会话因果一致、断点续传锚点
- ✅ **三种传输**:进程内(零依赖)/ SSE(stdlib)/ WebSocket(可选)
- ✅ **Token 预算与加权 LRU 驱逐**:控制上下文体积
- ✅ **快照/增量自适应降级**:落后超过阈值自动切全量快照
- ✅ **断线重连 + 断点续传**:指数退避 + checkpoint 恢复
- ✅ **主题订阅**:精确 topic + glob 模式路由
- ✅ **可观测**:指标 / 追踪 / 健康检查
- ✅ **插件系统**:去重 / 计数 / 审计
- ✅ **零核心依赖**:`pip install streamctx` 即可跑通全部核心功能
- ✅ **FastAPI / stdlib 双控制面** + CLI + Docker/K8s/Helm/CI
## 快速开始
```bash
# 安装(核心零依赖)
pip install -e .
# 自检
python -m streamctx doctor
# 端到端演示(零依赖)
python examples/demo_basic.py
# 启动 SSE 服务
python -m streamctx serve --config config/config.yaml
```
## 架构
```
┌─────────────────────────────────────────────┐
写入源 │ StreamContextEngine │
(LLM/文档) ──▶ │ ContextManager ── DeltaEngine ── Budget │
│ │ │ │ │
│ SessionManager Subscription Metrics │
└───────┼──────────────┼───────────────────────┘
│ 事件流(snapshot / delta / ack) │
┌───────────────┼──────────────┼───────────────┐
▼ ▼ ▼ ▼
in-process SSE WebSocket (FastAPI)
│
▼
StreamClient(本地视图 + seq 确认 + 断点续传)
```
模块总览见 [docs/architecture.md](docs/architecture.md)。
## 目录结构
```
streamctx/
├── streamctx/ # 核心包
│ ├── engine.py # 引擎门面
│ ├── context.py # 上下文状态与管理
│ ├── delta_engine.py # 增量引擎
│ ├── diff.py # 行级 LCS diff
│ ├── patch.py # 增量应用
│ ├── tokenizer.py # Token 估算
│ ├── budget.py # Token 预算与驱逐
│ ├── session.py # 会话
│ ├── subscription.py # 主题订阅
│ ├── protocol.py # 协议序列化
│ ├── transport/ # 进程内 / SSE / WebSocket
│ ├── server/ # stdlib SSE / FastAPI
│ ├── client/ # 客户端 SDK
│ ├── adapters/ # mock / openai / anthropic / ollama
│ ├── backends/ # 内存 / redis
│ ├── observability/ # 指标 / 追踪 / 健康
│ ├── plugins/ # 插件
│ ├── utils/ # 配置 / 日志
│ └── cli/ # 命令行
├── examples/ # 演示脚本
├── tests/ # 单元测试
├── benchmarks/ # 基准
├── docs/ # 文档
├── model_cards/ # 设计决策卡
├── deploy/ # K8s / Helm
├── Dockerfile / docker-compose.yml
└── .github/workflows/ # CI / Release
```
## 配置
复制 `config/config.example.yaml` 为 `config/config.yaml`,按需修改:
```yaml
actor: "server"
session_ttl: 300.0 # 会话 TTL(秒)
max_tokens: 4096 # 上下文最大 token
soft_ratio: 0.9 # 软上限比例
evict_on_exceed: true # 超限是否驱逐
snapshot_ratio: 0.5 # 变化超过该比例降级为快照
history_limit: 500 # 版本历史上限
server:
host: "127.0.0.1"
port: 9000
```
## 更多
- 详细项目介绍:见 [INTRO.md](INTRO.md)
- 协议设计:见 [docs/protocol.md](docs/protocol.md)
- 快速上手:见 [docs/quickstart.md](docs/quickstart.md)
- API 参考:见 [docs/api-reference.md](docs/api-reference.md)
## License
MIT License,详见 [LICENSE](LICENSE)。
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues