Files
picoclaw/web
xiaoen 8034ee7be1 fix(agent): correct media token arithmetic and tool call double-counting
Two estimation bugs fixed:

1. Media tokens were added to the chars accumulator before the chars*2/5
   conversion, resulting in 256*2/5=102 tokens per item instead of 256.
   Fix: add media tokens directly to the final token count, bypassing
   the character-based heuristic.

2. estimateMessageTokens counted both tc.Name and tc.Function.Name for
   tool calls, but providers only send one (OpenAI-compat uses
   function.name, Anthropic uses tc.Name). Fix: count tc.Function.Name
   when Function is present, fall back to tc.Name only otherwise.

Also fix i18n hint text: "auto-detect" was misleading — the backend
uses a 4x max_tokens heuristic, not actual model detection.
2026-03-16 14:48:34 +08:00
..

Picoclaw Web

This directory contains the standalone web service for picoclaw. It provides a complete unified web interface, acting as a dashboard, configuration center, and interactive console (channel client) for the core picoclaw engine.

Architecture

The service is structured as a monorepo containing both the backend and frontend code to ensure high cohesion and simplify deployment.

  • backend/: The Go-based web server. It provides RESTful APIs, manages WebSocket connections for chat, and handles the lifecycle of the picoclaw process. It eventually embeds the compiled frontend assets into a single executable.
  • frontend/: The Vite + React + TanStack Router single-page application (SPA). It provides the interactive user interface.

Getting Started

Prerequisites

  • Go 1.25+
  • Node.js 20+ with pnpm

Development

Run both the frontend dev server and the Go backend simultaneously:

make dev

Or run them separately:

make dev-frontend   # Vite dev server
make dev-backend    # Go backend

Build

Build the frontend and embed it into a single Go binary:

make build

The output binary is backend/picoclaw-web.

Other Commands

make test    # Run backend tests and frontend lint
make lint    # Run go vet and prettier/eslint
make clean   # Remove all build artifacts