Statewave 智能体内存运行时
为 AI 智能体提供可复现、带来源追溯的编译式记忆上下文,摆脱查询时检索的采样噪声。
- Star 数
- ★ 271
- 最近更新
- 2 天前
- License
- Apache-2.0
- 主语言
- Python
- FA 评分
- 62/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API · Claude APIClaude Code(部分支持)
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 客服团队:让回访客户在不同会话中被识别,用 token 预算内排序好的上下文回答,升级时用 POST /v1/handoff 生成交接包并追溯每条记忆的来源。
- 不适合
- 需要多副本部署但不想额外启用 Postgres 分布式限流的团队
- 希望开箱即用内置账号体系(签发 API Key、管理员身份)的团队
- 只做单跳事实检索、对每次回答的 token 成本非常敏感的团队
- 源码审查
- 62/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
Statewave 是一个自托管的开源内存运行时,用 Postgres + pgvector 存放数据,核心思路是“编译一次、按需取用”,而不是每次查询都做相似度检索。它按主体(subject,如 user:、repo:、account:)记录 append-only 的 episode,再通过启发式或 LLM 编译器抽取带置信度与来源的记忆,最后按任务和 token 预算组装排序好的上下文包。每个上下文包都携带 state-assembly receipt,可追溯到源 episode,并支持 HMAC-SHA256 签名与 POST /v1/receipts/{id}/replay 重放。服务端以 Docker Compose、Helm 或裸机方式部署在 8100 端口,对外提供 REST API,配套 Python(pip install statewave)与 TypeScript(npm install @statewavedev/sdk)SDK。默认演示模式使用 stub 嵌入和启发式编译器,完全本地运行无需 GPU;要获得语义检索和更强的记忆抽取,需配置 LiteLLM 的模型与嵌入提供方。
运行时围绕主体组织数据,端到端流程是 ingest → compile → use。写入侧通过 POST /v1/episodes 或 POST /v1/episodes/batch(单次最多 100 条)追加原始事件;编译侧调用 POST /v1/memories/compile,将 episode 抽取为带类型、摘要、置信度和来源的记忆,且幂等不产生重复。取用侧由 POST /v1/context 组装按 task 排序、受 max_tokens 限制的上下文包,同一主体在同一时间点用同一任务查询会得到完全相同的字节。治理能力包括 GET /v1/timeline 查看主体时间线、GET /v1/subjects 列出主体、DELETE /v1/subjects/{id} 按主体彻底删除数据,以及 POST /v1/handoff 生成交接包、GET /v1/subjects/{id}/health 计算可解释的客户健康分、GET /v1/subjects/{id}/sla 输出响应与解决时长和违约情况。检索接口 GET /v1/memories/search 可按类型、文本或语义相似度查找;POST /v1/resolutions 跟踪会话内的问题解决状态。合规相关能力包括 YAML 策略引擎(deny/redact,作用于 pii、financial、secret 等标签)、v0.9 的启发式 auto-labeling 建议标签与人工提升、多租户 X-Tenant-ID 隔离,以及按租户的区域钉选(区域不匹配返回 403 residency.mismatch)。
- 客服团队:让回访客户在不同会话中被识别,用 token 预算内排序好的上下文回答,升级时用 POST /v1/handoff 生成交接包并追溯每条记忆的来源。
- 长期编码智能体:把技术栈、偏好和架构决策写入 repo: 主体的 episode,跨多次会话持久保留项目记忆。
- 平台工程团队:在自有 Postgres 上自托管内存服务,通过 REST API 接入任意语言或框架的智能体,避免数据离开自有网络。
- 合规与风控场景:用 YAML 策略对 pii、financial、secret 标签执行 deny/redact,并用签名 receipt 审计每次上下文组装由哪些记忆影响。
- 数据驻留要求明确的组织:把租户钉选到指定区域,跨区域进程直接拒绝请求,满足本地化合规。
- 多来源记忆建设:通过 @statewavedev/connectors-* 把 GitHub、Slack、Notion、Zendesk、Gmail 等来源的事件同步为 episode,先 dry-run 确认再写入。
如何安装或部署这个 Agent?
最快方式是官方安装脚本或 npx,也可自行用 Docker Compose 起服务。
# macOS / Linux
npx @statewavedev/statewave
# 或
curl -fsSL https://www.statewave.ai/install | sh# Windows (PowerShell)
irm https://www.statewave.ai/install.ps1 | iex自行部署:
git clone https://github.com/smaramwbc/statewave && cd statewave
docker compose up -d该命令会启动 Postgres(含 pgvector)与 API,迁移在容器启动时自动执行,服务监听 http://localhost:8100。默认是演示模式(stub 嵌入 + 启发式编译器)。要启用 LLM 行为,在 docker-compose.yml 同级放置 .env 后重新执行 docker compose up -d:
STATEWAVE_EMBEDDING_PROVIDER=litellm
STATEWAVE_LITELLM_API_KEY=sk-... # 任意 LiteLLM 提供方
STATEWAVE_LITELLM_MODEL=gpt-4o-mini
STATEWAVE_LITELLM_EMBEDDING_MODEL=text-embedding-3-small依赖:PostgreSQL 14+ 与 pgvector ≥ 0.4.2;SDK 需要 Python 3.11+ 或 Node.js。
如何使用这个 Agent?
先确认服务健康,再用 SDK 或 HTTP 完成一次 ingest → compile → use 循环。
curl http://localhost:8100/readyz
curl http://localhost:8100/healthzfrom statewave import StatewaveClient
with StatewaveClient("http://localhost:8100") as sw:
sw.create_episode(subject_id="user-42", source="chat", type="message",
payload={"text": "Alice asked about pricing tiers"})
sw.compile_memories("user-42")
print(sw.get_context("user-42", task="answer pricing", max_tokens=1000).assembled_context)接口文档在 http://localhost:8100/docs(Swagger)与 /redoc;常用端点包括 POST /v1/episodes、POST /v1/memories/compile、POST /v1/context、GET /v1/timeline、GET /v1/subjects 与 DELETE /v1/subjects/{id}。连接器示例(默认 dry-run,不会写入):
statewave-connectors sync github \
--repo smaramwbc/statewave \
--subject repo:smaramwbc/statewave \
--dry-run这个 Agent 有哪些优点和局限?
- 确定性上下文:同一主体、同一任务、同一时间点组装出的上下文包字节一致,并附带可追溯到源 episode 的 state-assembly receipt(含 HMAC-SHA256 签名与 replay 接口)
- 编译一次而非查询时检索:按主体变更编译带置信度的类型化记忆,避免逐次检索的采样噪声
- 完全自托管于 Postgres + pgvector,默认启发式编译器与 stub 嵌入全本地运行,API 进程为 CPU-only,无需 GPU
- 提供者中立:通过 LiteLLM 接入 100+ 家模型与嵌入提供方,且同时提供 Python 与 TypeScript SDK
- 内含敏感度标签与 YAML 策略引擎(deny/redact、log_only/enforce)、多租户隔离与按租户区域钉选,适合有合规诉求的场景
- 必须自行运维 PostgreSQL 14+ 与 pgvector ≥ 0.4.2,属于真实基础设施成本,官方无托管 SaaS 主路径
- 内置认证能力有限:只校验你配置的 API Key,不负责签发;管理员操作身份(promoted_by)暂为 null,多租户仍是应用层隔离而非 Postgres RLS
- 限流默认按进程、按 IP,多副本部署需要改 STATEWAVE_RATE_LIMIT_STRATEGY=distributed,且尚不支持按租户或按 API Key 限流
- v1.5.0 仍在活跃开发:receipt replay 是“今天的代码 + 原始策略”,无法逐字节复现历史;跨区域联邦审计与可视化策略编辑器尚未提供
- 编译后上下文包比事实检索更占 token,单跳查询场景下每次回答成本更高
这个 Agent 与同类方案有什么区别?
README 明确区分两类替代做法:一类是每次查询检索孤立事实的内存层,另一类是把聊天记录直接塞进提示词或使用向量数据库的临时方案;它同时声明自身不是聊天机器人框架、向量数据库、RAG 流水线或托管服务。FAQ 中还提到某些抽取知识图谱的方案检索面可能对任何问题都返回同一份摘要。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Statewave 智能体内存运行时 当前 | 62 · 存在缺口 | 自托管服务免费 + 模型费 | ★ 271 | 2 天前 | Python | OpenAI API · Claude API |
| DuraGraph | 45 · 缺口较多 | 命令行工具免费 | ★ 162 | 29 天前 | Go | — |
| Brigade——企业级个人智能体 | 59 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 11k | 2 天前 | TypeScript | ChatGPT · Codex · Claude Code · OpenAI API · Claude API |
| IntentKit | 35 · 缺口较多 | 自托管服务免费 + 模型费 | ★ 6.5k | 25 天前 | Python | — |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示 CI 工作流显式声明 permissions: contents: read(最小权限),SECURITY.md 声明最小权限与审计日志,配置表提供 STATEWAVE_API_KEY、租户隔离、区域固定、敏感标签与策略引擎(deny/redact),说明敏感数据与权限有设计。但默认 STATEWAVE_API_KEY 为空即开放访问、CORS 默认 ["*"]、无内置身份签发、无 Postgres RLS,且 README 的 curl|sh 与 irm|iex 安装方式属于外部副作用且无确认步骤,回滚仅靠 DELETE /v1/subjects/{id} 与幂等重编译,缺少事务级回滚说明。因此 least_privilege 给 2,user_confirmation 与 external_effects、rollback 各扣至 1。
pyproject.toml 依赖带上下界并解释 numpy/httpx 显式声明原因,CI 用 uv.lock --check 防漂移,docker-smoke 验证镜像可启动,/readyz 对 LLM key 缺失给出具体 detail 文本,失败信息可诊断。但未提供运行时依赖可用性(如 pgvector 版本、LiteLLM 供应商)的降级路径细节,故 reliability 三项均为 2。
README 明确列出适用场景(客服、编码代理、A/B 对比)与不适用边界(非聊天框架、非向量库、非 RAG、非托管服务),capability_boundaries 给 3。但触发精度方面,Agent 何时调用 compile/context 由调用方决定,仓库未定义触发条件或阈值,trigger_precision 仅 1。环境适配覆盖 Python 3.11-3.13、Docker 多架构、Postgres 14+,但 macOS/Windows 未 CI 验证,environment_fit 给 2。
README 结构清晰、有 FAQ、安装说明、配置表、API 表、平台支持表,known_limitations 诚实列出 7 项限制,license 为完整 Apache-2.0 文本且 pyproject 声明一致,versioning 有 v1.5.0 与 changelog 链接,故 license 3、known_limitations 3。但 changelog/roadmap 托管在外部仓库,维护责任未在本仓库明确(无 CODEOWNERS/MAINTAINERS),maintenance_responsibility 仅 1;信息架构与命名稳定性、示例与 FAQ 均为 2。
输出为 token 受限、带 provenance 的上下文包,可直接用于 prompt,output_usability 给 2。边际价值在于确定性编译与溯源,但 README 自承 token 成本高于普通事实库,且对单跳查询可能不划算,marginal_value 与 cost_benefit 各 2。
README 大量引用外部仓库(statewave-docs、statewave-examples、statewave-py/ts)与基准声明(56 断言、多跳准确率),但本仓库内无对应文件可交叉验证,claim_traceability 与 cross_source_corroboration 仅 1。事实与推断分离方面,README 将营销性表述("higher multi-hop accuracy")与可验证事实混排,未标注证据等级,fact_inference_separation 给 1。
- 默认 STATEWAVE_API_KEY 为空即开放访问,CORS 默认 ["*"],生产部署前必须显式配置认证与来源限制。
- README 提供的 curl|sh 与 irm|iex 安装脚本会执行远程代码,且无确认或校验步骤,建议改用 Docker/Helm 或先审查脚本。
- 多租户隔离为应用层实现,尚无 Postgres RLS,跨租户数据隔离强度依赖应用代码正确性。
- README 中的基准与准确率声明无法在本仓库内验证,引用外部仓库与文档,需独立复核。
- 维护责任与更新路径未在本仓库明确(无 CODEOWNERS/MAINTAINERS),changelog/roadmap 托管在外部仓库。
- 发布者身份未经 FollowAgents 验证,视为未知,不应据此推断安全性或可靠性。