mcpField
C
codealive-context-engine

codealive-context-engine

github.com/codealive-ai开发1542 次安装5 周前更新
代码仓库

关于 codealive-context-engine

CodeAlive Context Engine 是面向开发者和编码 Agent 的代码语义检索技能,可跨当前项目、组织仓库、依赖项及已索引代码库查找代码。它还提供精确文本搜索、文件读取和代码关系分析等工具。

主要功能

  1. 01按概念与行为语义搜索代码
  2. 02按字符串或正则表达式搜索
  3. 03浏览仓库结构并读取文件
  4. 04获取代码实体及其关系
  5. 05查询已索引数据源与元数据

适用场景

  1. 01查找某项功能或架构的实现位置
  2. 02追踪符号引用、调用关系或继承结构
  3. 03检查已索引仓库中的文件与代码
  4. 04汇总多个仓库的元数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/codealive-ai/codealive-skills --skill codealive-context-engine

安装后在 Claude Code 中输入/codealive-context-engine确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
setup.py
VERSION
references/
query-patterns.md
workflows.md
scripts/
chat.py
datasources.py
fetch.py
get_version.py
grep.py
metadata.py
ontology.py
read_file.py
relationships.py
schema.py
search.py
tree.py
scripts/lib/
__init__.py
api_client.py

详细介绍

CodeAlive Context Engine

在整个代码生态系统中提供语义代码智能——涵盖当前项目、组织仓库、依赖项以及任何已索引的代码库。

身份验证

所有脚本都需要 CodeAlive API 密钥。如果任何脚本因“未配置 API 密钥”而失败,请帮助用户完成设置:

选项 1(推荐): 运行交互式设置,并等待用户完成:

python setup.py

选项 2(不推荐——密钥会显示在聊天记录中): 如果用户直接在聊天中粘贴 API 密钥,请通过以下方式保存:

python setup.py --key THE_KEY

在设置成功完成之前,不要重试失败的脚本。

目录

工具概览

工具脚本速度成本最适合
列出数据源datasources.py即时免费发现已索引的仓库和工作区。使用 --query "task" 可运行 AI 相关性筛选(成本低,但非即时),仅返回相关数据源
语义搜索search.py快低默认发现方式——按含义(概念、行为、架构)查找代码
Grep 搜索grep.py快低查找包含特定字符串或正则表达式的代码(标识符、字面量、模式)
仓库本体ontology.py快低了解单个仓库的高层概况
文件树tree.py快免费有界的仓库树检查
读取文件read_file.py快免费读取一个相对于仓库的文件路径,也可指定行范围
获取工件fetch.py快免费获取搜索结果标识符对应的完整内容
工件关系relationships.py快免费获取单个工件的完整调用图、继承关系或符号引用
ArtifactQuery 架构schema.py快免费查看支持的元数据查询实体、字段和示例
工件元数据查询metadata.py快低对已索引仓库进行只读聚合和查询分析
与代码库聊天chat.py慢高无状态的综合问答。仅在用户明确要求时调用。
获取版本get_version.py即时免费以 JSON 格式返回已安装的 CodeAlive 技能版本;无需 API 密钥或网络调用

成本指南: semantic_search 和 grep_search 是默认的起点——快速且便宜。使用 fetch_artifacts 加载完整源代码,并使用 get_artifact_relationships 跟踪调用图。这四种工具的成本都很低。

不建议使用聊天: chat.py 会在服务端调用大模型,耗时可能远超检索,而且每次调用的费用明显更高。v3 中它是无状态的:每个问题都要包含先前的发现、工件标识符、假设、范围和限制。除非用户明确要求(例如“使用聊天”或“调用聊天工具”),否则不要调用它。“询问 CodeAlive”或“搜索 CodeAlive”之类的说法不算明确要求——它们指的是搜索工具。

可修复的工具错误: 将返回的 <tool_error> 视为调用失败,而不是成功但结果为空。按照其中的 <try> 指引修正参数,并且仅当 <retry> 字段允许时重试。工具 API v3 始终会在 obj.error 中保留相同的错误,以供 JSON 模式自动化使用。

最高可靠性指南: 如果你的 Agent 支持子 Agent,且任务需要最高可靠性或深度,优先采用由子 Agent 驱动的工作流,组合使用 ontology.py、search.py、grep.py、fetch.py、tree.py/read_file.py、relationships.py、metadata.py 和本地文件读取。 三步工作流(搜索 → 筛选 → 加载真实内容):

  1. 搜索 — 通过描述和标识符查找相关代码位置
  2. 筛选 — 仅使用 description 来判断哪些结果值得进一步查看。它只是一个指引,不是真实依据。不要据此得出结论。
  3. 获取真实内容 — 对于你判断为相关的每个工件:
    • 外部仓库(无法本地访问):python fetch.py <identifier>
    • 当前工作仓库:使用编辑器的文件读取工具读取显示路径中的文件 仅将真实的 content 视为事实依据。

