Research Hub·← 返回索引research.jingyijun.com

Architecture study · 2026

把服务器上的 Codex 工作,变成可检索、可整理、可追溯、可操控的个人知识工作台

当前调研对象:Ubuntu 服务器和 MacBook。服务器继续作为事实源;浏览器负责会话与知识阅读,Obsidian 负责知识整理,Cursor / SSH 负责直接编辑、终端和 Codex 操作。公开发布不进入当前核心范围。

调研日期 2026-07-11 本机核验 Codex CLI 0.144.1 / Docker 29.5.1 证据类型 官方文档、项目源码仓库、本机只读检查 最简核心 归档 + AgentsView + Tailscale + Cursor/SSH
00

执行摘要:一个服务器事实源,三个 MacBook 入口

当前需求是单用户、全私有。因此暂缓发布平台和多层安全域。最小闭环由会话保全、AgentsView、Tailscale 与既有 Cursor Remote SSH 组成;Obsidian 同步和 Quartz按阅读习惯添加。

最终推荐
先建立不会传播删除的 Codex 增量归档,再让 AgentsView 通过 Tailscale 提供会话浏览与全文检索。MacBook 上用 Cursor Remote SSH 直接查看、编辑和操控服务器;需要 Obsidian 原生体验时,只给知识目录增加 Obsidian Sync + Headless 或 Syncthing。Quartz v5 只在需要“浏览器知识花园”时加入,属于可选只读展示层。
01

先保住数据

取证冻结快照中 232 条线程元数据只有 77 条仍有 rollout;155 条已确认被一次过宽关键词清理误删。第一步是建立不带 delete propagation 的增量、可恢复归档。

02

浏览、整理、操控各用合适入口

AgentsView 负责会话;Obsidian 负责 Wiki;Cursor / SSH 直接操作服务器文件、终端、tmux 和 Codex。三者共享服务器路径与证据 ID。

03

MADR-lite 只记录真正重要的取舍

MADR 是 Markdown 结构模板,不是新系统。单用户只保留日期、背景、决定、理由、后果和证据;不引入复杂审批、visibility 或发布状态机。

当前不部署 Cloudflare Access、public staging、OTel 后端或多人 Wiki。

它们没有直接提升个人会话浏览、知识整理和服务器操控体验。claude-replay 也只在需要分享某一次会话时临时使用。

01

研究问题、方法、证据边界

本报告把需求拆为五个问题:会话保存、会话浏览、知识整理、来源追溯、远程操控。网页发布和运行观测只作为可选扩展,不再主导当前架构。

研究拆解
问题需要回答什么主要证据交付判断
会话保存Codex 哪些文件是真正的逐字记录?缺失后还能否恢复?本机 $HOME/.codex 只读核验、官方 Codex 手册需要独立增量归档
会话浏览是否能搜索、回放工具调用、统计 token,并实时看到活跃会话?AgentsView、claude-replay、Codex viewer 项目文档AgentsView 最贴合
知识提炼如何把真正长期有效的取舍变成稳定、可引用的知识?MADR / ADR 模式、现有 memory hookMADR-lite + 证据指针
MacBook 访问如何浏览、整理并直接操作服务器内容?Tailscale、Obsidian Sync / Headless、Syncthing、Remote SSH网页浏览 + Obsidian 整理 + Cursor 操控
可选网页知识层何时值得把 Wiki 生成带搜索、反向链接和图谱的静态站?Quartz、SilverBullet、MkDocs、Pagefind 等Quartz 最匹配,但不进入核心 MVP

证据策略

  • 外部资料优先使用英文一手来源:官方手册、官方文档、项目仓库和许可证。
  • 本机调查以 metadata、文件时间线和必要的 Stop 审计片段为限;没有把完整对话、凭证、私有域名或环境变量写入报告。
  • GitHub 星标、push 时间和软件版本是 2026-07-11 的生态活跃度快照;质量判断同时依据源码、文档与实测。
  • Codex app-serverremote-control 等接口仍可能变化,报告把它们视为高级集成接口,不作为第一阶段的数据事实源。[S1]
本机核验没有做什么

没有公开或复制任何完整 transcript;没有改动 Codex 配置、memory hook、隧道服务或现有项目;没有启动对外监听端口。rollout 取证只读取 metadata、数量、文件时间线和已留存的最小 Stop 审计摘要。

02

本机事实:资源充足,MacBook 远程工作链路已经存在

这台机器完全能承担轻量会话索引与静态知识站。Tailscale 当前在线,Cursor Remote SSH 的 server 进程也正在运行。真正缺口是会话保全和知识目录同步。

16CPU 线程
Ryzen 7 5700X
60 GiB物理内存
核验时约 48 GiB available
644 GiB根分区可用空间
约 26% 已使用
29工作区项目目录
适合建立统一索引
327research Markdown
已有大量长文资产
18research HTML
可直接纳入精选入口
7Wiki Markdown
结构已采用 wikilinks
3已有接入路径
Tailscale / Tunnel / FRP

