mcpField
A
Aegis

Aegis

本地服务
github.com/fuwasegu开发工具11520 周前更新

关于 Aegis

Aegis 是面向 AI 编码 Agent 的 MCP 服务,使用依赖边构成的 DAG 确定性地编译每次任务所需的架构文档,而非依赖 RAG 检索。适合希望约束 Agent 遵循架构规则并减少 token 消耗的团队。

主要功能

  1. 01基于 DAG 的确定性上下文编译
  2. 02按目标文件选取相关文档,不做搜索排序
  3. 03agent 与 admin 两个 MCP 接口分离
  4. 04规则变更需人工审批(INV-6)
  5. 05支持团队共享已审批知识的 bundle 与源文件模式

适用场景

  1. 01为编码 Agent 注入指定模块的架构约束
  2. 02通过 observe 记录遗漏的规范并生成待审提案
  3. 03在团队之间同步已审批的架构知识库

MCP 相关

Aegis 作为 MCP 服务运行,agent 接口提供 aegis_compile_context、aegis_observe 等工具,admin 接口提供初始化、导入与审批工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"aegis": {
"command": "npx",
"args": [
"-y",
"@fuwasegu/aegis"
]
}
}
}
启动命令npx -y @fuwasegu/aegis

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@fuwasegu/aegis

工具

6

收录的工具列表 · 更新于 3 周前

参数类型必填说明
target_filesarray是正在编辑的文件路径(必須)
target_layersarray否显式指定的层名称(可选;省略时根据路径推断)
agent_idstring否用于工作区可见性的可选客户端自标识(仅存储在 compile_log 中;不影响编译输出)。
commandstring否命令名称:scaffold、refactor、review 等。
planstring否用于扩展上下文的自然语言计划文本(需要 IntentTagger)
intent_tagsarray否用于扩展上下文的显式意图标签。设置后(包括 []),不会使用 SLM 标注器。省略时,将根据 plan 使用 SLM 回退。
max_inline_bytesnumber否内联内容预算,以 UTF-8 字节为单位(默认值:131072 = 128KB)
content_modeenum否内容交付模式(默认值:auto)auto | always | metadata
include_debugboolean否在响应中包含 debug_info(near_miss_edges、layer_classification、budget_dropped)。默认值:false — 相同的诊断信息始终会被记录,并可通过 aegis_get_compile_audit 检索。
min_relevancenumber否省略相关性分数低于此阈值(0-1)的文档/模板。没有相关性分数的文档(未提供 plan)始终保留。默认值:0(不筛选)。

详细介绍

Aegis Aegis

Aegis

面向 AI 编码 Agent 的基于 DAG 的确定性上下文编译器

日本語版 README | 技术指南

Aegis 是一个 MCP 服务,可在 AI 编码 Agent 上强制执行架构指南。它不使用 RAG,而是通过依赖边构成的 DAG,确定性地编译 Agent 针对一组目标文件所需的文档。不搜索,不排序,结果确定。

快速开始

  1. 将 Aegis 添加到 IDE 的 MCP 配置中(参见安装)
  2. 向 AI Agent 提出请求:“为此项目初始化 Aegis 并部署适配器规则。”
  3. Agent 会自动运行 aegis_init_detect → aegis_init_confirm → npx @fuwasegu/aegis deploy-adapters

数据库存储在项目根目录的 .aegis/aegis.db 中。.aegis/ 目录包含自己的 .gitignore,无需手动配置。

安装

Aegis 使用两个 MCP 接入面,二者缺一不可:

接入面作用工具
agent上下文编译、观察记录及相关读取,不修改 Canonical6 个工具(compile、observe、audit、known_tags、workspace_status、detect)
admin初始化、审批、分流24 个工具(6 个共享工具 + 18 个仅限管理员使用的工具)

仅使用 agent 接入面无法初始化项目或批准提案。这种隔离可确保 AI Agent 未经人工批准,无法修改架构规则。(INV-6)

Cursor

添加到 .cursor/mcp.json:

{
  "mcpServers": {
    "aegis": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "agent"]
    },
    "aegis-admin": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "admin"]
    }
  }
}

初始化后,deploy-adapters 会生成 .cursor/rules/aegis-process.mdc,这是一条 Cursor 规则,指示 Agent 在编写代码前先查阅 Aegis,并在完成后报告违规情况。

