{"slug": "show-hn-worklog-structured-memory-for-agent-in-one-sqlite-table", "title": "Show HN: Worklog, structured memory for Agent in one SQLite table", "summary": "Worklog (wl) is a new open-source CLI tool that stores structured work logs, tasks, and daily plans in a single SQLite table, designed to serve as persistent memory for AI agents. The tool outputs plain text or JSON and includes a bundled skill for Claude Code, enabling AI assistants to read and write work records directly. Worklog requires Python 3.9+ and is installable via pipx or uv.", "body_md": "**🌐 English** · [中文](/xyb/worklog/blob/main/README.zh.md)\n\nA local CLI worklog and task tracker backed by SQLite. Add tasks, log what you did, plan your day — all from the terminal, all in one file.\n\n**Why wl:**\n\n**Everything in one place.** Time (year → month → week → day) and projects (area → task) share the same tree and the same id space. No switching between apps.**A daily rhythm that sticks.** Set a goal in the morning, log as you go, recap at night.`wl day`\n\nreplays the whole day with stats.**Structured and queryable.** Every item carries status, priority, tags, props, and relations. Filter with`wl ls`\n\n, track dependencies/splits with`wl relation`\n\n(`block`\n\n/`split`\n\n/`related`\n\n), search by meaning with`wl query`\n\n.**AI-ready out of the box.** Every command outputs plain text or`-o json`\n\n. There's a bundled[Claude Code skill](/xyb/worklog/blob/main/skills/worklog-cli/SKILL.md)so an AI assistant can drive it directly.**Local and transparent.** One SQLite file, no daemon, no account. You own the data.\n\n```\npipx install pyworklog   # or: uv tool install pyworklog\nwl init\n```\n\nRequires Python ≥ 3.9. Shell completion:\n\n```\nwl print-completion fish | source        # fish — add to config.fish\neval \"$(wl print-completion bash)\"       # bash — add to .bashrc\neval \"$(wl print-completion zsh)\"        # zsh  — add to .zshrc\nwl add \"write the report\" -p A    # add a task, priority A\nwl log 1 \"drafted the intro\"      # log progress → status auto-flips to DOING\nwl done 1                         # mark done\nwl day                            # replay today: plan + logs + stats\n```\n\nStart the day with a goal, log as you work, close with a recap. `wl day`\n\nshows the full picture.\n\n```\nwl goal \"ship the landing page today\"     # morning intent (bare = read back)\nwl log 42 \"finished the hero section\"     # progress note mid-day\nwl recap \"shipped it, copy still TBD\"     # evening summary (bare = read back)\nwl day                                    # the whole day: plan, logs, what changed\n```\n\nReal output from `wl demo`\n\n(the tasks carry `-t work`\n\n/ `-t personal`\n\n— that tag is what sorts them into the day's buckets):\n\n```\n#9 2026-07-16 Thu · workday\n  > 🎯 Send out the monthly report [1/1] ✅\n     1. [x] #3 Write the report summary\n  > 📝 Recap: Focus nailed - report's out, and I didn't chase the new idea. Weak spot:\n    only scratched the AI tutorial. (written at 07-16 12:20)\n  work\n    ▸ planned\n      [x] #3 [# ] Write the report summary\n        · Draft written, sent to the team\n  personal\n    ▸ planned\n      [ ] #4 [# ] Do the AI-agents tutorial\n\n  ── 2026-07-16: 1/1 tasks with progress · DONE 1 · planned·not-done 1\n```\n\n`wl tree --by project`\n\ngroups the same data by project instead of by time:\n\n```\n▸ #1 [#A] Ship the monthly report  (1)\n[x] [# ] #3 Write the report summary\n▸ #2 [#A] Learn how AI agents work  (2)\n[ ] [# ] #4 Do the AI-agents tutorial\n[ ] [# ] #10 Build a tiny agent myself\n```\n\nAssign tasks to dates and move them through a status machine.\n\n```\nwl add \"review PR\" --parent 7             # add under a project\nwl sched 42 tomorrow                      # plan for tomorrow; also: next-week, +3w\nwl start 42                               # clock in\nwl stop 42                                # clock out — elapsed recorded\nwl defer 42 next-month                    # push to backlog; also: someday\nwl done 42                                # close\n```\n\nStatuses: **TODO → DOING → DONE** · also **LATER** (backlog) · **WAIT** (blocked) · **CANCELED**\n\n```\nwl find \"deploy\"                           # full-text, hits highlighted\nwl query \"follow up with the client\"       # finds related even if exact words differ\n```\n\n`wl query`\n\nuses any OpenAI-compatible embedding server. For best results (LanceDB + CJK segmentation): `pip install 'pyworklog[semantic]'`\n\n.\n\nEvery command accepts `-o json`\n\n— place it before or after the verb.\n\n```\nwl -o json ls --para project              # array of open projects\nwl show 42 -o json | jq '.logs'           # node detail, pipe to jq\nwl -o json active                         # currently running tasks\n# capture\nwl add \"task\" -p A -t work                # new task, priority, tags\nwl log 42 \"what I did\"                    # log progress\nwl done 42                                # close; also: defer / cancel / wait\n\n# plan & review\nwl goal \"deliver X by EOD\"                # today's goal  (bare = read)\nwl recap \"shipped, one blocker left\"      # end-of-day summary (bare = read)\nwl day                                    # today: plan + logs + stats\nwl sched 42 2026-07-01                    # schedule; also: tomorrow / +3w / someday\n\n# navigate\nwl show 42                                # full detail + timeline\nwl ls --para project -t work              # list open work projects\nwl tree                                   # whole structure, top-down\nwl summary --week 2026-W25                # weekly aggregate by project\n\n# search\nwl find \"keyword\"                         # full-text search\nwl query \"follow up with the client\"      # semantic + keyword hybrid\n```\n\nEvery command has `wl <cmd> --help`\n\n; `wl help <topic>`\n\nbrowses topic docs inline.", "url": "https://wpnews.pro/news/show-hn-worklog-structured-memory-for-agent-in-one-sqlite-table", "canonical_source": "https://github.com/xyb/worklog", "published_at": "2026-07-26 16:54:11+00:00", "updated_at": "2026-07-26 17:22:29.141091+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "ai-tools"], "entities": ["Worklog", "SQLite", "Claude Code", "Python"], "alternates": {"html": "https://wpnews.pro/news/show-hn-worklog-structured-memory-for-agent-in-one-sqlite-table", "markdown": "https://wpnews.pro/news/show-hn-worklog-structured-memory-for-agent-in-one-sqlite-table.md", "text": "https://wpnews.pro/news/show-hn-worklog-structured-memory-for-agent-in-one-sqlite-table.txt", "jsonld": "https://wpnews.pro/news/show-hn-worklog-structured-memory-for-agent-in-one-sqlite-table.jsonld"}}