软件基线

Ubuntu 26.04 LTS、Docker 29.5.1、Node.js 24.12、Python 3.14.4、uv 0.11.7、Chrome 148、Codex CLI 0.144.1。Quartz 与 AgentsView 都能直接运行。npm 缓存中见过 Obsidian Headless 0.0.12,但当前没有安装 ob 命令,也未登录或关联远程 Vault。

网络与进程基线

Tailscale 服务处于 active 且本机在线;Cursor Remote SSH 服务当前已由 MacBook 连接并绑定 loopback。私有网页入口直接复用 Tailscale,编辑和终端继续复用 Cursor / SSH。Cloudflare Tunnel、FRP 与 Pages 暂不进入本方案。

先复用现有目录,不急着新建平台项目。

AgentsView 的服务文件、归档 timer 与可选 Quartz 配置成熟后,再放入 projects/codex-knowledge-hub/。Wiki 内容继续留在现有 wiki/,研究与项目继续留在 Raw Sources;第一阶段无需复制 staging 或重组根目录。

03

Codex 数据现实:元数据不等于逐字归档

Codex 本地状态可供浏览。不同文件有不同语义,保留周期也不同。索引系统必须容忍三类变化:transcript 缺失、活跃 JSONL 追加、事件格式升级。

155 条 rollout 的缺失原因已经确认:2026-07-08 一次 Codex 会话执行了过宽的关键词整文件清理。

责任会话 019f404e-96d1-7690-aed7-0cbb91d2fc62 从 13:58:40 开始。保留的 Stop 审计快照在 14:10:58 明确报告删除了 Claude/Codex 历史、缓存与旧备份,14:14:41 又承认“刚才这部分我删过头了”。155 条缺失记录所在的 36 个日期目录,其 mtime 全部集中在 14:08:05.257–14:08:05.289 或 14:09:26.334–14:09:26.351;没有一条落在其他时间桶。SQLite metadata 位于独立文件,因此没有同步消失。责任会话自己的 rollout 也被删掉,无法恢复逐条删除命令;但批次归因由独立审计摘要与完整目录时间线共同确认。[S34]

为什么可以排除 Codex 压缩、migration 与“从未生成”
  • 155 条缺失中 130 条 tokens_used > 0,部分达到数百万或数千万,说明多数 rollout 曾真实存在。
  • Codex 0.137–0.144 的压缩流程先生成并完整解码校验 .jsonl.zst,原子持久化并再次核验源文件状态,最后才删除 plain JSONL;本机与 home 全盘没有任何 .jsonl.zst 或压缩临时文件。0.143→0.144.1 也没有相关修复。[S35]
  • 同日安装的 migration 40 只执行 ALTER TABLE threads ADD COLUMN history_mode ...,不读写 rollout;它与删除时间接近,但没有因果路径。[S35]
  • 按 thread ID 搜索 archived_sessions/、其他已知 Codex 根目录和 home,没有找到被移动的副本。
本机 Codex 与知识数据源
数据源当前观察可承担职责不能承担职责建议
$HOME/.codex/sessions/77 个 rollout JSONL,约 629 MiB完整事件流、消息、工具调用、补丁、token、子线程证据误操作可直接删除;格式会演进只读索引 + 不传播删除的增量归档
$HOME/.codex/history.jsonl120 行 prompt 历史快速检索用户输入线索缺少助手响应与工具记录作为辅助索引,不当事实源
$HOME/.codex/state_5.sqlite232 条 thread metadata标题、cwd、时间、模型、token、rollout path 等定位信息不能替代已经缺失的 rollout只读读取;备份要保证 SQLite 一致性
$HOME/.codex/memory-hook/后台审计仍活跃生成记忆/决策候选候选不等同于已确认的长期记忆复用候选,增加审阅队列
$WORKSPACE/wiki/Obsidian 风格、含 wikilinks稳定知识、实体、概念、来源摘要不适合塞入完整逐字会话Obsidian 主编辑;Quartz 可选只读渲染
research/ / projects/327 篇研究 Markdown、18 个 HTML、29 个项目原始报告、项目说明、实施产物不建议整库同步到 MacBook ObsidianCursor Remote SSH 直接浏览和编辑

事件格式已经足够支撑高质量浏览

本机 rollout 已观察到 session_metaresponse_itemevent_msg、工具调用、补丁、token 统计与子线程关系等事件。现有工具已经能把 Codex 的 exec_commandapply_patch 等映射为可读视图。[S10]

官方能力的边界

Codex 官方接口与本项目的关系
能力官方定位适用点本架构结论
CODEX_HOME默认 $HOME/.codex,保存配置、历史和本地状态发现数据源以实际配置为准,不把默认路径写死到解析器
OpenTelemetry默认关闭;可导出 API、SSE、工具、审批、token 与工具结果片段等事件;默认 log_user_prompt=false未来运行观测Collector 事件 / 属性 allowlist;原始 trace 归入高敏感 Internal
codex app-server通过 WebSocket / Unix Socket 提供较底层应用协议未来自研实时 UI 或控制面先不用它作为长期档案协议,避免版本耦合
remote-control / Remote仍偏实验性;官方 Remote 依赖桌面端产品路径远程控制当前任务不能替代 Ubuntu 服务器上的历史网页门户

