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",
|
"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]]
|
[[package]]
|
||||||
name = "deepsize"
|
name = "deepsize"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
|
|
@ -2114,27 +2135,6 @@ dependencies = [
|
||||||
"syn 3.0.3",
|
"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]]
|
[[package]]
|
||||||
name = "dtoa"
|
name = "dtoa"
|
||||||
version = "1.0.11"
|
version = "1.0.11"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "doubleo7"
|
name = "deep_research"
|
||||||
version = "0.2.0"
|
version = "0.1.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
# Not part of a Cargo workspace — this crate is the whole repo. Declared
|
# 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
|
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
|
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.
|
leaving your machine.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ doubleo7 "trends in AI customer-support chatbots"
|
$ deep_research "trends in AI customer-support chatbots"
|
||||||
🔎 Researching...
|
🔎 Researching...
|
||||||
🧐 Reviewing findings...
|
🧐 Reviewing findings...
|
||||||
✍️ Writing report...
|
✍️ Writing report...
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Case study: hardening an agentic pipeline against real failure
|
# 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
|
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.
|
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
|
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
|
/// gathers and cross-checks web evidence, a reviewer agent gates it, and a
|
||||||
/// writer agent turns approved findings into a structured report.
|
/// writer agent turns approved findings into a structured report.
|
||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
#[command(name = "doubleo7", version, about)]
|
#[command(name = "doubleo7-research", version, about)]
|
||||||
pub(crate) struct Doubleo7 {
|
pub(crate) struct Cli {
|
||||||
/// Research topic to investigate
|
/// Research topic to investigate
|
||||||
pub(crate) topic: Option<String>,
|
pub(crate) topic: Option<String>,
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ mod tests {
|
||||||
impl TempDir {
|
impl TempDir {
|
||||||
fn new(name: &str) -> Self {
|
fn new(name: &str) -> Self {
|
||||||
let path = std::env::temp_dir().join(format!(
|
let path = std::env::temp_dir().join(format!(
|
||||||
"doubleo7-test-{name}-{}-{}",
|
"deep_research-test-{name}-{}-{}",
|
||||||
std::process::id(),
|
std::process::id(),
|
||||||
std::time::SystemTime::now()
|
std::time::SystemTime::now()
|
||||||
.duration_since(std::time::UNIX_EPOCH)
|
.duration_since(std::time::UNIX_EPOCH)
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ mod writer;
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> anyhow::Result<()> {
|
async fn main() -> anyhow::Result<()> {
|
||||||
let cli = cli::Doubleo7::parse();
|
let cli = cli::Cli::parse();
|
||||||
|
|
||||||
let show_progress = match cli.log_level {
|
let show_progress = match cli.log_level {
|
||||||
Some(level) => {
|
Some(level) => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue