用途:在用户指定的文件系统位置建立并维护长期累积的个人或项目知识库。思路借鉴 Andrej Karpathy 描述的模式:新来源到达时由 LLM 一次性编译进结构化 wiki,之后查询读取已综合的页面,而非每次从原始分块重新推导。
主要能力:三层结构为原始来源 raw/(只读不可改)、wiki/(LLM 生成的实体页、概念页、来源摘要页、综合页)与根目录 SCHEMA.md(页面类型、命名、标签等约定)。三种操作为 ingest(写入来源、写来源摘要页、外科式更新相关页、更新索引与日志)、query(先读 index.md 定位候选页再综合回答,可把答案归档回 synthesis/)、lint(检查矛盾、过期声明、孤立页、缺失概念与断链)。可选图图层可将页面编译为 nodes.jsonl、edges.jsonl、graph.sqlite、graph.graphml,类型化语义边需显式来源与证据引文,不得凭训练数据推断。
使用方式:先确定 wiki 位置(用户指定路径、项目或全局 agent 指令中的路径,否则用当前项目的 wiki/),读取 SCHEMA.md,切勿静默合并两个 wiki。初始化运行 python scripts/init_wiki.py <project-root>(或全局用 --wiki-dir wiki --raw-dir wiki/raw),须待 setup 输出 "status": "ready"。图操作示例:uv run --script scripts/wiki_graph_lint.py wiki/、uv run --script scripts/wiki_graph_extract.py wiki/。查询在大 wiki 上可用 uv run --script <skill-root>/scripts/wiki_search.py "query terms" --wiki <absolute-wiki-root>,无依赖时加 --no-embed。
适用场景与限制:适合随时间累积文本材料(论文、转录、会议记录、客户通话等)并希望被组织而非每次丢进对话的场景;也适用于对既有 wiki 的常态查询与 lint。需注意原子页面(软上限约 400 行、硬上限 800 行)、索引优先导航、超过约 150 页时索引分片、每页 YAML frontmatter、用 str_replace 做外科式编辑等可扩展性纪律。主要失败模式包括静默污染、wiki 读取自身输出导致的漂移、以及随规模增长的维护成本。检索默认走本地 FastEmbed 模型,无远程嵌入路径;不索取 API key。不自动爬取项目;写入 agent 记忆文件前须获用户批准。