以上官方边界来自 Codex 官方手册,核验日期 2026-07-11。[S1]

04

现有方案版图:四类工具各自解决一段链路

会话 viewer、静态知识站、LLM observability、ADR 工具常被混在一起比较。按职责分开后,组合方案更清晰。“选一个平台”往往职责混杂。

4.1 会话浏览与导出

Codex 会话工具比较(GitHub 元数据核验于 2026-07-11)
工具核心能力主要优势主要缺口本机场景适配
AgentsViewMIT · 约 4.2k stars · 活跃 多 coding-agent 会话索引、SQLite FTS5、统计/费用、文件变更、SSE 实时刷新、HTML 导出 Codex 原生目录支持;默认 loopback;Docker;本地 SQLite;可要求鉴权;原始目录可只读挂载[S9] 完整显示仍依赖 rollout 存在;它是浏览层,不负责知识策展 推荐基线
●●●●●
claude-replayMIT · 约 748 stars · 活跃 把 Codex/Claude/Cursor 等会话转成单文件交互 HTML;章节、书签、文件活动、watch、编辑器 自包含、可嵌入、生成前可裁剪与模式脱敏;非常适合教学、复盘和单次分享[S10] 仅适合选中会话;压缩 blob 仍包含完整选中内容,CSS 隐藏不等于删除 精选导出
●●●●○
codex-viewer约 35 stars · 许可证未在 API 明示 Web 读取 Codex sessions 与 history,支持 SSE 更新 目标单一、原型直观 生态与安全能力弱于 AgentsView,长期维护风险更高[S11] 原型备选
●●○○○
Codex History ViewerMIT · VS Code 扩展 搜索、时间线、文件变更、标签和笔记 编辑器内体验完整,数据保持本地 入口依附 VS Code;跨设备和只读分享路径较弱[S12] 个人辅助
●●○○○
coding_agent_session_search约 953 stars · CLI/TUI SQLite 事实源、BM25、可选本地语义检索、跨 agent 搜索 索引和检索设计扎实,可作为自研数据层参考 没有面向普通浏览器用户的 Web UI[S13] 设计参考
●●●○○

4.2 知识门户与全文搜索

知识门户工具比较
工具与当前资料的匹配优势代价 / 边界结论
Quartz v5MIT · 约 12.7k stars · 默认分支 v5原生面向 Obsidian-flavored Markdown、wikilinks、反向链接和图谱把 Markdown 构建成带全文搜索、目录、反向链接和图谱的静态网站;与现有 wiki/ 高度一致[S18]不负责同步、数据库或编辑;每次内容变化后需要重新构建可选浏览器知识层
PagefindMIT · 约 5.3k stars可为任意静态 HTML 增加离线生成的全文索引无搜索服务器、部署极轻、适合混合静态产物[S19]只提供搜索能力,仍需内容结构与站点外壳增强组件
Obsidian Headless + Sync官方同步路径 · Headless open beta服务器命令行与 MacBook Obsidian 连接同一个 remote vault保留原生 Obsidian、wikilinks、插件配置、版本历史与端到端加密;Headless 可持续监听同步[S28][S31]需要付费 Sync 订阅;当前服务器没有安装 ob;同一设备不能同时运行 desktop Sync 与 Headless Sync订阅用户首选
SyncthingMPL-2.0 · 点对点文件同步服务器与 MacBook 直接同步一个知识目录免费、自托管、双方保留本地文件;可选择 send/receive 等 folder type[S32]两端都需常驻;并发编辑可能产生冲突文件;仍应独立备份免费首选
SilverBulletMIT · 约 5.6k stars浏览器 Markdown Wiki,支持双向链接、查询和脚本如果未来需要直接在网页编辑,体验比静态站自然[S20]服务端与写权限扩大攻击面;会改变现有 Git/Raw Sources 工作流编辑型备选
MkDocs MaterialMIT · 约 27.1k stars适合线性技术文档、导航和版本化站点成熟、插件丰富、部署容易[S21]Obsidian wikilinks 与知识图谱需额外适配文档站备选
Docmost / Outline多人协作平台适合团队空间、评论、权限与浏览器编辑协作和权限模型完整[S22][S23]数据库、缓存、升级和备份负担明显更高;会复制现有 Markdown 事实源团队阶段
Log4brainsApache-2.0 · 最近 push 2024-12专门生成可浏览 ADR 静态站决策历史呈现清晰[S25]职责过窄且活跃度较低;与 Quartz 会形成重复站点采用模型,不采用站点

4.3 运行观测与 trace

