-
Notifications
You must be signed in to change notification settings - Fork 4
Architecture Overview zh CN
语言: English · 简体中文
LWC 是本地优先的 Rust CLI,整体架构遵循一条核心原则:SQLite 持有规范知识,其他表示要么是派生状态,要么是部署本地状态。因此,Agent 可以使用更丰富的检索和图能力,而不必把某个可选服务变成事实来源。
当一项变更同时涉及存储、索引、图、Agent 集成或恢复边界时,应先阅读本页。
Agent / 人类 / 脚本
|
v
Clap CLI 分发器 -------- stdio MCP 服务 -------- AgentTarget 安装器
| | |
+---------- 有界命令与结构化 JSON -------------+
|
v
规范 Store(SQLite)
Sources · Pages · links
ingest · tags · retrieval
operations · changesets
|
+-----------------+-----------------+
v v v
生成 Markdown 文档图投影 检索投影
供人类阅读 Grafeo/SurrealDB FTS5 + spans
|
v
持久化 Work
项目源码文件 -------------------------------> CodeGraph 索引
独立、项目本地
二进制入口分为三层:
-
cli::definitions使用 Clap 声明公开命令语法; -
cli::dispatch解析 scope、执行 live/draft 边界检查、选择 Store 打开模式并分发命令; -
store、work、external_graph、codegraph、agent、mcp、trans与view承担各自领域行为。
命令在标准输出返回结构化 JSON,在标准错误返回结构化错误。面向人的说明放在字段中,不会替换机器契约。
隐藏 worker 只是内部传输机制。用户只通过 work list、status、watch、cancel 与 resume 管理任务。
每个 Wiki 只有一个 wiki.db。规范写入通过 SQLite transaction,把不可分割的记录一起更新:
- Source 快照与 pending ingest job;
- Page 正文、引用、provenance、链接、检索文档、spans 与操作记录;
- tag 策略与成员关系;
- 检索权重或基于 query fingerprint 的反馈;
- changeset 状态与 inverse 元数据。
Source 内容不可变并按内容寻址,Page 则是可维护、可更新的知识。二者通过 page_sources 明确关联,任何一方都不会暗中替代另一方。
Store identity 包含稳定 store ID 与持续变化的 revision fingerprint。Changeset、checkpoint、span 以及并发 restore 都依赖这些身份信息发现 stale 或错配状态。
Contentless SQLite FTS5 表保存规范化后的 Page、Source、passage 和 sentence terms。精确 span 记录保存 UTF-8 byte range 与内容指纹。Reindex 可以根据规范文档重建这些数据。
.lwc/wiki/ 是为人类和 Markdown 工具生成的目录,不是另一条写入入口。物化时会先暂存文件再替换,因此失败可以恢复,也不会重新定义规范状态。
Grafeo 与 SurrealDB sidecar 接收规范 Page、Source、link、citation 与 semantic relation 的投影。Mutation 会把脏文档键追加到持久化 Work;graph verify 则比较当前 sidecar 与规范投影键和指纹。
CodeGraph 索引的是检出项目文件,而不是 Wiki 记录。LWC 会在用户全局缓存中固定并校验一个 runtime 版本,同时把各项目数据库保存在 .lwc/codegraph。即使 MCP 通过同一个 lwc_explore 暴露两者,代码结构仍然是独立证据平面。
以下状态控制当前安装,而不是 Wiki 知识:
-
.lwc/config.json与全局~/.lwc/config.json; - Work 请求和进度文件;
- 文档图 sidecar;
- CodeGraph runtime 与项目索引;
- AgentTarget receipt 和宿主配置;
- 编译进二进制的 Viewer 资源。
因此,checkpoint restore 会替换 wiki.db,然后按照当前部署配置重建或重新排入派生投影。
Changeset 是与某个 live store 和 base revision 绑定的稀疏 SQLite overlay:
.lwc/wiki.db live 规范 Store
.lwc/changesets/<name>.db 稀疏草稿记录
.lwc/changesets/draft-<name>/ 隔离 Work 与图运行目录
草稿读取会组合 live 基线和 touched draft entities。Commit 不会替换整个 live 数据库,而是在 live write lock 下校验指纹并合并一个准确 patch。这样既能保留无关 live 写入,也能生成 touched-entity inverse。
读取命令会以只读方式打开当前格式 Store。旧 Store 如果需要受支持迁移,会先通过可写迁移路径更新,再执行原请求。
Mutation 拒绝 --scope all。Deployment-local 配置、Viewer、checkpoint、CodeGraph 生命周期和文档转换如果无法加入草稿原子契约,也会拒绝 changeset selector。
MCP 被刻意限定为只读。缺少索引时只返回 readiness guidance 或 typed unavailable state;任何 MCP 请求都不会下载 runtime、启用图或修改记忆。
LWC 把结果区分为三类:
- 未发生规范写入: validation、conflict 或获取锁失败;
- 规范成功: transaction 已提交,所有必要投影均已完成或成功排队;
- 规范部分成功: 知识已提交,但图排队、清理或物化失败。
第三类会明确返回 canonical_committed 或 checkpoint_restored 等字段,并给出准确恢复命令。只有文档明确说明高层操作具备幂等恢复能力时,才可以重试它。
派生失败不能通过假装规范知识从未提交来回滚正确数据。反过来,Work 成功也不能代替最终图一致性校验。
架构层防护包括:
- 对 Store、草稿、Work、配置与 sidecar 做规范路径校验并拒绝符号链接;
- 显式项目选择与 CodeGraph path 必须落在 project root 内;
- owned file 使用 create-new 或原子替换;
- Source ingest、转换参数和部分集成写入前执行 secret scan;
- Viewer 只监听 loopback,且只开放 GET/HEAD;
- MCP 只有一个只读工具,并验证显式项目路径;
- Agent host 通过 ownership receipt 与 marker-bounded block 精确更新。
这些措施不能把不可信本地账号变安全。LWC 假定当前进程已经获得用户授权,可以读取所选项目和用户级集成文件。
| 组件 | 负责 | 不负责 |
|---|---|---|
| Store | 规范知识与 transaction invariant | 外部图是否可用 |
| Work | 长任务的持久执行状态 | 规范业务判断 |
| 外部图适配器 | 投影、查询与校验 | Source truth |
| CodeGraph 适配器 | Runtime 固定与项目代码索引边界 | Wiki 记忆 |
| MCP | 有界只读探索 | 初始化或 mutation |
| AgentTarget 适配器 | 官方宿主文件和 LWC-owned fragment | UI-only 设置或宽泛 trust approval |
| Viewer | 本地查看 | 编辑、迁移或构建索引 |
| Trans 适配器 | 安全子进程转换 | 自动 Source ingest |
新增能力前,应回答:
- 哪一条规范记录能够证明该事实?
- 新状态属于 canonical、derived 还是 deployment-local?
- 哪个 transaction 能保证不可分割写入原子完成?
- 派生状态如何重建和验证?
- 规范提交之后、投影完成之前发生故障会怎样?
- 哪个 scope 和 project boundary 授权这项操作?
- 现有 Store、Work 或 AgentTarget 路径是否已经可以满足需求?
如果这些答案仍不清楚,这项变更就不应跨越架构边界。
下一篇:存储与数据模型
LWC Wiki
- Home · 首页
- Project overview · 项目简介
- Basic concepts · 基本概念
- Use cases · 应用场景
- Installation and upgrades · 安装与升级
- Quick start · 快速开始
- Persistent memory · 持久记忆体系
- Agent workflow and memory policy · Agent 工作流与主动记忆策略
- Sources and ingestion · 来源与知识整合
- Wiki pages and provenance · Wiki 页面与来源证明
- Search and context · 搜索与上下文载入
- Document knowledge graph · 文档知识图(记忆图网)
- Code graph · 代码图
- Word graph · 词图
- Tags and strong context · 标签与强上下文
- Document conversion · 文档转换
-
MCP server and
lwc_explore· MCP 服务与lwc_explore - Skills, Hooks, and Instructions · Skills、Hooks 与 Instructions
- AgentTarget installation · AgentTarget 安装与集成
- Changesets · Changeset 原子变更
- Work system · Work 任务系统
- Checkpoints and rollback · Checkpoint、恢复与回滚
- Read-only Viewer · 只读可视化界面
- Architecture overview · 总体架构
- Storage and data model · 存储与数据模型
- Retrieval and indexing · 检索与索引设计
- Graph projection and performance · 图投影与性能设计
- MCP, Hooks, and AgentTarget design · MCP、Hook 与 AgentTarget 设计
- Safety and trust boundaries · 安全模型与信任边界
- Maintenance and diagnostics · 维护与诊断
- Troubleshooting and FAQ · 故障排查与常见问题
- Migration and compatibility · 迁移与版本兼容
- Support and issue reporting · 获取帮助与问题反馈
- CLI and configuration reference · CLI 与配置参考
- JSON output and error contract · JSON 输出与错误契约
- Limits and glossary · 系统限制与术语表
- Contributing and development · 贡献与开发指南
- Testing and release process · 测试与发布流程
- Wiki style guide · Wiki 编写规范