跪拜 Guibai
← All articles
Trae · AI Programming · Vibe Coding

WorkTrace: A Desktop Work Logger Built Entirely by Describing It to an AI

By 努力的小Qin ·
Read original on juejin.cn ↗ Google Translate ↗ Alt translation

A fully functional, installable desktop app with AI structuring, OCR, and cloud sync was produced without the creator writing code — only describing requirements and reporting bugs. The documented iteration log (11 pitfall entries with symptom → root cause → fix) provides a concrete, reproducible workflow for anyone who can specify software but can't code.

Summary

WorkTrace solves the Friday report scramble: scattered records, forgotten tasks, and mixed to-dos. It captures casual entries, auto-structures them via AI, and produces a four-section weekly report in one click, backed by local JSON storage and WebDAV sync. The app includes a yearly heatmap, monthly calendar with dual-color to-do/record markers, and built-in PaddleOCR for image recognition — all packaged as macOS dmg and Windows exe installers auto-built via GitHub Actions.

The entire development was driven by natural-language iteration in Trae. Starting from a single sentence describing the desired tool, each feature — to-do separation, cloud sync, model fixes, OCR, packaging — was added by describing the requirement, letting the AI plan and implement, then feeding back bugs with exact error messages. Eleven documented pitfall fixes now serve as reusable engineering assets.

A core reusable pattern emerged: zero-friction entry (one sentence or paste), one-click delivery (report or export), and hand the middle to AI. The same architecture applies to meeting minutes, reading notes, or client follow-up tools.

Takeaways
A single-sentence requirement — "Make a local-first work log tool that can casually record, AI auto-structure, visualize for review, and generate a weekly report in one click" — produced a runnable Tauri 2 + React + Rust skeleton.
To-do and record entries are separated by a `kind` field; a toggle switches between them, and the calendar renders blue (record) and orange (to-do) badges.
A calendar bug where orange to-do markers never appeared was traced to a missing `camelCase` conversion on the backend struct — `todo_count` didn't match the frontend's `todoCount`.
Tech Cloud Drive WebDAV sync failed with "Read-only file system (os error 30)" because returned paths contained double slashes and a leading slash that resolved to the system root; trimming the slash fixed it.
The kimi-k3 model broke for two reasons: it requires `temperature=1` but the code hardcoded 0.3, and it returned non-compliant JSON. The fix auto-drops temperature on a 400 and retries with error feedback to the model.
Tauri's WebView does not implement native `window.confirm` — it returns `false` immediately, so delete logic silently exited. Replacing it with an inline "Delete → Confirm Delete" button fixed deletion.
Image recognition switched from requiring a user-configured vision model to built-in PaddleOCR, working out of the box on both macOS and Windows.
GitHub Actions auto-builds macOS `.dmg` and Windows `.exe` installers on tag push; a missing subdirectory in the publish glob once caused empty releases until flattened.
The project accumulated 11 documented pitfall entries (symptom → root cause → solution), serving as a reusable engineering log for future iterations.
The reusable architecture pattern is: zero-friction input, AI handles the middle, one-click structured output — applicable to meeting minutes, reading notes, and client follow-up tools.
Conclusions

The entire app was produced through demand-driven iteration — the human described what they wanted and reported bugs with exact error strings; the AI planned, implemented, and debugged. No code was handwritten.

Bug reporting quality directly determines fix speed: "Read-only file system (os error 30)" led to a root-cause diagnosis in one pass, while vague reports would have required multiple rounds.

Platform-specific WebView behavior (Tauri's missing `window.confirm`) is a class of bug that a non-desktop developer would struggle to diagnose alone; the AI's reproduction-first approach caught it.

The kimi-k3 fix exposed a common AI-integration fragility: model-specific constraints (temperature=1 only) and non-standard JSON output require defensive retry logic, not just a single prompt.

Built-in PaddleOCR replaced a user-configuration step — a pattern worth generalizing: AI coding agents can swap out "bring your own model" for embedded, zero-config alternatives when given the instruction.

The 11-entry pitfall log is arguably more valuable than the app itself for anyone attempting a similar AI-driven build; it captures platform-specific, model-specific, and toolchain-specific failure modes.

Concepts & terms
Trae
An AI-powered IDE that accepts natural-language requirements, produces a plan with concrete code changes, and iterates based on user feedback — used here to build a full desktop app without handwriting code.
Tauri 2
A framework for building lightweight desktop apps using a Rust backend and a web frontend (React, in this case), packaging into native installers for macOS and Windows.
PaddleOCR
An open-source OCR engine that was embedded directly into the app so image-to-text recognition works without any external model configuration by the user.
WebDAV
A protocol for remote file access over HTTP; used here to sync work records to cloud drives, with platform-specific path quirks causing a read-only filesystem error.
Vibe Coding
A style of AI-assisted development where the human describes intent in natural language and the AI handles implementation, debugging, and iteration — the entire workflow used to build WorkTrace.
Source: juejin.cn ↗ Google Translate ↗ Backup ↗