观测工具比较:适合未来运行,不替代历史知识库
工具采集方式最适合敏感度 / 运维重量阶段
Codex 原生 OTelCodex 自身导出事件;默认关闭,prompt 日志默认关闭;工具结果与错误仍需过滤token、工具、审批、错误、API/SSE 运行观测[S1]高敏感;取决于 Collector 过滤与后端未来首选采集
OpenLITApache-2.0 · 约 2.6k starsCLI hooks 采集 coding-agent session、prompt、工具、文件编辑与子 agent,输出 OTel快速获得 Codex/Claude/Cursor 统一观测面[S15]高敏感;完整栈含 ClickHouse 等组件可选第二阶段
Phoenix约 10.5k starsOTel-native trace / eval调试 LLM traces、评估、实验分析[S16]中;需要额外存储和生命周期治理问题驱动接入
Langfuse约 30.9k starsSDK / OTLP、trace、prompt、eval、成本团队化 LLM 产品观测与评测[S17]较重;自托管组件和升级面更大团队 / 产品阶段
claude-tapMIT · 约 2.5k stars代理层捕获 API 完整上下文与 trace协议调试、系统提示和上下文问题诊断[S14]极高敏感;能看到系统提示、工具 schema 与完整流量临时诊断专用
05

推荐架构:服务器是事实源,MacBook 提供三种使用视图

这套架构只有一个权威数据位置。浏览器负责搜索和阅读,Obsidian 负责整理 Wiki,Cursor / SSH 负责直接编辑与运行命令。每增加一个组件,都对应一个明确需求。

单用户最简逻辑架构。颜色表达职责,不代表公开等级;服务器文件始终是事实源。
Server facts
服务器事实源
Codex live datasessions / history / state
Workspacewiki / research / projects
版本化归档不传播源端删除
Server views
服务器服务
AgentsView · 必选会话搜索 / 时间线 / 统计
Sync · 按需二选一Obsidian Headless / Syncthing
Quartz · 可选Markdown → 静态知识网页
MacBook
三个入口
BrowserTailscale → AgentsView / Quartz
Obsidian整理同步到本地的知识 Vault
Cursor / SSH直接编辑、终端、tmux、Codex
事实源:服务器文件服务层:读取、索引或同步客户端:浏览、整理、操控

5.1 核心网页:AgentsView + Tailscale

  • AgentsView 原生发现 Codex sessions,首次运行建立本地 SQLite 索引,并在 127.0.0.1:8080 提供网页;支持会话搜索、文件变更、token / cost 统计与实时刷新。[S9]
  • 单用户场景优先直接安装一个 binary,以用户级 systemd service 常驻;Docker 只在希望额外限制文件读取范围时采用。
  • Tailscale Serve 把 loopback 页面映射为 tailnet 内 HTTPS。MacBook 浏览器只需加入同一 tailnet;无需 Cloudflare、FRP 或公网端口。[S4]
  • AgentsView 读取 live sessions 与归档目录;已经缺失的 155 条只显示 metadata-only,不能凭 SQLite 还原正文。

5.2 操控入口:Cursor Remote SSH

  • 当前服务器已经运行 Cursor Remote SSH server,说明 MacBook 到服务器的直接工作链路已经可用。
  • Cursor 打开的是服务器真实目录,不产生第二份项目副本;编辑 research/projects/wiki/ 后立即作用于事实源。
  • Remote SSH 同时提供远程 terminal、端口转发和服务器侧 extension;适合 tmux、Git、Codex CLI、脚本和服务管理。[S33]
  • 因此“网页直接写文件、运行 shell”的复杂控制台暂不需要。未来若明确需要纯浏览器写入,再比较 SilverBullet 或 code-server。

5.3 Quartz v5 与 MacBook Obsidian 的关系

同一批 Markdown 的两种视图
组件读取什么用户看到什么是否能编辑是否负责同步
MacBook ObsidianMacBook 本地同步副本原生 Vault、wikilinks、graph、插件与编辑器可以;修改再同步回服务器桌面 App 配合 Sync,或由 Syncthing 同步文件
Quartz v5服务器上的 Markdown 构建输入静态 HTML、全文搜索、目录、反向链接和图谱不能;它是静态站生成器不能;需要外部同步或直接读取服务器文件
浏览器Quartz 构建后的 HTML任意设备可打开的知识网页通常只读不涉及 Vault 同步
直接回答:MacBook 可以访问 Quartz 页面,但方式是浏览器访问。

只要服务器把 Quartz 静态站通过 Tailscale Serve 暴露到 tailnet,MacBook 的 Safari、Chrome 或 Obsidian 中的外部链接都能打开。Obsidian 不会把 Quartz 页面当成 Vault;要在 Obsidian 内编辑同一批知识,必须把 Markdown 同步到 MacBook 本地。Quartz 和 Obsidian 可以共享同一份 Markdown 源,但它们没有彼此依赖关系。[S18][S31]