Claude Code
claude mcp add aegis -- npx -y @fuwasegu/aegis --surface agent
claude mcp add aegis-admin -- npx -y @fuwasegu/aegis --surface admin
或者手动添加到 .mcp.json
{
  "mcpServers": {
    "aegis": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "agent"]
    },
    "aegis-admin": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "admin"]
    }
  }
}

初始化后,deploy-adapters 会在 CLAUDE.md 中追加 `` 部分(如果文件不存在,则会创建)。

Codex
codex mcp add aegis -- npx -y @fuwasegu/aegis --surface agent
codex mcp add aegis-admin -- npx -y @fuwasegu/aegis --surface admin
或者手动添加到 .mcp.json
{
  "mcpServers": {
    "aegis": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "agent"]
    },
    "aegis-admin": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "admin"]
    }
  }
}

初始化后,deploy-adapters 会在 AGENTS.md 中追加 `` 部分(如果文件不存在,则会创建)。

注意: Codex 的 MCP 支持取决于 CLI 版本。如果无法使用 MCP,Agent 仍可遵循生成的 AGENTS.md 中的说明来执行 Aegis 指南。

使用方法

1. 初始化项目

使用 admin 接入面,通过空知识库初始化 Aegis:

aegis_init_detect({ project_root: "/path/to/your/project", skip_template: true })
aegis_init_confirm({ preview_hash: "<hash from detect>" })

这会创建一个空知识库。下一步将用架构文档填充它。

然后通过 CLI 为 AI 编码工具部署适配器规则和 Agent Skills:

npx @fuwasegu/aegis deploy-adapters
npx @fuwasegu/aegis deploy-adapters --targets cursor,codex  # specific adapters only
2. 在开发过程中使用

agent 接入面为 AI 编码 Agent 提供工具。要获取扩展上下文(由标签驱动的文档),建议按以下流程操作:每个会话调用一次 aegis_get_known_tags(缓存 tag_catalog_hash),然后在 compile 时传入 intent_tags:

aegis_get_known_tags({})
aegis_compile_context({
  target_files: ["src/core/store/repository.ts"],
  plan: "Add a new query method for archived observations",
  intent_tags: ["<tags from known_tags>"]
})

只有在希望可选的服务端 SLM 标注器(启用 --slm 时)改为从 plan 推断标签时,才省略 intent_tags(参见 ADR-004)。传入 intent_tags: [] 可在不使用 SLM 的情况下跳过扩展上下文。

仅使用基础 DAG(跳过扩展上下文;无论是否启用 --slm,效果都相同,因为 intent_tags: [] 会禁用扩展上下文并跳过 SLM 标注):

aegis_compile_context({
  target_files: ["src/core/store/repository.ts"],
  plan: "Add a new query method for archived observations",
  intent_tags: []
})

返回与正在编辑的文件相关的架构指南、模式和约束。

3. 添加架构文档

初始化后,通过分析代码库来填充知识库。在 admin 接口上使用 aegis_import_doc 添加架构文档,并通过 edge_hints 将其与文件路径关联:

aegis_import_doc({
  file_path: "/absolute/path/to/docs/architecture-guide.md",
  doc_id: "architecture-guide",
  title: "Architecture Guide",
  kind: "guideline",
  tags: ["architecture"],
  edge_hints: [
    { source_type: "path", source_value: "src/domain/**", edge_type: "path_requires" }
  ]
})

使用 file_path 可直接从磁盘读取内容,避免 LLM 上下文窗口导致内容截断。每次导入都会返回 proposal_ids——请批准它们以激活文档。

若要让导入的文档与源文件保持同步:

aegis_sync_docs()   # detects changes via content hash, creates update_doc proposals

aegis_import_doc 和 aegis_sync_docs 都需要 admin 接口。有关分步批量导入工作流的详细说明,请参阅 aegis-bulk-import skill(通过 deploy-adapters 部署)。

4. 报告观察结果

当 Agent 发现缺失的指南或需要更正的内容时:

aegis_observe({
  event_type: "compile_miss",
  related_compile_id: "<from compile_context>",
  related_snapshot_id: "<from compile_context>",
  payload: { target_files: ["..."], review_comment: "Missing error handling guideline" }
})
5. 审核提案

系统会分析观察结果并生成提案。通过 admin 接口进行审核和批准:

aegis_list_proposals({ status: "pending" })
aegis_approve_proposal({ proposal_id: "<id>" })

项目共享(团队工作流)

Aegis 支持通过 Git 提交的 bundle 工件,在团队成员之间共享已批准的规范知识。这样每位开发者都不必从头构建知识库。

工作原理
目录用途由 Git 跟踪?
.aegis/本地运行时数据库(观察结果、提案、编译日志)否
aegis-share/已批准规范知识的共享快照是
编写工作区(知识维护者)

批准提案后,导出当前的规范状态:

npx @fuwasegu/aegis share-export                # writes aegis-share/manifest.json + canonical.json
npx @fuwasegu/aegis share-export --out /path    # custom output directory

然后提交并推送 aegis-share/。

副本工作区(团队成员)

拉取包含更新后的 aegis-share/ 的变更后:

npx @fuwasegu/aegis share-hydrate               # rebuild .aegis/aegis.db from aegis-share/
npx @fuwasegu/aegis share-hydrate --replace     # overwrite existing initialized DB
npx @fuwasegu/aegis share-hydrate --bundle-dir /path  # custom bundle directory

警告: share-hydrate 会整体替换数据库。本地运行状态(观察结果、提案、编译日志)不会保留。这是有意为之——副本工作区用于使用共享知识,而非创建知识。

共享状态监控

Aegis 会自动检测本地数据库与共享 bundle 之间的差异:

  • npx @fuwasegu/aegis doctor — 显示共享状态(in_sync、bundle_newer、local_ahead、diverged、unreadable_bundle);存在需要处理的状态时退出码为 1
  • npx @fuwasegu/aegis stats — 在 JSON 输出中包含 project_share,其中提供完整的状态详情
  • aegis_compile_context 通知 — bundle 不同步时,Agent 会收到可执行的提示(例如“运行 share-hydrate 进行更新”)

not_configured 状态(不存在 aegis-share/ 目录)不会发出提示——只有设置共享后才会显示相关信息。

典型团队工作流
                    Authoring Workspace                    Replica Workspace
                    ───────────────────                    ─────────────────
  approve proposals ──► share-export ──► git push ──► git pull ──► share-hydrate
                                  aegis-share/ committed
  1. 作者维护知识库(导入文档、批准提案、同步)
  2. 作者运行 share-export 并提交 aegis-share/
  3. 团队运行 git pull,然后运行 share-hydrate --replace
  4. 此时,副本上的 compile_context 会返回与作者相同的指南

协作编写(源文件原生模式)

除了上述数据库原生工作流(观察 → 提案 → 批准)之外,Aegis 还支持源文件原生协作编写模式。团队成员在 aegis-share/source/ 中编辑易读的源文件,通过拉取请求审查变更,然后将其写入数据库。

重要规则: compile_context 始终从数据库读取内容,而非直接读取源文件。源文件是编写格式;数据库是运行时格式。

两种审批路径
路径入口审批方式适用场景
数据库原生Agent 发现缺口 → aegis_observe → aegis_approve_proposal人工在 admin 接口批准提案由 Agent 观察结果驱动的响应式知识改进
源文件原生人工编辑 aegis-share/source/ → PR → 合并 → share-materialize合并 PR 即表示批准通过基于 Git 的代码审查进行主动协作编辑

两种路径可以并存。根据实际情况选择其一,也可以同时使用。

目录布局
aegis-share/
├── manifest.json              # Distribution bundle manifest (ADR-017)
├── canonical.json             # Distribution bundle data (ADR-017)
└── source/                    # Collaborative authoring source (ADR-018)
    ├── documents/
    │   └── <doc_id>.md        # Frontmatter + Markdown body
    ├── edges/
    │   ├── path-requires.json
    │   ├── layer-requires.json
    │   ├── command-requires.json
    │   └── doc-depends-on.json
    ├── layer-rules.json
    └── tag-mappings.json
源文件原生工作流
# 1. Bootstrap: export current DB to source format (one-time setup)
npx @fuwasegu/aegis share-source-export

# 2. Edit source files (documents, edges, rules, mappings)
#    Create a branch, make changes, open a PR

# 3. Validate before committing
npx @fuwasegu/aegis share-format                 # Normalize formatting (deterministic, in-place)
npx @fuwasegu/aegis share-lint                   # Check for errors (after formatting)