当获取预览信息不足时,深入查看 relationships.py。 对于类似函数的工件,fetch.py 响应已预览最多 3 个出站调用和 3 个入站调用,因此对小型工件完成完整获取后,调用图本身很少成为运行 relationships.py 的理由。以下情况可使用它:

  • 需要查看所有入站调用方 — 获取预览最多显示 3 个。 完整的入站列表也会显示测试覆盖情况(来自测试文件的入站调用)。
  • 需要查看继承树 — --profile inheritanceOnly 会返回祖先和后代(接口实现、子类、基类链)。预览不包含继承关系。
  • 需要查看符号引用 — 使用 --profile referencesOnly 查找引用某个类型或标识符的位置。
  • 工件太大,无法获取到上下文中 — 相比拉取完整源代码,调用图是成本更低的摘要。

分析器噪声: 出站调用有时会包含使用 foreach/LINQ 的方法所产生的编译器生成辅助项(MoveNext、GetEnumerator、闭包调用)。忽略与工件实际逻辑不符的出站命中。

何时使用

语义搜索(默认)——你描述行为或概念:

  • “身份验证是如何实现的?”
  • “展示各个服务中的错误处理模式”
  • “这个库的内部工作原理是什么?”
  • “查找类似功能,为我的实现提供参考”

Grep 搜索——你知道确切文本:

  • “查找 RepositoryDeleted 的所有用法”
  • “在哪里配置了 ConnectionString?”
  • “在整个代码库中搜索 TODO: fix”
  • 错误消息、URL、配置键、导入路径、正则表达式模式

以下情况改用本地文件工具:

  • 按名称或模式查找特定文件
  • 在当前目录中精确搜索关键词
  • 读取已知文件路径
  • 搜索未提交的更改

快速入门

1. 查看已建立索引的内容
python scripts/datasources.py --query "the user's task in natural language"

建议将用户的任务作为 --query 传入,这样后端只会返回相关的数据源,并为每个数据源提供 relevanceReason。省略 --query 可列出所有内容(即时返回,不进行 AI 筛选)。

2. 搜索代码(快速、低成本)
python scripts/search.py "JWT token validation" my-backend
python scripts/search.py "authentication flow" my-repo --path src/auth --ext .py
python scripts/grep.py "AuthService" my-repo
python scripts/grep.py "auth\\(" my-repo --regex
3. 获取完整内容(针对外部仓库)
python scripts/fetch.py "my-org/backend::src/auth.py::AuthService.login()"
4. 深入查看工件的关系(可选)
# Full call graph (default)
python scripts/relationships.py "my-org/backend::src/auth.py::AuthService.login()"

# Inheritance hierarchy for a class
python scripts/relationships.py "my-org/backend::src/models.py::User" --profile inheritanceOnly

# Calls + inheritance, raise the per-type cap
python scripts/relationships.py "my-org/backend::src/svc.py::Service" --profile allRelevant --max-count 200
5. 与代码库聊天(不推荐——仅在用户明确要求时使用)
python scripts/chat.py "Explain the authentication flow. Prior context: none." my-backend
python scripts/chat.py "Given these prior findings and identifiers: ..., what about security considerations?" my-backend

除非用户明确要求,否则不要调用聊天功能。 v3 聊天是无状态的,没有 conversation_id;每个问题都要包含所需的全部上下文。其他任务请使用本体、搜索、grep、获取/读取、关系和元数据查询。

工具参考

get_version.py — 获取已安装版本

以 JSON 格式返回已安装的 CodeAlive Context Engine 技能版本。无需身份验证,也不会发出网络请求。

python scripts/get_version.py
# {"name": "codealive-context-engine", "version": "3.0.0"}
datasources.py — 列出数据源
python scripts/datasources.py --query "add OAuth to checkout"  # Only sources relevant to a task (recommended)
python scripts/datasources.py              # Ready-to-use sources (full list)
python scripts/datasources.py --all        # All (including processing)
python scripts/datasources.py --json       # JSON output
选项描述
--query "TASK"用户用自然语言描述的任务 / 意图。后端会运行 AI 相关性筛选器,仅返回相关的数据源,每个数据源都包含 relevanceReason。只要你知道用户想要完成什么,就建议使用此选项
--all包含仍在处理中的数据源
--json原始 JSON 输出(使用 --query 时:{"dataSources": [...], "message": "..."})

失败时开放(Fail-open): 如果无法进行相关性筛选,则会返回完整列表并注明原因——在将结果视为相关候选列表前,请检查提示信息。

search.py — 语义代码搜索(默认发现工具)

默认的起点。根据代码的作用——概念、行为、架构——查找代码,而不是匹配确切文本。当你能描述要查找的内容,但不知道代码库中的确切名称时使用。

python scripts/search.py <query> <data_sources...> [options]
选项描述
--max-results N可选的返回条目数上限
--path PATH相对于仓库的路径或目录范围(可重复指定)
--ext EXT文件扩展名范围,例如 .py 或 .ts(可重复指定)

description 仅用于初步筛选——它会告诉你哪些条目值得进一步查看。它不是事实依据,你绝不能据此得出结论。对于你认为相关的每条结果,都要加载实际源代码:对于外部仓库,使用 fetch.py <identifier>;对于当前工作目录中的仓库,使用编辑器的文件读取工具读取相应路径。只有实际的 content 才是事实依据。

grep.py — 精确文本 / 正则表达式搜索

查找包含特定字符串或正则表达式模式的代码。当你知道要查找的确切文本时使用,例如标识符、错误消息、配置键、URL、领域事件、导入路径、TODO 注释。

python scripts/grep.py <query> <data_sources...> [--regex] [--max-results N] [--path PATH] [--ext EXT]
选项描述
--regex将查询解释为正则表达式模式
--max-results N可选的返回条目数上限
--path PATH相对于仓库的路径或目录范围(可重复指定)
--ext EXT文件扩展名范围,例如 .py 或 .ts(可重复指定)

行预览仍只是搜索证据,并非事实依据。在对行为得出结论前,请使用 fetch.py 或本地文件读取工具。

fetch.py — 获取构件内容

获取通过搜索找到的构件的完整源代码内容。对于无法在本地访问的外部仓库,请使用此工具。

python scripts/fetch.py <identifier1> [identifier2...] [--data-source NAME_OR_ID]
限制值
每个请求的标识符上限50
标识符来源搜索结果中的 identifier 字段
标识符格式{owner/repo}::{path}::{symbol}(符号),{owner/repo}::{path}(文件)
--data-source NAME_OR_ID可选。数据源名称或 ID(来自结果的 Source: 行),用于区分在多个数据源中建立索引的标识符

对于类似函数的构件,响应会包含简短的关系预览(每个方向最多显示 3 个传入/传出调用)。如需查看完整的调用图、继承关系或引用,请使用构件的标识符运行 relationships.py。

**缺失的标识符。**如果无法解析某个标识符(或它不在你的访问范围内),fetch.py 不会悄悄将其丢弃,而是会输出一个“未找到”部分,列出每个具体的标识符,并提示你重新检查这些 ID,然后重试有问题的标识符。请告知用户哪些构件未能获取,而不要将其省略。

区分存在于多个数据源中的标识符。构件标识符仅在各自的数据源中唯一,因此同一个标识符可能属于多个数据源。如果不带 --data-source 获取此类标识符,后端会返回一个列出候选数据源的 409 响应,而不会替你选择。列出的每个候选项都能解析,因此工作流程如下:不带 --data-source 调用 → 查看 409 响应中的候选项 → 尝试其中一个 → 如果该数据源不是你想要的,则尝试下一个。要解析标识符,请获取所需搜索结果旁显示的 Source: 名称或 ID,并将其传入: python scripts/fetch.py <identifier> --data-source "backend"(或传入 ID)。 relationships.py 也支持相同的 --data-source 标志。如果指定 --data-source 的调用没有找到结果(脚本会显示“在数据源……中未找到内容”的提示),则该标识符属于其他数据源,或者选择器有误:请改用其他 Source: 值重试,或移除 --data-source 以获取 409 候选列表。

relationships.py — 深入了解 Artifact 的关系图

返回单个 Artifact 的完整调用图(传入/传出调用)、继承层级 (祖先/后代)或符号引用。这是用于深入分析的工具——在通过 search.py 或 fetch.py 获取标识符后,如果想了解 Artifact 与代码库其余部分的关系,请使用此工具。