5.4 可选组件何时才加入

  • Quartz:希望不用打开 Obsidian,也能在浏览器查看 Wiki、反向链接和图谱时加入。
  • claude-replay:需要把某一次会话做成可分享或教学的单文件 HTML 时临时运行。[S10]
  • SilverBullet / code-server:明确需要浏览器直接编辑 Markdown 或运行开发环境时再评估。
  • OTel / Phoenix / Langfuse:出现成本、延迟、失败分布或评测问题时再加入;当前不解决核心需求。
06

关键决策:为什么用 MADR,以及为什么只用轻量版

原始会话能告诉你“发生了什么”,却很难快速回答“当时为什么这样选”。MADR 用一篇普通 Markdown把背景、选项、决定、理由和后果固定下来。它是笔记模板,不是审批系统。

适合当前工作区的原因

纯 Markdown,可由 Obsidian 编辑、Git 追踪、Quartz 渲染;一篇只记录一个长期决定,并能链接 session ID、报告和文件。未来追问“为什么没选另一个方案”时,不必重新读数万行 transcript。[S24]

不应记录什么

临时命令、一次性排错、小范围实现细节和模型在单个 turn内的普通选择,不值得建 ADR。真正触发条件是:决定会持续影响未来工作,而且以后可能需要解释或推翻。

单用户 MADR-lite:三步足够
1 · 判断是否值得记录长期约定、重大取舍、难以逆转的选择
2 · 写一篇决策笔记背景、决定、理由、后果;必要时列备选
3 · 连接证据并维护状态session / 文件 / 报告;后来变化时标记 superseded

MADR-lite 最小字段

决策记录的最小稳定模型
字段含义为什么需要
title / date / project标题、日期、所属项目支持检索、时间线和项目聚合
statusactive / superseded单用户无需 proposed / accepted 审批流水线
context当时的问题、约束和目标避免只保留“结论口号”
decision / rationale最终选择和关键理由回答“选了什么、为什么”
alternatives真正考虑过的替代方案,可省略只有存在重要权衡时才写
consequences已知收益、代价和后续验证帮助未来判断是否应推翻
evidencesession ID、文件、报告 URL、commit(若有)从总结回到原始来源
MADR-lite Markdown 示例
---
title: 服务器作为唯一事实源
date: 2026-07-11
status: active
project: codex-knowledge-hub
evidence:
  - session_id: "<codex-session-id>"
  - report: "research/.../2026-07-11-codex-web-knowledge-hub.html"
---

## Context
Codex 会话、Wiki、研究和项目都已经位于服务器;MacBook 需要稳定访问和编辑。

## Decision
服务器保存权威文件;浏览器、Obsidian 和 Cursor 都只是访问或同步视图。

## Rationale
避免多个副本争夺事实源,也能继续使用服务器算力、路径和现有自动化。

## Consequences
Obsidian 需要独立同步;Cursor Remote SSH 可直接编辑;Quartz 只能做只读构建。
与现有 memory hook 的关系:

memory hook 可以提示“这里可能有长期决定”,但不需要另建复杂 review queue。人工确认后直接写入 wiki/decisions/YYYY-MM-DD-slug.md;若只是临时状态,继续留在会话或 volatile memory。

即使完全不部署 Quartz,MADR-lite 仍然有价值,因为 Obsidian、Cursor、普通文本工具和 Git 都能直接读取。Quartz 只负责把这些 Markdown 变成更适合浏览器阅读的页面。[S24][S26]

07

基础边界:保持单用户架构简单,重点防止再次丢数据

知识库当前只对本人可见。安全不再驱动组件拆分,只保留四条低成本底线:私网访问、只读索引、凭证不入库、备份不传播删除。

1 · 私网即可

AgentsView 和可选 Quartz 保持 loopback,统一通过 Tailscale Serve 给 MacBook 使用。当前不建立公网域名、Cloudflare Access 或 public build。

2 · Viewer 不改事实源

AgentsView 的 SQLite、缓存和服务配置放在独立目录。若用 Docker,把 sessions 以 :ro 挂载;若直接运行 binary,也不把索引目录放进 ~/.codex[S8]

3 · 备份不能跟随删除

禁止对归档使用 rsync --delete 或“镜像源端现状”的策略。保留历史版本或 snapshot;源文件被删时,归档仍应存在。任何清理先 dry-run、输出 manifest,并排除 sessions、history、state 与审计备份。

4 · 凭证不进入知识内容

同步和站点配置只引用系统 credential store、环境文件或交互登录;不把 token、密码和 cookie 写入 Markdown、Quartz 输出、Git 或报告。日志只记录状态,不复制会话正文。[S27]

以后需要公开时,另开一次“提取 → 审计 → 发布”任务。

那时再增加 public staging、脱敏扫描、独立域名与 Cloudflare Access。当前私有系统不为一个尚未发生的公开场景承担持续复杂度。[S7]

08

MacBook 三个入口:浏览、整理、操控

三个入口互相补充,无需强行合并成一个网页应用。浏览器最快找到信息,Obsidian 最适合维护知识网络,Cursor 最适合直接改变服务器状态。

B · 整理

