Compare commits

...

4 commits

Author SHA1 Message Date
Austin Schaefer
8f4af514a3 Merge master (rebrand to doubleo7) into this branch
All checks were successful
CI / test (pull_request) Successful in 3m38s
Resolves the Cargo.lock conflict by regenerating it, and picks up
master's rename (deep_research -> doubleo7 crate/binary name, Cli ->
Doubleo7 struct) cleanly through everything this branch added
(--doc/documents.rs/retrieval.rs). Also renamed a leftover
"deep_research-test-" temp-dir prefix in documents.rs's tests for
consistency with the rebrand.
2026-08-18 16:19:39 +02:00
a30c18ac44 Merge pull request 'chore: rebrand project' (#11) from chore/rebrand into master
All checks were successful
CI / test (push) Successful in 3m9s
Reviewed-on: #11
2026-08-18 14:17:23 +00:00
Austin Schaefer
5bb4ed165d chore: rebrand project
All checks were successful
CI / test (pull_request) Successful in 3m11s
2026-08-18 14:26:50 +02:00
85d0902e9f Merge pull request 'Add CI/CD, README, and a case study for deep_research' (#9) from worktree-deep-research-max-turns-report into master
All checks were successful
CI / test (push) Successful in 11m27s
Reviewed-on: #9
2026-08-18 12:12:32 +00:00
7 changed files with 30 additions and 30 deletions

42
Cargo.lock generated
View file

@ -1948,27 +1948,6 @@ 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"
@ -2135,6 +2114,27 @@ 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"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "deep_research" name = "doubleo7"
version = "0.1.0" version = "0.2.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

View file

@ -1,4 +1,4 @@
# deep_research # doubleo7
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.
``` ```
$ deep_research "trends in AI customer-support chatbots" $ doubleo7 "trends in AI customer-support chatbots"
🔎 Researching... 🔎 Researching...
🧐 Reviewing findings... 🧐 Reviewing findings...
✍️ Writing report... ✍️ Writing report...

View file

@ -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 `deep_research`'s multi-agent pipeline went This is a walkthrough of how `doubleo7`'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

View file

@ -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-research", version, about)] #[command(name = "doubleo7", version, about)]
pub(crate) struct Cli { pub(crate) struct Doubleo7 {
/// Research topic to investigate /// Research topic to investigate
pub(crate) topic: Option<String>, pub(crate) topic: Option<String>,

View file

@ -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!(
"deep_research-test-{name}-{}-{}", "doubleo7-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)

View file

@ -17,7 +17,7 @@ mod writer;
#[tokio::main] #[tokio::main]
async fn main() -> anyhow::Result<()> { async fn main() -> anyhow::Result<()> {
let cli = cli::Cli::parse(); let cli = cli::Doubleo7::parse();
let show_progress = match cli.log_level { let show_progress = match cli.log_level {
Some(level) => { Some(level) => {