README
🚀 Chainguard - Claude Code的MCP服务器
Chainguard 是一个模型上下文协议(MCP)服务器,它通过任务跟踪、语法验证、长期记忆和智能上下文管理来增强Claude Code的功能。
🚀 快速开始
快速安装(推荐)
curl -fsSL https://raw.githubusercontent.com/provimedia/chainguard/main/installer/install.sh | bash
安装程序会在 ~/.chainguard/venv/ 创建一个Python虚拟环境,并将所有依赖项安装到其中(符合PEP 668)。
手动安装
- 克隆仓库:
git clone https://github.com/provimedia/chainguard.git
cd chainguard
- 运行安装程序:
./installer/install.sh
- 重启Claude Code
更新依赖项
~/.chainguard/venv/bin/pip install --upgrade fastembed numpy mcp aiofiles aiohttp aiomysql pyyaml
要求
- Python 3.9+
- Claude Code CLI
- 用于长期记忆的
fastembed和numpy(通过虚拟环境自动安装) - 可选:用于PHP静态分析的
phpstan(在执行前捕获运行时错误)
✨ 主要特性
核心特性
- 任务范围管理 - 定义任务边界、验收标准并跟踪进度
- 自动语法验证 - 对文件更改进行PHP、JavaScript、JSON、Python、TypeScript验证
- PHPStan集成(v6.3) - 静态分析在执行前捕获运行时错误(空访问、类型错误)
- 智能上下文跟踪 - 基于金丝雀的上下文刷新确保Claude不会丢失重要指令
- HTTP端点测试 - 支持会话的端点测试和自动认证检测
长期记忆(v5.1+,v6.6重写)
- 语义代码搜索 - 支持自然语言查询,如“身份验证在哪里处理?”
- 轻量级向量存储 - fastembed(ONNX Runtime)+ numpy + sqlite3,约500 MB内存(取代ChromaDB)
- 多语言嵌入 -
paraphrase-multilingual-MiniLM-L12-v2支持包括德语在内的50多种语言 - 6个知识集合 - 代码结构、函数、数据库模式、架构、学习内容、代码摘要
- RAG管道 - 混合检索,语义相似度占60%,关键字匹配占25%,近期评分占15%
- 自动上下文注入 -
UserPromptSubmit钩子在每次LLM调用前注入相关的记忆上下文 - 自动刷新陈旧记忆(v6.8) - 在
set_scope时检测超过30天的记忆,并逐步重新索引更改的文件 - 项目隔离 - 经过安全验证的隔离防止跨项目访问
- 导出/导入 - 支持可移植的JSON/JSONL导出,可选gzip压缩
注意:自v6.6起,长期记忆默认启用(
MEMORY_ENABLED=True),因为内存使用从约3.8 GB减少到约500 MB。
TOON编码器(v6.0)
- 面向令牌的对象表示法 - 紧凑的数据格式,可节省30 - 60%的令牌
- 针对数组优化 - 最适合文件列表、表格、历史记录条目
- 自动格式化 - 像
chainguard_projects、chainguard_history等工具默认使用TOON
幻觉预防(v6.1+)
- 符号验证 - 通过置信度评分检测幻觉函数/方法调用
- PHP内置数据库 - 来自JetBrains phpstorm-stubs的11,000多个PHP函数/类/方法(v6.3.1)
- 拼写错误检测 - 捕获拼写错误的包名(例如,
requets而不是requests) - 7种语言支持 - PHP、JavaScript、TypeScript、Python、C#、Go、Rust
- 包注册表验证 - 根据
composer.json、package.json、requirements.txt检查导入 - 自适应模式 - 根据误报率自动调整灵敏度
| 模式 | 行为 |
|------|----------|
| OFF | 禁用验证 |
| WARN | 仅显示警告(默认) |
| STRICT | 阻止高置信度问题 |
| ADAPTIVE | 根据误报率自动调整 |
深度逻辑摘要(v5.4)
- 代码理解 - 提取代码实际功能的人类可读摘要
- 目的推断 - 从文档字符串、注释和命名约定中识别模式
- 多语言支持 - Python、PHP、JavaScript、TypeScript
架构分析(v5.3+)
- 模式检测 - MVC、MVVM、清洁架构、六边形架构、分层架构、API优先
- 框架识别 - Laravel、Django、React、Vue、Angular、FastAPI等
- AST分析 - 基于Tree-sitter的代码解析,支持正则表达式回退
PRD自动检测(v6.7)
- 自动PRD发现 - 在
set_scope时检测PRD/需求文档 - 16种文件名模式 -
PRD.md、REQUIREMENTS.md、SPEC.md、SPECIFICATION.md等 - 7个搜索目录 - 根目录、
docs/、doc/、.claude/、requirements/、specs/、.github/ - 工作流提醒 - 提醒在实现前检查PRD,并在
finish时更新PRD
看板系统(v6.5)
- 持久任务管理 - 通过可视化看板跟踪复杂的多日项目
- 智能看板建议 - 当满足≥5个标准或复杂性关键字时自动推荐看板
- 7列预设 - 默认、编程、内容、DevOps、研究、敏捷、简单
- 自定义列 - 通过LLM提示注入定义特定任务的列
- 依赖跟踪 - 卡片可以依赖其他卡片,被阻塞的卡片会高亮显示
- 链接详细文件 - 每张卡片可以链接一个包含详细说明的Markdown文件
- 存档系统 - 完成的卡片可以存档以保留历史记录
- 图形看板视图 - 带有进度条的ASCII艺术可视化
任务模式
| 模式 | 使用场景 |
|------|----------|
| programming | 代码、错误、功能(默认) |
| content | 书籍、文章、文档 |
| devops | 服务器管理、CLI工具、WordPress |
| research | 分析、信息收集 |
| generic | 最小跟踪 |
功能标志
在 ~/.chainguard/chainguard/config.py 中配置:
| 标志 | 默认值 | 描述 |
|------|---------|-------------|
| TOON_ENABLED | True | 数组输出使用TOON格式(节省30 - 60%的令牌) |
| MEMORY_ENABLED | True | 启用长期记忆(fastembed + numpy + sqlite3,约500 MB内存) |
| AUTO_REFRESH_STALE_MEMORY | True | 在 set_scope 时自动刷新超过30天的记忆 |
| XML_RESPONSES_ENABLED | False | 启用结构化XML响应 |
| PHPSTAN_ENABLED | True | 对PHP文件启用PHPStan静态分析 |
| PHPSTAN_LEVEL | 8 | 分析级别0 - 9(5+可捕获空错误,推荐8) |
💻 使用示例
基础用法
# 1. 开始一个任务(必需)
chainguard_set_scope(
description="Implement user login",
mode="programming",
acceptance_criteria=["Login works", "Tests pass"]
)
# 2. 跟踪更改(自动验证语法)
chainguard_track(file="src/AuthController.php", ctx="🔗")
# 3. 检查状态
chainguard_status(ctx="🔗")
# 4. 完成任务
chainguard_finish(confirmed=True)
长期记忆
# 初始化记忆(每个项目一次,在set_scope时自动刷新陈旧数据)
chainguard_memory_init()
# 语义搜索(支持50多种语言)
chainguard_memory_query(query="Where is authentication handled?")
chainguard_memory_query(query="Wo wird Validierung gemacht?")
# 按类型过滤:all, code, functions, database, architecture
chainguard_memory_query(query="user table", filter_type="database")
# 生成深度逻辑摘要
chainguard_memory_summarize() # 所有新文件
chainguard_memory_summarize(file="src/auth.py") # 特定文件
# 为未来会话添加学习内容
chainguard_memory_update(action="add_learning", learning="Auth uses JWT with 24h expiry")
# 检查记忆健康状况
chainguard_memory_status()
# 导出/导入以进行备份或转移
chainguard_memory_export(format="json", compress=True)
chainguard_memory_import(file="path/to/export.json")
数据库模式检查
# 连接到数据库
chainguard_db_connect(
host="localhost",
user="root",
password="...",
database="myapp"
)
# 获取模式(防止SQL字段名猜测)
chainguard_db_schema()
🔧 技术细节
RAG管道
当通过 chainguard_memory_query 进行查询时,会运行以下管道:
查询 → 关键字提取 → 关键字扩展 → 嵌入(384维)
→ 向量搜索(6个集合) → 评分 → 去重 → 格式化
- 关键字提取 - 提取最多10个关键字,去除英语和德语停用词
- 关键字扩展 - 用30个同义词组扩展(例如,
login→auth,authentication,signin,session,jwt,token) - 嵌入 - 通过fastembed(ONNX Runtime)转换为384维向量
- 向量搜索 - 使用余弦距离查询所有6个集合
- 评分 - 计算加权相关性得分:
- 语义相似度:60%
- 关键字匹配:25%
- 近期奖励:15%(最近24小时:1.0,上周:0.8,上月:0.5)
- 任务类型奖励:0 - 20%(例如,
database任务提升表/迁移结果) - 源类型权重:测试文件0.7倍,配置文件0.8倍,迁移文件0.85倍
- 去重 - 每个文件路径只保留最佳结果
- 集合平衡 - 遵守每个集合的限制(代码结构:4,函数:3,架构:2等)
- 过滤 - 仅返回得分 > 0.4的结果
- 缓存 - 结果缓存5分钟(TTLLRUCache,最大100个条目)
集合
| 集合 | 内容 | 限制 |
|------------|---------|-------|
| code_structure | 文件路径、类、导入 | 4 |
| code_summaries | 代码功能的深度逻辑摘要 | 3 |
| functions | 函数/方法签名和用途 | 3 |
| architecture | 检测到的模式(MVC、分层等) | 2 |
| learnings | 通过 memory_update 存储的开发者见解 | 2 |
| database_schema | 表结构、列、关系 | 2 |
自动上下文注入
chainguard_memory_inject.py 钩子在每次 UserPromptSubmit 事件时运行:
- 从用户提示中提取关键字(最多10个)
- 使用快速的基于关键字的
LIKE查询对sqlite3进行内存查询(避免fastembed冷启动) - 返回按类型分组的相关代码位置、函数和结构
- 3秒超时 以防止Claude Code挂起
- 基于文件的缓存,重复查询的TTL为5分钟
- 短于20个字符的提示将被跳过
多语言支持
模型:paraphrase-multilingual-MiniLM-L12-v2(384维)
支持包括德语、英语、西班牙语、法语、意大利语、荷兰语、葡萄牙语、波兰语、俄语、中文、日语、韩语等在内的50多种语言。查询和索引内容可以使用任何支持的语言。
过滤英语和德语的停用词(100多个单词)。
自动刷新(v6.8)
当调用 chainguard_set_scope() 时:
- 检查记忆是否超过30天(
STALE_MEMORY_THRESHOLD_DAYS) - 通过git日志(快速)或mtime回退(最多1000个文件)查找更改的文件
- 逐步重新索引最多30个更改的文件(
STALE_MEMORY_MAX_FILES) - 仅在所有文件成功时保存元数据(错误保护)
向量存储架构
轻量级向量存储(vectorstore.py)取代了ChromaDB:
- 存储:每个项目一个
vectors.sqlite3文件(1700个文档约3 MB) - 内存中的向量:所有向量作为numpy数组加载,以实现快速余弦相似度
- 线程安全:线程本地sqlite3连接,WAL模式支持并发读取
- 与ChromaDB兼容的API:可直接替换(添加、更新、查询、获取、删除、计数)
- WHERE过滤器:支持
$eq和$ne运算符对元数据进行过滤
导出与导入
# 导出记忆(JSON或JSONL,可选gzip压缩)
chainguard_memory_export(format="json", compress=True, include_embeddings=False)
# 导入记忆(合并或替换)
chainguard_memory_import(file="path/to/export.json", merge=True, skip_existing=True)
# 列出可用的导出
chainguard_list_exports()
- 每个导出文件最多10,000个文档
- 格式:JSON(单个文件)或JSONL(流式传输,更适合大型数据集)
- 合并模式:与现有数据合并或清除并替换
- 导出文件存储在
~/.chainguard/exports/
记忆配置
~/.chainguard/chainguard/config.py 中的所有常量:
| 常量 | 默认值 | 描述 |
|----------|---------|-------------|
| MEMORY_ENABLED | True | 启用/禁用记忆系统 |
| AUTO_REFRESH_STALE_MEMORY | True | 在 set_scope 时自动刷新 |
| STALE_MEMORY_THRESHOLD_DAYS | 30 | 记忆被视为陈旧的天数 |
| STALE_MEMORY_MAX_FILES | 30 | 每次自动刷新的最大文件数 |
| MTIME_FALLBACK_MAX_FILES | 1000 | 基于mtime的文件扫描上限 |
| SCORING_WEIGHTS | semantic: 0.6, keyword: 0.25, recency: 0.15 | 相关性评分权重 |
| SOURCE_TYPE_WEIGHTS | test: 0.7, config: 0.8, migration: 0.85 | 源惩罚乘数 |
| COLLECTION_LIMITS | 每个集合的最大结果数 | 平衡各集合的结果 |
📚 详细文档
🛠️ 可用工具
核心工具
| 工具 | 描述 |
|------|-------------|
| chainguard_set_scope | 定义任务范围和标准 |
| chainguard_track | 跟踪文件更改并进行语法验证 |
| chainguard_status | 超紧凑状态行 |
| chainguard_finish | 完成任务并进行验证 |
记忆工具
| 工具 | 描述 |
|------|-------------|
| chainguard_memory_init | 初始化项目记忆(索引代码、函数、摘要) |
| chainguard_memory_query | 语义代码搜索(多语言,支持50多种语言) |
| chainguard_memory_summarize | 为代码文件生成深度逻辑摘要 |
| chainguard_memory_update | 重新索引文件、添加学习内容或清理陈旧条目 |
| chainguard_memory_status | 显示记忆统计信息(文档、存储大小、陈旧度) |
| chainguard_memory_export | 将记忆导出到可移植的JSON/JSONL文件 |
| chainguard_memory_import | 从导出的文件导入记忆 |
| chainguard_list_exports | 列出可用的记忆导出文件 |
分析工具
| 工具 | 描述 |
|------|-------------|
| chainguard_analyze | 预飞行代码分析 |
| chainguard_analyze_code | 基于AST的代码分析 |
| chainguard_detect_architecture | 检测架构模式 |
幻觉预防工具
| 工具 | 描述 |
|------|-------------|
| chainguard_symbol_mode | 设置符号验证模式(OFF/WARN/STRICT/ADAPTIVE) |
| chainguard_validate_symbols | 根据代码库验证函数/方法调用 |
| chainguard_validate_packages | 根据项目依赖项验证导入 |
数据库工具
| 工具 | 描述 |
|------|-------------|
| chainguard_db_connect | 连接到数据库 |
| chainguard_db_schema | 获取数据库模式 |
| chainguard_db_table | 获取表详细信息 |
HTTP测试工具
| 工具 | 描述 |
|------|-------------|
| chainguard_set_base_url | 设置测试的基础URL |
| chainguard_test_endpoint | 测试HTTP端点 |
| chainguard_login | 登录并存储会话 |
看板工具
| 工具 | 描述 |
|------|-------------|
| chainguard_kanban_init | 使用预设或自定义列初始化看板 |
| chainguard_kanban | 显示紧凑的看板视图 |
| chainguard_kanban_show | 显示完整的图形看板视图 |
| chainguard_kanban_add | 添加带有优先级、标签、详细信息的卡片 |
| chainguard_kanban_move | 将卡片移动到列中 |
| chainguard_kanban_detail | 获取卡片详细信息 |
| chainguard_kanban_update | 更新卡片属性 |
| chainguard_kanban_delete | 删除卡片 |
| chainguard_kanban_archive | 存档完成的卡片 |
| chainguard_kanban_history | 显示存档的卡片 |
🏗️ 架构
~/.chainguard/
├── venv/ # Python虚拟环境(v6.6+)
├── chainguard/ # MCP服务器包(34个模块)
│ ├── handlers.py # 工具处理程序(224 KB)
│ ├── tools.py # 工具定义
│ ├── models.py # 数据模型
│ ├── config.py # 配置和功能标志
│ ├── kanban.py # 看板系统(v6.5)
│ ├── memory.py # 长期记忆
│ ├── vectorstore.py # 轻量级向量存储(sqlite3 + numpy)
│ ├── embeddings.py # fastembed集成
│ ├── code_summarizer.py # 深度逻辑提取
│ ├── ast_analyzer.py # AST分析
│ ├── architecture.py # 模式检测
│ ├── symbol_validator.py # 幻觉预防
│ ├── symbol_patterns.py # 特定语言的模式
│ ├── package_validator.py # 拼写错误检测
│ ├── db_inspector.py # 数据库检查器(MySQL/PG/SQLite)
│ ├── db_credentials.py # 持久数据库凭证
│ ├── http_session.py # HTTP会话管理
│ ├── test_runner.py # 测试执行运行器
│ ├── history.py # 错误/更改历史记录
│ ├── memory_export.py # 记忆导入/导出
│ ├── toon.py # TOON编码器
│ └── ...
├── chainguard_mcp.py # MCP入口点
├── hooks/ # Claude Code钩子
│ ├── chainguard_enforcer.py # PreToolUse:阻止编辑/写入违规
│ ├── chainguard_memory_inject.py # UserPromptSubmit:记忆上下文注入
│ └── chainguard_scope_reminder.py # UserPromptSubmit:范围提醒(v6.1)
├── projects/ # 项目状态存储
├── memory/ # sqlite3向量存储
└── templates/ # CLAUDE.md模板
钩子
Chainguard使用Claude Code钩子进行自动强制执行:
| 钩子 | 类型 | 目的 |
|------|------|---------|
| chainguard_scope_reminder.py | UserPromptSubmit | 提醒在开始工作前设置范围 |
| chainguard_enforcer.py | PreToolUse | 阻止违反规则的编辑/写入操作 |
| chainguard_memory_inject.py | UserPromptSubmit | 注入相关的记忆上下文 |
🧪 开发
运行测试
cd src/mcp-server
python3 -m pytest tests/ -v
测试覆盖率
| 模块 | 测试数量 | |--------|-------| | 核心(缓存、模型、处理程序) | 88 | | 验证器 | 48 | | 分析器 | 46 | | 记忆系统 | 103 | | 记忆集成(PRD、刷新) | 24+ | | 向量存储(sqlite3 + numpy) | 50+ | | 代码摘要器 | 45 | | TOON编码器 | 63 | | 幻觉预防 | 71 | | 符号验证 | 47 | | 数据库凭证 | 30 | | 看板系统 | 50 | | 总计 | 1300+ |
🤝 贡献
欢迎贡献!请随时提交拉取请求。
- 分叉仓库
- 创建你的功能分支(
git checkout -b feature/amazing-feature) - 提交你的更改(
git commit -m 'Add amazing feature') - 推送到分支(
git push origin feature/amazing-feature) - 打开拉取请求
📄 许可证
本项目采用 Polyform非商业许可证1.0.0。
你可以:
- 将此软件用于任何非商业目的
- 修改并创建衍生作品
- 分享和分发软件
你不可以:
- 出售此软件或用于商业目的
- 只有Provimedia GmbH有权出售此软件
详情请参阅 LICENSE 文件。
第三方许可证
本项目包含来自以下开源项目的数据:
| 组件 | 许可证 | 版权信息 | |-----------|---------|-----------| | JetBrains phpstorm-stubs | Apache-2.0 | © 2010 - 2024 JetBrains s.r.o. |
PHP内置数据库(data/php_builtins.json)由phpstorm-stubs生成,用于符号验证中的幻觉预防。
👏 致谢
由 Provimedia GmbH 创建和维护。
📝 更新日志
v6.8.1
- 部分刷新时间戳保护 - 仅在所有文件成功(错误数为0)时保存记忆元数据
- PRD文件缓存 - 在
set_scope时检测到的PRD文件缓存在ProjectState.prd_files中 - mtime回退限制 - 为保护单仓库,将
os.walk()限制为1000个文件
v6.8.0
- 自动刷新陈旧记忆 - 在
set_scope时检测超过30天的记忆,并逐步重新索引更改的文件- 基于git日志的发现(快速路径),支持mtime回退
- 新配置:
AUTO_REFRESH_STALE_MEMORY、STALE_MEMORY_THRESHOLD_DAYS、STALE_MEMORY_MAX_FILES
- 新的
ProjectMemory.get_metadata()方法用于读取metadata.json
v6.7.0
- PRD自动检测 - 在
set_scope时自动检测PRD/需求文档- 16种文件名模式:
PRD.md、REQUIREMENTS.md、SPEC.md、SPECIFICATION.md等 - 搜索7个目录:根目录、
docs/、doc/、.claude/、requirements/、specs/、.github/ - 在
set_scope时提醒检查PRD,在finish时提醒更新PRD(如果更改文件数≥3)
- 16种文件名模式:
v6.6.0
- 记忆系统重构 - 用fastembed + numpy + sqlite3取代ChromaDB + sentence-transformers
- 内存使用从约3.8 GB减少到约500 MB(减少7.6倍)
- 新的
vectorstore.py模块:轻量级向量存储,使用sqlite3后端和内存向量 - 新的
embeddings.py模块:fastembed(ONNX Runtime)集成 - 可直接替换,保持ChromaDB集合API
MEMORY_ENABLED现在默认值为True
- 多语言嵌入 - 从
all-MiniLM-L6-v2(仅英语)切换到paraphrase-multilingual-MiniLM-L12-v2(50多种语言)- 相同的384维,无需存储迁移
- 模型更改时自动强制重新初始化
- Python虚拟环境安装 - 用
~/.chainguard/venv/中的专用虚拟环境取代pip install --user- 修复现代macOS/Linux上的PEP 668兼容性问题
- 更新安装程序、验证器和卸载程序
- 上下文注入质量 - 源类型加权(测试文件0.7倍),按文件去重,降低相关性阈值(0.5 -> 0.4)
v6.5.0
- 看板系统 - 用于复杂多日项目的持久任务管理
- 新的
kanban.py模块,包含KanbanCard、KanbanBoard、KanbanManager类 - 10个新工具,支持完整的看板工作流
- 7列预设:默认、编程、内容、DevOps、研究、敏捷、简单
- 通过工具描述中的LLM提示注入自定义列
.claude/kanban.yaml中的YAML持久化.claude/cards/中卡片详细信息的链接Markdown文件- 完成卡片的存档系统
- 带有进度条和阻塞卡片高亮显示的图形看板视图
- 卡片之间的依赖跟踪
- 50个新单元测试
- 新的
- 智能看板建议 - 当检测到≥5个验收标准或复杂性关键字(如“mehrtägig”、“komplex”、“pipeline”等)时自动推荐看板
v6.4.6
- 字符串内容剥离以防止误报 - 防止字符串内文本的幻觉警告
- HTML占位符:
placeholder="Max Mustermann (optional)"不再触发警告 - 字符串中的SQL:
"SELECT * FROM table_name WHERE..."不再将表名检测为调用 - 保留插值字符串(f字符串、$字符串、模板字面量),因为它们包含真实代码
- 9个新测试用于字符串内容误报预防
- HTML占位符:
v6.4.5
- 符号警告阻止完成 - 当存在符号警告时,
chainguard_finish()被阻止(除非force=True) - 跳过文档字符串/多行注释 - 文档字符串和注释中的函数调用不再被检测
- Python标准库扩展 - 添加
field、dataclass、Optional、Path、Any、List、Dict等
v6.4.4
- 扩展内置函数:JS Web API + SQL函数 - 修复误报
- JavaScript:添加
IntersectionObserver、MutationObserver、ResizeObserver、FormData、AbortController、WebSocket、Worker等30多个Web API - PHP:添加PHP代码中出现的SQL函数:
CURDATE、NOW、COALESCE、CONCAT、GROUP_CONCAT、SUM、AVG等50多个 - 10个新测试用于Web API和SQL函数
- JavaScript:添加
v6.4.3
- PHP不区分大小写的内置检查 - 修复大写PHP函数的误报
MAX()、DATE()、COUNT()、StrLen()等现在正确识别为内置函数- PHP不区分大小写,因此
is_builtin()现在对PHP使用小写比较 - 减少PHP代码中SQL函数的误报
- 4个新测试用于不区分大小写
v6.4.2
- 需要操作的上下文注入 - 强制LLM主动检查幻觉警告
<action-required>XML标签在chainguard_finish()时包装符号警告- 突出显示“🔴 AKTION ERFORDERLICH”消息,而不是微妙的警告
- 清晰的3步说明:检查存在性 → 检查导入 → 如果是误报则忽略
- 警告:“NICHT IGNORIEREN - Halluzinierte Funktionen führen zu Runtime-Fehlern!”
- 防止在长时间会话和多个任务中忽略警告
v6.4.1
- 符号警告聚合 - 幻觉警告现在在会话期间收集
- 警告存储在
state.symbol_warnings中,而不是只显示一次 - 所有收集的警告在
chainguard_finish()时显示 - 防止警告丢失 - 对于有40多个任务的长时间会话很有用,否则警告会被忽略
- 警告存储在
- 提高潜在幻觉函数调用的可见性
v6.4.0
- 持久数据库凭证 - 每个项目保存数据库凭证(混淆)
- 调用
chainguard_db_connect()时无需参数即可使用保存的凭证 - 凭证使用XOR + Base64混淆(特定于机器的密钥)
- 成功连接后自动保存,失败时自动删除
- 新的
chainguard_db_forget工具用于删除保存的凭证 - 新的
db_credentials.py模块,包含CredentialStore类 - 30个新测试用于凭证处理
- 调用
chainguard_db_connect的新remember参数(默认:True)
v6.3.1
- PHP内置数据库 - 来自JetBrains phpstorm-stubs的11,000多个PHP函数/类/方法
- 显著减少符号验证中的误报(从170多个减少到接近零)
- 包括:核心函数(5,028个)、类(1,035个)、方法(10,039个)
- 首次PHP验证时懒加载,启动成本为零
- 生成脚本可从最新的phpstorm-stubs更新
- 新的
generate_php_builtins.py脚本用于更新数据库
v6.3.0
- PHPStan集成 - 对PHP文件进行静态分析,在执行前捕获运行时错误
- 检测空访问错误(
$user['id']对空值) - 类型不匹配(字符串与整数)
- 未定义的方法和属性
- 可配置的分析级别(0 - 9,默认:8)
- 智能项目根检测(composer.json、vendor/、phpstan.neon)
- 检测空访问错误(
- 自动检测PHPStan(全局、vendor/bin或composer全局)
- 新的配置标志:
PHPSTAN_ENABLED、PHPSTAN_LEVEL
v6.1.0
- 幻觉预防 - 检测LLM幻觉的函数调用和包导入
chainguard_validate_symbols- 根据代码库验证函数/方法调用chainguard_validate_packages- 检测拼写错误的包名- 7种语言支持:PHP、JavaScript、TypeScript、Python、C#、Go、Rust
- 自适应模式根据误报率自动调整
- 范围提醒钩子 - 新的
UserPromptSubmit钩子,提醒设置范围 - 修复纯分析任务(Task/Explore)可能绕过范围强制的问题
- 30分钟冷却时间,防止垃圾信息
- 118个新测试(符号验证:47个,包验证器:71个)
v6.0.0
- TOON编码器 - 面向令牌的对象表示法,节省30 - 60%的令牌
- 新的
toon.py模块,包含encode_toon、toon_array、toon_object函数 - 集成到
chainguard_projects和chainguard_history中 - 默认禁用记忆 - 防止低内存系统出现RAM问题
- 功能标志:
TOON_ENABLED=True、MEMORY_ENABLED=False、XML_RESPONSES_ENABLED=False - 63个新测试用于TOON编码器,总计764+个测试
v5.4.0
- 使用
code_summarizer.py生成深度逻辑摘要 - 新的
chainguard_memory_summarize工具 code_summaries集合用于语义代码理解- 45个新测试用于代码摘要器
v5.3.0
- 基于Tree-sitter的AST分析
- 架构模式检测
- 框架识别
- 记忆导出/导入
v5.2.0
- 智能上下文注入
- 跟踪/完成时自动更新记忆
v5.1.0
- 使用ChromaDB的长期记忆
- 语义代码搜索
- 项目隔离
v5.0.0
- 任务模式系统(编程、内容、DevOps、研究)
- 特定模式的工具
由Provimedia GmbH精心打造
Scan to join WeChat group