Ripgrep 上下文构建器

通过 session.grep 和 session.glob 进行快速代码搜索,可以收集相关的文件和匹配行, 然后将它们注入到提示中 —— 这是在 agent 开始推理之前的一个轻量级检索步骤。当你希望将 agent 限定在大型代码库的某个特定切片,而不是让它从头开始探索时,可以使用这种方式。

Rust
Node.js
Python
Go
Rust
use a3s_code_core::Agent;
#[tokio::main]
async fn main() -> a3s_code_core::Result<()> {
let agent = Agent::new("agent.acl").await?;
let session = agent.session_builder(".").build().await?;
let files = session.glob("src/**/*.rs").await?;
let hits = session.grep("create_session").await?;
let context = format!(
"范围内的文件:\n{}\n\n“create_session”的匹配项:\n{}",
files.join("\n"),
hits
);
let answer = session
.send(
&format!("只使用以下上下文,解释 create_session 如何连接:\n\n{context}"),
None,
)
.await?;
println!("{}", answer.text);
session.close().await;
agent.close().await;
Ok(())
}

glob 返回匹配的文件路径列表,而 grep 则以单个字符串的形式返回原始的 ripgrep 输出。 两者都在本地运行并能快速返回,因此你可以在花费一次模型调用之前,链式执行多次搜索来低成本地 组装上下文。当你需要文件的完整内容而不仅仅是匹配行时,可以将它们与 session.readFile 搭配使用。