Jiayuan 34358645de fix(cli): handle terminal line wrapping in autocomplete input
When input exceeds terminal width, the text wraps to new lines but the
old code only cleared one line, causing screen flashing and duplicate
lines. Now tracks input line count and cursor position across wrapped
lines for proper rendering.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 18:25:37 +08:00

Super Multica

A multi-component architecture for distributed agent systems.

Project Structure

src/
├── agent/              # Core agent module
│   ├── context-window/ # Token-aware context management
│   ├── profile/        # Agent profile management
│   ├── session/        # Session persistence with compaction
│   ├── skills/         # Modular skill system
│   └── tools/          # Agent tools
│       └── web/        # Web fetch and search tools
├── gateway/            # WebSocket gateway for distributed communication
├── hub/                # Multi-agent coordination hub
├── client/             # Client library
├── console/            # NestJS console application
└── shared/             # Shared types and gateway SDK
    └── gateway-sdk/    # Gateway client SDK

apps/
└── web/                # Next.js web application

packages/
└── sdk/                # SDK package for external use

skills/                 # Bundled skills (commit, code-review)

Getting Started

pnpm install

Environment Configuration

The Agent requires LLM provider credentials. Copy the example and fill in your values:

cp .env.example .env
# Edit .env with your API keys

Example .env for OpenAI:

export LLM_PROVIDER=openai
export OPENAI_API_KEY=sk-xxx
export OPENAI_BASE_URL=https://api.openai.com/v1
export OPENAI_MODEL=gpt-4o

Load the environment before starting services that use the Agent:

# Hub Console (requires LLM env vars)
source .env && pnpm dev:console

# Agent CLI
source .env && pnpm agent:cli "hello"

# Gateway (no LLM env vars needed)
pnpm dev:gateway

See .env.example for all supported providers (OpenAI, Anthropic, DeepSeek, Kimi, Groq, Mistral, etc.).

Configuration Priority

Each setting is resolved in order (first match wins):

  1. CLI argument--provider, --model, --api-key, --base-url
  2. Environment variableLLM_PROVIDER, OPENAI_MODEL, OPENAI_API_KEY, OPENAI_BASE_URL, etc.
  3. Session metadata — restored from previous session
  4. Defaultkimi-coding provider with kimi-k2-thinking model

Agent CLI

Use the agent module directly from the CLI for isolated testing.

# New sessions get a UUIDv7 ID (shown on start)
pnpm agent:cli "hello"
# [session: 019c0b0a-b111-765c-8bbd-f4149beac9c4]

# Continue a session
pnpm agent:cli --session 019c0b0a-b111-765c-8bbd-f4149beac9c4 "what did I say?"

# Or use a custom session name
pnpm agent:cli --session demo "remember my name is Alice"
pnpm agent:cli --session demo "what's my name?"

# Override provider/model
pnpm agent:cli --provider openai --model gpt-4o-mini "hi"

# Use an agent profile
pnpm agent:cli --profile my-agent "hello"

# Set thinking level
pnpm agent:cli --thinking high "solve this complex problem"

Sessions

Sessions persist conversation history to ~/.super-multica/sessions/<id>/. Each session includes:

  • session.jsonl - Message history in JSONL format
  • meta.json - Session metadata (provider, model, thinking level)

Sessions use UUIDv7 for IDs by default, providing time-ordered unique identifiers.

Context Window Management

The agent automatically manages context windows to prevent token overflow:

  • Token-aware compaction - Tracks token usage and compacts when approaching limits
  • Compaction modes: tokens (default), count (legacy), summary (LLM-generated)
  • Configurable safety margins - Ensures space for responses
  • Minimum message preservation - Keeps recent context intact

Agent Profiles

Agent profiles define identity, personality, tools, and memory for an agent. Profiles are stored as markdown files in ~/.super-multica/agent-profiles/<id>/.

Profile CLI

# Create a new profile with default templates
pnpm agent:profile new my-agent

# List all profiles
pnpm agent:profile list

# Show profile contents
pnpm agent:profile show my-agent

# Open profile directory in file manager
pnpm agent:profile edit my-agent

Profile Structure

