递归语言模型服务

Aleph是一个MCP服务器和技能,用于递归语言模型(RLMs),通过在Python进程中保持工作状态(如搜索索引、代码执行、证据和递归),使LLM能够在大型代码库、长期项目、日志、文档和数据上进行迭代推理,而无需在原始内容上消耗上下文。

  • by Hmbown
  • Python
  • 本地部署
  • 219 星标
  • 更新于
在 GitHub 查看 Hmbown/aleph

使用说明

阿列夫

Aleph是一个 MCP服务器 以及技能 递归语言模型 (RLMs)。它保持工作状态——搜索索引, 代码执行、证据、递归——在提示符外的Python进程中 窗口,因此LLM在大型代码库上迭代推理,寿命长 项目、日志、文档和数据,而无需在原始内容上燃烧上下文。

+-----------------+    tool calls     +-----------------------------+
|   LLM client    | ---------------> |  Aleph (Python process)     |
| (context budget)| <--------------- |  search / peek / exec / sub |
+-----------------+   small results  +-----------------------------+

为什么选择Aleph:

  • 加载一次,推理多次。 数据存在于Aleph内存中,而不是提示中。
  • 计算服务器端。 exec_python 在整个上下文中运行代码 仅返回派生结果。对于JS/TS仓库, exec_javascript 和 exec_typescript 在相同的基础上提供持久的Node.js运行时 ctx.
  • 追索权。 子查询和食谱将复杂的工作分散到多个 推理通过了。
  • 保持工作空间温暖。 将上下文绑定回文件或生成的工作区 清单,刷新它们,稍后恢复长时间的调查。

快速开始

pip install "aleph-rlm[mcp]"
aleph-rlm install --profile claude   # or: codex, portable, api
aleph-rlm doctor                     # verify everything is wired up

然后重新启动MCP客户端并确认Aleph可用:

get_status()
list_contexts()

可选 /aleph (克劳德代码)或 $aleph (Codex)技能快捷方式开始 结构化的RLM工作流。安装 docs/prompts/aleph.md 进入客户的 命令/技能文件夹--请参见 MCP_SETUP.md 精确的路径。

如果你在真实的仓库上使用操作工具,最安全的默认设置是:

aleph --enable-actions --action-policy read-only

光标

使用 全球 MCP(aleph-rlm install cursor)for --workspace-mode any,或 项目 MCP(aleph-rlm install cursor-project 来自回购) ${workspaceFolder} + --workspace-mode fixed.Chat、Composer和光标 CLI共享MCP配置;游标扩展是可选的,不是必需的 阿莱夫——看 MCP_SETUP.md.

入口点

命令 模块 它的作用
aleph aleph.mcp.local_server:main MCP服务器。 这就是MCP客户端启动的内容。公开了30多种用于上下文管理、搜索、代码执行、推理、递归和操作工具的工具。
aleph-rlm aleph.cli:main 安装程序和CLI。 install, configure, doctor, uninstall 用于设置MCP客户端。也: run (单个查询), shell (交互式REPL), serve (手动启动MCP服务器)。

安装配置文件

aleph-rlm install 询问要使用哪个子查询配置文件。配置文件 嵌套后端 sub_query 和 sub_query_batch 递归生成 推理。

简介 它钉住了什么
portable 无嵌套后端——您可以稍后选择或依赖自动检测
claude Claude CLI: --model opus, --effort low,已启用共享会话
codex 食品法典委员会MCP: gpt-5.4,推理工作量低,支持共享会话
api OpenAI兼容的API-集 ALEPH_SUB_QUERY_API_KEY 和 ALEPH_SUB_QUERY_MODEL
aleph-rlm install claude-code --profile claude
aleph-rlm configure --profile codex   # overwrite existing config

看 docs/CONFIGURATION.md 对于所有环境变量,CLI 标志和运行时 configure(...) 选项。

大型代码库工作流

如果你的主要用例是一个仓库或多文件夹项目,那么从加载一个 压缩工作区清单,而不是将原始源文件扔到模型中 窗户。这为模型提供了项目的地图,让它可以积极搜索, 并在仓库更改时保持会话可刷新。

load_workspace_manifest(paths=["src", "tests"], context_id="repo")
rg_search(pattern="FastAPI|APIRouter|router\\.", paths=["src", "tests"], load_context_id="routes")
load_file(path="pyproject.toml", context_id="pyproject")
exec_python(code="""
files = [line for line in ctx.splitlines() if line.startswith("- ")]
summary = {
    "indexed_entries": len(files),
    "top_python_files": [line for line in files if "| python |" in line][:10],
}
""", context_id="repo")
get_variable(name="summary", context_id="repo")
refresh_context(context_id="repo")

