惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Engineering at Meta
Engineering at Meta
D
DataBreaches.Net
月光博客
月光博客
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
U
Unit 42
腾讯CDC
爱范儿
爱范儿
J
Java Code Geeks
有赞技术团队
有赞技术团队
Blog — PlanetScale
Blog — PlanetScale
N
Netflix TechBlog - Medium
B
Blog
Stack Overflow Blog
Stack Overflow Blog
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
Microsoft Azure Blog
Microsoft Azure Blog
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

Hacker News - Newest: "AI"

AI can't read an investor deck AI as an attorney? Student uses ChatGPT, Gemini to sue UW over alleged racial discrimination Hacking MCP Servers in AI Systems – The Rug Pull: Tool Changes After Approval GitHub - MeepCastana/KubeezCut: Free Web based video editor Can AI judge journalism? A Thiel-backed startup says yes, even if it risks chilling whistleblowers Coming soon: 10 Things That Matter in AI Right Now DARPA built an AI to fact-check enemy weapons claims What explains heterogeneity in AI adoption? When AI Meets Muscle: Context-Aware Electrical Stimulation Promises a New Way to Guide Human Movements - Department of Computer Science AI Changed How We Build. It Did Not Change What Matters. Linux rules on using AI-generated code - Copilot is OK, but humans must take 'full responsibility for the… Meta spins up AI version of Mark Zuckerberg to engage with employees Code Mode: Let Your AI Write Programs, Not Just Call Tools | TanStack Blog GitHub - Delavalom/graft: Go framework for building AI agents. Type-safe tools, multi-provider (OpenAI, Anthropic, Gemini, Bedrock), zero vendor SDKs. India's TCS tops estimates, says new AI models did not dent services demand Gen Z's fading AI hype Strong feeling: we are in a folded AI reality GitHub - machinarii/total-recall-catalog: A reference catalog of latest knowledge retrieval, memory & RAG systems GitHub - mensfeld/code-on-incus: Give each AI agent its own isolated machine with root, Docker, and systemd. Active defense detects and stops threats automatically.. Quantization, LoRA, and the 8% Problem: Benchmarking Local LLMs for Production AI Iran war: We spoke to the man making Lego-style AI videos that experts say are powerful propaganda Powell, Bessent discussed Anthropic's Mythos AI cyber threat with major U.S. banks GitHub - immartian/bellamem: Persistent belief-graph memory for AI agents. Retrieves decisive context by importance — not recency, not RAG, not /compact. recursive-mode: The Repo-Native Operating System for AI Engineering After the attack on Sam Altman's home, will AI CEO's go on the offensive? The biggest advance in AI since the LLM Opus 4.6 vs GPT 5.4 One Prompt Unity World Generation Test “AI polls” are fake polls Client Challenge Can AI be a 'child of God'? Inside Anthropic's meeting with Christian leaders
GitHub - ZM-BAD/DAG-chat: Chat applications that use DAG ...
zm_bad · 2026-04-27 · via Hacker News - Newest: "AI"

DAG-chat Logo

Conversations, Reimagined as Graphs

中文文档 License: MIT

DAG-chat is a web-based LLM conversation application that organizes dialogues as Directed Acyclic Graphs — enabling branching, merging, and non-linear exploration of ideas that linear chat interfaces simply cannot express.

中文文档 / Chinese Documentation


Showcase

DAG-chat Demo

Why DAG-chat?

Traditional chat applications force conversations into a single, linear thread. Once you ask a question, you're locked into that path. DAG-chat breaks that limitation.

Feature Linear Chat DAG-chat
Branch from any response
Merge multiple responses
Explore alternative paths
Multi-model comparison
Non-destructive editing
Instant path switching

Features

  • DAG Conversation Structure — Branch and merge conversations freely. Every response is a node; every question can spawn new paths or converge existing ones.
  • Multi-LLM Support — Seamlessly switch between GLM, Kimi, Qwen, DeepSeek, MiniMax, and more through a unified interface.
  • Local LLM via Ollama — Run models locally with zero API costs. Automatically detects installed Ollama models.
  • Deep Thinking Mode — Toggle deep reasoning with expandable/collapsible thinking process display.
  • Streaming Responses — Real-time streaming of LLM responses with interactive rendering.
  • Markdown & Code — Rich rendering with syntax highlighting, LaTeX math, GFM tables, and emoji support.
  • Internationalization — Full i18n support with English and Chinese.

Architecture

graph LR
    subgraph Frontend ["Frontend — React + TypeScript + Vite"]
        UI[Chat UI & DAG Renderer]
        i18n[i18n — EN / ZH]
    end
    subgraph Backend ["Backend — FastAPI + Python 3.14"]
        API[REST API]
        Factory[Model Factory]
        DAGLogic[DAG Builder & Path Engine]
    end
    subgraph LLM ["LLM Providers"]
        GLM & Kimi & Qwen & DS[DeepSeek] & MM[MiniMax] & Ollama
    end
    subgraph Storage ["Databases"]
        MongoDB[(MongoDB — Messages & DAG)]
        MySQL[(MySQL — Dialogue Metadata)]
    end

    UI --> API
    API --> Factory --> GLM & Kimi & Qwen & DS & MM & Ollama
    API --> DAGLogic --> MongoDB
    API --> MySQL
Loading

How It Works

