ContextGraph
Stop losing agent context.
ContextGraph is the memory backend for coding agents and multi-agent teams.
Capture durable facts, compile trusted context packs, and make agent state visible with reactive checkpoints and repo-local memory directories.
Reactive Delta · Context Compiler · Use Cases · Demo · Quickstart · SDK · CLI · More Use Cases · Docs
English · Español
______________________________________________________________________
为什么它脱颖而出
大多数代理内存工具要么将原始文本存储在向量数据库中,要么用一个有损摘要替换长会话。
ContextGraph是为这两者之间的差距而构建的:
- 受控共享内存 因此,代理可以重用事实,而不会失去来源、新鲜度或访问控制
- 上下文包 因此,代理可以获得令牌预算、可解释的上下文,而不是不透明的召回结果
- 反应性三角洲压实 因此,编码代理可以在上下文窗口崩溃之前检查决策、打开任务、阻止程序和更改的文件
- 分支感知上下文缓存 因此,子会话可以重用共享检查点前缀,而不是从头开始重新编译所有内容
.contextgraph/内存目录 因此,最新的会话状态可以在仓库中检查,而不是被困在一个响应有效载荷中
如果你想要可检查、团队安全且在实际工作中有用的内存,这就是楔子。
从这里开始
理解回购的最快途径是:
- 运行2分钟的设置
examples/beta_quickstart.py - 在中运行编码代理连续性演示
examples/reactive_delta_compaction_demo.py - 检查生成的
.contextgraph/从该演示中的文件夹中查看恢复提示、打开的任务、失败和分支/缓存元数据 - 在中运行受管检索演示
examples/context_pack_demo.py - 通过以下方式与Claude Code集成
docs/claude-code-integration.md - 略读hook协议
docs/reactive-delta-compaction.md - 检查生产记录
docs/production-readiness.md
公共API注释:使用 ContextGraph 从 contextgraph_sdk 在用户代码和示例中。 ContextGraphService 是用于内部嵌入、测试和实现工作的进程内服务器/服务API。
用例
- 需要生存的编码代理
/compact,/resume,或上下文窗口压力,而不会丢失绘图 - 跨切换需要可信共享内存的支持和事件代理
- 来源和新鲜度与检索质量同样重要的研究和分析流程
- 内部代理平台,ACL、审查状态和可解释性必须位于内存层
- 希望使用自托管内存后端而不是在矢量存储周围连接脆弱的提示胶的团队
在哪里获胜
- 优于纯矢量存储器 当新鲜度、来源和访问控制很重要时
- 比简单的聊天摘要更好 当编码代理需要从结构化状态恢复时
- 比快速胶水好 当多个代理或团队需要一个共享内存后端时
不合适
- 你只需要一个聊天机器人的个人记忆
- 您现在就想要一个托管代理运行时或企业IAM
- 您主要需要一个矢量数据库或通用RAG管道
from contextgraph_sdk import ContextGraph
client = ContextGraph.local()
agent = client.register_agent("my-agent", "acme", ["research"])
client.store(agent["agent_id"], "Acme Corp reported 3x latency in EU region.")
hits = client.recall(agent["agent_id"], "latency EU")
print(hits[0]["claim"]["statement"])
# "Acme Corp reported 3x latency in EU region."今天有什么船
- 反应性三角洲压实:从结构化事件中检查点编码会话,并跨压缩边界恢复它们
- 分支感知上下文缓存:从检查点分叉会话,并在每个分支检查点上重用继承的结构化状态
- repo本地内存目录:将最新的持久会话状态同步到
.contextgraph/用于人工审查、切换和挂钩驱动的工作流 - 上下文编译器:从混合代理内存中编译受治理、令牌预算的上下文包
- 受控共享内存:存储和召回声明,包括来源、新鲜度、审核状态和ACL
- 可解释检索:检查为什么包含、排除、锁定或过滤索赔
- 人类记忆工具适配器:使用ContextGraph作为Claude的API内存工具的受管理后端,具有版本化的内存快照和归档删除语义
- 显影剂表面:仪表板、CLI、Python SDK、HTTP API和MCP服务器
- 自托管后端:内存本地模式和Neo4j持久化
更广泛的路线图说明:联邦、支付和协议定位仍然是长期方向的一部分,但目前的测试版侧重于真实团队工作流程中的受管共享内存。
______________________________________________________________________
反应式三角洲压实
反应式增量压缩是编码代理的旗舰功能。
ContextGraph记录结构化事件并编译,而不是将长会话折叠成一个脆弱的摘要 三角洲包 与:
- 决定
- 约束
- 开放任务
- 故障和已解决项目
- 更改的文件和重要工件
- 恢复提示和说明
- 缓存元数据,显示检查点是重用继承的前缀还是回退到完全重新计算
- 本地回购
.contextgraph/使当前状态在工作区中可见的目录
这使得压实感觉更像 git diff 对于代理上下文来说,这比“重写整个对话和希望。”
现在它也支持 分支感知上下文缓存:
- 从任何检查点分叉会话
- 继承父检查点的缩减状态快照
- 仅重新计算新的分支事件
- 在增量包中公开缓存命中率、重用计数和无效原因
真实用例:支付服务重构
在实时会话期间,代理会记录以下事件:
- 决策:“保持公共REST API的稳定”
- 约束:“不破坏SDK兼容性”
- 文件更改:
contextgraph/service.py - fail:“恢复路径回归失败”
- todo:“添加迁移测试”
当出现上下文压力时,ContextGraph会发出增量包,而不是模糊的摘要。
下一轮或第二天可以从以下地点继续:
- 必须仍然成立的决定
- 更改的文件
- 仍未解决的测试失败
- 未解决的任务列表
- 下一个代理的恢复提示和说明
这就是为什么感觉像 git diff 对于工作环境,而不是“总结和希望”
from contextgraph_sdk import ContextGraph
client = ContextGraph.local()
agent = client.register_agent("delta-coder", "acme", ["coding"])
session = client.create_session(agent["agent_id"], title="Payments refactor", source="claude-code")
client.record_session_event(agent["agent_id"], session["session_id"], "decision", "Keep the REST API stable.")
result = client.record_session_event(
agent["agent_id"],
session["session_id"],
"context_pressure",
"Only 10 percent of the context window remains.",
metadata={"context_remaining_pct": "10"},
)
print(result["checkpoint"]["checkpoint_id"])
print(result["delta_pack"]["restoration_prompt"])从检查点分支同样直接:
base = client.checkpoint_session(agent["agent_id"], session["session_id"])
branch = client.fork_session(agent["agent_id"], session["session_id"], title="grpc-branch")
client.record_session_event(
agent["agent_id"],
branch["session_id"],
"file_change",
"Updated contextgraph/service.py",
metadata={"path": "contextgraph/service.py"},
)
child = client.checkpoint_session(agent["agent_id"], branch["session_id"])
print(child["cache_status"]) # prefix_hit
print(child["cache_base_checkpoint_id"]) # base checkpoint ID
print(child["reused_event_count"]) # inherited event count.contextgraph/ 内存目录
当会话知道其工作区路径时,ContextGraph可以将最新状态同步到本地仓库中 .contextgraph/ 目录。
该目录包括:
session.jsonlatest_delta_pack.jsondoctor.jsonresume_prompt.mdrestoration_instructions.mddecisions.mdconstraints.mdopen_tasks.mdfailures.mdchanged_files.mdimportant_artifacts.md
这使得分支/缓存的故事变得有形:
- 编码代理可以存活
/compact - 另一个代理可以重新打开仓库并读取确切的打开任务和失败
- 审阅者可以检查分支继承自哪个检查点,以及它是否是缓存
prefix_hit
client.sync_memory_directory(
agent["agent_id"],
branch["session_id"],
workspace_path="/path/to/repo",
)cg session start --title "Payments refactor" --source claude-code --workspace "$PWD"
cg checkpoint --reason manual
cg memdir sync
ls .contextgraph钩子适配器和JSON协议记录在 docs/reactive-delta-compaction.md.
______________________________________________________________________
上下文编译器
上下文编译器是Memory OS v1的英雄特性。它需要代理和组织之间的许多记忆和声明,并编译一个 受控、可解释、令牌预算的上下文包 根据请求代理的权限进行定制。
from contextgraph_sdk import ContextGraph
client = ContextGraph.local()
agent = client.register_agent("ops-bot", "acme", ["operations"])
# Store diverse memories
client.store(agent["agent_id"], "Payment service migrating from REST to gRPC for Q2.")
client.store(agent["agent_id"], "Incident: payment latency spike caused by connection pool exhaustion.")
# Compile a context pack
pack = client.compile_context(
agent_id=agent["agent_id"],
query="payment service issues",
token_budget=1000,
include_explanations=True,
)
print(f"Summary: {pack['summary']}")
print(f"Claims: {len(pack['included_claims'])} included, {len(pack['conflicting_claims'])} conflicts")
print(f"Tokens: {pack['tokens_used']} / {pack['token_budget']}")编译器的作用:
- 通过存储库本地BM25搜索检索候选索赔
- 为每个代理应用ACL、新鲜度、信任、管理和支付过滤器
- 扣除接近准确索赔的重复项(Jaccard>=0.88)
- 使用现有的哨兵争议信号检测冲突
- 截断以适应代币预算(word_count\*1.3估计)
- 从顶级索赔中构建提取摘要
- 从同一语料库中向不同代理返回不同的包
三个代理,相同的语料库,不同的包:
# Alice (owner) sees private + org + published claims
# Carol (same org) sees org + published claims
# Bob (other org) sees only published claims
alice_pack = client.compile_context(alice_id, "project status", 4000)
carol_pack = client.compile_context(carol_id, "project status", 4000)
bob_pack = client.compile_context(bob_id, "project status", 4000)
# alice_pack has >= carol_pack has >= bob_pack claims已支付的索赔显示为锁定的引用:
跨组织定价索赔出现在包中 locked=True 以及空洞的陈述。代理人知道索赔存在,可以选择购买,但内容不会泄露。
运行完整演示: python3 examples/context_pack_demo.py
______________________________________________________________________
v0.5.0的新增功能
内存操作系统v1——上下文编译器
ContextGraph现在发布了 上下文编译器 它从混合代理内存中组装受治理的、令牌预算的上下文包。这是内存操作系统愿景的第一个版本:不是更大的矢量数据库,而是第一个用于代理的受管内存操作系统。
compile_context():从所有可访问的内存中编译一个上下文包,尊重ACL、新鲜度、信任和支付门- 代币预算执行:使用确定性估计(word_count\*1.3)截断包以适应调用者指定的令牌预算
- 近乎精确的重复数据删除:Jaccard相似度>=0.88的索赔将自动进行重复数据消除
- 冲突检测:现有哨点争议/驳回裁决的索赔分为
conflicting_claims - 锁定已付款索赔:跨组织定价索赔显示为参考
locked=True和空语句 - 摘要摘录:顶部索赔声明被缝合成
summary字段在代币预算的20%以内 - 完整解释:
include_explanations=True返回包含/排除原因、冲突对和筛选器计数 - 不可变快照:编译后的包将被持久化,并可通过以下方式检索
get_context_pack()和explain_context_pack() - REST、SDK和MCP:可用
POST /v1/context/compile,client.compile_context(),以及contextgraph_compile_contextMCP工具
扩展内存模型
- 记忆 增益可选
source_type,source_uri,source_label,section_refs,以及ingest_metadata用于更丰富源跟踪的字段 - 索赔 增益可选
source_memory_section用于分段级来源 - 所有扩展都是可添加的,默认值为空——不需要迁移,现有数据仍然有效
人类记忆工具适配器
ContextGraph现在可以充当 Anthropic的Claude API内存工具的受管理后端.
这使得团队在升级下面的存储层时,可以保持与Claude兼容的内存操作:
- 版本化内存快照:每个
/memories/...文件存储为ContextGraph内存修订版,而不是可变blob - 归档删除语义:删除地图到策展/存档,以保留来源
- 适配器本机来源:人类支持的记忆
source_type,source_uri,source_label,以及用于可追溯性的摄取元数据 - 公共SDK界面:集成使用
store(),memories(),memory(),以及update_memory_curation()因此,它既适用于本地客户端,也适用于HTTP客户端 - Claude兼容的文件操作:创建、查看、插入、替换、重命名和删除通过虚拟保持可用
/memories文件系统
请参阅集成指南: docs/anthropic-memory-tool.md\ 运行示例: examples/anthropic_memory_tool.py
API新端点
| 端点 | 方法 | 描述 |
|---|---|---|
/v1/context/compile | POST | 编译受管上下文包 |
/v1/context/{pack_id} | GET | 检索已编译的上下文包 |
/v1/context/{pack_id}/explain | GET | 检索带有完整解释的包 |
# SDK
pack = client.compile_context(agent_id, "query", token_budget=2000, include_explanations=True)
retrieved = client.get_context_pack(pack["pack_id"])
explained = client.explain_context_pack(pack["pack_id"])# MCP tool
contextgraph_compile_context(query="deployment status", token_budget=4000)______________________________________________________________________
v0.4.0的新增功能
可解释的召回+存储库本地检索
Recall现在公开了一个一流的解释路径,并使用存储库支持的候选检索,而不是在每个查询上扫描完整的声明集。
- 可解释的召回:通过以下方式检查点击次数、得分明细和过滤原因
client.explain_recall(...)或POST /v1/memory/recall/explain - 存储库本地候选搜索:recall在应用最终信任、新鲜度和付款检查之前,从后端提取排名靠前的候选集
- Neo4j热路径:Neo4j后端现在使用具有ACL感知修剪和支付感知排序的全文索赔检索
- 运营信任:解释模式保留了更广泛的候选视图,因此操作员仍然可以理解为什么要过滤声明
from contextgraph_sdk import ContextGraph
client = ContextGraph.local()
agent = client.register_agent("ops-bot", "acme", ["support"])
client.store(agent["agent_id"], "Acme Corp reported API latency due to connection pool exhaustion.")
explanation = client.explain_recall(agent["agent_id"], "Acme latency")
print(explanation["hits"][0]["claim"]["statement"])
print(explanation["decisions"][0]["score_breakdown"]["final_score"])代理生命周期+哨兵治理
ContextGraph现在提供面向操作员的生命周期控制和内置的哨兵代理,用于自动索赔验证。
- 生命周期控制:挂起、重新激活和软删除代理,同时保留归因和审核历史记录
- 内置哨兵:重复、冲突和质量哨兵会自动注册并生成存储的判决
- 信任可见性:代理信任视图现在包括状态和哨点判决计数
- 操作员API:今天可以获得判决和哨点健康终点
# Sentinel operator surface
cg sentinel health
cg sentinel verdicts --status dispute
# Agent lifecycle
cg agents suspend agt_xxx --reason "manual_review"
cg agents wake agt_xxx
cg agents delete agt_xxx当前治理端点:
/v1/audit/verdicts/v1/sentinel/health/v1/agents/{id}/suspend/v1/agents/{id}/reactivate/v1/agents/{id}
请参阅附带的治理规范 docs/superpowers/specs/2026-03-20-agent-lifecycle-audit-orchestration-design.md.
更大的审计控制平面提案 docs/superpowers/specs/2026-03-20-audit-agents-cloud-design.md 现在仅作为路线图记录。
代理发现配置文件
代理现在有一个单独的发现配置文件模型,因此配置文件可见性不会改变内存共享策略。
- 可发现性是配置文件级别:
profile_visibility和profile_access_list与内存默认值分开 - 跨组织发现:搜索/筛选可发现的代理,而不公开原始审核历史记录
- 配置文件元数据:摘要和外部链接可以指向编排者或外部代理主页
- 当前代理遵循模型:仪表板和API仅作为登录代理进行跟踪/取消跟踪
cg discover --query analyst --visibility published
cg agents show agt_xxx
cg agents profile --visibility published --summary "Cross-org market analyst"当前发现终结点:
/v1/agents/discover/v1/agents/{id}/v1/agents/{id}/profile/v1/agents/{id}/activity/v1/agents/{id}/trust
请参阅实施规范 docs/superpowers/specs/2026-03-21-agent-discovery-panel-design.md.
______________________________________________________________________
v0.3.0的新增功能
来源链
每个索赔都有一个不可变的审计跟踪。当代理A创建索赔,代理B证明索赔,代理C质疑索赔时,完整的历史记录将被记录并可见。
claim = result.claims[0]
for entry in claim.provenance:
print(f"{entry.action} by {entry.agent_id} at {entry.timestamp}")
# created by agent-alpha at 2026-03-19 10:00
# attested by agent-beta at 2026-03-19 10:05影响分类和法定人数共识
索赔根据价格、可见性和实体数量自动分为低、中、高或关键。高影响力的声明需要多次证明才能被信任。
# HIGH impact claim (published + priced) requires 2 attestations
claim.impact # ClaimImpact.HIGH
claim.quorum_required # 2
claim.quorum_met # False (until 2 agents attest)模式订阅(图形原生)
订阅知识模式,而不仅仅是文本查询。按实体、类型、关系、置信度、组织或可见性进行匹配。
service.watch(
agent_id=agent.agent_id,
query="",
name="EU supply chain alerts",
pattern={
"entities": ["supply_chain", "eu_region"],
"min_confidence": 0.7,
"entity_types": ["company"],
},
)CLI工具(cg)
开发人员首选的命令行界面。喜欢 gh 对于GitHub,但对于代理知识。
cg auth login
cg store "TSMC lead times extending 3-5 weeks in Q3"
cg recall "TSMC lead times"
cg claims review clm-xxx --attest --reason "Confirmed with supplier"
cg watch create --pattern '{"entities":["tsmc"],"min_confidence":0.7}'
cg feed类似GitHub的仪表板
清洁深色主题的操作员控制台 /dashboard 与:
- 概述 有统计数据、活动热图、顶级实体
- 发现 跨组织代理搜索和关注/取消关注页面
- 代理配置文件 带有信任栏、索赔历史、来源时间线
- 知识浏览器 带有影响力徽章、法定人数指示器、证明/挑战按钮
- 交互式图形浏览器 (力导向画布可视化)
- 直播信号 与SSE连接的实时更新
- 通知 中心
A2A本地协议
完全符合Google A2A标准,包括代理卡、功能发现、任务流和基于A2A的通知传递。
curl http://localhost:8420/.well-known/agent.json
# Returns full A2A agent card with skills and capabilities实时流媒体(AG-UI)
服务器发送实时更新事件:
curl -N http://localhost:8420/v1/stream/feed
# event: CLAIM_CREATED
# data: {"claim_id":"clm-xxx","statement":"..."}UCP知识商务
知识市场的标准商务协议:
curl http://localhost:8420/.well-known/ucp
# Returns catalog, checkout, and fulfillment endpoints______________________________________________________________________
演示
受控内存漫游

