跳到主要内容

Everything as Code:当你的任务变成一段可以提交进 Git 的 Markdown

· 阅读需 5 分钟
Creator of UnDercontrol

我们已经习惯了 "X as Code":基础设施即代码、配置即代码、文档即代码。原因很简单——纯文本可以 diff、可以 review、可以版本控制、可以被脚本和 AI 直接读写。

那为什么你的任务、笔记、待办,还锁在某个 SaaS 的数据库里,只能通过它的 UI 一个个点?

UnDercontrol 的答案是:Everything as Code。在这里,一个任务就是一段带 YAML frontmatter 的 Markdown。仅此而已。

任务即 Markdown:一段带 frontmatter 的纯文本,apply 后渲染成任务卡片

一个任务长什么样​

---
title: 给发布流程加上冒烟测试
status: in-progress
tags: [release, testing]
deadline: 2026-07-10
---
## 目标
每次发版前自动跑一遍关键路径,失败就阻断 tag。

## 步骤
- [x] 登录 + 建任务
- [ ] 浏览三个核心页面
- [ ] 断言无 console error

frontmatter 是这个任务的结构化元数据:标题、状态、标签、截止日期、指派人、链接——覆盖 80% 场景的那 20% 字段都是一等公民,并且可查询。frontmatter 下面的正文,是这个任务的正规文档(Single Source of Truth):一段能长期演进的 Markdown。

没有专有格式,没有需要导出的二进制,没有 vendor lock-in。你看到的就是全部。

apply,就像 kubectl​

把这段 Markdown 存成文件,然后:

ud apply -f task.md

规则和 kubectl apply 一模一样:frontmatter 里没有 id 就是创建,有 id 就是更新。apply 是整体替换——文件即真相。

想批量导出、改完再灌回去?ud get task -o apply 会把任务输出成 apply 能吃的同一种格式,round-trip 无损。这意味着你的任务列表可以像代码一样被 sed / jq / 脚本处理,再一次性 apply 回去。

无损 round-trip get -o apply 导出成本地 md,脚本处理后再 ud apply 回去

为什么这对开发者(和 AI)是解锁级的​

1. 可版本控制、GitOps 友好。 任务是纯文本,自然可以 diff、可以进 Git、可以走 PR review。你的项目计划和你的代码可以住在同一个 commit history 里。

2. AI agent 的原生输入输出。 Markdown 是人类可读、也是 AI 可读的。任何终端里的编码 agent——Claude Code、Codex、OpenCode 或任意 terminal-based agent——都能通过 ud CLI 直接读写你的任务,不需要专门的插件或 SDK。整个知识库是 plain-text-native、AI-ready 的。

# agent 在你的终端里就能干这些
ud get task 'status = in-progress'
ud apply -f new-task.md
ud describe task 8b30140e

3. 可脚本化、可组合。 类 SQL 的查询语法 + kubectl 式的动词(get / describe / apply / delete / patch),让任务管理变成一件能塞进任何自动化流程的事。CI 里建任务、脚本里批量改标签、cron 里生成周报——都只是几行 shell。

多入口单一真相、AI agent、CI 脚本都通过 ud apply 写入同一份 Markdown 数据源

不只是任务​

这里有个容易被忽略的点:UnDercontrol 的 Markdown 编辑器不是任务专属的。它是一个共享在所有文本表面上的编辑器——任务、笔记、甚至开支和账户的备注,用的都是同一套编辑体验、同一套 Markdown 内核。

所以 "Everything as Code" 里的 "Everything" 是字面意义的:你的待办是 Markdown,你的笔记是 Markdown,你记的一笔账的说明也是 Markdown。一个数据源,按你喜欢的方式组织,all-in-one。不用在多个 app 之间切换,AI agent 也只需要学会一个工具就能访问你的全部信息。

三层内容结构​

每个信息单元有三层,各有设计意图,但你完全可以按自己的习惯用:

层格式设计意图
任务正文Markdown正规的、持续演进的文档——Single Source of Truth
笔记 (notes)Markdownappend-only 时间线——记录这个信息单元如何演进
评论 (comments)纯文本轻量的、线程式的对话——短而聚焦

区分一个 "文档" 和一个 "任务" 的,不是数据结构,而是标签、元数据和视图。UnDercontrol 不强制你用某种目录层级或打标签规范——同一个任务可以出现在多个 board(board 本质是"保存的查询",不是容器,所以没有重复)。

开始用​

如果你也受够了把想法困在某个 UI 里,试试把它们变成可以 apply 的 Markdown:

ud apply -f my-first-task.md

Everything as Code,不只是一句口号——它是让你的任务、你的脚本、你的 AI agent 终于说同一种语言的方式。