[package] name = "agcore" version = "0.3.2" edition = "2024" [features] default = ["full"] # === 模块级 features === document = [] llm-types = [] prompt = ["llm-types"] llm = ["llm-types", "tokio", "async-stream", "futures-core", "futures-util", "tokio-stream"] tools = ["llm-types", "futures", "tokio-util", "tokio"] tools-mcp = ["tools", "reqwest"] # memory 模块依赖 llm(conversation/vector_store 使用 compact/embedding)、tokio(knowledge.rs 使用 Mutex)、time(types.rs 使用 OffsetDateTime) memory = ["document", "llm", "tokio", "time"] memory-sqlite = ["memory", "rusqlite", "time"] agent = ["llm", "tools", "memory", "futures-util"] engine = ["agent"] # === Provider features === # Provider features — openai/anthropic/openai-response 额外依赖 bytes(流式解析)和 futures-util(Stream 组合) provider-openai = ["llm", "reqwest", "bytes", "futures-util"] provider-anthropic = ["llm", "reqwest", "bytes", "futures-util"] # OpenAI Response API(POST /responses)—— 与 Chat Completions 协议独立,独立 feature provider-openai-response = ["llm", "reqwest", "bytes", "futures-util"] # deepseek/qwen 使用 openai_compat 适配层,不需要 bytes 和 futures-util provider-deepseek = ["llm", "reqwest"] provider-qwen = ["llm", "reqwest"] provider-ollama = ["llm", "reqwest"] # === 工具 features === tracing-init = ["tracing-subscriber"] # === 快捷组合 === full = [ "document", "llm-types", "prompt", "llm", "tools", "tools-mcp", "memory", "memory-sqlite", "agent", "engine", "provider-openai", "provider-anthropic", "provider-openai-response", "provider-deepseek", "provider-qwen", "provider-ollama", "tracing-init", ] light = ["llm", "provider-openai", "tools", "tools-mcp", "memory", "agent", "engine", "prompt", "document"] chat = ["agent", "provider-openai"] multi = ["engine", "provider-openai"] [dependencies] # 始终编译的轻量依赖(5 个,不参与门控) serde = { version = "1", features = ["derive"] } serde_json = "1" thiserror = "2" async-trait = "0.1" tracing = "0.1" # 12 个重型依赖(全部 optional) tokio = { version = "1", features = ["rt", "rt-multi-thread", "sync", "time", "macros", "process", "io-util"], optional = true } reqwest = { version = "0.12", features = ["json", "stream"], optional = true } rusqlite = { version = "0.32", features = ["bundled"], optional = true } tracing-subscriber = { version = "0.3", features = ["env-filter"], optional = true } tokio-stream = { version = "0.1", optional = true } futures = { version = "0.3", optional = true } futures-util = { version = "0.3", optional = true } futures-core = { version = "0.3", optional = true } bytes = { version = "1", optional = true } async-stream = { version = "0.3", optional = true } tokio-util = { version = "0.7", features = ["rt"], optional = true } time = { version = "0.3", features = ["serde", "parsing", "formatting", "macros"], optional = true } [dev-dependencies] tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros"] } dotenvy = "0.15.7" wiremock = "0.6" temp-env = "0.3" tempfile = "3" # === Examples required-features === # 每个 example 声明最小 feature 集合,`cargo test --features "full"` 时全部编译; # 其他组合下不兼容的 example 自动跳过。 [[example]] name = "prompt_composer" required-features = ["prompt", "llm"] [[example]] name = "custom_tool" required-features = ["tools", "llm"] [[example]] name = "conversation_memory_demo" required-features = ["memory"] [[example]] name = "knowledge_graph_demo" required-features = ["memory"] [[example]] name = "knowledge_search_demo" required-features = ["memory"] [[example]] name = "agent_session_demo" required-features = ["agent"] [[example]] name = "task_agent_demo" required-features = ["agent"] [[example]] name = "context_slot_demo" required-features = ["agent"] [[example]] name = "quick_start" required-features = ["agent"] [[example]] name = "simple_visit" required-features = ["llm", "provider-openai", "tracing-init"] [[example]] name = "streaming_events_demo" required-features = ["llm", "provider-openai"] [[example]] name = "agent_switch_demo" required-features = ["engine"] [[example]] name = "bridge_keys_demo" required-features = ["engine"] [[example]] name = "dispatch_stream_demo" required-features = ["engine"] [[example]] name = "engine_demo" required-features = ["engine"] [[example]] name = "sub_agent_dispatch_demo" required-features = ["engine"] [[example]] name = "document_demo" required-features = ["memory", "tracing-init"] [[example]] name = "end_to_end" required-features = ["agent", "memory-sqlite", "provider-openai"] [[example]] name = "response_api_demo" required-features = ["llm", "provider-openai-response"]