Daniel Miessler 的 TypeScript 开源项目,把生活和工作都建模成从 current state 到 ideal state 的持续爬坡,由 agent 推进。个人 agent 系统的一种完整形态样本,12 分钟。
GitHub repo 欣赏,个人 agent 系统。
localhost:31337,是你实际看到自身状态、目标和工作的地方;v5 用它替代了此前所有零散服务,含 22 条 dashboard 路由、wiki API、语音、hooks、可观测性、cron,以及可选的 Telegram / iMessage 桥接。PRINCIPAL_IDENTITY 与 DA_IDENTITY 成对在会话开始时加载。cat, we don't want it.」一切都要对你、对你的 DA、对 rg、对任何别的东西透明可解析。SKILL.md」。skill 是容器,SKILL.md 是前门,真正的活尽可能是真实代码。一句话概括:Prompts wrap code; code doesn't wrap prompts.containment-zones.ts 声明每个目录的隐私分区,ContainmentGuard 作为 PreToolUse hook 拦截跨区泄漏,每次公开发布跑 12 道安全闸,发布分两阶段(stage → publish)且永不自动串联。隐私在这里不是策略文档,而是代码里的结构。curl -sSL https://ourpai.ai/install.sh | bash。安装向导处理 Bun、Git、Claude Code 校验,ElevenLabs key(可选)、DA 身份设置、语音挑选、Pulse 的 launchd 注册与验证;已有的 ~/.claude/ 会自动备份成带时间戳的目录再被覆盖。PAI/USER/ 目录,好让 PAI 从第一天起就认识你。/interview,DA 带你走四个阶段:Phase 1 TELOS(Mission、Goals、Beliefs、Wisdom、Challenges、Books、Mental models、Narratives)、Phase 2 IDEAL_STATE(对你而言成功是什么样)、Phase 3 Preferences(工具、约定、工作风格)、Phase 4 Identity(DA 人格微调)。.md、.markdown、.txt、Obsidian、Notion、Apple Notes 摄入,按 v5 分类法(TELOS、KNOWLEDGE、PROJECTS、FEED 等)逐块分类并带溯源提交。USER/ 目录永不被安装器或升级触碰、设置是合并而非覆盖(只更新身份与版本字段)、全程 git 化可回滚、DA 的记忆能挺过错误,最后一条是「DA can fix it」——它帮你建的,也能帮你修。context:全文的引力中心。作者判断「The biggest unsolved problem with AI is that nobody can define what 'good' or 'done' actually means for a given task」,PAI 因此围绕理想状态而建——更准确地说,是围绕「从当前状态到理想状态的转移」(Current State → Ideal State),并把它编织进每一层。
费曼一下:给 AI 派活最难的部分不是让它干,而是说清楚干成什么样算数。理想状态就是把「什么算干完、什么算干得好」提前写下来,让系统有个可以瞄准的靶子。没有靶子,再强的模型也只是在原地转圈。
context:理想状态的首要表达形式。作者把它类比成软件的 PRD——「it captures what done looks like so you can build toward it」——但强调它的通用性:从设计、艺术、哲学到工程、战略都适用。一份 ISA 有十二个章节和五重身份(articulation、test harness、build verification、done condition、system of record)。
费曼一下:一份把「完成的样子」写清楚的文档,但它不只是文档。它同时是你的验收清单、你的测试脚本、你判断「可以收工了」的那条线,以及事后回看这件事的唯一档案。写它的时候在定义目标,跑它的时候在做验证。
context:系统把理想状态分解成的离散条目,原文说它们「populate the document and double as verification items」,并明确这就是 PAI 能在任何类型工作上爬山的原因。ISC 追踪最早在 v2.4.0 随 The Algorithm 一起引入。
费曼一下:把一个模糊的「做好它」拆成十几条能逐条打勾的具体条件。拆完之后,抽象的好坏判断变成了机械的对照检查——这既让系统知道下一步该往哪走,也让它知道什么时候该停。
context:原文用「That's how PAI hill-climbs toward ideal state on any kind of work」总结 ISA 与 ISC 的组合效果,也解释了本文标题里「爬山式」的来源。
费曼一下:不要求一步跳到终点,只要求每一步都能判断「比刚才更接近理想状态了吗」。只要每次都朝着更高处挪一点,加上足够多的循环,就能从任意起点走到高处。这套系统的七阶段循环就是那个反复挪动的动作。
context:v5.0.0 的自我重新定性——「PAI is no longer 'AI scaffolding' — it's a Life Operating System」。原则一节甚至用「A Life OS, not an agent harness」把它与 agent harness 明确区隔:写代码、跑 agent 只是服务于更大目标的能力。
费曼一下:普通的 agent 工具关心「这个任务怎么完成」,生活操作系统关心「你这个人想成为什么样、离那儿还有多远」。目标、工作、关系、健康、财务都在它的管辖范围内,写代码只是它顺手会的一件事。
context:PAI 三层中的身份层,是「你对话的那个声音与人格」。作者从 2016 年《The Real Internet of Things》起就持有的判断是:轨迹为 chatbots → agents → assistants,终点是「one DA per person」,每个人只有一个 DA 作为接入全部 AI 的主界面。
费曼一下:不是每个应用配一个 AI 助手,而是你只有一个助手,它替你去跟所有的 AI 和服务打交道。界面也由它当场给你拼出来,而不是你去不同的 app 和 dashboard 里翻。
context:/interview 四阶段中的第一阶段,覆盖 Mission、Goals、Beliefs、Wisdom、Challenges、Books、Mental models、Narratives,存放在 PAI/USER/TELOS/。原文用加粗给出全系统最硬的一句依赖——「Without TELOS, your DA has nothing to optimize against.」
费曼一下:你的使命、目标、信念和思维模型写下来之后,才构成 AI 的判分函数。它不是「关于你的背景介绍」,而是系统据以判断「这样做对你是好还是坏」的那把尺子。尺子不存在,优化就无从谈起。
context:被称为 PAI 的引力中心,每个非平凡任务都要过它。仿照科学方法构建,v6.3.0 的阶段序列是 OBSERVE → THINK → PLAN → BUILD → EXECUTE → VERIFY → LEARN,并由分类器按 prompt 选择 MINIMAL / NATIVE / ALGORITHM 模式与 E1–E5 层级。
费曼一下:把「解决一个问题」固定成一条流水线:先看、再想、再计划、再造、再执行、再验证、再学习。固定下来的好处是每一步都能被单独检查和改进,而不是让模型一口气从问题跳到答案,中间发生了什么谁也说不清。
context:作者引用 David Deutsch 的框架作为 The Algorithm 判定「好」的标准。它与 ISC 一起,构成了这套系统对质量的双重定义:ISC 管「是否达标」,hard-to-vary 管「解释是否可靠」。
费曼一下:一个好解释的特征是你没法随便改动它的任何一部分而让它仍然说得通——每个细节都在承重。反过来,那些怎么改都成立的说法(比如「因为神灵不高兴」)看似解释了一切,其实什么也没解释。
context:作者认为多数人用 AI 的错误在于「failing to feed it the big picture」,PAI 的本质是把关于你、关于目标、关于可用工具的正确上下文递给最聪明的模型。结论直白——「The model matters less than what surrounds it.」
费曼一下:同一个聪明人,你只丢给他一句话和你把整个来龙去脉交代清楚,产出天差地别。与其纠结换哪个模型,不如先把它需要知道的东西铺好。搭好脚手架,模型自己会爬上去。
context:上一条的反面。原文说随着模型变强,它们需要的操作性指令越来越少,因此 PAI 持续审计并删除过度规定性的指导,只保留正确的上下文和工具。一句总结是「The system gets smaller as the models get bigger.」
费曼一下:你写给 AI 的每一条「必须这样做」的规定,都是在赌它自己想不出更好的办法。模型每升一级,这类赌注就多输一点。所以聪明的系统会主动往回删规矩,让位给模型自己的判断——系统越活越薄,才是它跟得上模型的证据。
context:PAI 自 2025 年 6 月起就不用 RAG。原文的替代方案是「带交叉引用的富文本 + ripgrep 这类快速搜索」,理由是它给出了人们想从 RAG 得到的一切,却没有 embedding 复杂度、检索不稳定和保真度损失。配套原则是纯文本优先——「If you can't read it with cat, we don't want it.」
费曼一下:与其把文档切碎、转成向量、再靠相似度猜哪块相关,不如把它们老老实实存成能读的文本文件,用全文搜索直接找。你的文件夹就是索引。代价是搜索没那么「智能」,收益是你随时能看见系统到底存了什么、找到了什么。
context:PAI 的 skill 系统偏向确定性代码执行,层级被定死为 code → CLI → workflows → SKILL.md。skill 是容器,SKILL.md 是前门,真正的活尽可能落在真实代码上。原文的口号是「Prompts wrap code; code doesn't wrap prompts.」
费曼一下:能用代码写死的部分就别交给模型每次重新发挥。提示词负责判断「现在该跑哪段代码」,代码负责把这段活干得次次一样。反过来做——让代码去调度一堆提示词——结果就是每次运行都在开盲盒。
context:PAI 把隐私做成代码结构而非承诺:containment-zones.ts 声明每个目录的隐私分区,ContainmentGuard 作为 PreToolUse hook 拦截跨区泄漏,每次公开发布跑 12 道安全闸,发布分 stage 与 publish 两段且永不自动串联。
费曼一下:一个知道你全部目标、关系、健康和财务的系统,隐私不能靠「我们承诺不外传」。做法是给每个目录贴上密级标签,让一个守门程序在工具真正读写之前就拦住跨密级的动作——不靠自觉,靠结构上做不到。
graph TD
C1["Ideal State 现状到理想状态"]
C2["ISA 理想状态制品"]
C3["ISC 理想状态判据"]
C4["The Algorithm 七阶段循环"]
C5["hard-to-vary 解释标准"]
C6["TELOS 使命与目标底座"]
C7["DA 数字助理"]
C8["Life Operating System"]
C9["Context scaffolding 重于模型"]
C10["Bitter-pilled engineering"]
C11["文件系统即索引 无 RAG"]
C12["Skills 确定性单元"]
C13["复利式记忆"]
C14["自我改进循环"]
C15["结构性隐私 containment zones"]
C16["爬山式推进"]
C6 -->|支撑| C1
C1 -->|表达为| C2
C2 -->|分解| C3
C3 -->|验证| C4
C1 -->|驱动| C4
C5 -->|质量标准| C4
C4 -->|实现| C16
C3 -->|实现| C16
C16 -->|支撑| C8
C1 -->|层级| C8
C8 -->|层级| C7
C7 -->|读取| C6
C9 -->|对立面| C10
C9 -->|支撑| C11
C11 -->|支撑| C13
C13 -->|因果| C14
C14 -->|演化| C8
C12 -->|支撑| C4
C10 -->|支撑| C12
C15 ---|张力| C8
这套系统的思想网络有一个明确的根:TELOS。使命、目标、信念这些东西一旦被写成文件,才让 Ideal State 有了具体内容——否则「理想状态」只是一个空词。这是全网络唯一的外生输入,也是原文把 /interview 称为最重要一步的原因。
从 Ideal State 往下是一条具体化链条:理想状态表达为 ISA,ISA 分解为 ISC,ISC 反过来充当 The Algorithm 的验证项。这条链条的精妙在于方向的反转——目标向下拆解成判据,判据再向上回流成验收。ISA 的五重身份(表达、测试装置、构建验证、完成条件、记录系统)正是这次反转的产物:同一份文档在链条的不同方向上扮演不同角色。
The Algorithm 与 ISC 共同实现了爬山式推进:算法提供反复移动的动作,判据提供每步的高度读数。缺任何一个,爬山都退化——只有循环没有判据是原地打转,只有判据没有循环是纸上谈兵。而爬山能力向上支撑了「Life OS」这个定性:正因为理想状态的推进机制对设计、艺术、哲学、战略同样适用,PAI 才敢宣称自己管的是生活而不只是代码。
hard-to-vary explanations 是从系统外部引入 The Algorithm 的质量标准,它与 ISC 分工:ISC 判断「达没达标」,hard-to-vary 判断「解释靠不靠得住」。前者是清单式的,后者是认识论式的,两者叠加才让「好」这个词在一个通用系统里勉强可操作。
工程侧存在一组对生的张力:Context scaffolding 主张多给上下文,Bitter-pilled engineering 主张少给指令。它们看似矛盾,实则是同一判断的两面——把「你是谁、要什么、有什么工具」讲透,把「具体怎么做」交还给模型。这条分界线也解释了 Skills 确定性单元为何存在:确定性代码承接的恰恰是那些模型不该每次重新发挥的部分,于是「少给指令」不等于「放任」。
文件系统即索引是 Context scaffolding 在存储层的落地:既然关键是把正确文本递给模型,那么可被 cat 和 rg 直接读取的纯文本就比向量库更合适。它进而支撑了复利式记忆——记忆之所以能层层累积并被审计,前提是它本来就是人和机器都能读的文件。记忆再因果地驱动自我改进循环:做过的事、学到的东西、满意度信号回流成下一次的输入,而改进的成果又演化回整个 Life OS 本身。这是全网络中唯一的闭环,也是这套系统敢自称 OS 而非工具集的结构依据。
最后,结构性隐私与 Life OS 之间是一条真实的张力线,不是支撑关系。一个要求捕捉你目标、关系、健康、财务全部信息的系统,天然把风险面做到了最大;作者的应对不是缩小捕捉范围,而是用目录级隐私分区、PreToolUse 拦截和发布前的多道安全闸,把「不该跨出去」变成结构上做不到。张力没有被消解,只是被移进了代码里。
给 AI 派活最难的部分,从来不是让它开始干,而是说清楚干成什么样算数。我们习惯了讨论模型能力、上下文长度、工具调用,却很少承认一件更朴素的事:绝大多数任务失败,是因为发起任务的人自己也没想明白「完成」长什么样。PAI 把这句话摆到了系统设计的正中央——AI 当下最大的未解问题,是没人能定义某个任务的「好」或「完成」到底意味着什么。
于是它做了一件在个人工具里很少见的事:把「理想状态」变成可写、可拆、可验证的东西。ISA 像一份 PRD,但适用于设计、艺术、哲学、战略;系统再把它分解成一条条判据,这些判据既填充文档,又直接充当验收项。目标和验收在同一份文件里合二为一,抽象的好坏判断就变成了机械的逐条对照。这就是它能在任何类型的工作上爬山的原因——不要求一步登顶,只要求每一步都知道自己是不是更高了。
真正让我停下来想的是它的判分函数从哪来。答案是一句几乎可以独立成立的判断:没有 TELOS,你的 DA 没有任何东西可以优化。使命、信念、目标、思维模型不是「关于你的背景介绍」,而是系统据以判断某件事对你是好是坏的那把尺子。尺子不存在,再强的优化循环也只是在空转。这句话对任何人都成立,无论他用不用这套系统。
它的工程口味同样值得记住,因为那是一组自洽的偏执。纯文本优于不透明存储,判据直白到可执行:如果你没法用 cat 读它,我们就不要它。上下文脚手架重于模型选择,因为模型本身没有环绕它的东西重要。而更反直觉的一条是:模型越强,需要的指令越少,所以要主动删掉过度规定性的指导——系统随模型变大而变小。这几乎是一条可以拿来自测的标准:如果你的 AI 系统在每次模型升级后变得更臃肿,那它大概走错了方向。
最锋利的一句藏在它的自我定性里:这是一个 Life OS,不是 agent harness。写代码、跑 agent 都只是能力,重点是你的生活,不是工具。一个系统愿意在自己的首页上否定一个更容易被理解的身份,通常意味着它想清楚了要往哪爬。