# edgetype/better-deepseek architecture

> Architecture diagram of the GitHub repository edgetype/better-deepseek, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/edgetype/better-deepseek
- Repository: https://github.com/edgetype/better-deepseek
- Video tour (about a minute): https://gitdiagram.com/edgetype/better-deepseek/video

## Overview

Better DeepSeek is a browser extension (with an Android WebView host) that augments DeepSeek chat. The main workflow is user interaction in the injected chat UI, request interception to add configured prompt, memory, and skills, then parsing responses into interactive tools, files, and follow-up actions. Separate branches cover project/codebase work, MCP tools, voice, and API exploration. Paths for major unsampled capabilities use their existing enclosing directories; wiring not established by the excerpts is omitted.

Main entry points: [`src/content/ui/App.svelte`](https://github.com/edgetype/better-deepseek/blob/main/src/content/ui/App.svelte) (Extension UI), [`src/content/files`](https://github.com/edgetype/better-deepseek/tree/main/src/content/files) (File and web readers), [`src/content/parser/index.js`](https://github.com/edgetype/better-deepseek/blob/main/src/content/parser/index.js) (Tag parser), [`src/content/message-processor.svelte.js`](https://github.com/edgetype/better-deepseek/blob/main/src/content/message-processor.svelte.js) (Message processor)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_integration["Chat Integration"]
  node_content["Content entry<br/>[index.js]"]
  node_ui["Extension UI<br/>[App.svelte]"]
  node_state["App state<br/>[state.js]"]
  node_bridge["Page bridge<br/>[bridge.js]"]
  node_injected["Request interception<br/>[index.js]"]
  node_drawer["Settings drawer<br/>[Drawer.svelte]"]
end

subgraph group_features["Conversation Features"]
  node_projects["Project manager<br/>[project-manager.js]"]
  node_projectui["Project manager UI"]
  node_deepcode["DeepCode mode<br/>[deep-code.js]"]
  node_files["File and web readers"]
  node_rag["Code retrieval<br/>[rag-engine.js]"]
  node_mcp["MCP dispatch<br/>[index.js]"]
  node_queue["Prompt queue"]
  node_voice["Voice support<br/>[vad-processor.js]"]
  node_api["API playground"]
end

subgraph group_tools["Tools and Output"]
  node_processor["Message processor"]
  node_parser["Tag parser<br/>[index.js]"]
  node_sandbox["Document sandbox<br/>[index.js]"]
  node_output["Rendered tool output"]
end

subgraph group_platform["Platform Services"]
  node_storage[("Settings storage<br/>[storage.js]")]
  node_background["Background services<br/>[index.js]"]
  node_android["Android host<br/>[MainActivity.kt]"]
end

node_user(("Chat user"))
node_deepseek["DeepSeek chat"]
node_mcpservice["MCP servers"]
node_websites["Web and GitHub"]

node_user -->|"enters prompt"| node_deepseek
node_content -->|"mounts UI"| node_ui
node_ui -->|"opens settings"| node_drawer
node_drawer -->|"edits configuration"| node_state
node_storage -->|"loads settings"| node_state
node_storage -->|"pushes config"| node_bridge
node_bridge -->|"sends config"| node_injected
node_injected -->|"patches requests"| node_deepseek
node_deepseek -->|"delivers responses"| node_processor
node_processor -->|"parses tool tags"| node_parser
node_parser -->|"renders results"| node_output
node_projectui -->|"manages projects"| node_projects
node_projects -->|"updates project state"| node_state
node_deepcode -->|"requests inspection"| node_files
node_files -->|"provides files"| node_rag
node_files -.->|"fetches content"| node_websites
node_background -->|"dispatches tools"| node_mcp
node_mcp -.->|"calls server"| node_mcpservice
node_queue -->|"checks generation"| node_processor
node_queue -->|"sends queued prompt"| node_deepseek
node_voice -->|"supports dictation"| node_ui
node_ui -->|"opens playground"| node_api
node_parser -.->|"requests generation"| node_sandbox
node_sandbox -->|"returns files"| node_output
node_android -->|"hosts extension"| node_ui

click node_content "https://github.com/edgetype/better-deepseek/blob/main/src/content/index.js"
click node_ui "https://github.com/edgetype/better-deepseek/blob/main/src/content/ui/App.svelte"
click node_state "https://github.com/edgetype/better-deepseek/blob/main/src/content/state.js"
click node_storage "https://github.com/edgetype/better-deepseek/blob/main/src/content/storage.js"
click node_bridge "https://github.com/edgetype/better-deepseek/blob/main/src/content/bridge.js"
click node_injected "https://github.com/edgetype/better-deepseek/blob/main/src/injected/index.js"
click node_processor "https://github.com/edgetype/better-deepseek/blob/main/src/content/message-processor.svelte.js"
click node_parser "https://github.com/edgetype/better-deepseek/blob/main/src/content/parser/index.js"
click node_drawer "https://github.com/edgetype/better-deepseek/blob/main/src/content/ui/Drawer.svelte"
click node_projects "https://github.com/edgetype/better-deepseek/blob/main/src/content/project-manager.js"
click node_projectui "https://github.com/edgetype/better-deepseek/blob/main/src/content/ui/ProjectsManager.svelte"
click node_deepcode "https://github.com/edgetype/better-deepseek/blob/main/src/content/deep-code.js"
click node_files "https://github.com/edgetype/better-deepseek/tree/main/src/content/files"
click node_rag "https://github.com/edgetype/better-deepseek/blob/main/src/lib/rag-engine.js"
click node_mcp "https://github.com/edgetype/better-deepseek/blob/main/src/background/index.js"
click node_background "https://github.com/edgetype/better-deepseek/blob/main/src/background/index.js"
click node_queue "https://github.com/edgetype/better-deepseek/blob/main/src/content/queue-manager.svelte.js"
click node_voice "https://github.com/edgetype/better-deepseek/blob/main/src/content/vad-processor.js"
click node_api "https://github.com/edgetype/better-deepseek/blob/main/src/content/api-playground/ApiPlayground.svelte"
click node_sandbox "https://github.com/edgetype/better-deepseek/blob/main/src/sandbox/index.js"
click node_output "https://github.com/edgetype/better-deepseek/tree/main/src/content/ui"
click node_android "https://github.com/edgetype/better-deepseek/blob/main/android/app/src/main/java/com/betterdeepseek/app/MainActivity.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_content,node_ui,node_state,node_bridge,node_injected,node_drawer,node_user toneBlue
class node_projects,node_projectui,node_deepcode,node_files,node_rag,node_mcp,node_queue,node_voice,node_api toneAmber
class node_processor,node_parser,node_sandbox,node_output,node_mcpservice toneMint
class node_storage,node_background,node_android toneRose
class node_deepseek,node_websites toneIndigo
```

## Components

### Chat Integration

- [Content entry](https://github.com/edgetype/better-deepseek/blob/main/src/content/index.js): `src/content/index.js`
- [Extension UI](https://github.com/edgetype/better-deepseek/blob/main/src/content/ui/App.svelte): `src/content/ui/App.svelte`
- [App state](https://github.com/edgetype/better-deepseek/blob/main/src/content/state.js): `src/content/state.js`
- [Page bridge](https://github.com/edgetype/better-deepseek/blob/main/src/content/bridge.js): `src/content/bridge.js`
- [Request interception](https://github.com/edgetype/better-deepseek/blob/main/src/injected/index.js): `src/injected/index.js`
- [Settings drawer](https://github.com/edgetype/better-deepseek/blob/main/src/content/ui/Drawer.svelte): `src/content/ui/Drawer.svelte`

### Conversation Features

- [Project manager](https://github.com/edgetype/better-deepseek/blob/main/src/content/project-manager.js): `src/content/project-manager.js`
- [Project manager UI](https://github.com/edgetype/better-deepseek/blob/main/src/content/ui/ProjectsManager.svelte): `src/content/ui/ProjectsManager.svelte`
- [DeepCode mode](https://github.com/edgetype/better-deepseek/blob/main/src/content/deep-code.js): `src/content/deep-code.js`
- [File and web readers](https://github.com/edgetype/better-deepseek/tree/main/src/content/files): `src/content/files`
- [Code retrieval](https://github.com/edgetype/better-deepseek/blob/main/src/lib/rag-engine.js): `src/lib/rag-engine.js`
- [MCP dispatch](https://github.com/edgetype/better-deepseek/blob/main/src/background/index.js): `src/background/index.js`
- [Prompt queue](https://github.com/edgetype/better-deepseek/blob/main/src/content/queue-manager.svelte.js): `src/content/queue-manager.svelte.js`
- [Voice support](https://github.com/edgetype/better-deepseek/blob/main/src/content/vad-processor.js): `src/content/vad-processor.js`
- [API playground](https://github.com/edgetype/better-deepseek/blob/main/src/content/api-playground/ApiPlayground.svelte): `src/content/api-playground/ApiPlayground.svelte`

### Tools and Output

- [Message processor](https://github.com/edgetype/better-deepseek/blob/main/src/content/message-processor.svelte.js): `src/content/message-processor.svelte.js`
- [Tag parser](https://github.com/edgetype/better-deepseek/blob/main/src/content/parser/index.js): `src/content/parser/index.js`
- [Document sandbox](https://github.com/edgetype/better-deepseek/blob/main/src/sandbox/index.js): `src/sandbox/index.js`
- [Rendered tool output](https://github.com/edgetype/better-deepseek/tree/main/src/content/ui): `src/content/ui`

### Platform Services

- [Settings storage](https://github.com/edgetype/better-deepseek/blob/main/src/content/storage.js): `src/content/storage.js`
- [Background services](https://github.com/edgetype/better-deepseek/blob/main/src/background/index.js): `src/background/index.js`
- [Android host](https://github.com/edgetype/better-deepseek/blob/main/android/app/src/main/java/com/betterdeepseek/app/MainActivity.kt): `android/app/src/main/java/com/betterdeepseek/app/MainActivity.kt`

### Other components

- **Chat user**
- **DeepSeek chat**
- **MCP servers**
- **Web and GitHub**

## Connections

- Chat user → DeepSeek chat: enters prompt
- Content entry → Extension UI: mounts UI
- Extension UI → Settings drawer: opens settings
- Settings drawer → App state: edits configuration
- Settings storage → App state: loads settings
- Settings storage → Page bridge: pushes config
- Page bridge → Request interception: sends config
- Request interception → DeepSeek chat: patches requests
- DeepSeek chat → Message processor: delivers responses
- Message processor → Tag parser: parses tool tags
- Tag parser → Rendered tool output: renders results
- Project manager UI → Project manager: manages projects
- Project manager → App state: updates project state
- DeepCode mode → File and web readers: requests inspection
- File and web readers → Code retrieval: provides files
- File and web readers → Web and GitHub: fetches content
- Background services → MCP dispatch: dispatches tools
- MCP dispatch → MCP servers: calls server
- Prompt queue → Message processor: checks generation
- Prompt queue → DeepSeek chat: sends queued prompt
- Voice support → Extension UI: supports dictation
- Extension UI → API playground: opens playground
- Tag parser → Document sandbox: requests generation
- Document sandbox → Rendered tool output: returns files
- Android host → Extension UI: hosts extension