MacBook Obsidian + 知识 Vault 同步

维护 Wiki、来源摘要、概念页和 MADR-lite 决策。

  • 只同步 wiki/ 或精选知识目录
  • Obsidian Sync + Headless,或 Syncthing
  • MacBook 保留本地副本和离线能力
  • 修改同步回服务器事实源
C · 操控

Cursor Remote SSH + Terminal

直接处理 research、projects、服务、Git、tmux 与 Codex。

  • 当前链路已经在使用
  • 编辑的是服务器真实文件
  • 可做端口转发和远程调试
  • 承担所有写入与运维操作

知识 Vault 同步方案怎么选

同步选择:只解决 Markdown 知识目录,不同步整个工作区
方案服务器侧MacBook 侧优点代价 / 建议
暂不同步无新增服务继续用 Cursor Remote SSH 编辑零配置、零冲突、立即可用没有 MacBook 原生 Obsidian;作为第一周默认
Obsidian Sync + Headlessob sync --continuous 连接 remote vaultObsidian desktop 连接同一 remote vault原生体验、版本历史、选择性同步、E2EE[S31]付费且 Headless 仍是 open beta;如果已经订阅,优先选它
Syncthing同步 wiki/ 文件夹同步到本地 Vault 目录免费、点对点、无需第三方内容服务[S32]两端常驻并处理冲突;未订阅 Obsidian Sync 时优先
Git提交知识目录pull / edit / commit / push来源追溯和版本审计最好不是实时同步;作为 Sync / Syncthing 的补充,不作为唯一日常链路
推荐的目录边界
$HOME/.codex/                      # Codex live source
$HOME/.local/share/codex-archive/ # 版本化会话归档,不传播删除
$HOME/.local/share/agentsview/    # AgentsView SQLite / cache
$WORKSPACE/wiki/                  # Obsidian / MADR-lite 知识源
$WORKSPACE/research/              # Cursor 直接访问;Quartz 按需纳入
$WORKSPACE/projects/              # Cursor 直接访问;不做 Obsidian 全量同步
$WORKSPACE/projects/codex-knowledge-hub/ # 成熟后再放 service / Quartz config

这样可以让 viewer、同步客户端与构建器各写自己的状态目录,同时保持 Codex 和工作区内容位置不变。

若同时部署 AgentsView 与 Quartz,优先用两个 HTTPS 端口或两个独立 hostname。

二者对 base URL、静态资源和实时接口的处理不同。为省去 subpath 调试,第一阶段只上线 AgentsView;Quartz 加入时再给它单独入口。

09

实施路线:两天形成核心闭环,其余按需增加

先保护数据,再上线会话网页,随后决定是否需要 Obsidian 同步与 Quartz。每一步都有独立可见收益。

1–2 小时

第 0 阶段:阻止再次丢失

为 sessions、history、state 和 memory-hook 审计建立版本化归档;同步策略不得传播源端删除。增加用户级 systemd timer,但先手工运行并恢复一条 session。把“关键词命中整文件删除”列为禁止操作,清理必须 dry-run + manifest。

半天

第 1 阶段:会话浏览网页

安装 AgentsView binary,以用户级 service 监听 loopback;同时索引 live sessions 与归档目录。先用 SSH port forwarding 验证,再用 Tailscale Serve 提供 MacBook HTTPS。验收:能按项目和关键词找到已知会话,打开工具调用与文件变更,并对缺失会话显示 metadata-only。

2–4 小时

第 2 阶段:MacBook 知识工作流

Cursor Remote SSH 保持现状;只在确实需要 Obsidian 原生体验时,wiki/ 选择一种同步。已有 Sync 订阅则安装 Headless;否则用 Syncthing。验收:MacBook 新建一篇测试笔记,服务器收到修改,冲突与删除恢复路径都实际演练。

半天

第 3 阶段:MADR-lite 与溯源

建立 wiki/decisions/,只迁移 3–5 条真正长期决定。每篇记录背景、决定、理由、后果和证据;memory hook 只提供候选。验收:从决策页能回到 AgentsView session、研究报告或具体文件。

可选 · 半天至 1 天

第 4 阶段:Quartz 浏览器知识页

只有在经常希望“不打开 Obsidian也能浏览 Wiki”时加入 Quartz。先只构建私有 wiki/;研究 Markdown 和既有 HTML 通过显式索引逐步纳入。验收:Tailscale 内可搜索、wikilinks / backlinks 正常、MacBook 多尺寸无溢出,源 Markdown 修改后能自动重建。

每阶段的硬性验收门

  • 归档:删除源端测试文件后,历史归档仍存在并能恢复;禁止 --delete 类镜像语义。
  • 会话:至少核验一条普通会话、一条含工具/补丁的会话、一条缺失 rollout 的 metadata。
  • 远程:MacBook 在同一 tailnet 能打开 AgentsView;Cursor 能编辑服务器真实文件并使用远程 terminal。
  • 同步:只运行一种主同步机制;测试双端编辑冲突、离线修改和删除恢复。
  • 决策:每篇只记录一个决定,证据链接可达;没有价值的临时选择不进入 Wiki。
  • Quartz(若部署):375 / 768 / 1280 / 1440 px 无横向溢出;搜索、wikilink 与反向链接可用;构建不会修改源 Markdown。