# 4. After PR merge: apply source to DB
npx @fuwasegu/aegis share-materialize            # Applies changes + auto-approves
npx @fuwasegu/aegis share-materialize --dry-run  # Preview changes without applying

# 5. Export updated bundle for replicas
npx @fuwasegu/aegis share-export
CI 集成

将 share-lint 添加到 CI 流水线,在合并前发现错误:

npx @fuwasegu/aegis share-lint  # exits 1 on errors — suitable for CI checks
第一阶段的限制
  • 不支持本地覆盖 — 所有更改都通过共享源进行
  • share-materialize 是完整应用(而非增量补丁)

用于扩展上下文的 SLM — 可选启用

Aegis 内置 llama.cpp 引擎,可选用于基于 SLM 的意图标注。SLM 默认禁用 — 即使不启用,基于确定性 DAG 的上下文功能也能完美运行。

若要启用,请在 agent 接口中添加 --slm:

{
  "mcpServers": {
    "aegis": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "agent", "--slm", "--model", "qwen3.5-4b"]
    },
    "aegis-admin": {
      "command": "npx",
      "args": ["-y", "@fuwasegu/aegis", "--surface", "admin"]
    }
  }
}

首次启用 SLM 启动时,所选模型会下载到 ~/.aegis/models/(所有项目共享)。

模型大小描述
qwen3.5-4b~2.5 GB推荐的默认选项 — 快速且轻量
qwen3.5-9b~5.5 GB质量更高 — 基准测试表现领先

你也可以直接传入 HuggingFace URI:--model hf:user/repo:file.gguf

旧版: 如果更喜欢基于 Ollama 的推理,可以使用 --ollama 标志。使用 --ollama 会隐式启用 SLM。

参考

MCP 工具 — Agent 接口(6 个工具)
工具描述
aegis_compile_context为目标文件编译确定性上下文。支持 content_mode(auto/always/metadata)、max_inline_bytes、min_relevance(省略相关性较低的文档)和 include_debug(选择性启用 debug_info;默认关闭),以控制输出大小
aegis_observe记录观察结果(compile_miss、review_correction、pr_merged、manual_note、document_import、doc_gap_detected)
aegis_get_compile_audit获取过去一次编译的审计日志
aegis_get_known_tags从 tag_mappings 获取不同的意图标签(与已批准项目关联),并返回用于缓存的 knowledge_version 和 SHA-256 tag_catalog_hash
aegis_workspace_status只读工作区快照:最近的编译区域、未解决的 compile_miss 积压项、待处理提案数量、协调积压项(hash-sync/anchor-sync/semantic-review)
aegis_init_detect分析项目并生成初始化预览
MCP 工具 — 管理接口(额外 18 个工具,共 24 个)
工具描述
aegis_init_confirm使用预览哈希确认初始化
aegis_list_proposals列出提案,可选按状态筛选
aegis_get_proposal获取包含证据的完整提案详情
aegis_approve_proposal批准待处理的提案
aegis_preflight_proposal_bundle对共享 bundle_id 的待处理提案进行试运行
aegis_approve_proposal_bundle批准捆绑中的所有待处理提案(原子操作)
aegis_reject_proposal拒绝待处理的提案并说明原因
aegis_check_upgrade检查模板版本更新
aegis_apply_upgrade为模板升级生成提案
aegis_archive_observations归档旧观察记录
aegis_get_stats汇总知识计数和健康状况信号
aegis_list_observations列出观察记录,可按结果筛选(proposed / skipped / pending)
aegis_import_doc将文档导入 Canonical Knowledge(通过 content 或 file_path)。对于内容较大、包含多个章节或使用 semantic-review 协调模式的情况,会返回提示性警告
aegis_analyze_docADR-015:将内容或 file_path 分析为 ImportPlan(只读)
aegis_analyze_import_batchADR-015:批量导入分析,并检查跨文档重叠
aegis_execute_import_plan创建共享 bundle_id 的 document_import 提案
aegis_process_observations为待处理的观察记录触发分析流水线
aegis_sync_docs将文件锚定文档与其源文件同步(根据协调模式处理:hash-sync、anchor-sync、semantic-review)
CLI 子命令
子命令说明
deploy-adapters部署 IDE 适配器配置(Cursor 规则、CLAUDE.md、AGENTS.md)和 Agent Skills
maintenance执行观察处理、文档同步、归档和升级检查
stats以 JSON 格式输出知识数量、使用情况、健康状态和项目共享状态
doctor以便于阅读的形式进行健康检查(发现问题时退出码为 1)
share-export将已批准的 Canonical Knowledge 导出到 aegis-share/
share-hydrate根据共享包重建本地数据库(替换整个数据库)
share-source-export引导初始化:将数据库导出到便于人工编辑的 aegis-share/source/
share-lint验证 aegis-share/source/(解析错误、悬空引用)
share-format对 aegis-share/source/ 进行确定性规范化(原地修改)
share-materialize将 aegis-share/source/ 应用到数据库(基于源文件的审批)
npx @fuwasegu/aegis deploy-adapters                         # Deploy all adapters
npx @fuwasegu/aegis deploy-adapters --targets cursor,codex  # Deploy specific adapters
npx @fuwasegu/aegis deploy-adapters --project-root /path    # Specify project root
npx @fuwasegu/aegis deploy-adapters --db /path/to/aegis.db  # Use custom DB path
npx @fuwasegu/aegis maintenance                             # Process observations, sync, archive
npx @fuwasegu/aegis maintenance --dry-run                   # Report only (no writes)
npx @fuwasegu/aegis stats                                   # JSON health and usage data
npx @fuwasegu/aegis doctor                                  # Health check summary
npx @fuwasegu/aegis share-export                            # Export to aegis-share/
npx @fuwasegu/aegis share-hydrate --replace                 # Rebuild DB from bundle
npx @fuwasegu/aegis share-source-export                     # Export DB to aegis-share/source/
npx @fuwasegu/aegis share-lint                              # Validate shared source
npx @fuwasegu/aegis share-format                            # Normalize shared source
npx @fuwasegu/aegis share-materialize                       # Apply source to DB
npx @fuwasegu/aegis share-materialize --dry-run             # Preview changes
npx @fuwasegu/aegis --list-models                           # List available SLM models