python scripts/relationships.py <identifier> [--profile PROFILE] [--max-count N] [--data-source NAME_OR_ID]
选项描述
--profile callsOnly默认。传出 + 传入调用
--profile inheritanceOnly祖先 + 后代
--profile allRelevant调用 + 继承(4 组)
--profile referencesOnly符号引用
--max-count N每种关系类型最多返回的相关 Artifact 数量(1–1000,默认 50)
--data-source NAME_OR_ID可选。数据源名称或 ID,用于消除在多个数据源中编入索引的标识符歧义(与 fetch.py 使用相同的 409 约定)
--json输出原始 JSON 响应,而非格式化视图

相比 fetch 预览,此工具适用的情况:

  • 需要所有传入调用方(包括测试)——fetch 预览 每个方向最多显示 3 个
  • 需要继承树(--profile inheritanceOnly)——预览 不包含祖先/后代
  • 需要符号引用(--profile referencesOnly)——预览 不包含引用
  • Artifact 太大,无法提取到上下文中

**通常多此一举的情况:**你已经对一个适合放入上下文的小型 Artifact 运行了 fetch.py。你需要的传出调用要么在刚读过的 源代码中,要么在预览最多显示的 3 个结果中——只有在明确需要传入调用、继承或引用时,才使用 relationships.py。

**噪声提示:**使用 foreach/LINQ 的方法,其传出调用有时会包含编译器生成的 辅助项(MoveNext、GetEnumerator、闭包调用)。这些是分析器产物——忽略与 Artifact 实际逻辑不符的传出调用结果。

chat.py — 与代码库聊天(不推荐)

除非用户明确要求(例如“使用 chat”“调用 chat 工具”),否则不要调用。“询问 CodeAlive”或“搜索 CodeAlive”之类的说法指的是搜索工具,而非聊天。

将独立的问题发送给一个拥有所选已编入索引代码库完整上下文的 AI 顾问。返回综合整理、可直接使用的答案。

此工具速度慢且成本高——它会在服务端运行大模型,耗时可能远超检索。v3 中它是无状态的,因此每个问题都要包含先前的发现、标识符、假设、范围和限制。对于所有常规任务(查找代码、理解架构、调试),请改用 ontology、search、grep、fetch/read、relationships 和 metadata 查询。

python scripts/chat.py <question> <data_sources...> [options]

v3 中没有公开的 conversation_id。如需后续提问,请在下一个 question 中重述相关上下文。

数据源

Repository — 单个代码库,用于有针对性的搜索:

python scripts/search.py "query" my-backend-api

Workspace — 多个仓库,用于跨项目模式:

python scripts/search.py "query" workspace:backend-team

多个仓库:

python scripts/search.py "query" repo-a repo-b repo-c

配置

前置条件
  • Python 3.8+(无需第三方软件包——仅使用标准库)
API Key 设置

此 skill 需要 CodeAlive API key。按以下顺序查找:

  1. CODEALIVE_API_KEY 环境变量
  2. 操作系统凭据存储(macOS Keychain / Linux secret-tool / Windows Credential Manager)

环境变量(所有平台):

export CODEALIVE_API_KEY="your_key_here"

macOS Keychain:

security add-generic-password -a "$USER" -s "codealive-api-key" -w "YOUR_API_KEY"

Linux(freedesktop secret-tool):

secret-tool store --label="CodeAlive API Key" service codealive-api-key

Windows Credential Manager:

cmdkey /generic:codealive-api-key /user:codealive /pass:"YOUR_API_KEY"

Base URL(可选,默认为 https://app.codealive.ai):

export CODEALIVE_BASE_URL="https://your-instance.example.com"

对于可自托管的 CodeAlive,请使用你的部署源站。推荐使用 https://your-instance.example.com,但也接受 https://your-instance.example.com/api,并会自动规范化。

在此获取 API keys:https://app.codealive.ai/settings/api-keys

与 CodeAlive MCP 服务配合使用

此技能可独立运行,但与 CodeAlive MCP server 配合使用时体验最佳。MCP 服务通过模型上下文协议提供直接的工具访问,而此技能则提供工作流知识和查询模式,帮助你有效使用这些工具。

组件提供内容
此技能查询模式、工作流指导、兼顾成本的工具选择
MCP 服务通过 MCP 协议直接提供 semantic_search、grep_search、fetch_artifacts、get_artifact_relationships、get_data_sources 工具

同时安装两者时,直接操作优先使用 MCP 服务的工具,引导式工作流则使用此技能的脚本。

详细指南

如需了解高级用法,请参阅参考文件:

  • 查询模式 — 编写有效查询、反模式、特定语言示例
  • 工作流 — 有关新手引导、调试、功能规划等的分步工作流

评论

支持 Markdown