Each profile contains:

  • identity.md - Agent name and role
  • soul.md - Personality and behavioral constraints
  • tools.md - Tool usage instructions
  • memory.md - Persistent knowledge
  • bootstrap.md - Initial conversation context

Skills

Skills are modular capabilities that extend agent functionality through SKILL.md definition files. For complete documentation, see Skills System Documentation.

Key Features

  • Multi-source loading - Bundled, user-installed, plugin-based, and profile-specific skills
  • GitHub installation - pnpm skills:cli add owner/repo to install from GitHub
  • Slash command invocation - /skill-name args in interactive mode
  • Eligibility filtering - Auto-filter by platform, binaries, and environment
  • Hot reload - File watcher for development
  • Plugin system - Auto-discover skills from npm packages with multica.plugin.json

Quick Start

# List all skills
pnpm skills:cli list

# Install skills from GitHub
pnpm skills:cli add anthropics/skills

# Check skill status with diagnostics
pnpm skills:cli status
pnpm skills:cli status pdf -v

# Remove installed skills
pnpm skills:cli remove skills

Built-in Skills

Located in /skills/:

  • commit - Git commit helper following conventional commits
  • code-review - Code review assistance
  • skill-creator - Create and manage custom skills (meta-skill for self-extension)

Creating Custom Skills

The agent can create new skills to extend its own capabilities. Simply ask the agent to create a skill:

User: Create a skill that helps me format JSON
Agent: [Creates ~/.super-multica/skills/json-formatter/SKILL.md]

Skills are automatically loaded via hot-reload. See the skill-creator SKILL.md for the complete guide.

Agent Tools

exec

Execute short-lived shell commands and return output. Commands running longer than the timeout are automatically backgrounded.

exec({ command: "ls -la", cwd: "/path/to/dir", timeoutMs: 30000 })

process

Manage long-running background processes (servers, watchers, daemons). Output is buffered (up to 64KB) and terminated processes are automatically cleaned up after 1 hour.

# Start a background process (returns immediately with process ID)
process({ action: "start", command: "npm run dev" })

# Check process status
process({ action: "status", id: "<process-id>" })

# Read process output
process({ action: "output", id: "<process-id>" })

# Stop a process
process({ action: "stop", id: "<process-id>" })

# Clean up terminated processes
process({ action: "cleanup" })

glob

Pattern-based file discovery using fast-glob.

glob({ pattern: "**/*.ts", cwd: "/path/to/dir" })

web_fetch

Fetch and extract content from URLs with intelligent content extraction.

# Basic fetch (returns markdown)
web_fetch({ url: "https://example.com" })

# With options
web_fetch({
  url: "https://example.com",
  outputFormat: "markdown",  # or "text"
  extractor: "readability"   # or "turndown" for full page
})

Features: SSRF protection, response caching, max 50KB output.

Search the web using Brave or Perplexity AI.

# Basic search
web_search({ query: "typescript best practices" })

# With provider options
web_search({
  query: "latest AI news",
  provider: "brave",     # or "perplexity"
  count: 5,
  freshness: "pw"        # past week (Brave: pd/pw/pm/py)
})

Distributed Architecture

Gateway

The WebSocket gateway enables distributed multi-agent communication:

  • Real-time message passing between agents
  • Streaming support for long-running operations
  • RPC-style request/response patterns

Hub

The Hub manages multiple agents and gateway connections:

  • Agent lifecycle management
  • Communication channel coordination
  • Device identification and tracking

Scripts

Agent Commands

  • pnpm agent:cli - Run the agent CLI for module-level testing
  • pnpm agent:interactive - Interactive REPL mode
  • pnpm agent:profile - Manage agent profiles

Development

  • pnpm dev - Run full stack in development mode
  • pnpm dev:gateway - Run gateway only
  • pnpm dev:console - Run console only
  • pnpm dev:web - Run web app only

Build & Test

  • pnpm build - Build for production
  • pnpm build:sdk - Build SDK package
  • pnpm start - Run production build
  • pnpm typecheck - Type check without emitting
Description
No description provided
Readme Apache-2.0 404 MiB
Languages
Go 50.3%
TypeScript 43.8%
MDX 4.5%
PLpgSQL 0.4%
CSS 0.4%
Other 0.6%