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

View file

@ -1,6 +1,6 @@
[package]
name = "deep_research"
version = "0.1.0"
name = "doubleo7"
version = "0.2.0"
edition = "2024"
# 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
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.
```
$ deep_research "trends in AI customer-support chatbots"
$ doubleo7 "trends in AI customer-support chatbots"
🔎 Researching...
🧐 Reviewing findings...
✍️ Writing report...

View file

@ -1,6 +1,6 @@
# 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
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

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
/// writer agent turns approved findings into a structured report.
#[derive(Parser)]
#[command(name = "doubleo7-research", version, about)]
pub(crate) struct Cli {
#[command(name = "doubleo7", version, about)]
pub(crate) struct Doubleo7 {
/// Research topic to investigate
pub(crate) topic: Option<String>,

View file

@ -92,7 +92,7 @@ mod tests {
impl TempDir {
fn new(name: &str) -> Self {
let path = std::env::temp_dir().join(format!(
"deep_research-test-{name}-{}-{}",
"doubleo7-test-{name}-{}-{}",
std::process::id(),
std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)

View file

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