core

module
v0.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 22, 2026 License: None detected not legal advice

README

Flyto Agent Core

可嵌入的 Go Agent 核心库 -- 领域无关的智能体运行时.Go SDK 直接消费,零外部依赖.

项目统计

指标 数值
Go 源文件 247 个
测试文件 178 个
测试函数 2585 个
源代码行数 ~134,500 行(含测试)
内置工具 14 个
模块路径 flyto-agent/core

目录结构

core/
├── internal/                 内部实现(消费者不可 import)
│   ├── transport/            通用 SSE 流式 HTTP 客户端(ClientOption 注入)
│   │   └── retry/            重试策略框架
│   ├── wire/                 协议序列化(Anthropic/OpenAI/Gemini 三种格式)
│   ├── apierror/             共享错误类型
│   ├── mcp/                  MCP 协议客户端
│   ├── cache/                TTL 缓存 + prompt hash
│   ├── tokenizer/            Token 估算
│   ├── logger/               结构化日志(脱敏)
│   └── syslib/               系统级库
│       ├── bash/             Bash AST 解析
│       ├── diff/             Myers diff 算法
│       └── git/              Git 操作封装
├── pkg/                      公共包(消费者可 import)
│   ├── flyto/                公共契约(ModelProvider / Event / Request / ModelInfo)
│   ├── engine/               核心引擎(Run loop / 工具分发 / Dream / SubAgent)
│   ├── config/               配置(ModelRegistry / ModelRole)
│   ├── query/                内部消息类型(Message / Content / Usage)
│   ├── context/              Prompt Bundle + 压缩策略
│   ├── hooks/                Hook 系统
│   ├── plugin/               插件系统
│   ├── memory/               记忆系统
│   ├── permission/           权限系统
│   ├── security/             审计 + Secret 扫描
│   ├── evolve/               自进化 -- v0.2+ 9 接口矩阵 (ParameterStore / LogSource /
│   │                          FeedbackChannel / LogReplayer / Generator / Evaluator /
│   │                          Reflector / ParameterEvolver / ShadowRunner), 每接口含
│   │                          文件引用实现 + 单元测试, 零外部依赖
│   ├── websocket/            WebSocket 传输
│   ├── inbox/                进程间通信(UDS)
│   ├── tools/                工具框架 + 内置工具
│   │   └── builtin/
│   └── providers/            Provider 实现
│       ├── anthropic/
│       ├── openai/
│       ├── gemini/
│       ├── minimax/
│       ├── ollama/
│       ├── lmstudio/
│       ├── openrouter/
│       └── shared/
├── examples/                 使用示例
├── docs/                     文档
├── FLYTO.md                  AI Agent 系统指令
└── TODO.md                   待办事项

快速开始

Go SDK 模式(10 行代码)

Provider + Model 必填,引擎不预设供应商和模型.

package main

import (
    "context"
    "fmt"
    "os"

    "git.flytoex.net/yuanwei/flyto-agent/core/pkg/engine"
    "git.flytoex.net/yuanwei/flyto-agent/core/pkg/execenv"
    "git.flytoex.net/yuanwei/flyto-agent/core/pkg/providers/anthropic"
)

func main() {
    agent, err := engine.New(&engine.Config{
        Provider: anthropic.New(anthropic.Config{APIKey: os.Getenv("ANTHROPIC_API_KEY")}),
        Model:    "claude-sonnet-4-6",
        Cwd:      ".",
        Executor: execenv.DefaultExecutor{}, // 必填: 本地模式. 云端 SaaS 传 sandbox backend.
    })
    if err != nil {
        fmt.Fprintf(os.Stderr, "error: %v\n", err)
        os.Exit(1)
    }
    defer agent.Close()

    for event := range agent.Run(context.Background(), "查看当前目录结构") {
        switch e := event.(type) {
        case *engine.TextDeltaEvent:
            fmt.Print(e.Text)
        case *engine.ToolUseEvent:
            fmt.Printf("\n[tool] %s\n", e.ToolName)
        case *engine.DoneEvent:
            fmt.Printf("\n--- %d turns, $%.4f ---\n", e.TurnCount, e.TotalCostUSD)
        case *engine.ErrorEvent:
            fmt.Fprintf(os.Stderr, "error: %v\n", e.Err)
        }
    }
}

