惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
MyScale Blog
MyScale Blog
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
腾讯CDC
The GitHub Blog
The GitHub Blog
Jina AI
Jina AI
B
Blog RSS Feed
I
InfoQ
N
Netflix TechBlog - Medium
T
The Blog of Author Tim Ferriss
Microsoft Azure Blog
Microsoft Azure Blog
Recent Announcements
Recent Announcements
GbyAI
GbyAI
H
Help Net Security
L
LangChain Blog
M
MIT News - Artificial intelligence
Y
Y Combinator Blog
aimingoo的专栏
aimingoo的专栏

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
TaskDev - a task runner for AI coding agents (MCP)
Tolbxela Bot · 2026-05-10 · via DEV Community

One place for your dev tasks. One place for your logs. And your AI agent sees them too.

Like most developers working on web apps, I usually have a few long-running processes open during the day:

  • the API server
  • the frontend dev server
  • a build watcher

Usually one terminal each. That works, but it is not the handiest setup - you end up jumping between tabs to check what is running and where the logs are.

TaskDev puts them in one place - and makes them visible to your AI agent over MCP.

TaskDev sidebar showing a project node with two tasks

Why I built TaskDev

Agents can read output, but they can't manage processes.

AI coding agents - Codex, Claude Code, Windsurf Cascade, Cursor - write code well and can read terminal output. What they lack is a stable interface for starting, stopping, and tracking long-running processes. So they spawn duplicates, lose track of what is running, fight stuck ports, and retry until the developer takes over.

The Model Context Protocol (MCP) makes a unified solution possible: one task list that both the developer and the agent can drive.

That is TaskDev:

  • a sidebar for the developer
  • an MCP server for the agent
  • one source of truth - same tasks, same processes, same logs
  • agent commands are sandboxed (see Trust and safety below)

The agent problem, in detail

Long-running tasks like a web service are the worst case:

  • the agent forgets a task is already running and starts it again - and again
  • the previous process still holds the port, so the new one fails
  • it sometimes takes several attempts to stop a task, burning tokens for no reason
  • some agents spawn tasks in hidden terminals or redirect the console output, and the developer doesn't see what is going on
  • the agent waits forever on a command that never returns

As a result, failed attempts, wasted tokens, and a developer forced to intervene.

The agent itself is not the issue. It just doesn't have a reliable control interface to manage tasks.

TaskDev is a small, lightweight process supervisor that provides exactly that interface - start, stop, restart, status, logs.

What it is

A small extension for VS Code-based editors (VS Code, Cursor, Windsurf).

  • plain JSON config
  • local processes
  • local logs
  • no telemetry

Tasks are defined in taskdev.json at the root of the workspace.

Install TaskDev

Repository: github.com/tolbxela/taskdev - MIT license.

Install TaskDev from the Extensions panel - search for TaskDev:

Then drop a taskdev.json in your workspace and run TaskDev: Install MCP config to wire up the agent side.

Configuration

Example for an ASP.NET Core + Vue.js project:

{
  "project": "My App",
  "tasks": [
    {
      "name": "api",
      "command": "dotnet run --project src/Api",
      "detail": "Starts the backend API",
      "icon": "server-process"
    },
    {
      "name": "ui",
      "type": "npm",
      "command": "npm run dev",
      "cwd": "ui",
      "detail": "Starts the Vite dev server",
      "icon": {
        "id": "globe",
        "color": "terminal.ansiBlue"
      }
    }
  ]
}

Enter fullscreen mode Exit fullscreen mode

Each task needs a name and a command. Everything else is optional:

  • cwd - working directory for the command
  • env - extra environment variables
  • detail - short description shown in the sidebar
  • icon - a codicon id, or { id, color }
  • type - a free-form label like npm or dotnet

Add as many tasks as you want. Two shapes fit naturally:

  • long-running - dev server, build watcher, worker, tunnel, test watcher
  • repetitive - test run, lint, type-check, one-off build, data seed

Both end up in the same sidebar with the same logs, and the agent can start either one on demand.

Multi-root workspaces are supported: each folder can have its own taskdev.json.

Sidebar with the title-bar Open taskdev.json button next to the open config

The sidebar

Click the TaskDev icon in the Activity Bar. You get a tree grouped by project - one node per workspace folder that has a taskdev.json. The project header shows the task count and how many are running.

Each task row shows:

  • an icon (auto-picked from the name, or whatever you set in icon) that turns green while the task is running
  • the task name, plus either the first line of detail or running · 12m once started
  • a rich tooltip on hover with status, command, cwd, PID, uptime, and log path

Inline buttons appear on the task row:

  • play when the task is stopped
  • stop when it is running
  • log to open the current log file in the editor

Hovering a task row reveals Start task and Show log buttons

Clicking log opens the current run in a regular editor tab - searchable, scrollable, and the same file the agent reads over MCP.

Task log open beside the sidebar

The view title has three more actions:

  • Install MCP config - wire up agents (see below)
  • Open taskdev.json - jump to the config, or create one if it is missing
  • Refresh - re-read the config

TaskDev sidebar showing a project node with two tasks

The sidebar refreshes itself every 10 seconds while at least one task is running, every 60 seconds otherwise, and immediately when you edit taskdev.json. Multi-root workspaces show each project side by side.

MCP integration

Run TaskDev: Install MCP config from the command palette and pick which agents to wire up. Detected config files are pre-checked.

Install MCP config picker listing Windsurf, Claude Code, Cursor, Codex, and workspace-scoped configs

The MCP config is only written when this command runs. Nothing happens implicitly.

One necessary drawback is that the MCP config stores the installed extension path, which changes with each new TaskDev version. So you need to re-run TaskDev: Install MCP config after each update. TaskDev will prompt you after an upgrade, but the configs are only rewritten when you confirm in the picker.

The agent gets eight tools:

Tool Purpose
taskdev_list list tasks with status, PID, command, cwd, log path
taskdev_status status of one task or all
taskdev_control start or stop a task
taskdev_restart stop and start
taskdev_logs read recent log lines (current run, or an older run by file)
taskdev_logs_history list previous log files for a task
taskdev_add add a task (with confirmation)
taskdev_remove remove a stopped task (with confirmation)

Agents communicate with TaskDev over MCP and can manage tasks efficiently.

Typical agent loop: change code → taskdev_restart apitaskdev_logs api → read the error → fix or report.

No retry loops. No hung commands. No wasted tokens.

Trust and safety

Commands in your own taskdev.json are normal shell commands - treat the file like code, and only run it in trusted workspaces.

Agent-added tasks (taskdev_add) are sandboxed:

  • no shell chaining, redirects, variables, or subshells
  • no path traversal or arguments outside the project
  • no risky env overrides (PATH, NODE_OPTIONS, dynamic-loader vars, ...)
  • only known dev command shapes - npm / pnpm / yarn scripts, dotnet, cargo, go
  • explicit confirmation before any add or remove

The agent can spin up dotnet test. It cannot invent curl ... | sh.

For the exact allow-list, env rules, runtime layout, and MCP tool reference, see security-and-config.md. For setup, see the extension README.

Feedback

Found a bug or have an idea? Open an issue at github.com/tolbxela/taskdev/issues.