Compare commits
No commits in common. "8f4af514a365018b8bc7e7acf386f33b197c2949" and "b5f12a500cedae33ff37c79b95698d919c53c419" have entirely different histories.
8f4af514a3
...
b5f12a500c
7 changed files with 30 additions and 30 deletions
42
Cargo.lock
generated
42
Cargo.lock
generated
|
|
@ -1948,6 +1948,27 @@ dependencies = [
|
|||
"sqlparser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "deep_research"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
"clap",
|
||||
"futures",
|
||||
"indicatif 0.18.6",
|
||||
"reqwest 0.13.4",
|
||||
"rig",
|
||||
"schemars 1.2.2",
|
||||
"scraper",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"text-splitter",
|
||||
"tokio",
|
||||
"tracing",
|
||||
"tracing-subscriber",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "deepsize"
|
||||
version = "0.2.0"
|
||||
|
|
@ -2114,27 +2135,6 @@ dependencies = [
|
|||
"syn 3.0.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "doubleo7"
|
||||
version = "0.2.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
"clap",
|
||||
"futures",
|
||||
"indicatif 0.18.6",
|
||||
"reqwest 0.13.4",
|
||||
"rig",
|
||||
"schemars 1.2.2",
|
||||
"scraper",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"text-splitter",
|
||||
"tokio",
|
||||
"tracing",
|
||||
"tracing-subscriber",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dtoa"
|
||||
version = "1.0.11"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "doubleo7"
|
||||
version = "0.2.0"
|
||||
name = "deep_research"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
# Not part of a Cargo workspace — this crate is the whole repo. Declared
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# doubleo7
|
||||
# deep_research
|
||||
|
||||
A local-first, multi-agent deep-research CLI: give it a topic, it searches
|
||||
the web, cross-checks what it finds, and writes up a cited report — entirely
|
||||
|
|
@ -6,7 +6,7 @@ on infrastructure you control, with no cloud LLM API key and no query ever
|
|||
leaving your machine.
|
||||
|
||||
```
|
||||
$ doubleo7 "trends in AI customer-support chatbots"
|
||||
$ deep_research "trends in AI customer-support chatbots"
|
||||
🔎 Researching...
|
||||
🧐 Reviewing findings...
|
||||
✍️ Writing report...
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Case study: hardening an agentic pipeline against real failure
|
||||
|
||||
This is a walkthrough of how `doubleo7`'s multi-agent pipeline went
|
||||
This is a walkthrough of how `deep_research`'s multi-agent pipeline went
|
||||
from "works in the happy path" to actually resilient — driven by two real
|
||||
failures it hit in normal use, not by imagining edge cases in the abstract.
|
||||
The throughline: root-cause failures instead of papering over them, and
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ pub(crate) const DEFAULT_TOPIC: &str =
|
|||
/// gathers and cross-checks web evidence, a reviewer agent gates it, and a
|
||||
/// writer agent turns approved findings into a structured report.
|
||||
#[derive(Parser)]
|
||||
#[command(name = "doubleo7", version, about)]
|
||||
pub(crate) struct Doubleo7 {
|
||||
#[command(name = "doubleo7-research", version, about)]
|
||||
pub(crate) struct Cli {
|
||||
/// Research topic to investigate
|
||||
pub(crate) topic: Option<String>,
|
||||
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ mod tests {
|
|||
impl TempDir {
|
||||
fn new(name: &str) -> Self {
|
||||
let path = std::env::temp_dir().join(format!(
|
||||
"doubleo7-test-{name}-{}-{}",
|
||||
"deep_research-test-{name}-{}-{}",
|
||||
std::process::id(),
|
||||
std::time::SystemTime::now()
|
||||
.duration_since(std::time::UNIX_EPOCH)
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ mod writer;
|
|||
|
||||
#[tokio::main]
|
||||
async fn main() -> anyhow::Result<()> {
|
||||
let cli = cli::Doubleo7::parse();
|
||||
let cli = cli::Cli::parse();
|
||||
|
||||
let show_progress = match cli.log_level {
|
||||
Some(level) => {
|
||||
|
|
|
|||
Loading…
Reference in a new issue