特性

  • 可嵌入的 Agent 引擎 -- Go SDK 直接消费,引擎不知道自己跑在哪里
  • 19 个内置工具 -- Bash, Read, Edit, Write, Glob, Grep, WebFetch, WebSearch, Agent, TaskCreate, TaskList, TaskUpdate, ToolSearch, Gitignore, SendMessage (Agent Teams), AddSharedTask / ListSharedTasks / ClaimSharedTask / CompleteSharedTask (Agent Teams 共享清单)
  • Bash AST 解析器 -- 完整的 Bash 命令 AST 解析(heredoc,引号,命令替换,进程替换,算术展开),替代字符串分割的安全分析
  • 模型角色系统 -- ModelRegistry 管理 Main/Fast/Thinking/Embed 四种角色,业务逻辑不硬编码模型 ID,支持注册第三方模型
  • 7 个 Provider -- Anthropic/OpenAI/Gemini/MiniMax/OpenRouter/Ollama/LMStudio,通过 Provider 接口统一
  • Prompt Caching -- 系统提示和工具描述自动缓存,多轮对话节省 ~78% 输入成本
  • 完整的权限系统 -- 规则匹配 + 风险评估 + 自动学习,4 种权限模式,CompositeHandler 多处理器叠加
  • 防御性编程 -- 三层防御模式(指令 + 参数 + 兜底),每个模型交互点都有降级策略
  • EngineObserver 可观测性 -- 结构化事件/指标/调用链接口,Noop/Stderr/Composite/Buffered 多种实现
  • NormalizePipeline -- 10 步可组合消息规范化管道
  • 自进化能力 -- CreateTool / LearnSkill / Reflect,Agent 运行时自己创建工具和学习技能
  • MCP 协议支持 -- Transport 接口抽象(Stdio/SSE/HTTP),工具名统一 mcp__server__tool 格式
  • 插件系统 -- 发现 + 加载 + 技能注入 + Hook 扩展
  • 记忆系统 -- 跨会话持久化 + RelevanceScorer 接口化
  • Hook 系统 -- 12 种 Hook 类型,覆盖工具调用,会话生命周期,权限等关键节点
  • 三层压缩降级 -- 单次压缩 -> 砍头重试 -> 分块压缩,CompactCircuitBreaker 断路器
  • 流式优先 -- 所有输出通过 Go channel 推送,消费层 for range 即可
  • Agent Teams (L1330) -- peer-to-peer 通讯 + 共享任务清单, send_message 内置工具 / tasklist.Store 接口分层存储 / Anthropic Claude Code tasks.md 双向互操作 / 跨行业中立 (编程/金融/医疗/仓储/法律示例见 examples/agent_teams_test.go)
  • 零外部依赖 -- go.mod 只有标准库,编译产物是单个二进制

文档索引

文档 说明
docs/architecture.md 内部架构,模块依赖,数据流
docs/api-reference.md HTTP API 完整参考 + API 消费形态 (push / pull / callback 三形态速查)
docs/tools.md 14 个内置工具详细文档
docs/configuration.md 多级配置,权限规则,Hook,MCP
docs/evolution.md 自进化系统(CreateTool/LearnSkill/Reflect)
docs/model-roles.md 模型角色系统,定价,Prompt Caching
docs/defensive-programming.md 防御性编程指南(内部文档)
docs/agent_teams.md Agent Teams MVP 设计 (L1330),Anthropic 对照表,跨行业场景
docs/agent_teams_tasklist.md TaskList 业务+存储分层,自定义 Store 接入模板

构建

# 运行测试
cd core && go test ./...

# 运行示例
cd core && go run ./examples/evolve_closed_loop/

许可证

Proprietary

Directories