使用 load_workspace_manifest 作为大型代码库的默认前门 项目。然后使用以下命令拉入特定文件 load_file,使用以下命令搜索仓库 rg_search,并在工作区更改时刷新绑定上下文。刷新 保留会话的推理状态、证据日志和跟踪的任务。

单文件工作流

Aleph也很强大,当你一次加载一个大文件,做繁重的工作时 在Aleph内部,只撤回简洁的答案。

load_file(path="/absolute/path/to/large_file.log", context_id="doc")
search_context(pattern="ERROR|WARN", context_id="doc")
peek_context(start=1, end=60, unit="lines", context_id="doc")
exec_python(code="""
errors = [line for line in ctx.splitlines() if "error" in line.lower()]
result = {
    "error_count": len(errors),
    "first_error": errors[0] if errors else None,
}
""", context_id="doc")
get_variable(name="result", context_id="doc")
save_session(context_id="doc", path=".aleph/doc.json")

重要的习惯是在服务器端计算。不要治疗 get_variable("ctx") 作为默认路径。先搜索、过滤、分块或汇总,然后检索 小的结果。

如果您想要仅终端模式而不是MCP,请使用:

aleph run "Summarize this log" --provider cli --model codex --context-file app.log

本地模型(llama.cpp)

Aleph可以使用本地模型而不是云API。这将运行完整的RLM 循环——搜索、代码执行、收敛——完全在你的机器上 API成本为零。

先决条件: llama.cpp 和一个 GGUF模型文件。

# Install llama.cpp
brew install llama.cpp          # Mac
winget install ggml.LlamaCpp    # Windows

# Start the server with your model
llama-server -m /path/to/model.gguf -c 16384 -ngl 99 --port 8080

将Aleph指向正在运行的服务器:

export ALEPH_PROVIDER=llamacpp
export ALEPH_LLAMACPP_URL=http://127.0.0.1:8080
export ALEPH_MODEL=local
aleph

或者让Aleph自动启动服务器:

export ALEPH_PROVIDER=llamacpp
export ALEPH_LLAMACPP_MODEL=/path/to/model.gguf
export ALEPH_LLAMACPP_CTX=16384
export ALEPH_MODEL=local
aleph

用Qwen 3.5 9B(Q8_0,~9 GB)测试。任何GGUF模型都适用——更大的模型 在RLM循环中给出更好的结果。具有推理/思维支持的模型 (Qwen 3.5、QwQ等)是自动处理的。看 配置.md 对于所有 ALEPH_LLAMACPP_* 变量。

常见工作量

场景 Aleph擅长什么
大型代码库/项目分析 构建工作区图,快速搜索,仅加载重要文件,并保持会话可刷新
大日志分析 加载大文件、跟踪模式、关联事件
代码库导航 搜索符号、检查路线、跟踪行为
数据探索 使用Python助手分析JSON、CSV和混合文本
长文档审阅 加载PDF、Word文档、HTML和压缩日志
递归调查 将工作拆分为子查询,而不是一个巨大的提示
长时间运行的会话 跨会话保存和恢复内存包

核心工具

类别 主要工具 它们的作用
加载上下文 load_context, load_file, load_workspace_manifest, refresh_context, list_contexts, diff_contexts 将数据放入Aleph内存,将其绑定回工作区资产,并检查加载的内容
导航 search_context, semantic_search, peek_context, chunk_context, rg_search 在询问答案之前,先找到相关的片段
计算 exec_python, exec_javascript, exec_typescript, get_variable 在完整上下文中运行Python或JS/TS,仅检索派生结果
原因 think, evaluate_progress, get_evidence, finalize 结构进展和有证据的收尾
编排 configure, validate_recipe, estimate_recipe, run_recipe, run_recipe_code 切换后端并自动化重复的推理模式
坚持 save_session, load_session 在提示窗口之外进行长时间调查

Python与JS/TS REPL