注意:仅在完整部署(不带 --targets)时才会更新版本跟踪记录。部分部署不会更新版本记录,因此“适配器模板可能已过时”的提示会一直显示,直到执行完整部署。

CLI 标志(MCP 服务模式)
标志默认值说明
--surfaceagentagent 或 admin
--db.aegis/aegis.dbSQLite 数据库路径
--templates./templates随附模板目录
--template-dir额外的模板搜索路径(本地覆盖随附模板)
--slmfalse启用 SLM 以扩展上下文(意图标注)
--modelqwen3.5-4bSLM 模型名称或 HuggingFace URI(需要 --slm)
--list-models显示可用模型并退出
--ollamafalse使用 Ollama 代替内置的 llama.cpp(隐含 --slm)
--project-rootcwd()项目根目录,用于解析相对于仓库的 source_path 和默认数据库路径
--ollama-urlhttp://localhost:11434Ollama API URL(与 --ollama 搭配使用)

开发

构建
npm run build    # Compile TypeScript
npm test         # Run all tests (406+)
npm run test:watch
从源代码构建
git clone https://github.com/fuwasegu/aegis.git
cd aegis
npm install && npm run build
架构
┌─ MCP Layer (src/mcp/) ──────────────────┐
│ Tool registration, surface separation   │
└──────────────┬──────────────────────────┘
               │
┌─ Core Layer (src/core/) ────────────────┐
│ ContextCompiler, Repository, Init,      │
│ Automation (Analyzers), Tagging         │
└──────────────┬──────────────────────────┘
               │
┌─ Adapters (src/adapters/) ──────────────┐
│ Cursor, Claude rule generation          │
└──────────────┬──────────────────────────┘
               │
┌─ Expansion (src/expansion/) ────────────┐
│ llama.cpp engine, IntentTagger          │
└─────────────────────────────────────────┘

依赖关系自上而下。Core 不会导入 MCP、Adapters 或 Expansion 中的内容。

核心概念
  • Canonical Knowledge:已批准的架构文档 + DAG 边
  • 观察层:由 Agent 报告的事件(编译错误、修正、PR 合并)
  • 提议层:需要人工批准的自动化提议
  • 快照:Canonical Knowledge 的不可变、内容可寻址版本

许可证

ISC

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。