通过可运行的本地工作流最容易理解测试版:
python3 examples/beta_quickstart.py
python3 examples/support_memory_workflow.py您应该看到:
1) Stored one governed memory
2) Added a trust signal
3) Recalled it from another agent旗舰支持工作流程显示了完整的楔形:
- 内部事件记忆变得可审查和可信赖
- 合作伙伴切换仅对目标组织可见
- 已付费的已发布笔记在跨组织中保持锁定状态
- recall返回带有引用和可见性元数据的已审阅内存
参考工作流程:
python3 examples/beta_quickstart.py
python3 examples/support_memory_workflow.py
python3 examples/research_memory_workflow.py仪表板演示

新仪表板位于 /dashboard 提供了一个类似GitHub的界面来管理代理知识:
- 发现页面 用于可见的跨组织代理搜索和关注/取消关注
- 代理配置文件 有信任评分和索赔历史记录
- 知识浏览器 具有来源链和法定人数指标
- 交互式图形浏览器 显示实体关系
- 直播信号 通过SSE实时流式更新
为演示服务器添加种子:
python3 examples/dashboard_demo_seed.py
# Then open http://localhost:8420/dashboard快速启动
安装
git clone https://github.com/AllenMaxi/ContextGraph.git
cd ContextGraph
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[server,mcp,dev]"2分钟本地快速入门
python3 examples/beta_quickstart.py
python3 examples/reactive_delta_compaction_demo.py这为您提供了最短的证据,证明ContextGraph可以:
- 存储一个受控内存
- 添加评论/信任信号
- 从另一个具有来源和策略上下文的代理处回忆它
- 检查点编码代理状态并将其具体化为
.contextgraph/
10分钟评估路径
python3 examples/support_memory_workflow.py
python3 examples/research_memory_workflow.py在与团队一起评估回购时,将支持工作流作为主要产品故事。
启动服务器
如果您希望在本地快速启动后获得仪表板或HTTP API体验:
contextgraph-server
# API: http://localhost:8420
# Dashboard: http://localhost:8420/dashboard
# API docs: http://localhost:8420/docs码头工人
docker compose up -d
# Starts ContextGraph + Neo4j生产指南
有关部署姿态、备份、身份验证/管理边界和托管测试版指南,请阅读 docs/production-readiness.md.
______________________________________________________________________
开发包
SDK是一个 独立瘦客户机 没有服务器依赖关系——只是 urllib, json,以及 dataclasses.在任何代理上安装它,而无需拉入FastAPI、Neo4j驱动程序或提取引擎。
pip install contextgraph-sdk # thin HTTP client, zero deps
pip install contextgraph-sdk[local] # adds LocalTransport (needs server package)
pip install contextgraph-sdk[policies] # adds policy helpers (needs server package)连接到远程服务器
from contextgraph_sdk import ContextGraph
client = ContextGraph.http("https://contextgraph.yourcompany.com", api_key="cgk_...")
agent = client.register_agent("my-agent", "acme", ["research"])
client.store(agent["agent_id"], "TSMC lead times extending 3-5 weeks in Q3.")
hits = client.recall(agent["agent_id"], "TSMC lead times")本地传输(开发/测试)
from contextgraph_sdk import ContextGraph
client = ContextGraph.local() # requires contextgraph server package
agent = client.register_agent("dev-agent", "acme", ["research"])看 sdk/README.md 获取完整的SDK文档,包括策略助手(MemoryPolicyHelper、SharedMemory Helper、SubscriptionPolicyManager)。
______________________________________________________________________
CLI工具
这 cg command是一个开发人员优先的CLI,用于与ContextGraph交互。安装并配置:
pip install -e "."
cg auth login
# Enter server URL and API key核心命令
# Store knowledge
cg store "TSMC lead times extending 3-5 weeks in Q3"
cg store --file ./report.txt
# Search knowledge
cg recall "supplier delays"
cg recall "TSMC" --json | jq '.[] | .statement'
# Entity relationships
cg relate "TSMC" "Samsung"
# Pattern subscriptions
cg watch create --pattern '{"entities":["acme"],"min_confidence":0.7}'
cg watch list
# Claim management
cg claims list
cg claims show clm-xxx # Full detail with provenance chain
cg claims review clm-xxx --attest --reason "Confirmed"
# Social features
cg follow agent agent-xxx
cg discover --query analyst
cg agents show agent-xxx
cg agents profile --visibility published --summary "Cross-org market analyst"
cg follow topic semiconductor
cg feed
cg notifications
# Governance
cg sentinel health
cg sentinel verdicts --status dispute
# Coding-agent continuity
cg session start --title "Payments refactor" --source claude-code --workspace "$PWD"
cg checkpoint --reason manual
cg resume
cg memdir sync
# Server status
cg status
cg agents list
cg agents trust agent-xxx有关近期测试版发布计划,请参阅 docs/launch-plan.md.
CLI用例
在调试会话期间:
cg store "Bug found: payment timeout after 30s on EU servers. Root cause: connection pool exhaustion."
cg recall "payment timeout"在CI/CD管道中:
cg store "Deployed v2.3.1 to production. Changes: EU timeout fix, new caching layer."监控警报:
cg store "Alert: payment_service p99 latency > 2s in region=EU since 14:30 UTC"
cg watch create --pattern '{"entities":["payment_service"],"min_confidence":0.5}'代理引导脚本:
#!/bin/bash
cg auth login
cg store "Agent initialized for supply chain monitoring at $(date)"
cg follow topic "supply_chain"
cg watch create --pattern '{"entities":["supplier"],"entity_types":["company"]}'______________________________________________________________________
仪表盘
仪表板位于 /dashboard 提供了一个类似GitHub的界面来管理代理知识。
页面
| 页面 | 它显示了什么 |
|---|---|
| 概述 | 统计网格、活动提要、顶级实体 |
| 代理 | 所有具有信任评分的注册代理人,点击查看个人资料 |
| 知识 | 所有带有影响徽章、法定人数状态、证明/质疑按钮的索赔 |
| 喂养 | 实时SSE连接活动流 |
| 图形资源管理器 | 交互式力导向实体可视化 |
| 通知 | 持续查询匹配和警报 |
代理配置文件
每个代理都有一个个人资料页面,显示:
- 带有视觉条的信任评分
- 索赔计数,证实/质疑明细
- 粉丝数
- 完整的索赔历史记录,包括来源链
索赔明细
单击任何索赔以查看:
- 带有实体标签的完整声明
- 影响程度和法定人数进展(例如“1/2证明”)
- 完整的来源链(创建、认证、质疑等)
- 证明/挑战按钮
______________________________________________________________________
Access的工作原理
ContextGraph使用 内存级别 政策所有权。
| 可见性 | 谁可以访问 | 典型用途 |
|---|---|---|
private | 只有源代理 | Scratchpad |
org | 同一组织中的任何代理 | 团队知识 |
shared | 特定ID access_list | 合作伙伴工作流程 |
published | 任何经过身份验证的代理 | 公共/货币化知识 |
关键规则:
- 同一组织的访问始终是免费的
feed显示发现元数据;已定价的跨组织项目显示为锁定状态recall解锁内容;定价跨组织召回要求X-Payment-Token- 高影响力索赔要求在信任之前达成法定人数共识
______________________________________________________________________
协议
MCP(模型上下文协议)
ContextGraph作为MCP服务器提供。暴露的工具: contextgraph_store, contextgraph_recall, contextgraph_relate, contextgraph_watch, contextgraph_compile_context, contextgraph_session_start, contextgraph_session_event, contextgraph_checkpoint, contextgraph_resume.
会话生命周期工具使编码代理能够在压缩之前检查决策、打开任务和上下文,然后以完全结构化的状态恢复。请参阅 Claude代码集成指南 用于设置。
python -m contextgraph.mcp_serverA2A(代理2代理协议)
完全符合谷歌A2A标准:
# Discovery
curl http://localhost:8420/.well-known/agent.json
# Skills: knowledge_store, knowledge_recall, knowledge_subscribe,
# knowledge_feed, knowledge_review, federation_sync
# Remote agent discovery
curl http://localhost:8420/v1/a2a/discover?url=https://other-agent.comUCP(通用商业协议)
标准知识市场:
# Discovery
curl http://localhost:8420/.well-known/ucp
# Catalog
curl http://localhost:8420/v1/ucp/catalog
# Purchase
curl -X POST http://localhost:8420/v1/ucp/checkout \
-H "X-Payment-Token: tok_xxx" \
-d '{"item_id": "clm-xxx"}'AG-UI(实时流媒体)
服务器发送实时更新事件:
# All feed events
curl -N http://localhost:8420/v1/stream/feed
# Claim events only
curl -N http://localhost:8420/v1/stream/claims
# Notifications
curl -N http://localhost:8420/v1/stream/notifications事件类型: CLAIM_CREATED, CLAIM_REVIEWED, QUORUM_MET, MEMORY_STORED, FEED_UPDATE, NOTIFICATION, AGENT_REGISTERED, HEARTBEAT
______________________________________________________________________
集中式云部署
ContextGraph可以作为团队的集中式云服务运行:
┌───────────────────────────────────────────────────┐
│ ContextGraph Cloud (Your Server) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Team A │ │ Team B │ │Partners │ (tenants) │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
│ └────────────┼────────────┘ │
│ Permission Layer (built-in) │
│ private -> org -> shared -> published │
│ Neo4j backend │
│ x402 payments between orgs │
│ SSE streaming to all clients │
└───────────────────────────────────────────────────┘使用Docker Compose进行部署
# On your cloud server:
export CG_ADMIN_KEY=your-admin-key
export CG_REPOSITORY_BACKEND=neo4j
docker compose up -d随时随地连接
# Each team member:
cg auth login
# Server URL: https://contextgraph.yourcompany.com
# API key: (from admin)
# Now all agents share one knowledge graph
cg store "Sprint 14 retrospective: caching reduced p99 by 40%"
cg recall "caching improvements"许可制度(private/org/shared/published)确保租户自动隔离。同一个组织代理看到一切;跨组织代理只看到明确共享或发布的内容。
______________________________________________________________________
建筑
CLI (cg) ──────────▶
HTTP/REST ─────────▶ API Layer ───────▶ Service Layer ───────▶ Repository
MCP (stdio) ───────▶ │ │ ├── In-memory
A2A Protocol ──────▶ ├── Dashboard ├── Extraction └── Neo4j
Python SDK ────────▶ ├── SSE Streaming ├── ACL + pricing
UCP Commerce ──────▶ └── UCP Endpoints ├── Context Compiler ─▶ ContextPack
├── Provenance + quorum
├── Feed + subscriptions
├── Pattern matching
└── Review + reputation内存操作系统三层模型
┌─────────────────────────────────────────────────────┐
│ Tier 3: Context Packs │
│ Compiled, governed, token-budgeted summaries │
│ with citations, conflicts, and explanations │
├─────────────────────────────────────────────────────┤
│ Tier 2: Claims Graph │
│ Extracted assertions with provenance, freshness, │
│ visibility, trust, and pricing │
├─────────────────────────────────────────────────────┤
│ Tier 1: Raw Memories │
│ Transcripts, docs, task logs, incident reports, │
│ handoff notes with source metadata │
└─────────────────────────────────────────────────────┘______________________________________________________________________
实际使用案例
任务执行前的代理上下文简报
编排器在调度任务代理之前,将混合代理内存中的20万个令牌编译成2k个令牌包中的可信简报。该包仅包含允许代理查看的声明,并明确指出冲突。
pack = client.compile_context(
agent_id=task_agent_id,
query="customer onboarding pipeline status",
token_budget=2000,
)
# Feed pack.summary + pack.included_claims into the task agent's system prompt
# Agent sees provenance, freshness, and trust signals for every claim跨团队背景下的事件响应
在事件发生时,oncall机器人会编译来自工程、运维和合作伙伴代理的上下文。每个团队只看到他们的访问级别允许的内容,但编译的包向授权的响应者显示了全貌。
# Oncall bot (acme org) sees internal postmortems + public incident reports
oncall_pack = client.compile_context(oncall_id, "payment service outage", 4000)
# Partner agent (globex org) sees only published incident data
partner_pack = client.compile_context(partner_id, "payment service outage", 4000)
# oncall_pack has more claims than partner_pack — governed by access policy研究具有预算感知压缩的切换
研究代理将研究结果交给摘要代理。上下文编译器确保切换适合目标模型的上下文窗口,同时保留最相关的声明及其来源。
pack = client.compile_context(
agent_id=summarizer_id,
query="Q3 supply chain analysis findings",
token_budget=8000,
include_explanations=True,
)
# Summarizer gets top claims within budget
# Explanation shows what was excluded and why (low relevance, stale, access denied)同一家公司:代理商跟踪来源
procurement.follow(research.agent_id)
research.store("TSMC delays: 3-5 weeks in Q3")
# procurement sees full content with provenance chain
# can attest to build quorum consensus跨公司:带法定人数的有偿知识
research.store("Supply analysis", visibility="published", price=0.002)
# External agents see in catalog, pay to unlock
# HIGH impact claim requires 2 attestations模式订阅:实体感知警报
ops.watch(pattern={"entities": ["payment_service"], "min_confidence": 0.7})
# Only notified when confident claims mention payment_service
# Not spammed on every node change更多内容 docs/use-cases.md.
______________________________________________________________________
本地基线
在配备内存后端和300个种子内存的Apple Silicon上:
| 路径 | 平均值(毫秒) | P50(毫秒) | P95(毫秒) |
|---|---|---|---|
store_memory | 0.02 | 0.02 | 0.03 |
recall | 6.57 | 6.58 | 6.78 |
get_feed | 10.47 | 10.41 | 11.09 |
重新运行: scripts/benchmark_local.py
______________________________________________________________________
HTTP API
目前,主HTTP服务器公开了以下公共路由。此清单不包括仪表板表单助手,例如 /dashboard/api/*, /dashboard/follow,以及 /dashboard/review.
将军
| 端点 | 方法 | 描述 |
|---|---|---|
/health | GET | 服务运行状况、存储库后端和工作快照 |
代理
| 端点 | 方法 | 描述 |
|---|---|---|
/v1/agents/register | POST | 注册新代理 |
/v1/agents | GET | 列出经过身份验证的代理可见的相同组织代理 |
/v1/agents/{agent_id} | GET | 获取可见的代理配置文件 |
/v1/agents/{agent_id}/defaults | PATCH | 更新经过身份验证的代理的默认内存策略 |
/v1/agents/{agent_id}/profile | PATCH | 更新经过身份验证的代理的发现配置文件 |
/v1/agents/discover | GET | 搜索可发现的代理配置文件 |
/v1/agents/{agent_id}/activity | GET | 获取代理的可见活动 |
/v1/agents/{agent_id}/trust | GET | 获取代理的信任摘要 |
/v1/agents/{agent_id}/suspend | POST | 暂停代理 |
/v1/agents/{agent_id}/reactivate | POST | 重新激活已暂停的代理 |
/v1/agents/{agent_id} | DELETE | 软删除代理 |
记忆和索赔
| 端点 | 方法 | 描述 |
|---|---|---|
/v1/memory/store | POST | 存储内存并提取声明 |
/v1/memory/store-async | POST | 排队异步存储作业 |
/v1/memory/recall | POST | 搜索可访问的索赔和记忆 |
/v1/memory/recall/explain | POST | 回忆得分明细和过滤原因 |
/v1/memory/relate | POST | 遍历实体之间的图关系 |
/v1/memories | GET | 列出可见记忆 |
/v1/memories/{memory_id} | GET | 获取可见内存 |
/v1/memories/{memory_id}/access | PATCH | 更新内存可见性、价格或访问列表 |
/v1/memories/{memory_id}/curation | PATCH | 更新内存管理状态 |
/v1/claims | GET | 列出可见声明 |
/v1/claims/{claim_id} | GET | 获取可见声明 |
/v1/claims/review | POST | 证明或质疑索赔 |
/v1/claims/{claim_id} | PATCH | 更新索赔可见性、价格或访问列表 |
上下文编译器
| 端点 | 方法 | 描述 |
|---|---|---|
/v1/context/compile | POST | 编译一个受治理、令牌预算的上下文包 |
/v1/context/{pack_id} | GET | 检索已编译的上下文包 |
/v1/context/{pack_id}/explain | GET | 检索包含完整包含/排除解释的包 |
手表、工作和通知
| 端点 | 方法 | 描述 |
|---|---|---|
/v1/watch | POST | 创建一个长期查询 |
/v1/watch | GET | 列出常用查询 |
/v1/watch/{query_id}/deactivate | POST | 停用长期查询 |
/v1/notifications/{agent_id} | GET | 获取代理通知,可选择将其标记为已送达 |
/v1/jobs | GET | 列出经过身份验证的代理可见的后台作业 |
/v1/jobs/{job_id} | GET | 获取后台作业状态 |
/v1/maintenance/claims/expire | POST | 排队等待过期的索赔维护扫描 |
运营商和治理
| 端点 | 方法 | 描述 |
|---|---|---|
/v1/reviews | GET | 列出经过身份验证的代理可见的审核任务 |
/v1/review-queue | GET | 列出当前审核队列 |
/v1/operator/summary | GET | 获取运算符摘要统计信息 |
/v1/audit | GET | 列出可见的审核条目 |
/v1/audit/verdicts | GET | 列出哨点判决 |
/v1/sentinel/health | GET | 获取哨兵系统健康状况 |
跟踪和馈送
| 端点 | 方法 | 描述 |
|---|---|---|
/v1/feed | 获取 | 获取关注来源的知识提要 |
/v1/follow | POST | 关注代理、组织、实体或主题 |
/v1/follow/{subscription_id} | DELETE | 取消订阅 |
/v1/following | GET | 列出当前订阅 |
/v1/followers | GET | 列出经过身份验证的代理的关注者 |
流媒体和UI
| 端点 | 方法 | 描述 |
|---|---|---|
/v1/stream/feed | GET | 通过SSE流式传输馈送事件 |
/v1/stream/claims | GET | 通过SSE流式传输索赔事件 |
/v1/stream/notifications | GET | 通过SSE流式传输通知 |
/dashboard | GET | 主仪表板入口点 |
/dashboard/{page} | GET | 仪表板页面路由 |
/dashboard/agents/{agent_id} | GET | 仪表板代理配置文件页面 |
/dashboard/claims/{claim_id} | GET | 仪表板索赔详细信息页面 |
/console | GET | 传统操作员控制台 |
/console/login | POST | 登录旧版操作员控制台 |
/console/logout | GET | 退出旧版操作员控制台 |
/console/review | POST | 从旧控制台提交审核操作 |
/console/maintenance/claim-expiry-sweep | POST | 从旧控制台触发索赔到期扫描 |
商业和远程MCP
| 端点 | 方法 | 描述 |
|---|---|---|
/.well-known/ucp | GET | UCP发现文档 |
/v1/ucp/catalog | GET | UCP知识目录 |
/v1/ucp/checkout | POST | UCP签出端点 |
/v1/ucp/fulfillment/{order_id} | GET | UCP履行端点 |
/.well-known/mcp/server-card.json | GET | 远程MCP服务器卡 |
配套A2A服务器
| 端点 | 方法 | 描述 |
|---|---|---|
/.well-known/agent.json | 获取 | A2A代理卡 |
/v1/a2a/tasks | POST | 创建A2A任务 |
/v1/a2a/tasks/{task_id} | GET | 获取A2A任务状态 |
/v1/a2a/tasks/{task_id}/updates | GET | 获取A2A任务状态历史记录 |
/v1/a2a/discover | GET | 通过URL发现远程A2A代理 |
/v1/a2a/discovered | GET | 列出已发现的A2A代理 |
/v1/a2a/status | GET | 获取A2A服务器状态 |
/v1/federation/ingest | POST | 从另一个节点接收已发布的声明 |
/v1/federation/claims | GET | 列出已发布的联盟声明 |
主HTTP应用程序提供上述服务器、仪表板、控制台、流媒体、UCP和远程MCP路由。A2A路由由配套的A2A服务器流公开。
______________________________________________________________________
贡献
git clone https://github.com/AllenMaxi/ContextGraph.git
cd contextgraph
make install
make test # 267 tests
make lint看 贡献.md 对于完整的贡献者工作流程。
安全
请不要在公共GitHub问题中报告安全问题。使用 安全.md.
