Skip to content
// 0x
Go back
0x19 // 工具设计

把个人经验编译为 AI Agent 可复用资产 — Praxis 知识库的架构思路

起点

传统个人知识库的目标用户是人。你用 Obsidian、Notion 或 Logseq 记笔记,偶尔回头翻看,大部分笔记成为数字废墟。

但如果目标用户是 AI Agent 呢?

Agent 能记住上下文,能主动关联,能遵循指令执行复杂操作。把经验交给 Agent 管理,意味着知识库从”被动存档”变成”主动调用的可执行资产”。

Praxis 就是围绕这个前提设计的。

核心设计:经验编译链

系统的核心是一条价值链:

真实问题 → 调查 + 决策 → 行动 → 反馈 → 可复用认知/skill → 可兑换资产

每个阶段对应一个目录和一种笔记类型:

阶段目录type说明
灵感00-inbox/inbox原始输入,无格式要求
问题01-problems/problem自包含:现象+调查+决策+反馈写在一个文件
项目02-projects/project由明确问题驱动,不得凭空创建
认知03-knowledge/knowledgeL2 起步,提炼后可升级到 L3
产出04-assets/asset可复用内容,如 Agent Skill

关键约束:

入口:为什么是 MOC 而非目录树

Agent 不需要 Sidebar。遍历目录树找文件既不高效也不优雅。

Praxis 的入口是 +.md —— 一个 Map of Content:

## 活跃问题
- [[01-problems/跨 Agent 会话连续性挑战]] `[investigating]`

## 知识
- [[03-knowledge/models/Agent 扩展的三层隔离]]
- [[03-knowledge/methods/混沌输入-结构化输出]]

所有笔记通过 frontmatter 的 status 字段声明状态,MOC 上的链接和状态标签由 Agent 自动维护。人用 Obsidian 打开这个文件,看到的是完整的知识地图;Agent 读到的是结构化的导航指令。

会话协议:Agent 如何记住上一次对话

Praxis 有一个核心痛点:你换了 Agent 运行环境(从 Codex 切到 opencode,或者换了一台机器),Agent 怎么知道上次聊到哪里?

解决方案是一个三层协议:

会话记录 (session-history.json)  ← 通用事实源,由 track-agent-sessions skill 维护

Agent 状态投影 (core/agent-state.md)  ← Praxis 自己的视图

MOC (+.md)  ← 当前焦点,wikilink 入口

每次新会话启动时,Agent 按以下流程操作:

  1. 读取 core/agent-state.md + +.md,获取上次焦点
  2. 通过 praxis-session skill 登记当前会话(包括运行时标识和原生 session ID)
  3. 完成工作后,回写终态(ended / interrupted)
  4. 同步 MOC 和状态文件

中断恢复的场景也被考虑在内:如果检测到上次会话是 active 但没有可靠证据证明异常中断,Agent 把它标记为 interrupted 并新建一条记录,不丢失历史。

Agent 行为准则:不是你的回声壁

Praxis 的 AGENTS.md 里有一条规定特别重要:

指正优先于迎合。当用户判断与既有原则、目标或已知事实冲突时,Agent 必须指正;当用户结论缺乏支撑时,Agent 必须追问。

这意味着 Agent 在 Praxis 中不是一个执行机器,而是一个校正器。它有权质疑用户的判断,有权指出知识库内部的矛盾。

这个设计的出发点是:如果知识库的目标是”产生复利”,那错误积累就是在产生”负复利”。让 Agent 有指正的权限,比让用户舒服地犯错更重要。

目录设计的取舍:为什么用数字前缀

目录名是 00-inbox/01-problems/ 而不是 inbox/problems/

这不是给 Agent 看的——Agent 靠 frontmatter 的 type 字段识别类型。数字前缀纯粹是为了 Obsidian 的文件列表排序。同一套文件,人用 Obsidian 浏览时看到的是有序列表,Agent 读取时走 wikilink 跳转,互不干扰。

类似的取舍:

从问题到可复用资产:一个实例

最早的问题是:“Agent 会话记录缺少原生 ID,导致无法精确追踪与回溯”。

这个问题经历了完整的转化链:

问题: 会话缺少唯一 ID → 调查: Codex 有 CODEX_THREAD_ID,opencode 有 session ID
→ 方案: 封装为跨 Agent 的通用会话历史 Skill
→ 实现: track-agent-sessions skill(独立 npm 包)
→ 验证: 在 Codex 和 opencode 两个环境下跑通安装验收
→ 沉淀: 04-assets/通用 Agent 会话历史 Skill
→ 认知: 03-knowledge/models/机器事实源与人类投影分离

一个问题驱动了一个可复用 Skill 的诞生,同时产生了一条可复用的认知模型。这正是 Praxis 的核心价值。

当前状态

Praxis 目前处于 v2.4.1,核心架构冻结。已经解决了数个基础问题(会话协议、跨 Agent 兼容、状态一致性),但还在等待更多真实问题来驱动下一步演化。

如果你也在用 AI Agent 来管理知识,以下问题值得思考:


Share this post on:

Previous Post
为 AI Agent 设计跨运行时会话追踪协议 — track-agent-sessions 的构建过程
Next Post
mysqladmin ping 骗了我——Unix socket 和 TCP 之间的调试陷阱