通用 AI Agent 项目快照编译器
通过一次性重扫描,把当前代码仓库编译成可复现、可查询、可交接的项目结构图和治理基线。CLI 与 MCP 提供通用入口,Codex、Claude Code、Cursor、Windsurf、Cline、OpenCode 只作为集成层。
核心定位
本项目是一个通用 AI Agent 项目快照编译器。它不做长期记忆,不做项目管理,不直接执行开发任务,而是把当前代码状态转换为结构化、可查询、可交接的项目基线。
核心职责:扫描当前代码仓库,生成统一项目图、分层目录索引、图关系索引、治理基线、本地 SQLite 查询缓存,并通过 handoff package 交给项目承接体系。
| 它是 | 它不是 |
|---|---|
| 项目事实基线生成器 | 项目管理工具 |
| 通用 CLI / MCP runtime | Codex 专用 Skill |
| 一次性快照编译器 | 长期记忆系统 |
| 结构化查询和交接层 | 人类报告生成器或代码开发执行器 |
生命周期
生命周期是快照型,不维护后续状态。每次生成都基于当前 worktree、配置和 Adapter 版本重新构建。
启动
→ 读取项目配置
→ 发现项目形态
→ 调度 Adapter
→ 提取代码事实
→ 构建 Canonical Graph
→ 生成治理基线
→ 写入 SQLite 本地缓存
→ 生成 checksum
→ 运行 Quality Gate
→ 生成 Handoff Package
→ 交给项目承接体系
→ 生命周期结束
单仓库 / monorepo
在仓库根目录启动,一个仓库生成一个 snapshot.sqlite,通过 subsystem 节点区分 apps、services、packages、mobile、workers。
多仓库分布式系统
每个仓库各自生成快照,通过 federation manifest 在 contract / IO boundary 层连接。第一版预留 federation,不强做完整聚合。
仓库与缓存策略
SQLite 是当前工作区的本地查询缓存,不提交仓库。跨开发节点的一致性依赖确定性重建,而不是共享数据库。
提交到仓库
.agent/project-intake.config.yml- schema version
- Adapter 配置
- 忽略规则与安全脱敏规则
不提交到仓库
- SQLite 数据库
- 全量图快照
- 机器路径和扫描中间产物
- 本地缓存
.agent/cache/
.agent/snapshots/
*.snapshot.sqlite
总体架构
核心是平台无关 runtime。Codex、Claude Code、Cursor、Windsurf、Cline、OpenCode 都只是集成层,MCP 是推荐通用入口。
project-snapshot/
├── core/ 平台无关核心能力
├── cli/ 通用命令行入口
├── mcp/ 通用 Agent 工具入口
├── contracts/ 跨平台协议
├── integrations/ Codex / Claude Code / Cursor / Windsurf / Cline / OpenCode
├── templates/ 配置模板
├── fixtures/ 多技术栈测试项目
├── tests/ 自动化测试
└── docs/ 面向开发者文档
core
Discovery、Adapter、Graph、Storage、Query、Validation、Governance、Handoff、Determinism。
cli
所有 Agent 工具都能调用,默认输出 JSON,不输出平台专属格式。
mcp
对主流 Agent 编辑器暴露统一工具,不绕过 query protocol。
统一项目图模型
不同语言、框架、前端、后端、移动端和分布式项目都必须映射到同一套模型,框架差异进入 Facet。
Node
表示项目抽象对象。普通文件、函数、类默认不建 Node,只建 Locator;入口、契约、实体、核心流程、业务能力、治理目标才提升为 Node。
workspace | system | subsystem | package | boundary | surface
capability | flow | entity | state | integration | test
Edge
表示项目关系。关键 Edge 必须有 Evidence。
contains | exposes | triggers | calls | reads | writes
produces | consumes | depends_on | guards | validates
affects | verified_by | located_at
Locator、Contract、Evidence、Facet
Locator
repo-relative path、symbol、route、component、config key、schema、test name。所有路径必须 repo-relative。
Contract
HTTP、RPC、MQ、Webhook、file、UI、DB、third-party。对外 Contract 默认是 restricted zone。
Evidence
ast_symbol、route、import、call_chain、config、test、comment、doc。文档只能作为弱证据。
Facet
React props、Spring annotation、Nest decorator、Django URL pattern、UniApp 页面配置、Android Manifest。
分层目录索引与图关系索引
目录索引用于看全貌,图关系索引用于查影响面。全貌查询只返回高层摘要,细节必须按 node id 二次展开。
workspace
system
subsystem
boundary
surface
capability
flow
locator
capability.order.cancel
writes -> entity.order.status
calls -> capability.inventory.release
produces -> contract.event.order-cancelled
verified_by -> test.order.cancel
affected_by -> governance_item.order.status-risk
SQLite Schema
采用核心表 + metadata_json / facets 扩展。表结构不跟框架走,框架差异由 Facet 承接。
| 表 | 用途 |
|---|---|
| snapshots | 快照身份、schema、scanner、git、scan status。 |
| adapter_status | 每个 Adapter 的版本、状态和能力矩阵。 |
| nodes / edges | 统一项目图与关系。 |
| locators / evidence | 代码定位和判断证据。 |
| contracts | 输入输出契约与 IO 边界。 |
| governance_items | 治理基线初始事实,不存长期状态。 |
| facets | 框架和语言特有信息。 |
| fingerprints / checksums | stale 判断与确定性重建。 |
治理项进入 SQLite,但只存 initial_status、suggested_severity、bypass_policy、evidence。当前状态、用户决策、优先级和历史由项目承接 Skill 维护。
派生视图
Agent 默认只能查询派生视图,不能直接 dump 全量 nodes/edges。视图是插件面向 Agent 的产品接口。
root_index_view
项目全貌、子系统、治理摘要、Adapter 状态。
subsystem_index_view
某个子系统的边界、能力、契约和健康状态。
capability_view
业务能力的入口、流程、实体、契约、风险和测试。
io_boundary_view
HTTP、RPC、MQ、Webhook、文件、第三方服务和共享数据。
impact_scope_view
输入 node/path/symbol,返回影响面和推荐验证。
governance_summary_view
治理摘要、硬阻断、高风险、medium 决策项和 low review 数量。
governance_item_view
展开单个治理项的证据、影响节点和复核方式。
stale_check_view
根据 changed files 判断哪些节点和 contract 过期。
adapter_health_view
扫描完整性、partial / failed 区域和影响。
budget:
max_nodes: 20
max_edges: 40
max_locators: 20
max_evidence: 10
max_depth: 2
include_code_body: false
查询协议
Agent 不直接写 SQL,只通过语义查询访问派生视图。工具内部返回 JSON,聊天展示可以转 YAML。
root()
subsystem(id)
capability(id)
io_boundary(filter?)
impact(target, depth=2)
governance(filter?)
governance_item(id)
stale(changed_files)
adapter_health()
expand(id, depth=1)
evidence(id)
locate(id)
search(query)
第一版不做分页。超预算时返回 truncated: true 和 next_queries,避免 Agent 机械翻页撑爆上下文。
治理基线
治理基线识别当前代码中的治理事实和候选项,但不维护长期任务状态、用户决策历史或正式优先级。
| 置信度 | 进入位置 | 规则 |
|---|---|---|
| high | 主治理线 | 直接代码证据 + 可定位路径 + 可解释影响。 |
| medium | 主治理线 | 有明确代码证据,但影响范围或业务含义不完整,需要决策或复核。 |
| low | review_queue | 弱代码线索,不作为事实,不影响实施边界。 |
| unsupported | 丢弃 | 没有代码证据或纯猜测。 |
治理状态与不可绕过项
open | needs_user_decision | accepted | dismissed_by_user
deferred_by_user | fixed | blocked
高风险项不可人为绕过,只能通过复核降级。高风险包括安全漏洞、数据破坏、权限绕过、资金/订单/核心流程正确性风险、系统无法启动或部署风险。
Severity
快照插件生成 suggested_severity: critical | high | medium | low。
Priority
项目承接 Skill 维护 priority: P0 | P1 | P2 | P3。
Adapter Registry
Adapter 由注册表驱动,声明检测规则、依赖、能力、输出、证据策略、checksum 策略和失败策略。
name:
display_name:
type: language | framework | platform | structure | contract | governance
version:
maturity: experimental | stable | verified | deprecated
priority:
deterministic:
detect:
requires:
conflicts_with:
file_scope:
ignore_scope:
capabilities:
outputs:
evidence_policy:
checksum_policy:
failure_policy:
| 覆盖层 | MVP 能力 |
|---|---|
| JS/TS、React、Next、Express、Nest、Monorepo、Governance-basic | 做深,优先 verified。 |
| Java/Spring、Python/FastAPI/Django/Flask、Go、Vue | 可用 partial,向 stable 演进。 |
| UniApp、Android、MQ/RPC、File IO | 识别 + 基础索引,experimental。 |
质量门禁
快照不是生成成功就可信,必须通过结构、证据、查询、确定性、安全和治理校验。
passed
可正式交接。
warning
可交接,但项目承接 Skill 必须记录限制。
failed
拒绝交接,必须修复配置、Adapter 或 schema 后重建。
校验维度
项目承接交接契约
Handoff 不交全量内容,只交入口、规则、质量状态和治理摘要。
handoff_package:
package_version:
handoff_id:
snapshot:
storage:
query:
quality:
governance:
stale_policy:
ownership:
warnings:
next_actions:
职责转移:快照插件拥有不可变 baseline;项目承接 Skill 接管任务状态、治理当前状态、用户决策、delta 和历史。
CLI 与 MCP
CLI 是所有平台的底座,MCP 是推荐的通用 Agent 工具入口。MCP 是 CLI/runtime 的薄封装,不重新实现扫描逻辑。
CLI
project-snapshot init-config
project-snapshot discover
project-snapshot rebuild
project-snapshot validate
project-snapshot query
project-snapshot handoff
project-snapshot status
project-snapshot clean-cache
MCP Tools
rebuild_snapshot
validate_snapshot
query_snapshot
handoff_snapshot
snapshot_status
clean_cache
统一错误响应
{
"code": "",
"message": "",
"severity": "info | warning | blocking | fatal",
"retryable": true,
"blocks_handoff": true,
"suggested_action": "",
"details": {}
}
项目配置
仓库提交 .agent/project-intake.config.yml,只描述扫描规则、Adapter 策略、治理策略、脱敏策略、确定性规则和质量门禁。
version:
project:
scan:
adapters:
contracts:
governance:
redaction:
determinism:
quality_gate:
cache:
安全与脱敏
快照中禁止保存 secret value、.env 值、token、password、private key、本机绝对路径和真实机器信息。
允许保存
- key name
- repo-relative locator
- risk signal
- redacted marker
硬失败
secret_leak_detected 是 fatal,必须阻止 handoff。
测试策略
第一版最重要的不是覆盖率数字,而是四个硬保证:可复现、可查询、不泄密、可交接。
测试层
- Schema Tests
- Determinism Tests
- Adapter Tests
- Query View Tests
- Governance Baseline Tests
- Security / Redaction Tests
- Handoff Tests
- CLI / MCP Contract Tests
Fixtures
- react-app、nextjs-app
- node-express-api、nestjs-api
- spring-boot-api、python-fastapi、go-service
- uniapp、android-native、monorepo、distributed-mini
MVP 范围
MVP 目标是能对真实老项目执行一次全量重建,生成本地 SQLite 项目图快照,支持基础查询、治理基线、质量校验和 handoff。
必须做
- CLI 全套命令与 MCP 六个工具
- SQLite schema、派生视图、查询协议
- Adapter Registry 与基础 Adapter
- 治理基线、Quality Gate、Handoff Contract
- 核心测试框架
不做
- incremental scan、分页、全量图 dump
- 真正图数据库、提交 SQLite
- 完整多仓库 federation、复杂全语言 call graph
- 外部漏洞库强接入、任务状态维护