10

运维与失败模式:轻量组件也要可恢复

这套架构日常资源消耗很低。主要运维对象只有归档、AgentsView 索引、可选同步和可选 Quartz 构建。

主要失败模式与控制
失败模式可见症状根本控制验证方式
再次执行过宽关键词清理多个历史目录在同一分钟变空,但 SQLite 列表仍存在禁止按命中关键词整文件删除会话与审计材料;dry-run + manifest + 版本化归档清理演练只作用于临时 fixture;确认归档不传播删除
Codex 事件格式升级新会话缺字段、工具调用显示为空解析器按 event type 宽容读取;保存原始归档;固定 viewer 版本并先在副本升级升级前后对同一 fixture 做结构与页面快照比较
复制活跃 JSONL 得到截断尾行最后一行 JSON 解析失败append-safe 同步;解析器忽略未完成尾行并在下次重试对正在写入的 fixture 做两次同步与校验
SQLite 不一致快照备份库无法打开或缺最近数据使用 SQLite backup API / 一致性导出,不直接假设裸复制安全恢复库执行 integrity check 与代表查询
AgentsView 索引落后磁盘已有新会话,网页搜不到运行 daemon / sync;监测最后索引时间和源目录文件数创建一条短会话后等待刷新并检索唯一关键词
Obsidian / Syncthing 冲突出现 conflict 文件、笔记回滚或删除扩散同一设备只运行一种同步方式;保留版本历史;避免双端同时编辑同一篇双端编辑 fixture,检查冲突处理和删除恢复
Quartz 内容陈旧Obsidian 已修改,网页仍是旧版本文件变化触发构建;页面显示构建时间;失败保留上一版修改测试笔记并确认搜索索引与页面同时更新
Tailscale 或 SSH 暂时不可达网页与 Cursor 同时连接失败保留本机 loopback;检查 tailnet 在线状态、SSH 与服务进程;MacBook Obsidian 仍可离线阅读本地副本断网后阅读本地 Vault,恢复网络后确认同步续传

建议的周期任务

每 5–15 分钟

oneshot 增量会话归档;记录成功时间、文件数和字节变化,不记录会话正文,也不从归档删除源端已消失的文件。

每日

检查 AgentsView 最后索引时间和 Tailscale 可达性;若使用 Obsidian / Syncthing,检查同步队列与冲突;若使用 Quartz,仅在知识内容变化时重建。

每周

报告 metadata / existing / missing 三个计数、备份新鲜度和同步冲突;随机恢复一条最近会话,抽查一条 MADR-lite 证据链接。

每月 / 升级前

做完整恢复演练;在归档副本上升级 AgentsView / Quartz;确认新版本不会重写 live source 或丢失旧索引。

资源与运维重量

AgentsView 的单 binary + SQLite、Tailscale、一个文件同步进程以及 Quartz 静态构建都属于轻量组件;对这台 60 GiB 内存服务器几乎没有资源压力。保持架构轻量的关键是不要提前加入数据库型 Wiki、OTel 后端、public staging 和多套反向代理。

11

最终建议:先做四件事,Quartz 放到第五件

本机的 Tailscale 与 Cursor链路已经可用。核心增量只剩会话保全和 AgentsView。Obsidian 同步取决于你的使用频率,Quartz 取决于你是否真的需要浏览器知识花园。

Architecture decision
核心采用“版本化归档 + AgentsView + Tailscale + Cursor Remote SSH”。知识整理继续使用现有 wiki/;需要 MacBook Obsidian 时,在 Obsidian Sync + Headless 与 Syncthing 中二选一。MADR 采用轻量 Markdown 模板。Quartz v5、claude-replay、OTel 与公网发布全部按需。

这一选择让服务器继续作为唯一事实源,同时分别获得会话网页、原生知识编辑和完整远程操控能力;没有为了尚未发生的公开或多人需求引入持续运维。

建议按这个顺序执行

  1. 今天第一步:$HOME/.codex/sessions、history、state 与 memory-hook 审计建立不传播删除的版本化归档,并恢复一条 fixture。
  2. 今天第二步:在 loopback 启动 AgentsView,用 77 条现存 rollout 验证解析、搜索、文件变更和 155 条 metadata-only 会话表现。
  3. 今天第三步:用 Tailscale Serve 给 MacBook 浏览器开放 AgentsView;Cursor Remote SSH 保持现有链路。
  4. 本周:wiki/decisions/ 写 3–5 条 MADR-lite;如果确实希望在 MacBook Obsidian 中整理,再选择 Sync + Headless 或 Syncthing。
  5. 使用一段时间后:只有当“浏览器里看 Wiki”成为高频需求,才部署 Quartz;只有分享某次会话时才运行 claude-replay。
