用途:obelisk 通过已安装的 obelisk CLI 检索本地编码智能体历史记录。采用反应式用法:当用户询问“我是怎么修复 X 的”“上次我们做了什么”等问题时,编写有边界的 JS 查询,读取其 JSON 结果,再基于证据作答。
主要能力:提供默认检索接口,包括 overview(定位项目与近期入口)、sessions(按结构筛选定位会话)、search(按主题查找消息证据)、messages(读取单条消息、有界窗口或会话区间,CLI 0.3.0+)、memories(回忆已保存结论)、summaries(读取会话摘要)、sql(表达其他接口无法完成的连接或聚合)。专用与旧版接口仍可调用,需按其 API 契约使用。
使用方式:查询时用唯一临时目录避免路径冲突,例如: qdir=$(mktemp -d /tmp/obq.XXXXXX 2>/dev/null || { d="/tmp/obq.$$.$RANDOM"; mkdir "$d"; echo "$d"; }) qfile="$qdir/query.mjs" cat > "$qfile" <<'JS' const hits = search('auth fix', { limit: 5 }); return hits.map(h => ({ session_id: h.session.id, uuid: h.message.uuid, content_type: h.message.content_type, snippet: h.message.text?.slice(0, 240), })); JS obelisk --query "$qfile" CLI 在异步包装器中运行该文件,return 输出 JSON;查询只读,脚本内无文件系统或网络访问。快速关键词查找可用: obelisk --search "keyword" --nonce "obq-<unique-token-you-invent>" nonce 需为唯一字面量,shell 替换无法在记录中标识调用。
索引与权限:成功的 CLI 调用是必需的,它会在检索前刷新 ~/.obelisk/obelisk.sqlite,不得在刷新失败时降级为陈旧的只读索引。若出现 ~/.obelisk 写权限错误(如 SQLITE_READONLY、EACCES、EPERM),需以提权形式重跑同一命令,或使用宿主等价的写权限机制;若无法获得或遭拒,应停止并报告阻碍。直接读取 SQLite 或 JSONL 不能替代成功刷新。
适用场景:广泛综合、设计历史、进度总结、周/月回顾,或用户做过、学到、决定、尝试、放弃的内容,可参考查询模式与检索语义;项目/文件/会话范围内的检索、多步检索、关联或证据分类可参考检索语义。保存、归档或更新记忆前需先读记忆工作流;写原始 SQL 前需先看 schema。显式 /obelisk recap ... 需先读 recap 概览。
限制:查询需限定范围并去重、投影,尽量保持综合 JSON 约 10k–12k 字符;is_invoking: true 视为当前会话而非独立历史证据;普通对话证据使用可见非元文本,thinking 与工具输出具有不同证据角色。经批准的记忆变更通过独立变更入口运行:obelisk --attune /tmp/register-memory.mjs,--attune 仅暴露 remember() 与 forget(),且需先用 --query 取回必要 ID。其他收费、价格、平台或效果信息暂未提供。