Aster文档
搜索 Aster 文档
ESC
产品
版本

输入关键词开始搜索。

    文档目录

    ASTER SEARCH / 02

    Search 检索接入

    CLI、Rust 级联、显式来源、ACL 和扩展接口。

    CLI 和嵌入式 Rust API 使用同一个默认级联计划。调用方可以选择默认策略,也可以明确指定全部来源。

    运行一次检索

    从 Aster 仓库根目录构建:

    cargo build --locked -p aster-search
    ./target/debug/aster-search "Rust async runtime guidance" --format json --limit 10
    

    默认 Headless 层使用 Moli。只有该层需要运行时,才安装 Moli。可执行文件不在 PATH 时,设置 ASTER_MOLI_EXECUTABLE。

    显式来源列表不会被默认计划扩展:

    ./target/debug/aster-search "Rust async runtime guidance" \
      --engines anysearch,tavily \
      --format json \
      --limit 10
    

    每个选中来源接收同一个 SearchQuery。输出同时保留结果和降级路径。

    使用 Rust 默认级联

    use std::time::Duration;
    use aster_search::product::{self, HeadlessBrowser};
    use aster_search::{EngineTierPlan, SearchQuery};
    
    #[tokio::main]
    async fn main() -> aster_search::Result<()> {
        let plan = EngineTierPlan::builtin_default();
        let outcome = product::execute_cascade(
            &plan,
            product::CascadeRequest {
                query: SearchQuery::new("rust programming"),
                limit: 10,
                timeout: Duration::from_secs(product::DEFAULT_TIMEOUT_SECONDS),
                proxy: None,
                config: None,
                browser: HeadlessBrowser::default(),
                browser_max_retries: 0,
            },
            product::CascadeControls::default(),
        )
        .await?;
    
        println!("{}", outcome.receipt.retrieval_requirements_met);
        for result in outcome.results.items() {
            println!("{:.3} {} {:?}", result.score, result.url, result.engines);
        }
        Ok(())
    }
    

    product::execute_cascade 是 CLI 同策略入口。需要自有 Engine、权重和可靠性控制时,使用调用方拥有的 Search。

    只需要 HTTP 和原生 API 时,使用 default-features = false,不构建浏览器栈。

    来源与计费

    来源选择边界
    来源类型示例选择规则
    默认可选 APIAnySearch、Tavily可以无密钥运行,认证为可选项
    默认 HTTP / RSSWikipedia、DuckDuckGo、Bing RSS不需要私有网页索引
    显式浏览器Google、Baidu必须明确选择并准备浏览器后端
    计费 APITinyFish、Bocha、Aliyun、Tencent、Firecrawl、Doubao、DeepSeek必须显式选择并提供对应密钥

    原生 API 请求不继承抓取代理。--proxy 只作用于支持的抓取传输。

    ACL 配置

    --config 是父参数:

    ./target/debug/aster-search --config search.acl engines
    ./target/debug/aster-search "query" --config search.acl --format json
    

    以下示例显式请求 Tavily 的答案、图片和用量:

    timeout {
      value = 20
    }
    
    provider "tavily" {
      api_key             = env("TAVILY_API_KEY")
      max_results         = 10
      include_raw_content = "markdown"
      include_answer      = "advanced"
      include_images      = true
      include_usage       = true
    }
    

    凭据使用 env("VARIABLE"),不要写入 Endpoint URL。提供方 wire 字段名不能直接作为 ACL 属性。公共结果上限使用 max_results。

    enabled = false 会记录 engine_disabled,不会访问网络。

    扩展新来源

    普通网页来源实现 Engine。具有能力报告和富输出的原生提供方实现 SearchProvider,再通过 ProviderEngine 接入。

    答案、图片、全文、用量和报告保持独立字段,不应改写成合成网页结果。

    实现依据