{"id":51779208,"url":"https://github.com/andyleimc-source/workmd","last_synced_at":"2026-07-20T10:01:19.025Z","repository":{"id":371816584,"uuid":"1303482612","full_name":"andyleimc-source/workmd","owner":"andyleimc-source","description":"用纯 markdown + git 管理你的全部工作。人能读，AI 能写——一个项目一个文件夹，一个任务一个文件夹。无数据库、无 API、无锁定。","archived":false,"fork":false,"pushed_at":"2026-07-17T03:49:58.000Z","size":69,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-17T05:27:17.447Z","etag":null,"topics":["ai-agents","claude-code","git","knowledge-base","markdown","pkm","project-management"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andyleimc-source.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-07-17T02:51:43.000Z","updated_at":"2026-07-17T03:50:01.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/andyleimc-source/workmd","commit_stats":null,"previous_names":["andyleimc-source/workmd"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/andyleimc-source/workmd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyleimc-source%2Fworkmd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyleimc-source%2Fworkmd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyleimc-source%2Fworkmd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyleimc-source%2Fworkmd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andyleimc-source","download_url":"https://codeload.github.com/andyleimc-source/workmd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyleimc-source%2Fworkmd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35682457,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"ssl_error","status_checked_at":"2026-07-20T02:08:09.736Z","response_time":111,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","claude-code","git","knowledge-base","markdown","pkm","project-management"],"created_at":"2026-07-20T10:01:18.165Z","updated_at":"2026-07-20T10:01:19.013Z","avatar_url":"https://github.com/andyleimc-source.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# workmd\n\n**用纯 markdown + git 管理你的全部工作。人能读,AI 能写,没有数据库、没有 API、没有私有格式。**\n\n一个项目一个文件夹,一个任务一个文件夹,一个 `progress.md` 记录发生了什么。仅此而已——但它跑了一年多,扛住了二十多个真实项目、四十多个任务,没散架。\n\n```bash\ngit clone https://github.com/andyleimc-source/workmd.git\ncd workmd \u0026\u0026 git remote rename origin upstream\n```\n然后跟你的 AI 说一句:「**读 INSTALL.md,帮我装一下**」。\n\n\u003e `git remote rename origin upstream` 是为了**保住上游**——以后修了 bug,你一句 `./scripts/update-engine.sh --apply` 就能拿到,不用重新克隆。这个脚本只更新引擎(脚本/agent/模板/文档),**绝不碰你的 `projects/`、`archive/` 和各种 `progress.md`**。\n\u003e\n\u003e 想把自己的库备份到私有仓库:`git remote add origin \u003c你的仓库地址\u003e \u0026\u0026 git push -u origin main`。上游和你的备份互不干扰。\n\n---\n\n## 为什么不用 Notion / Jira / 待办 App\n\n因为**它们的数据不在你手上,而 AI 需要读到全部上下文才有用**。\n\n当你的工作躺在纯 markdown 文件里:\n- AI 一句 `grep` 就能横扫你所有项目,不用调 API、不用授权、不用等同步\n- 你能用任何编辑器(Obsidian / VS Code / vim)打开,十年后还能打开\n- git 天然给你版本历史、多设备同步、和\"谁在什么时候改了什么\"\n- 没有订阅费,没有厂商跑路风险\n\n代价是没有花哨的看板和甘特图。**这套东西赌的是:对知识工作者来说,「AI 能完整读懂你在干什么」比「漂亮的进度条」值钱得多。**\n\n---\n\n## 三分钟搞懂心智模型\n\n### 1. 一切皆项目\n\n```\nprojects/P03-website-redesign/          ← 项目\n├── progress.md                         ← 项目进度（汇总，不写细节）\n├── plan.md\n└── tasks/\n    └── T12-2026-06-26-hero-copy/       ← 任务\n        └── progress.md                 ← 细节都在这\narchive/P03-website-redesign/           ← 归档镜像同样的结构\n└── tasks/T09-2026-06-01-.../\n```\n\n**任务只能挂在项目下,没有游离任务。** 那\"顺手买个显示器\"这种一次性小事呢?挂常驻兜底项目 `P00-misc`——它永不归档,就是杂事的家。\n\n\u003e 为什么这么死板:一旦允许游离任务,半年后你会有 200 个躺在顶层、彼此无关、想不起来为什么建的文件夹。**强制归属逼你在建的那一刻回答\"这属于什么\",这个动作本身就是整理。**\n\n### 2. 编号只增不复用\n\n`P03`、`T12` 全局递增,归档了、废弃了,号也不还回来。代价是号会跳(你可能从 T12 直接跳到 T15),好处是 **`T12` 永远只指过一件事**——搜索、回溯、口头说「把 T12 那个做完」全都无歧义。\n\n编号由脚本分配并登记进 `assets/codes.md`,**人和 AI 都不许手编**。\n\n### 3. 三层 progress,各管各的粒度\n\n| 层 | 写什么 | 不写什么 |\n|---|---|---|\n| 顶层 `progress.md` | 索引:现在有什么在跑 | 任何细节 |\n| 项目 `progress.md` | 下属任务的状态汇总 | 任务内的细节 |\n| 任务 `progress.md` | 做了什么 / 下一步 | — |\n\n顶层是**索引不是日志**。一眼扫完知道\"现在有什么在跑\",想看细节点链接进去。\n\n### 4. 五件套落盘\n\n`progress.md`(做了什么)· `plan.md`(要做什么)· `decision.md`(**为什么这么定**)· `bug.md`(已知的坑)· `handoff.md`(下次从哪接)\n\n跟 AI 说一句「88」或「收工」,它就把本轮对话的关键信息落进对应文件然后 commit。\n\n**标准是\"三个月后失忆的我能不能凭这些 md 接上\",不是流水账。** 尤其 `decision.md`——做了什么能从 git log 看出来,**为什么这么做只能看这里**。\n\n---\n\n## 这套东西真正的设计核心\n\n**AI 永远不自动建任务、不自动建项目、不自动归档。**\n\n它会提醒你(「这看起来是个任务,要挂哪个项目?」/「这三个项目 21 天没动静了,收尾了吗?」),但**动手前一定等你点头**。\n\n这条看着像自缚手脚,其实是整套系统能活下来的唯一原因:\n\n- 一个会自动建文件夹的 AI,能在两周内把你的知识库塞满没人认领的空壳\n- 一个会自动归档的系统,等于一个会偷偷藏你东西的系统\n- **人手动确认的那一秒钟,就是\"这件事值不值得被记住\"的过滤器**\n\n工具的价值不在于替你做决定,在于让你的决定留下痕迹。\n\n---\n\n## 内置了什么\n\n| 东西 | 是什么 |\n|------|--------|\n| `scripts/new-task.sh` / `new-project.sh` | 建新的,自动分配编号 + 登记注册表 + 填 frontmatter |\n| `scripts/finish-task.sh` / `finish-project.sh` | 归档到 `archive/` 镜像位置,改 status,更新索引,commit |\n| `scripts/detect-done-projects.sh` | 只读体检:找出「21 天没提交 且 没有进行中任务」的项目 |\n| SessionStart hook | 每周至多一次,把上面的候选注入 AI 上下文,让它挑个不打断你的时机问一句 |\n| SessionEnd hook | 会话结束自动打 `[auto]` 快照 commit(安全网,不 push) |\n| `scripts/update-engine.sh` | 从上游拉引擎更新(脚本/agent/模板/文档),**只碰引擎不碰你的内容**;默认 dry-run |\n| `/inbox-triage` skill | 清 `inbox/` 草稿,逐条判归宿,你确认后才动手 |\n| `archive-auditor` agent | 说「体检知识库」触发,扫出该归档没归档、frontmatter 不一致等问题。只读 |\n| `CLAUDE.md` + `AGENTS.md` + `GEMINI.md` | **一份规则喂所有 AI CLI**:`CLAUDE.md` 是正本,`AGENTS.md` 是给别的 CLI 的薄壳,`GEMINI.md` 是软链 |\n\n`extras/` 里还有可选加装件(默认不装):**driver-builder** 双 AI 分工套件(主力 AI 当司机派工 + 便宜 AI 在隔离 worktree 里施工 + git tag 水位线审查闭环),以及推荐的 skill/MCP 清单。\n\n---\n\n## 常用命令\n\n```bash\n./scripts/new-project.sh website-redesign        # 建项目 → P0X\n./scripts/new-task.sh hero-copy P03              # 在 P03 下建任务 → T0X\n./scripts/new-task.sh buy-monitor                # 省略项目 → 落 P00-misc\n./scripts/finish-task.sh projects/P03-.../tasks/T12-...   # 归档任务\n./scripts/finish-project.sh P03                  # 整包归档（确认后再跑）\n./scripts/detect-done-projects.sh                # 只读体检\n./scripts/update-engine.sh                       # 看上游有什么更新（dry-run）\n./scripts/update-engine.sh --apply               # 拉上游修复，不碰你的内容\n```\n\n对 AI 说话就更简单了:「进行 P03」「T12 做完了,归档」「建个任务:改官网首页文案,挂 P03」。\n\n---\n\n## 依赖\n\n`bash` · `git` · `python3` · `perl` — macOS 和多数 Linux 自带。外挂一个都不装也能跑。\n\n---\n\n## 出身\n\n抽象自作者用了一年多的私人知识库 `dailymd`(二十多个项目、四十多个任务的真实使用)。所有业务内容已剥离,留下的是骨架和踩过坑之后定下的规矩。\n\nMIT License.\n\n---\n\n\u003csub\u003e**English**: `workmd` is a plain-markdown, git-backed work management system designed to be read and written by both humans and AI agents. One folder per project, one folder per task, one `progress.md` each. No database, no API, no lock-in — just files an LLM can `grep`. Docs are in Chinese; the structure speaks for itself. Clone it and tell your AI to read `INSTALL.md`.\u003c/sub\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandyleimc-source%2Fworkmd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandyleimc-source%2Fworkmd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandyleimc-source%2Fworkmd/lists"}