阿莱夫 主控制层仍然是Python. exec_python 仍然是 用于通用分析、配方和编排的默认REPL。

  • 使用 exec_python 当你需要完整的Aleph表面积时:Python优先 提示,Python的数字/符号堆栈(cmath, mpmath, decimal, fractions, statistics, numpy, scipy, sympy, networkx),或 通过执行配方 run_recipe_code.

  • 使用 exec_javascript / exec_typescript 当目标回购或分析为 自然是JS/TS形状,你想要持久的节点状态,JS原生数组/ 对象操作或异步递归 await.

  • exec_python 完整的Aleph助手界面,包括配方DSL助手、同步 sub_query(...) / sub_aleph(...),并与最广泛的兼容性 现有的提示和工作流。

  • exec_javascript / exec_typescript 为js/TS重存储库提供每个上下文的持久Node.js运行时。共享相同 ctx,支持顶级 await,并且可以使用async递归 await sub_query(...), await sub_query_batch(...), await sub_query_map(...), await sub_query_strict(...),以及 await sub_aleph(...)还包括配方DSL(Recipe, Search, Take用于在JS/TS中构建配方有效载荷。

JS/TS运行时还附带了比第一个更广泛的本地助手集 切换切片:搜索/窥视/行/块,提取助手(extract_emails, extract_todos, extract_routes等)、文本实用程序(number_lines, grep_v, sort_lines, normalize_whitespace等),文本比较助手 (diff, similarity, common_lines, diff_lines),收集助手 (flatten, group_by, frequency, sample_items, shuffle_items等等), 验证助手(is_json, is_email, is_uuid等),CSV/JSON 转换器,以及 semantic_search.

JS/TS运行时现在还包括配方DSL: RecipeStep, RecipeBuilder,以及所有步骤构造函数(Recipe, Search, Peek, Lines, Take, Chunk, Filter, MapSubQuery, SubQuery, Aggregate, Assign, Load, Finalize, as_recipe).你可以用 流畅的链式或管道式:

// Fluent style
Recipe("doc").search("ERROR").take(5).finalize().compile()

// Pipe style
Recipe("doc").pipe(Search("ERROR")).pipe(Take(5)).pipe(Finalize()).compile()

这 compile_recipe 和 run_recipe_code MCP工具接受 language 参数("python", "javascript", "typescript")编译配方DSL 在相应的运行时中编写代码。

与Python的区别:

  • Python仍然是默认的、支持最好的Aleph REPL。
  • JS/TS递归助手是异步的,需要 await.
  • 食谱 执行 (run_recipe)始终使用Python运行时。JS/TS 路径涵盖食谱 建筑与编译 只有。
  • JS使用 RecipeBuilder.pipe() /流畅的方法,而不是Python的 | 操作员(JS | 按位或,为此目的不可重载)。
  • Python的导入生态系统仍然只有Python。Node运行时由助手主导: 不 require,没有 process,没有 module,内部不加载npm包 沙箱。
  • exec_typescript 用于执行的strips类型语法;它不是一个完整的TS 编译器、类型检查器或 ts-node 环境。
  • 正则表达式标志行为遵循每个运行时:Python助手使用Python re 标志,而JS/TS帮助程序使用JavaScript正则表达式标志字符串。

JS/TS工作流程示例:

exec_typescript(code=`
const routes: string[] = extract_routes('javascript').map((item) => item.value);
const routeKinds = frequency(
  routes.map((route) => (route.includes('.post(') ? 'write' : 'read')),
  2,
);
const notes = await sub_query_map(
  routes.map((route) => `Explain ${route}`),
  routes,
);
({ routeCount: routes.length, routeKinds, notes })
`, context_id="repo")

安全模型

Aleph的构建是为了将原始上下文排除在模型窗口之外,除非您 明确地将其拉回:

  • 工具响应被限制和截断。
  • get_variable("ctx") 是策略感知的,不应该是您的默认路径。
  • exec_python stdout、stderr和返回值是独立有界的。
  • ALEPH_CONTEXT_POLICY=isolated 添加更严格的会话导出/导入规则,以及 更多防御性违约。
  • ALEPH_ACTION_POLICY=read-only (或 --action-policy read-only)保持行动 只读模式下的工具:搜索和文件加载仍然有效,但写入和 子流程执行被阻止。

最安全的模式总是:

  1. 将大上下文加载到Aleph内存中。
  2. 在Aleph内部搜索或计算。
  3. 只检索您需要的小结果。

文档地图

发展

git clone https://github.com/Hmbown/aleph.git
cd aleph
pip install -e ".[dev,mcp]"
# Optional extras:
#   .[docs]           -> MarkItDown-backed document conversion
#   .[observability]  -> OpenTelemetry spans
pytest tests/ -v
ruff check aleph/ tests/

参考文献

许可证

麻省理工学院