This is an educated lobster. You can also call him AC ( not the AC that rejects your papers )
Compared to NanoClaw, we've primarily modified communication with Feishu etc., memory system, and academic-specific skills:
- Semantic Memory Search - Hybrid SQLite + LanceDB architecture for intelligent context retrieval
- Multi-channel Support - WhatsApp, Telegram, Slack, Feishu/Lark
- Agent Groups - Multi-agent collaboration for complex tasks
- Scheduled Tasks - Automated research summaries and periodic jobs
- Container Isolation - Secure sandboxed execution per group
- Academic Integration - Optimized for research workflows
AcademiClaw includes 16 built-in academic-specific skills:
| Skill | Description | Triggers |
|---|---|---|
| zotero-local | Local Zotero database management: CRUD, PDF reading | "zotero", "literature", "paper" |
| zotero-paper-reader | Read and analyze academic papers from Zotero | "read paper", "analyze paper" |
| arxiv-fetcher | Fetch papers from arXiv | "arxiv", "fetch papers" |
| paper-fetcher | arXiv auto-search, translation, Zotero import | "search papers", "检索论文" |
| paper-summarizer | Generate daily/weekly/monthly reports | "daily summary", "学习总结" |
| pdf-reader | Deep PDF reading and analysis | "read PDF", "阅读PDF" |
| papervault-cron | Complete paper automation workflow | "paper workflow" |
| Skill | Description | Triggers |
|---|---|---|
| learning-reflector | Deep reflection, blind spot discovery | "reflect learning", "反思学习" |
| deep-research | Enterprise-grade research: multi-source synthesis | "deep research", "comprehensive analysis" |
| content-research-writer | Content writing: research-backed, citations | "write", "content" |
| data-analysis | Data analysis: statistics, visualization | "analyze data", "data analysis" |
| Skill | Description | Triggers |
|---|---|---|
| token-usage-tracker | Track API token consumption | "token usage", "API消耗" |
| diagram-generator | Generate flowcharts, sequence diagrams | "draw flowchart", "画流程图" |
| slidev-generator | Auto-generate Slidev presentations | "create presentation", "创建演示" |
| github-cli | GitHub automation (repos, issues, PRs) | "create repo", "创建仓库" |
| agent-browser | Browser automation for research | "browse", "search web" |
@Andy use zotero-local to search papers on machine learning
@Andy search today's papers on transformer # paper-fetcher
@Andy generate weekly learning summary # paper-summarizer
@Andy reflect on my learning blind spots # learning-reflector
@Andy read this PDF paper # pdf-reader
@Andy draw a microservice architecture diagram # diagram-generator
@Andy create a presentation on RAG # slidev-generator
@Andy create a new GitHub repository # github-cli
@Andy check my token usage today # token-usage-tracker
git clone https://github.com//academiclaw.git
cd academiclaw
claudeRun /setup in Claude Code CLI to configure:
- Dependencies and containers
- Message channels (WhatsApp, Telegram, etc.)
- Memory system (optional)
AcademiClaw includes an optional semantic memory system:
| Mode | Description | Cost |
|---|---|---|
| Off | SQLite only (exact match) | Free |
| Mock | Test mode, no API required | Free |
| Jina AI | Quality embeddings | 1M/month free |
| OpenAI | Official embeddings | Pay-per-use |
Enable with MEMORY_ENABLED=true in .env.
Talk to your assistant with the trigger word (default: @Andy):
@Andy summarize the latest papers on semantic search from arXiv
@Andy create a weekly summary of my research notes every Monday 9am
@Andy search my conversation history for "vector database benchmarks"
Channels → SQLite + LanceDB → Polling → Container (Claude Agent) → Response
Key components:
src/index.ts- Main orchestratorsrc/memory/- Semantic search systemsrc/channels/- Channel implementationssrc/container-runner.ts- Container executionsrc/task-scheduler.ts- Scheduled tasks
┌────────────┐
│ Input │
└─────┬──────┘
│
┌────────┴─────────┐
▼ ▼
SQLite LanceDB
(Source DB) (Semantic Index)
│ │
└────────┬─────────┘
▼
Hybrid Retriever
Key environment variables:
# Memory System
MEMORY_ENABLED=false # Enable semantic search
EMBEDDING_API_KEY= # Jina AI or OpenAI key
EMBEDDING_BASE_URL=https://api.jina.ai/v1
EMBEDDING_MODEL=jina-embeddings-v3
# Claude API
ANTHROPIC_API_KEY=sk-ant-...
CLAUDE_CODE_OAUTH_TOKEN= # Alternative
# Assistant Configuration
ASSISTANT_NAME=Andy
ASSISTANT_HAS_OWN_NUMBER=falseSee .env.example for all options.
- macOS or Linux
- Node.js 20+
- Claude Code
- Docker or Apple Container
npm run dev # Run with hot reload
npm run build # Compile TypeScript
npm test # Run tests# Unit tests
npm test
# Integration tests
npx tsx scripts/test-memory-integration.ts
# E2E tests (with mock embeddings)
MEMORY_ENABLED=true MEMORY_USE_MOCK_EMBEDDINGS=true npx tsx scripts/test-memory-e2e.ts
# Jina AI test (requires API key)
JINA_API_KEY=your-key npx tsx scripts/test-jina-memory.ts- Memory Architecture - Detailed system design
- Test Results - Test coverage
- Requirements - Architecture decisions
- NanoClaw SPEC - Base system specification
Memory not working:
- Check
MEMORY_ENABLED=truein.env - Verify API key is set
- Check logs:
tail -f logs/academiclaw.log
Container fails to start:
- Ensure Docker is running:
docker info - Check container logs in
groups/main/logs/
No response to messages:
- Verify trigger pattern (default:
@Andy) - Check channel credentials in
.env
AcademiClaw is a minimal fork of NanoClaw. Contributions should follow the same principles:
- Skills over features - Use
.claude/skills/for add-ons - Keep it minimal - Don't add bloat
- Document changes - Update relevant docs
MIT (same as NanoClaw)
Based on NanoClaw by qwibitai.