Feat/dashboard chat multimodel#34
Open
Fanglinqiang wants to merge 22 commits intoRunchuan-BU:mainfrom
Open
Conversation
- Add built-in HTTP dashboard (port 3847) with 8 tabs: Overview, Groups, Tasks, Stats, Alerts, Settings, Models, Skills - Dashboard features: dark/light theme toggle, zh/en i18n, auto-refresh interval selector, per-group message stats, activity charts (messages and task runs per day), alert rules management - Add Telegram channel support (src/channels/telegram.ts) - Add MiniMax and Qwen model config entries to config.ts - Add getTaskRunLogs, getActivityStats, getGroupMessageStats to db.ts - Add parseConfigBlob helper + agentType/notifyUser support in registered_groups accessors - Add agentType and notifyUser fields to RegisteredGroup type - Fix container-runner.ts path resolution to use import.meta.url - Update README.md and README.zh-CN.md with dashboard documentation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Multi-agent biological research pipeline: - Stage 1: Parallel literature search (PubMed + bioRxiv/medRxiv + KEGG/Reactome) - Stage 2: Pathway synthesis + ≥5 mechanistic hypothesis generation - Stage 3: 3-role debate per hypothesis (Supporter / Skeptic / Methodologist) - Stage 4: Top-3 refinement with full molecular detail - Stage 5: Wet-lab experimental plan per hypothesis (controls, timeline, risks) Helper scripts: pubmed-fetch, preprint-fetch, pathway-search Dockerfile: add litellm + AutoResearchClaw (future use) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Stage 1 now dispatches to 3 different models simultaneously: - Task A (Claude): real PubMed API + bioRxiv API fetch via Python scripts - Task B (MiniMax): biomedical knowledge analysis via call_minimax MCP tool - Task C (Qwen): pathway landscape + regulatory network via call_qwen + pathway-search script Progress update sent to user after all 3 tasks complete. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add Chinese description and keywords to frontmatter for better matching - Add explicit auto-trigger instructions at top of skill body - Agent now recognizes Chinese research requests like "帮我研究" and "提假说" Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Route all agent types (Claude, MiniMax, Qwen) through container runner instead of direct API calls, enabling tool use and skills for all models - Add text event emission from agent-runner for streaming assistant responses - Filter "No response requested." from chat responses - Render send_message tool calls as text instead of tool blocks - Fix model test/display: read env vars from .env fallback chain - Fix IPC "Unauthorized" warnings for dashboard chat (whitelist 'dashboard') - Fix chat streaming state stuck when switching chats mid-stream (AbortController) - Add localStorage persistence for chat sessions - Fix xattr ENOTSUP error on skill directory copy (docker grpcfuse) - Improve light mode input contrast and send button styling Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Text was appearing twice because both send_message tool_call events and assistant text events contained the same content. Track send_message texts on the frontend and skip duplicate text events. On the backend, skip output.result when text/send_message events were already streamed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add WeCom (企业微信) as a messaging channel with support for up to 3 bot instances (wc:/wc2:/wc3: JID prefixes). Includes WebSocket connection, markdown message chunking, proactive Corp API messaging, and file/image sending. Also fix duplicate text in dashboard chat when MiniMax returns both a text event and a send_message tool call with identical content. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ti-bot support - FeishuChannel: WebSocket long-connection via @larksuiteoapi/node-sdk - Image/file download via message resources API (native https) - Multi-bot support (fs:/fs2:/fs3: prefixes) - Auto-registration: new chats mapped to defaultFolder without manual setup - Fix log level back to warn, fix jidPrefix for all resource operations - Add FEISHU2/3_DEFAULT_FOLDER config vars Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…, pyGenomeTracks Key upstream changes merged: - OpenRouter/OpenAI-compatible provider support in container-runner - Tool iteration limit increased to 64 - Memory improvements (_latest.md snapshots) - cnsplots + pyGenomeTracks plotting tools in container - Local web channel (optional, disabled by default) - Discord channel (optional) - platform.ts cross-platform utilities Our additions preserved: - WeCom (3 bots, full implementation) - Feishu (3 bots, auto-registration, image/file download) - Dashboard multi-model chat Fix: sendImage ?? Promise.resolve() for type safety Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add Feishu (Lark) channel: WebSocket long-connection, image/file download via message resource API, auto-registration, multi-bot support (up to 3 bots with fs:/fs2:/fs3: prefixes) - Fix dashboard chat send button stuck disabled after agent response: write _close sentinel to container IPC after first result so the container exits and SSE stream closes properly - Fix dashboard chat session saving with images: strip large base64 data URIs before saving to localStorage to avoid exceeding 5MB limit - Default to most recent chat on dashboard load instead of restoring last active session - Fix scheduled task double-execution: advance next_run before enqueuing (not inside runTask) to prevent duplicate triggers when task is queued behind an active container - WeCom: retry via proactive Corp API on 846604 WebSocket expiry error - Feishu: use GROUPS_DIR instead of fragile STORE_DIR/../groups path - Update README and README.zh-CN with Feishu setup docs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add comprehensive Claude skills for: - Single-cell analysis (preprocessing, clustering, trajectory, annotation, integration) - Genomics (variant calling, structural variants, copy number variation) - Epigenomics (ChIP-seq, ATAC-seq, bisulfite-seq, methylation) - Transcriptomics (differential expression, RNA quantification, isoform detection) - Spatial transcriptomics (preprocessing, multiomics, Visium analysis) - Immunogenomics (TCR-seq, BCR-seq, HLA typing) - Proteomics/Metabolomics (quantification, annotation, pathway mapping) - Database queries (AlphaFold, DrugBank, Ensembl, gnomAD, KEGG) - Literature search, PubMed search, and bio-research pipeline - Sequence alignment, phylogenetics, motif discovery - Agent browser for web-based database access Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The IPC watcher's sendImage was hardcoded to whatsapp?.sendImage(), so Feishu (and other non-WhatsApp channels) never received images from container agents. Use sendImageToChannel() which routes via channelForJid() to the correct channel. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… events Key additions from upstream: - WeChat personal account channel - omics runtime pack (8 container skills: scRNA, ChIP-seq, ATAC-seq, DE, proteomics, metagenomics, structural bio) - recordAgentTraceEvent for observability - channelCallbacks.autoRegister pattern - WhatsApp/WeCom/Discord/Slack channel cleanup - Windows setup script, Dockerfile improvements Kept from feature branch: - Dashboard (startDashboard) - Feishu streaming card support - Token usage logging - sendFileToChannel in IPC Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix db/groups.ts to properly parse agentType and notifyUser from container_config JSON blob (lost during upstream refactor) - Add Qwen and MiniMax credentials to ALLOWED_VARS in credential-proxy so containers can actually use these providers - Use group.agentType instead of hardcoded 'claude' in logTokenUsage (index.ts and task-scheduler.ts) - Fix db.ts to proxy through db/connection.ts shared instance via Proxy so analytics functions work with the new DB module structure - Add missing analytics exports to db/index.ts barrel - Switch dashboard.ts imports from db.js to db/index.js - Add group selector header to dashboard chat panel - Add proxiedJids to local-web channel so foreign group responses route back to local-web SSE - Fix models refresh button to also reload token usage Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Type of Change
.claude/skills/(instructions for Claude Code)container/skills/for the chat agentDescription
For Skills