Skip to content

以 Go 语言实现的先进"上下文工程"SDK,专为构建具备长期记忆、深度上下文理解能力和严格安全隔离的多租户 AI 应用而设计

License

Notifications You must be signed in to change notification settings

gonewx/contextor

Repository files navigation

Contextor

Go Version License Build Status

Contextor 是一个以 Go 语言实现的先进"上下文工程"SDK,专为构建具备长期记忆、深度上下文理解能力和严格安全隔离的多租户 AI 应用而设计。

🚀 核心特性

  • 三层知识图谱架构: 完整保留原始信息,构建语义网络
  • 双时间轴时序管理: 区分"事件发生时间"和"信息获知时间"
  • LLM 驱动的冲突解决: 智能处理新旧信息矛盾,保留完整变更历史
  • 混合搜索策略: 结合向量搜索、全文搜索和图遍历的三步检索
  • 原生多租户隔离: 内置用户级和会话级双重数据隔离
  • 异步处理管道: 高性能的数据注入和知识提取

🏗️ 技术架构

  • 语言: Go 1.24+
  • 数据库: SurrealDB (图数据库 + 文档存储 + 向量搜索)
  • 缓存: Redis (会话状态 + 异步任务队列)
  • LLM 集成: 支持 OpenAI、Anthropic 等多种模型

📦 快速开始

安装

go get github.com/gonewx/contextor

基本用法

package main

import (
    "log"
    "github.com/gonewx/contextor"
)

func main() {
    // 初始化客户端
    client, err := contextor.NewClient(`{
        "surrealdb_url": "ws://localhost:8000",
        "redis_url": "redis://localhost:6379",
        "openai_api_key": "your-api-key"
    }`)
    if err != nil {
        log.Fatal(err)
    }

    // 创建会话
    session, err := client.Session.Start("tenant-123")
    if err != nil {
        log.Fatal(err)
    }

    // 注入数据
    err = client.Memory.Ingest(session.ID(), "项目截止日期是2025年12月31日")
    if err != nil {
        log.Fatal(err)
    }

    // 检索上下文
    results, err := client.Retriever.Search(session.ID(), "截止日期是什么时候?")
    if err != nil {
        log.Fatal(err)
    }

    log.Printf("检索结果: %+v", results)
}

🔧 开发环境设置

前置要求

  • Go 1.24+
  • Docker & Docker Compose
  • Make

启动开发环境

# 克隆项目
git clone https://github.com/gonewx/contextor.git
cd contextor

# 启动依赖服务
make dev-env

# 运行测试
make test

# 构建项目
make build

📚 文档

🤝 贡献

我们欢迎社区贡献!请查看 CONTRIBUTING.md 了解如何参与项目开发。

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🔗 相关链接


注意: 本项目目前处于开发阶段,API 可能会发生变化。建议在生产环境使用前等待 v1.0 正式版本。

About

以 Go 语言实现的先进"上下文工程"SDK,专为构建具备长期记忆、深度上下文理解能力和严格安全隔离的多租户 AI 应用而设计

Resources

License

Stars

Watchers

Forks

Packages

No packages published