Skip to content

Latest commit

 

History

History
372 lines (288 loc) · 13.4 KB

File metadata and controls

372 lines (288 loc) · 13.4 KB

dscode

A digital studio for content-driven creation.
Code, write, design, and build — with an AI that thinks like a maker.

npm version Node.js >=20 DeepSeek native spec driven

中文文档


See it in action

dscode — editorial workshop

dscode's editorial workshop — a creative space for code, design, and conversation.

What makes dscode different

🔌 MCP-First

Digital studios don't use one tool. They use ten. MCP turns every tool into an API — dscode is the agent that orchestrates them. Blender for 3D modeling, PlayCanvas for real-time graphics, browser automation for testing, documents for specs, spreadsheets for data. If your production tool has an MCP server, dscode brings it into the workflow.

Your toolchain. One agent. All through MCP.

🧬 Spec-Driven Development

dscode is built entirely through spec coding with OpenSpec. Every feature begins as a formal spec — openspec/specs/ is the source of truth, code is the implementation. We don't encourage manual commits; all design and development flows through the SDD pipeline.

Code is the implementation of specs — not the other way around.

🔍 MCP Tool Search

Too many MCP servers? Context explosion is a real problem when every tool schema competes for token budget. dscode ships with a built-in search_tools driver — MCP tools are discovered on-demand by the model, not pre-loaded. Only the tools actually needed enter the context window. Connect dozens of MCP servers without worrying about overhead.

All the tools. None of the bloat.

🎨 Editorial Workshop

dscode is not a chatbot with a dark theme. It's a digital studio — a creative workspace with editorial typography, generous whitespace, and a warm, tool-like aesthetic. The interface is designed for makers: phase-labeled message groups, serif structural labels, sidebar detail panels, and a Dashboard that's a mode of Chat, not a separate page. Every pixel earns its place.

A creative space. Not just a chat window.


Capabilities

🖥 Terminal + Web
Full TUI with streaming, thinking, tool calls, per-turn token usage & cost stats. Modern React Web UI with identical feature parity via WebSocket.
🔌 MCP Connector
Stdio, Streamable HTTP (MCP 2025-11-25), legacy SSE fallback. Auto transport inference. MCP App sandbox for server-driven UI.
🛡 Agent Harness
Permission control, context compression (1M token window), session persistence, cross-session memory, retry with exponential backoff.
📦 Skills System
Declarative third-party extensions via SKILL.md. On-demand activation. User-level + project-level scopes.
👁 Vision Pipeline
Auto-routing to vision-capable models. tesseract OCR fallback (ENG + CHI). Drag, paste, or @-file images.
🔧 Open Design
AI-driven visual design workspace with frontend generation, image-to-code, and design-system management. Integrated via MCP.
🎬 Dashboard & Motion
Chat↔Dashboard cascade transition with physics-based "dscode" cluster animation. Session dashboard with context-window usage bar.
📐 Hash-Anchor Editing
Content-addressable file editing with 3-level adaptive resolution, atomic batch operations, checkpoint safety rollback, and structured invalidation scopes.
🔁 Retry & Resilience
Exponential backoff with configurable retry policy. Handles rate limits, timeouts, and server errors transparently. Respects Retry-After headers.

Tip: In TUI, paste clipboard images with Ctrl+V (macOS) or /image clipboard.


MCP in 30 seconds

// ~/.dscode/settings.json
{
  "mcpServers": {
    "blender": {
      "command": "uvx",
      "args": ["blender-mcp"]
    },
    "playwright": {
      "command": "npx",
      "args": ["@anthropic/mcp-playwright"]
    }
  }
}

dscode auto-connects on launch. Tools appear as mcp_blender_* and mcp_playwright_*. MCP servers can also serve sandboxed UI via the App Host — no boilerplate, no SDK, no glue code.

See what MCP can do

show_playcanvas.mp4

PlayCanvas + MCP — build a jump game entirely through natural language
show_blender.mp4

Blender + MCP — 3D modeling and scene composition through conversation

Tip: Videos play inline — these are real MCP workflows, click to watch.

Install

npm install -g @creative-dswork/dscode
dscode              # Terminal UI
dscode --web        # Web UI → http://localhost:3000

First launch? Run /config key <your-api-key> and /config model deepseek-v4-pro to get started. Type /help for the full guide.

Build from source:

git clone https://github.com/creativedswork/dscode.git
cd dscode && npm install && npm run build
node dist/dscode.mjs

Configuration

dscode uses two levels of settings.json, merged with project settings overriding user settings:

Scope Path Purpose
User ~/.dscode/settings.json Defaults across all projects
Project .dscode/settings.json Per-project overrides

Note: Model configuration (provider, modelId, apiKey, thinkingLevel) lives in ~/.dscode/config.json, managed via /config commands. Type /help in-session for the full command list.

Quick reference