三条不可妥协的操作边界
  • 任何关键词清理都不得整文件删除 Codex sessions、history、state、memory-hook 审计或恢复材料。
  • 归档永不因为源端文件消失而自动删除历史版本;备份必须经过实际恢复验证。
  • 同一设备只运行一种知识同步机制;Quartz 永远只读 Markdown 源,写入由 Obsidian 或 Cursor 完成。

最小可交付范围是:归档 timer、AgentsView、Tailscale Serve、现有 Cursor Remote SSH、wiki/decisions/ 与一套恢复/浏览器验收脚本。这个范围已经覆盖会话浏览与检索、知识整理与溯源、服务器事实源和 MacBook 操控;Quartz 与同步客户端都可以在核心闭环稳定后独立加入

12

来源与核验日期

外部来源访问日期:2026-07-11。GitHub 元数据也在当日核验。星标和活跃度是当日快照。

  1. OpenAI Codex ManualCODEX_HOME、本地状态、OpenTelemetry、app-server、remote-control 与 Remote 能力边界。
  2. OpenTelemetry Semantic Conventions for Generative AIOTel GenAI 语义约定与可迁移观测数据模型。
  3. OpenTelemetry Collector独立 Collector 的接收、处理与导出架构。
  4. Tailscale Serve在 tailnet 内提供 HTTPS / 反向代理服务。
  5. Tailscale Funnel公网入口能力及其与 tailnet-only Serve 的差异。
  6. Cloudflare Tunnel无需开放源站入站端口的隧道架构。
  7. Cloudflare Access Controls身份、策略与 deny-by-default 外部访问控制;仅在未来需要外部协作时评估。
  8. Docker bind mounts: read-only原始会话目录使用 ro bind mount 的官方语义。
  9. kenn-io/agentsviewCodex 支持、SQLite FTS5、SSE、Docker、HTML export、loopback 默认值与外部 origin/auth 配置。
  10. es617/claude-replayCodex rollout 解析、自包含 HTML、书签、裁剪、secret redaction,以及嵌入 payload 的隐私警告。
  11. nogataka/codex-viewer专用 Codex Web viewer 与实时刷新原型。
  12. HizTam/codex-history-viewerVS Code 内的 Codex 历史搜索、时间线和笔记能力。
  13. coding_agent_session_search跨 coding-agent SQLite/BM25/语义检索设计。
  14. liaohch3/claude-tap代理层上下文与 API trace 查看,适合高敏感诊断。
  15. OpenLITcoding-agent hooks、OpenTelemetry-native traces、工具/文件/subagent 事件与观测后端。
  16. Arize Phoenix DocumentationOTel-native LLM tracing、evaluation 与调试。
  17. Langfuse Self-hosting自托管 LLM observability、trace、prompt、evaluation 组件。
  18. Quartz v5 / DocumentationObsidian Markdown、wikilinks、backlinks、graph、search、private pages 与静态构建。
  19. Pagefind静态站构建后全文索引,无需运行搜索服务器。
  20. SilverBullet浏览器 Markdown Wiki、双向链接、查询与脚本。
  21. Material for MkDocs成熟技术文档站生成与导航能力。
  22. Docmost / Docs多人协作 Wiki、权限与自托管组件。
  23. Outline / Hosting docs团队知识库、协作、权限与自托管。
  24. MADR: Markdown Architectural Decision Records上下文、选项、决策、后果等版本控制友好的 ADR 模板。
  25. Log4brains从 Markdown ADR 生成静态决策站点。
  26. Architecture Decision Record organizationADR 方法、工具和实践索引。
  27. OWASP Logging Cheat Sheet日志数据最小化、敏感字段和安全日志实践。
  28. Obsidian Headless服务器命令行运行 Obsidian Sync / Publish,以及 Vault 配置边界。
  29. Obsidian Publish官方托管发布、站点范围与精选内容工作流。
  30. Cloudflare Pages静态站构建与托管,可承载 public-reviewed Quartz 输出。
  31. Obsidian Headless Sync / Obsidian SyncHeadless open beta、持续同步、remote vault、选择性同步、E2EE、版本历史,以及同一设备不要同时运行 desktop Sync 与 Headless Sync 的官方约束。
  32. Syncthing Getting Started / Folder Types两设备点对点同步、设备 ID、共享文件夹与 send / receive 模式。
  33. Visual Studio Code Remote SSH远程打开真实目录、服务器侧 extension、terminal、端口转发和 SSH 配置;本机同时实测到 Cursor Remote SSH server 正在运行。
  34. 本机 rollout 删除取证责任 session 的 memory-hook Stop 审计快照、state_5.sqlite 只读查询、155 条缺失 path 与 36 个父目录 mtime 交叉核验;冻结于 2026-07-11。
  35. Codex rollout compression source / migration 40压缩写入、校验、持久化、删除顺序,以及 migration 仅新增 history_mode 列的源码证据。