GCF 结构化数据格式
面向 AI 与代理通信的紧凑、无模式、无损结构化数据线缆格式。
- Star 数
- ★ 52
- 最近更新
- 今天
- License
- Apache-2.0
- FA 评分
- 59/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Codex · Claude Code
- 费用
- 免费,无需付费服务
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- 维护 MCP 服务器的团队,希望压缩结构化工具响应,同时保留可解码的数据类型与结构。
- 不适合
- 必须沿用标准 JSON 线缆格式且不能增加编解码步骤的团队
- 要求许可证元数据完全一致后才能采用的组织
- 需要成熟稳定版 .NET SDK 的团队
这个 Agent 能做什么,适合哪些场景?
GCF 是面向 LLM 和多轮代理交互的结构化数据线缆格式,并非一个自主执行任务的代理。它提供 generic profile 来编码普通对象、数组与标量,也提供 graph profile 来表达符号、边和距离分组;数据可从 JSON、YAML、TOML、CSV 或 MessagePack 转换,并解码回这些格式。项目提供 Go、TypeScript、Python、Rust、Swift、Kotlin 和 .NET SDK,还包括 CLI、流式编码、MCP 代理、Claude Code/Codex 插件及编辑器集成。其多轮机制通过本地 ID、会话去重和 delta 编码减少重复上下文,而流式模式可用延迟计数与汇总尾部逐行输出。仓库报告了 2,500 多次模型评测、跨 17 种序列化格式的互操作验证,以及超过 430 亿次无损往返;这些数字来自项目自身提供的材料。
调用方先把已反序列化的对象、数组或标量交给 generic profile 的 encodeGeneric(Python 示例为 encode_generic),编码器会将对象数组的字段集中写入一次表头,再输出以管道符分隔的位置值;嵌套固定结构可展开为 > 路径列。对于代码智能或知识图谱,graph profile 的 encode 接收 Payload、Symbol 和 Edge,以 @0、@1 等本地 ID 代替边中的完整标识符,并按 targets、related 和 edges 等区段生成 GCF 文本。decode() 将结果还原,并可转换至 JSON、YAML、TOML、CSV 或 MessagePack。流式编码器可先发出 [?],逐行处理游标或遍历结果,最后用 ##! summary 补齐计数。多轮场景还能对既有符号发送引用并只传变化量;gcf-proxy 则可在不修改原 MCP 服务器代码的情况下提供双向转换、会话去重和 HTTP 前端。
- 维护 MCP 服务器的团队,希望压缩结构化工具响应,同时保留可解码的数据类型与结构。
- 构建多代理工作流的开发者,需要降低重复交接同一批结构化上下文的 token 消耗。
- 代码智能或知识图谱系统,需要用本地 ID 紧凑表达符号、关联边与距离分组。
- 处理大型数据库游标或图遍历的服务,需要逐行输出而不把完整结果集缓存在内存中。
- 同时接收 JSON、YAML、TOML、CSV 或 MessagePack 的应用,希望通过一个编解码层统一模型侧表示。
- 使用 Claude Code 或 Codex 的团队,希望通过项目提供的插件记录会话统计并接入 GCF。
如何安装或部署这个 Agent?
按所用语言安装对应 SDK;材料没有声明具体语言版本要求或凭据要求。以下命令均来自项目安装说明:
pip install gcf-pythonnpm install @blackwell-systems/gcfgo get github.com/blackwell-systems/gcf-gocargo add gcfdotnet add package BlackwellSystems.Gcf若要包装现有 MCP 服务器,可安装代理:
pip install gcf-proxy项目也列出了 Swift Package Manager、Kotlin/JitPack、Claude Code 插件、Codex 插件以及 VS Code、JetBrains、Zed、n8n 和 tree-sitter 集成,但材料未给出插件及部分集成的完整可复制安装参数。
如何使用这个 Agent?
Python 的首个可工作示例使用 encode_generic 编码普通结构化数据,不需要 API 密钥:
from gcf import encode_generic
output = encode_generic({
"employees": [
{"id": 1, "name": "Alice", "department": "Engineering", "salary": 95000},
{"id": 2, "name": "Bob", "department": "Sales", "salary": 72000},
{"id": 3, "name": "Carol", "department": "Marketing", "salary": 85000},
],
})代码图场景使用 graph profile:
from gcf import encode, Payload, Symbol, Edge
output = encode(Payload(
tool="context_for_task", token_budget=5000, tokens_used=1847,
symbols=[
Symbol(qualified_name="github.com/org/repo/pkg.AuthMiddleware", kind="function", score=0.78, provenance="lsp_resolved", distance=0),
Symbol(qualified_name="github.com/org/repo/pkg.NewServer", kind="function", score=0.54, provenance="lsp_resolved", distance=1),
],
edges=[Edge(source="github.com/org/repo/pkg.NewServer", target="github.com/org/repo/pkg.AuthMiddleware", edge_type="calls")],
))若需恢复原始结构,使用 SDK 的 decode();材料说明它可输出 JSON、YAML、TOML、CSV 或 MessagePack,但没有给出完整的解码调用片段。CLI 随六个原始语言 SDK 提供,但这里的材料没有列出其具体命令语法。
这个 Agent 有哪些优点和局限?
- 同一套语法覆盖普通结构化数据和带节点、边、距离分组的图数据,并支持 JSON、YAML、TOML、CSV 与 MessagePack 转换。
- 项目报告相对 JSON 节省 50%–92% token,并通过本地 ID、会话去重和 delta 进一步优化重复的多轮上下文。
- 七个语言实现均承诺零运行时依赖,只使用各自语言的标准库。
- 支持延迟计数和汇总尾部的流式输出,编码器只需保留一行,适合大型游标和图遍历。
- 提供 MCP 代理以及 Claude Code、Codex、VS Code、JetBrains、Zed、n8n 和 tree-sitter 等集成路径。
- 采用方必须在现有数据路径中增加 GCF 编码与解码;不支持 GCF 的系统仍需在边界转换为常见格式。
- README 中的许可证信息互相矛盾:仓库元数据显示 Apache-2.0,徽章也是 Apache 2.0,但实现说明和许可证章节写 MIT,采用前需要核实。
- 性能、理解率和 TOON 损坏率等结论均为项目材料中的自报结果,这里没有独立复现实验作为佐证。
- 部分生态组件成熟度不一致;材料列出的 .NET 版本为 0.1.0,而其他多数 SDK 为 2.5.2 或更高。
- 会话去重与 delta 依赖本地 ID 和多轮状态设计,接入方需要管理会话连续性,而非把每次负载都视为完全独立。
这个 Agent 与同类方案有什么区别?
相较 JSON,GCF 通过一次性字段表头、位置行和本地 ID 减少重复语法;项目报告 token 减少 50%–92%,但需要额外编解码层。相较 Protobuf,GCF 无需 .proto 模式且文本可由模型直接读取;相较 MessagePack,它不是二进制格式。项目把 TOON 视为主要紧凑文本替代方案,并报告 GCF 在 16 个数据集中的 15 个取得更高 token 效率,在复杂图理解测试中为 91.2%,而 TOON 为 68.8%;这些比较数字来自项目自身测试。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| GCF 结构化数据格式 当前 | 59 · 缺口较多 | 代码库 / SDK免费 | ★ 52 | 今天 | — | Codex · Claude Code |
| LeanCTX 上下文智能层 | 75 · 表现良好 | 命令行工具免费 + 模型费 | ★ 3.8k | 1 天前 | Rust | Codex · Claude Code · OpenAI API · Claude API |
| MCP Memory Service | 68 · 存在缺口 | MCP 服务器免费 | ★ 2k | 1 天前 | Python | ChatGPT · Codex · Claude Code · Claude.ai |
| Pydantic Deep Agents | 68 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 1.1k | 1 个月前 | Python | OpenAI API · Claude API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示核心编解码用途通常是本地、可逆的数据转换,差分模糊测试工作流还明确使用只读 contents 权限;README 解释了数据如何被压缩、引用和解码,并标注作者及研究来源。扣分原因是没有用户确认机制、敏感数据处理或日志脱敏指导;其他工作流未明确最小权限,代理和多格式转换的数据边界也未完整说明。依赖安全主要依靠“SDK 零运行时依赖”的承诺,但本仓库 package.json 实际包含多个宽松版本范围的工具依赖,未见锁文件、审计、固定提交或漏洞处置说明。发布者身份未知本身未被视为风险。
仓库提供覆盖矩阵门禁、夜间跨 SDK 差分模糊测试和 NxN 互操作脚本;脚本对缺失工具、超时、输出不匹配和失败退出给出可理解的信息。依赖安装覆盖多种语言且 CI 明示工具链,但测试依赖多个外部仓库和本机固定目录布局。自洽性明显扣分:README 同时声称 MIT 和指向 Apache-2.0 的 LICENSE,测试脚本仍称 GCF v2.0,而 README 宣称规范 v3.5.1,并且“七个 SDK 永久零依赖”的说法与本仓库工具依赖容易混淆。
README 对 MCP、代理间通信、结构化输出、代码图、多格式互操作、流式和多轮场景给出了清楚的受众与示例,generic 与 graph profile 的选择边界也较明确。扣分在于缺少机器可执行的触发或选择策略、输入规模阈值和降级规则;环境覆盖虽广,但跨语言验证脚本依赖特定 HOME/code 目录、多个工具链和外部 SDK 仓库,因此并非开箱即用。
信息组织、代码示例、格式说明、安装命令和文档导航较完整,并提供 FAQ 链接、规范版本和各 SDK 版本。扣分主要来自许可证冲突:根 LICENSE 和给定元数据是 Apache-2.0,README 却写 MIT;未提供本次材料内的 changelog、迁移路径或清晰兼容策略。已知限制很少,文案主要强调优势,没有系统说明不适用场景、资源上限、安全边界或失败模式。维护归属可推断为 blackwell-systems/Dayna Blackwell,但没有治理、支持渠道、发布责任或安全报告流程。
示例输出紧凑、可读,并展示了解码回原结构、流式传输、局部 ID、会话去重和多语言实现,因而静态材料充分支持输出可用性。相对 JSON 的结构性节省具有合理的边际价值,但 50–92%、99%、94.4% 和 43B 次无失败等收益主要由 README 宣称;所给文件没有原始结果、统计方法或成本模型,因此边际价值和成本收益未给满分。
多数重大主张关联到规范、基准页面、论文、覆盖工作流或测试脚本;工作流与跨语言矩阵代码也在一定程度上相互印证 conformance 和互操作测试意图。扣分是本次材料没有包含规范、夹具、完整基准数据、CI 结果或论文内容,无法静态确认宣称的通过数量与比例;README 还把研究机制、因果推论和产品营销结论紧密混写,事实、推断与承诺的分隔不足。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 源码中未见:敏感信息处理使用专用、低权限、可随时吊销的 API 密钥,不要复用生产凭据,也不要让密钥出现在日志里。
- 在采用或再分发前必须解决许可证冲突:README 标注 MIT,但根 LICENSE 和给定元数据均为 Apache-2.0。
- 不要把 README 中的 43B 次无失败、100% 理解率或具体节省比例视为已独立验证;本评估未执行代码,也未获得原始结果或 CI 记录。
- 处理机密或个人数据前应单独审查代理、日志、遥测、缓存、会话去重和跨格式转换的数据流;现有材料没有敏感数据政策。
- 跨语言测试依赖多个外部仓库、工具链和固定目录布局,复现前应固定精确版本并核验各 SDK 与规范 v3.5.1 的兼容性。
- package.json 使用版本范围且未提供锁文件或依赖审计证据;在供应链敏感环境中应先锁定并审查依赖。
常见问题
运行 GCF 是否需要模型 API 或付费服务?
它能完全替代 JSON 吗?
是否必须使用 MCP?
gcf-proxy 只是为现有 MCP 服务器提供的可选包装路径。流式输出如何处理事先未知的行数?
[?],编码器逐行发送内容,并在结束时用 ##! summary 补充真实计数。