// ~/.dscode/settings.json
{
  // --- MCP Servers ---
  "mcpServers": {
    "blender": {
      "command": "uvx",
      "args": ["blender-mcp"]
    },
    "playwright": {
      "command": "npx",
      "args": ["@anthropic/mcp-playwright"]
    },
    "my-api": {
      "url": "https://my-mcp.example.com/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  },

  // --- Permissions ---
  "permissions": {
    "allow": [
      "Bash(git add *)",
      "Bash(npm *)"
    ],
    "deny": [
      "Bash(rm -rf *)"
    ],
    "rules": [
      { "tool": "Bash(curl *)", "decision": "allow", "priority": 5 }
    ]
  },

  // --- Skills ---
  "skills": ["brandkit", "minimalist-ui"],

  // --- Retry ---
  // Controls how dscode retries failed API calls (rate limits, timeouts, server errors).
  // Uses exponential backoff: starts at baseDelayMs, doubles each retry, capped at maxDelayMs.
  "retry": {
    "maxRetries": 3,           // Max retry attempts before giving up
    "baseDelayMs": 1000,       // Initial delay before first retry (ms)
    "maxDelayMs": 30000,       // Upper bound on backoff delay (ms)
    "retryOnTimeout": true,    // Retry when the provider times out
    "retryOnRateLimit": true,  // Retry when hitting rate limits (respects Retry-After header)
    "retryOnServerError": true // Retry on 5xx server errors
  },

  // --- @-file limits ---
  "atFileMaxFiles": 5,
  "atFileMaxFileSize": 51200,
  "atFileMaxTotalSize": 204800
}

MCP server config

Each server under mcpServers supports:

Field Type Description
command string Executable (for stdio transport)
args string[] Arguments passed to the command
url string HTTP endpoint (for streamable-http transport)
env object Extra environment variables for the server process
headers object Custom HTTP headers
transport string "stdio" | "streamable-http" | "sse" (auto-detected if omitted)
preferredProtocolVersion string "2025-11-25" | "2025-03-26" | "2024-11-05"
requestTimeoutMs number Per-request timeout
connectTimeoutMs number Connection timeout

Tip: Transport is auto-detected — if url is set without command, streamable-http is used. Otherwise stdio.

Environment variables

All settings can also be set via environment variables for CI / containers:

Variable Setting
DEEPSEEK_API_KEY API key (provider-specific vars also supported: OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.)
AGENT_PROVIDER Provider override
AGENT_MODEL Model override
AGENT_THINKING_LEVEL Thinking level override
AGENT_VISION_PROVIDER Vision model provider
AGENT_VISION_MODEL Vision model ID
DSCODE_MAX_TOKENS Max tokens
DSCODE_CONFIG_HOME Custom config directory (default: ~/.dscode)
DSCODE_DATA_HOME Custom data directory
DSCODE_PROJECT_PATH Project directory
DSCODE_RETRY_MAX_RETRIES Retry max retries
DSCODE_RETRY_BASE_DELAY_MS Retry base delay
DSCODE_RETRY_MAX_DELAY_MS Retry max delay

Open Design

dscode integrates Open Design — a visual design workspace that brings AI-driven frontend generation directly into your workflow. Think of it as Figma meets AI: design tokens, components, and entire layouts generated through natural language, with real-time preview and iteration.

What Open Design does for dscode

  • Visual design workspace — create, edit, and iterate on frontend designs without leaving dscode
  • Image-to-code — generate production-ready HTML/CSS from design mockups
  • Design system management — maintain consistent design tokens, typography scales, and color palettes across projects
  • Multi-file artifact generation — produce complete frontend projects with structured file trees

Installation

git clone https://github.com/wangcan26/open-design.git
cd open-design
npm install

Then configure the MCP server in ~/.dscode/settings.json:

{
  "mcpServers": {
    "open-design": {
      "command": "npx",
      "args": [
        "tsx",
        "/path/to/open-design/apps/daemon/src/cli.ts",
        "mcp",
        "--daemon-url",
        "http://127.0.0.1:7456"
      ]
    }
  }
}

Note: Open Design's dscode integration currently lives on the add-dscode-agent branch and has not yet been submitted as a PR to upstream. The integration provides dscode-specific installer targets and agent configuration. Track the progress at github.com/wangcan26/open-design.


Contributing

dscode is currently a single-developer SDD project and does not accept direct code contributions (Pull Requests).

We welcome bug reports, feature ideas, and technical discussions via GitHub Issues. See CONTRIBUTING.md for the full policy.

| CONTRIBUTING.md | Contribution policy & how the SDD workflow operates |

Learn more

Document What's inside
ARCHITECTURE.md Full architecture: Agent as OS, 6-layer design, Driver/Skill model, source tree
ROADMAP.md What's next: Sub-Agent system, System Prompt modularization, Diff-based editing
CONTRIBUTING.md How to contribute: philosophy alignment, OpenSpec SDD workflow, coding conventions
STYLE.md TypeScript coding style: naming, imports, module structure, error handling

Acknowledgments

dscode stands on the shoulders of:

  • OpenSpec — the spec-driven development framework that shapes our entire workflow

  • pi-ai / pi-agent-core — Mario Zechner's agent loop and model abstraction foundation

  • taste-skill — Leonxlnx's design taste skill system, inspired our skills architecture

  • @_can1357 — hash-anchor editing protocol, the cornerstone of our edit tool


If you like this project, give it a ⭐ Star — your support keeps dscode evolving.