Every message in DAG-chat is a node with bidirectional references, forming a Directed Acyclic Graph:

          ┌─────────┐
          │  Root Q │ (first user question)
          └────┬────┘
               │
          ┌────▼────┐
          │  Ans A  │ (assistant response)
          └────┬────┘
          ┌────┴────┬─────────┐
          │         │         │
     ┌────▼───┐ ┌───▼───┐ ┌───▼───┐
     │  Q B1  │ │ Q B2  │ │ Q B3  │  ← Branching
     └────┬───┘ └───┬───┘ └──┬────┘
          │         │        │
     ┌────▼───┐ ┌───▼───┐    │
     │ Ans C  │ │ Ans D │    │
     └────┬───┘ └───┬───┘    │
          │         │        │
          └────┬────┘        │
          ┌────▼────┐        │
          │  Q E    │◄───────┘  ← Merging
          └────┬────┘
               │
          ┌────▼────┐
          │  Ans F  │
          └─────────┘
  • Branching — One assistant response can lead to multiple user follow-ups. Click a tab to switch between parallel branches.
  • Merging — One user question can reference multiple assistant responses as parents, converging different exploration paths.
  • Non-destructive — Switching paths never deletes anything. Every branch and merge is preserved and navigable.

Usage

Branching — Explore Different Directions

Not satisfied with one answer? Want to try a different angle?

  1. Hover over any user message — a branch icon appears on the left
  2. Click it — the assistant message above it is quoted in your input box
  3. Type your new question and send
  4. A tab bar appears, letting you switch between all branches

Branch icon on hover

You: "Explain quicksort"
  → AI: [explanation A]        ← original path
  → You: "Use Python instead"  ← branched from the same AI reply
  → AI: [explanation B]        ← new branch

Merging — Combine Multiple Insights

Want to cross-reference answers from different branches?

  1. Hover over any assistant message — a merge icon appears on the right
  2. Click it — the message is quoted in your input box
  3. Click more merge icons to quote additional assistant messages
  4. Type your follow-up question and send — all quoted messages become the context

Merge icon on hover

AI: [explanation A]  ──┐
AI: [explanation B]  ──┼── You: "Compare A and B, which is better?"
AI: [explanation C]        AI: [comparison]

Quick Tips

  • Switch paths — Click tabs above the conversation to jump between branches or merge sources
  • Non-destructive — Branching and merging never delete anything. All paths are preserved
  • Multi-model — Switch models mid-conversation to compare outputs from different LLMs

Quick Start

Prerequisites

  • Python >= 3.14
  • Node.js >= 24
  • Docker >= 29 (optional, for containerized deployment)
  • Docker Compose >= v5 (optional, for containerized deployment)
  • MongoDB on localhost:27017 (only for local dev without Docker)
  • MySQL on localhost:3306 (only for local dev without Docker)

Database Setup

Option A: Docker (recommended)

All dependencies (MongoDB, MySQL, backend, frontend) start with one command:

cp .env.example .env   # edit API keys
docker compose up --build

Option B: Local setup

  1. MySQL — Create the database and table:

    mysql -u root -p
    CREATE DATABASE IF NOT EXISTS dag_chat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    SOURCE sql/t_conversations.sql;
  2. MongoDB — Ensure MongoDB is running on localhost:27017. The dag_chat database will be created automatically on first use.

Configuration

Copy the example environment file and fill in your API keys:

cp .env.example .env

Edit .env with your LLM API keys (GLM, Kimi, Qwen, DeepSeek, MiniMax) and MySQL password.

Don't have API keys? No problem — see Using Ollama (Free, No API Keys) below.

Launch

git clone https://github.com/ZM-BAD/DAG-chat.git
cd DAG-chat

# Start both frontend and backend
./start.sh --all
Manual start (optional)

Backend:

source ../.venv/bin/activate
cd backend && pip install -r requirements.txt
python3 run_api.py

Frontend:

cd frontend && npm install --legacy-peer-deps
npm run dev

Stop all services: ./start.sh --stop

Using Ollama (Free, No API Keys)

DAG-chat supports Ollama for running LLMs locally — completely free, no API keys required. This is the easiest way to get started.

1. Install Ollama

# macOS
brew install ollama

# Linux
curl -fsSL https://ollama.com/install.sh | sh

# Or download from https://ollama.com/download

2. Pull a Model

# Recommended for Chinese & English (8B, ~5GB)
ollama pull qwen3:8b

# Other good options:
ollama pull llama3.2          # English-focused, smaller
ollama pull deepseek-r1:8b    # Supports reasoning
ollama pull glm4:9b           # Chinese-focused

3. Start Ollama

ollama serve

Ollama runs on http://localhost:11434 by default. DAG-chat will automatically detect it and list your installed models in the model selector.

4. Launch DAG-chat

./start.sh --all

That's it — no API keys needed. Select any Ollama - ... model from the dropdown and start chatting.

Configure Default Model (Optional)

If you want to set a default Ollama model, add to .env:

OLLAMA_MODEL=qwen3:8b

Requirements

  • RAM: 8GB+ for 7-8B models, 16GB+ for 13B models
  • GPU: Optional but significantly faster (CUDA, Metal, or Vulkan)
  • Disk: 4-10GB per model

License

This project is licensed under the MIT License.

Copyright (c) 2025-present 周铭 (ZM-BAD)