Project Structure¶
This page describes the directory layout and module organization of InnoClaw.
High-Level Structure¶
graph TB
subgraph App["src/app/ — Pages & API Routes"]
Pages["Pages<br/>(page.tsx)"]
APIRoutes["API Routes<br/>(route.ts)"]
end
subgraph Components["src/components/ — React Components"]
UI["ui/ (shadcn/ui)"]
Layout["layout/"]
Workspace["workspaces/"]
FileBrowser["files/"]
Chat["chat/"]
Notes["notes/"]
Agent["agent/"]
Skills["skills/"]
Datasets["datasets/"]
PaperStudy["paper-study/"]
Cluster["cluster/"]
Report["report/"]
ScheduledTasks["scheduled-tasks/"]
Terminal["terminal/"]
Preview["preview/"]
end
subgraph Lib["src/lib/ — Core Business Logic"]
DB["db/ (Drizzle ORM)"]
AILib["ai/ (Provider Config)"]
RAGLib["rag/ (Pipeline)"]
FilesLib["files/ (FS Operations)"]
GitLib["git/ (GitHub)"]
BotLib["bot/ (Feishu, WeChat)"]
ArticleSearchLib["article-search/"]
ClusterLib["cluster/"]
HFDatasetsLib["hf-datasets/"]
ModelScopeLib["modelscope/"]
ReportLib["report/"]
SchedulerLib["scheduler"]
Hooks["hooks/ (SWR)"]
end
Pages --> Components
APIRoutes --> Lib
Components --> Hooks
Hooks --> APIRoutes
Directory Layout¶
innoclaw/
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── page.tsx # Home page (workspace list)
│ │ ├── layout.tsx # Root layout
│ │ ├── globals.css # Global styles
│ │ ├── settings/page.tsx # Settings page
│ │ ├── workspace/[workspaceId]/ # Workspace page (3-panel layout)
│ │ ├── skills/ # Skills management page
│ │ ├── datasets/ # Dataset management page
│ │ └── api/ # API routes
│ │ ├── workspaces/ # Workspace CRUD
│ │ ├── files/ # File operations
│ │ ├── git/ # Git clone/pull/status
│ │ ├── chat/ # AI chat (streaming)
│ │ ├── agent/ # Agent chat + summarize
│ │ ├── generate/ # Note generation
│ │ ├── notes/ # Note CRUD
│ │ ├── settings/ # Settings management
│ │ ├── skills/ # Skills CRUD + import/export
│ │ ├── bot/ # Bot webhook endpoints
│ │ │ ├── feishu/ # Feishu webhook + push API
│ │ │ └── wechat/ # WeChat webhook
│ │ ├── terminal/ # Terminal command execution
│ │ ├── datasets/ # Dataset CRUD + download lifecycle
│ │ ├── paper-study/ # Paper search/fetch/summarize/chat
│ │ ├── scheduled-tasks/ # Scheduled task CRUD
│ │ ├── daily-report/ # Daily report generation
│ │ ├── weekly-report/ # Weekly report generation
│ │ ├── cluster/ # K8s status + operations
│ │ ├── models/ # Model listing from providers
│ │ └── system/ # System info (network speed)
│ ├── components/ # React components
│ │ ├── ui/ # shadcn/ui base components
│ │ ├── layout/ # Header, theme toggle, language toggle
│ │ ├── workspaces/ # Workspace list and creation
│ │ ├── files/ # File browser, file tree, upload
│ │ ├── chat/ # Chat messages and input
│ │ ├── notes/ # Notes list and editor
│ │ ├── git/ # Git clone/pull dialogs
│ │ ├── agent/ # Agent mode panel
│ │ ├── skills/ # Skills form and list
│ │ ├── preview/ # File preview (images, PDF, 3D, MOL)
│ │ ├── terminal/ # Terminal emulator UI
│ │ ├── datasets/ # Dataset download/management UI
│ │ ├── paper-study/ # Paper search and study UI
│ │ ├── cluster/ # K8s cluster status and operations UI
│ │ ├── report/ # Report generation UI
│ │ └── scheduled-tasks/ # Scheduled task management UI
│ ├── lib/ # Core business logic
│ │ ├── db/ # Database (Drizzle ORM + SQLite)
│ │ │ ├── schema.ts # Database schema definitions
│ │ │ └── index.ts # Database connection
│ │ ├── ai/ # AI provider configuration
│ │ │ ├── providers.ts # Provider routing (OpenAI/Anthropic/Gemini)
│ │ │ ├── models.ts # Model definitions and defaults
│ │ │ ├── agent-tools.ts # Agent mode tools
│ │ │ └── tool-names.ts # Tool name constants
│ │ ├── rag/ # RAG pipeline
│ │ │ ├── chunker.ts # Text chunking
│ │ │ ├── embeddings.ts # Vector embedding generation
│ │ │ ├── retriever.ts # Similarity search
│ │ │ └── vector-store.ts # Vector storage
│ │ ├── files/ # File system operations
│ │ │ ├── workspace.ts # Workspace file operations
│ │ │ └── text-extractor.ts # Text extraction from files
│ │ ├── git/ # GitHub operations
│ │ ├── bot/ # Bot integrations
│ │ │ ├── types.ts # BotAdapter interface
│ │ │ ├── processor.ts # Message processing
│ │ │ ├── feishu/ # Feishu adapter (client, commands, cards, state)
│ │ │ └── wechat/ # WeChat adapter
│ │ ├── article-search/ # Paper search engine
│ │ │ ├── arxiv.ts # arXiv API integration
│ │ │ ├── huggingface.ts # HuggingFace Daily Papers
│ │ │ ├── cache.ts # Search result caching
│ │ │ └── index.ts # Unified search interface
│ │ ├── cluster/ # Kubernetes operations
│ │ │ ├── operations.ts # Cluster operation recording
│ │ │ └── validators.ts # K8s input validation
│ │ ├── hf-datasets/ # HuggingFace dataset downloading
│ │ │ ├── downloader.ts # Download orchestration
│ │ │ ├── manifest.ts # Manifest computation
│ │ │ ├── metadata.ts # Repository metadata
│ │ │ ├── preview.ts # Dataset preview
│ │ │ └── progress.ts # Progress tracking
│ │ ├── modelscope/ # ModelScope integration
│ │ │ ├── downloader.ts # Download orchestration
│ │ │ └── metadata.ts # Repository metadata
│ │ ├── report/ # Report utilities
│ │ │ ├── download-utils.ts # Report download helpers
│ │ │ └── extract-report.ts # Report data extraction
│ │ ├── markdown/ # Markdown processing
│ │ ├── system/ # System utilities
│ │ ├── scheduler.ts # Cron task scheduler engine
│ │ ├── scheduler-handlers.ts # Task type handlers
│ │ ├── daily-report.ts # Daily report generation logic
│ │ ├── weekly-report.ts # Weekly report generation logic
│ │ ├── daily-report-scheduler.ts # Daily report cron handler
│ │ ├── weekly-report-scheduler.ts# Weekly report cron handler
│ │ ├── env.ts # Environment variable utilities
│ │ ├── fetcher.ts # SWR fetch helper
│ │ ├── hooks/ # SWR data fetching hooks
│ │ └── utils/ # Utility functions
│ ├── i18n/ # Internationalization
│ │ ├── request.ts # Language detection
│ │ └── messages/ # Translation files
│ │ ├── en.json # English translations
│ │ └── zh.json # Chinese translations
│ └── types/ # TypeScript type definitions
├── public/ # Static assets
├── drizzle/ # Database migrations
├── config/ # Configuration files (skills, etc.)
├── docs/ # Documentation (Sphinx)
├── data/ # SQLite database (runtime)
├── dev-start.sh # Dev server start script
├── dev-stop.sh # Dev server stop script
├── dev-status.sh # Dev server status check
├── package.json # Node.js dependencies
├── tsconfig.json # TypeScript configuration
├── next.config.ts # Next.js configuration
├── drizzle.config.ts # Drizzle ORM configuration
├── vitest.config.ts # Vitest test configuration
└── .env.example # Environment variable template
Key Modules¶
App Router (src/app/)¶
Next.js 16 App Router with file-based routing. Pages are server components by default; client components use the "use client" directive.
Components (src/components/)¶
React components organized by feature area. Uses shadcn/ui as the base component library with Tailwind CSS for styling.
Database (src/lib/db/)¶
SQLite database managed by Drizzle ORM. The schema defines 11 tables: workspaces, sources, source chunks, chat messages, notes, app settings, skills, scheduled tasks, cluster operations, HF datasets, and dataset-workspace links.
RAG Pipeline (src/lib/rag/)¶
The Retrieval-Augmented Generation pipeline handles text chunking, vector embedding, storage, and similarity search. Uses pure JavaScript cosine similarity — no external vector database needed.
AI Providers (src/lib/ai/)¶
Configures and routes requests to OpenAI, Anthropic, and Gemini providers. Includes model definitions, agent tool implementations, and skill system integration.
Bot Integrations (src/lib/bot/)¶
Implements the BotAdapter interface for Feishu (Lark) and WeChat Enterprise. Each adapter handles webhook verification, message parsing, response formatting, and interactive card-based progress tracking.
Article Search (src/lib/article-search/)¶
Search engine for academic papers across arXiv and Hugging Face Daily Papers. Supports keyword search, date filtering, related article discovery, and result caching.
Cluster Operations (src/lib/cluster/)¶
Kubernetes cluster integration for GPU-accelerated workloads. Records operation audit trail and validates kubectl/vcctl inputs.
Dataset Management (src/lib/hf-datasets/ and src/lib/modelscope/)¶
Download orchestration for datasets from HuggingFace Hub and ModelScope. Supports pause/resume/cancel, progress tracking, manifest computation, and dataset preview.
Report Generation (src/lib/daily-report.ts, src/lib/weekly-report.ts)¶
AI-powered report generation that analyzes workspace activity (git commits, file changes, chat history) to produce structured daily and weekly summaries.
Task Scheduler (src/lib/scheduler.ts)¶
Cron-based task execution engine. Polls every 60 seconds and dispatches handlers for each task type (daily_report, weekly_report, git_sync, source_sync, custom).