Path Synopsis
cmd
capability-probe command
capability-probe - Provider 能力探测工具.
capability-probe - Provider 能力探测工具.
minimax-probe command
minimax-probe - MiniMax 工具数量上限 + JSON Schema 支持深度探测.
minimax-probe - MiniMax 工具数量上限 + JSON Schema 支持深度探测.
runtime-probe command
runtime-probe - 引擎运行时行为真验探针 (engine runtime behavior prober).
runtime-probe - 引擎运行时行为真验探针 (engine runtime behavior prober).
schema-probe command
schema-probe - JSON Schema 特性支持度跨模型对照探测工具.
schema-probe - JSON Schema 特性支持度跨模型对照探测工具.
Package examples provides runnable examples for flyto-agent.
Package examples provides runnable examples for flyto-agent.
evolve_closed_loop command
evolve_closed_loop exercises all 9 evolve interfaces in one runnable pipeline, using only the file-backed reference implementations plus a mock LLM client.
evolve_closed_loop exercises all 9 evolve interfaces in one runnable pipeline, using only the file-backed reference implementations plus a mock LLM client.
serverside_multiscope command
serverside_multiscope is a reference wiring example for server-side consumers that run the engine's Dream consolidation across many isolated scopes -- e.g.
serverside_multiscope is a reference wiring example for server-side consumers that run the engine's Dream consolidation across many isolated scopes -- e.g.
preset-coding
Package presetcoding provides the Claude Code-style prompt preset for Flyto Agent.
Package presetcoding provides the Claude Code-style prompt preset for Flyto Agent.
apierror
HTTP error classification -- the protocol-neutral DefaultClassifier (pure HTTP status-code mapping) plus connection-error diagnosis.
HTTP error classification -- the protocol-neutral DefaultClassifier (pure HTTP status-code mapping) plus connection-error diagnosis.
cache
PromptHashTracker - Prompt Cache 内容哈希刷新机制.
PromptHashTracker - Prompt Cache 内容哈希刷新机制.
mcp
JSON-RPC 2.0 协议类型定义.
JSON-RPC 2.0 协议类型定义.
streamguard
SSE 流状态守卫 -- 边界情况检测 + 空闲看门狗 + 停顿诊断.
SSE 流状态守卫 -- 边界情况检测 + 空闲看门狗 + 停顿诊断.
syslib/bash
从 AST 提取安全相关信息.
从 AST 提取安全相关信息.
syslib/diff
Myers diff 算法实现 -- An O(ND) Difference Algorithm (Myers, 1986).
Myers diff 算法实现 -- An O(ND) Difference Algorithm (Myers, 1986).
syslib/git
Package git wraps basic Git operations via direct exec.Command, used by pkg/context to fill EnvInfo for system prompt injection and by future sandbox pod self-checkout audit hooks (DESIGN.md whitelist).
Package git wraps basic Git operations via direct exec.Command, used by pkg/context to fill EnvInfo for system prompt injection and by future sandbox pod self-checkout audit hooks (DESIGN.md whitelist).
tokenizer
Package tokenizer 实现 token estimator 的近似版本.
Package tokenizer 实现 token estimator 的近似版本.
transport
API 客户端 -- 封装与 Messages API 的 HTTP 通信(纯 transport 层).
API 客户端 -- 封装与 Messages API 的 HTTP 通信(纯 transport 层).
transport/retry
Context-scoped retry progress sink.
Context-scoped retry progress sink.
wire
Package wire/schema.go - Tool Schema 预处理工具
Package wire/schema.go - Tool Schema 预处理工具
pkg
billcost
Package billcost models a province-banded shipping cost table and provides a single source of truth for two questions: how much does a parcel cost given the table (CalculateShipCost), and is the table internally consistent (Reflect).
Package billcost models a province-banded shipping cost table and provides a single source of truth for two questions: how much does a parcel cost given the table (CalculateShipCost), and is the table internally consistent (Reflect).
bridge
Package bridge 定义 Flyto Agent Platform Layer 的 Bridge 基础设施.
Package bridge 定义 Flyto Agent Platform Layer 的 Bridge 基础设施.
bridge/transport
Package transport 提供 BridgeTransport 的具体实现.
Package transport 提供 BridgeTransport 的具体实现.
capability
Package capability 是引擎模型能力探测的可复用核心.
Package capability 是引擎模型能力探测的可复用核心.
circuitbreaker
Package circuitbreaker provides a classic three-state breaker (Closed / Open / HalfOpen) that consumes success/failure signals and gates a caller's attempts.
Package circuitbreaker provides a classic three-state breaker (Closed / Open / HalfOpen) that consumes success/failure signals and gates a caller's attempts.
config
Package config 的模型角色系统.
Package config 的模型角色系统.
context
Package context - policy.go 定义压缩策略接口和编程场景的默认实现.
Package context - policy.go 定义压缩策略接口和编程场景的默认实现.
context/sections
Package sections 提供引擎层可复用的 PromptBundle Section 库.
Package sections 提供引擎层可复用的 PromptBundle Section 库.
counterfactual
Package counterfactual defines the standardized data structure for reverse-thinking deliverables produced before non-trivial tool calls.
Package counterfactual defines the standardized data structure for reverse-thinking deliverables produced before non-trivial tool calls.
daemon
Package daemon 实现 Flyto Agent Platform 的多会话守护进程管理器.
Package daemon 实现 Flyto Agent Platform 的多会话守护进程管理器.
engine
Package engine implements the Flyto Agent engine: runtime loop, session management, tool dispatch, observability, context management, and the consumer-facing integration surfaces that platform / SaaS / CLI layers attach to.
Package engine implements the Flyto Agent engine: runtime loop, session management, tool dispatch, observability, context management, and the consumer-facing integration surfaces that platform / SaaS / CLI layers attach to.
evolve
Package evolve 实现 Agent 自进化能力.
Package evolve 实现 Agent 自进化能力.
execenv
Package execenv abstracts process execution so tool handlers (Bash, SubAgent fork, plugin sandboxing) can run against a local exec.Cmd in CLI / daemon mode or against a remote sandbox (E2B Firecracker, etc.) in SaaS mode.
Package execenv abstracts process execution so tool handlers (Bash, SubAgent fork, plugin sandboxing) can run against a local exec.Cmd in CLI / daemon mode or against a remote sandbox (E2B Firecracker, etc.) in SaaS mode.
flyto
Package flyto 是 Flyto Agent 引擎的公共契约包.
Package flyto 是 Flyto Agent 引擎的公共契约包.
hooks
Package hooks 的命令执行器.
Package hooks 的命令执行器.
inbox
Package inbox 提供 Agent 间消息传递的邮箱抽象.
Package inbox 提供 Agent 间消息传递的邮箱抽象.
logger
Package logger 实现轻量级结构化日志系统.
Package logger 实现轻量级结构化日志系统.
memory
Package memory 的相关性评分模块.
Package memory 的相关性评分模块.
permission
Package permission 定义权限引擎的接口和实现.
Package permission 定义权限引擎的接口和实现.
plugin
Package plugin 实现插件系统.
Package plugin 实现插件系统.
pricing
Package pricing 从 probe 产出的 capabilities.json 加载模型定价信息.
Package pricing 从 probe 产出的 capabilities.json 加载模型定价信息.
promptkit
Package promptkit defines the three-layer prompt assembly framework for Flyto Agent.
Package promptkit defines the three-layer prompt assembly framework for Flyto Agent.
providers/aliyunasr
Package aliyunasr implements flyto.TranscriptionProvider against Aliyun DashScope's async file-transcription API (录音文件识别, model paraformer-8k-v2) -- the cloud fallback for the self-hosted oMLX ASR box.
Package aliyunasr implements flyto.TranscriptionProvider against Aliyun DashScope's async file-transcription API (录音文件识别, model paraformer-8k-v2) -- the cloud fallback for the self-hosted oMLX ASR box.
providers/anthropic
Package anthropic 实现 Anthropic Messages API 的 ModelProvider.
Package anthropic 实现 Anthropic Messages API 的 ModelProvider.
providers/deepseek
Package deepseek implements a flyto.ModelProvider for DeepSeek's official API.
Package deepseek implements a flyto.ModelProvider for DeepSeek's official API.
providers/gemini
Package gemini 实现 Google Gemini API 的 ModelProvider.
Package gemini 实现 Google Gemini API 的 ModelProvider.
providers/lmstudio
Package lmstudio 实现 LM Studio 本地模型服务的 ModelProvider.
Package lmstudio 实现 LM Studio 本地模型服务的 ModelProvider.
providers/minimax
Package minimax 实现 MiniMax 官方 API 的 ModelProvider.
Package minimax 实现 MiniMax 官方 API 的 ModelProvider.
providers/ollama
Package ollama 实现 Ollama 本地模型服务的 ModelProvider.
Package ollama 实现 Ollama 本地模型服务的 ModelProvider.
providers/openai
Package openai 实现 OpenAI Chat Completions API 的 ModelProvider.
Package openai 实现 OpenAI Chat Completions API 的 ModelProvider.
providers/openrouter
Package openrouter 实现 OpenRouter 聚合网关的 ModelProvider.
Package openrouter 实现 OpenRouter 聚合网关的 ModelProvider.
providers/shared
Package shared 收敛所有 Provider 共用的工具函数.
Package shared 收敛所有 Provider 共用的工具函数.
query
Package query 定义与模型 API 交互的核心数据类型.
Package query 定义与模型 API 交互的核心数据类型.
reflector
Package reflector is the umbrella namespace for the "Reflector" product abstraction: a family of three sibling interfaces -- validator.Validator, evolve.Evaluator, evolve.Reflector -- that each reflect on an artifact and emit, respectively, a commit verdict, a fitness score, or a replay-time side effect.
Package reflector is the umbrella namespace for the "Reflector" product abstraction: a family of three sibling interfaces -- validator.Validator, evolve.Evaluator, evolve.Reflector -- that each reflect on an artifact and emit, respectively, a commit verdict, a fitness score, or a replay-time side effect.
security
Package security provides security primitives: append-only audit logging (AuditSink) and secret detection (SecretGuard).
Package security provides security primitives: append-only audit logging (AuditSink) and secret detection (SecretGuard).
shadowdb
Package shadowdb manages session-scoped shadow tables for Agent multi-round reasoning.
Package shadowdb manages session-scoped shadow tables for Agent multi-round reasoning.
skills/reverse_think
Package reverse_think is the Go-native realization of the ~/.claude/skills/reverse-think/ markdown skill: it sends a reverse-thinking prompt to an Anthropic-compatible endpoint (MiniMax by default) and returns a typed counterfactual.Deliverable.
Package reverse_think is the Go-native realization of the ~/.claude/skills/reverse-think/ markdown skill: it sends a reverse-thinking prompt to an Anthropic-compatible endpoint (MiniMax by default) and returns a typed counterfactual.Deliverable.
staging
Package staging manages the decision-package staging table that sits between an Agent's raw decision output and production commit.
Package staging manages the decision-package staging table that sits between an Agent's raw decision output and production commit.
tasklist
Package tasklist 实现 Agent Teams 的 shared task list 业务层.
Package tasklist 实现 Agent Teams 的 shared task list 业务层.
tools
Package tools 定义工具系统的核心接口和注册表.
Package tools 定义工具系统的核心接口和注册表.
tools/builtin
Package builtin - bash_secret_ctx.go 定义 Bash 工具子进程 secret env 注入的 context key.
Package builtin - bash_secret_ctx.go 定义 Bash 工具子进程 secret env 注入的 context key.
validator
Package validator provides a pluggable contract for verdicting AI- written staging changes.
Package validator provides a pluggable contract for verdicting AI- written staging changes.
websocket
Package websocket 定义通信传输层接口.
Package websocket 定义通信传输层接口.
dead-field-scan command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL