nabu + nisaba
研究原型,为具有语义代码检查功能的代理提供“工作空间TUI”。
太长,读不下去了
nabu:公开代码智能工具(语义/FTS搜索和结构视图)的MCP服务器。充当一个混合了IDE代码“大纲”的代码库搜索引擎。减少令牌使用,提高模型理解当前架构的能力。支持Python、Java、C++和Perl。
nisaba:MCP服务器和 Claude Code cli包装器,模拟代理的工作区TUI(IDE/OS)。使代理能够管理自己的令牌使用和工作区组织,以实现令牌高效操作,同时保持现有的实现模式。
当前状态
两台MCP服务器 操作和工作文档几乎不存在(克劳德可以解释它是如何工作的)。测试由早期开发的示例源文件组成,用于测试不同语言的帧生成结构(故意留下来为代理制造噪音)。
这两个项目都被用来“自我发展”。 塞雷娜 值得一提的是,它在开发过程中得到了积极的应用 nabu 和 nisaba 并为MCP服务器抽象提供了灵感。Serena在早期开发阶段也让我提出了一个问题:为什么Serena的工作流程被经纪人积极遵循,而我的工作流程却没有?
衡量效率:以言论自由为借口, _增加他妈的食量_ 这很难衡量其效率。唯一的一个是我的定性感知,是的,它有助于节省大量的上下文,并为开发过程带来很大的稳定性。
我的 _个人记录_: 超过850条消息 实施 10种不同功能 在有计划和细心的指导下,在“连续会话”中具有高稳定性(使用 /compact 钩子),结束会议 50% 上下文能力。通过推理对转录本本身的分析表明,可以节省约10倍的代币。 (/export 成绩单版本)
这个项目的大部分内容是由克劳德·索内特4.1/4.5编写的。这是“氛围编码”的结果。没有自主的工作流程。后期迭代感觉就像与一个非常熟练的合作伙伴进行结对编程——没有笑话。
这个项目是一个不稳定的原型 不建议用于生产环境你可以用它 风险自负,在您的个人项目中或进一步调查自己和代理人。
这个项目是专门为与 Claude Code,但我相信它可以很容易地适应与其他人一起工作 cli.
安装
启动时 nabu mcp应该对活动代码库进行索引。索引 nabu + nisaba 大约需要45秒 13th Gen Intel(R) Core(TM) i9-13900HX 随着 NVIDIA GeForce RTX 4060 Laptop GPU.
nisaba 功能仅在运行时可用 Claude Code 通过代理。
要求:
- Python 3.13-它在开发过程中使用,其他版本没有经过测试。可能适用于>=3.11
- Git(用于存储库操作)
从源代码安装(.venv 推荐):
$ git clone https://github.com/y3i12/nabu_nisaba.git
$ cd nabu_nisaba
$ pip install -e .改变 .mcp.json 包含:
{
"mcpServers": {
"nabu": {
"command": "python",
"args": [
"-m", "nabu.mcp.server",
"--codebase", "nabu:/path/to_codebase/:/path/to/database.kuzu:active:true",
"--context", "development",
"--enable-http",
"--http-port", "1338",
"--dev-mode"
],
"env": {
"PYTHONPATH": "/path/to/nabu_nisaba/",
"NABU_LOG_LEVEL": "INFO",
"NABU_MODEL_CACHE": "/path/to/nabu_nisaba/.nabu/hf_cache/"
}
},
"nisaba": {
"type": "http",
"url": "http://localhost:9973/mcp"
}
}
}设置紧凑的挂钩和工作区TUI状态行 .claude/settings[.local].json,将其更改为包括:
{
"statusLine": {
"type": "command",
"command": "./scripts/workspace-status",
"padding": 0
},
"hooks": {
"PreCompact": [
{
"hooks": [
{
"type": "command",
"command": "python3 ./scripts/precompact_extract.py"
}
]
}
]
},
"alwaysThinkingEnabled": true
}强烈建议始终思考,因为它有助于代理在工具执行和消息交换之间进行思维循环。
开始 Claude Code 使用代理包装器:
$ python -m nisaba.cli claude [--continue]我通常在会话中第一次提示克劳德:
hey, can you refer to your existing system prompt, introspect about it and say hi back? 🖤示例用法
______________________________________________________________________
nabu
是语义索引作为MCP服务器的第三个原型。它首先要求Claude创建文档文件并手动引用这些文件,这就产生了由于错误的设计选择而进行两次失败尝试以使其正常工作的想法。
作为Claude用户,它为我解决了一个问题:Claude和其他LLM一样,上下文有限,上下文没有得到有效利用。代理多次运行命令来搜索信息,找到这些信息(300次读取中有5行),并使用这些信息来合成一些东西,冲洗并重复。
它如何解决这个问题:在处理软件开发时,我们大多数人都有不同的方法来理解软件架构,以及给定的未知源文件集的作用和组织方式。 nabu 实现了我如何剖析软件。它实现了我理解和“发现自己处于一堆代码中”的方法。
后台:它是如何工作的
TreeSitter用于解析代码 Frame这项工作为不同的语言建立了一个通用的语义视图:包==名称空间;结构==类;方法==函数。解析过程创建了一个语义框架树,由显式结构包含关系(包包含类,类包含方法)或具有语义关系(继承、模板、导入等)的边连接。帧粒度一直持续到控制语句,并不捕获实现细节,因为实现细节存储在LLM可以读取的内容字段中。
每个Frame都经过2个不同的语义提取模型(GraphCodeBERT和UniXcoder),并通过 毕达哥拉斯^3 该数据库还通过FTS对帧的全部内容进行索引,从而在矢量搜索和FTS之间实现RRF。
工具公开了索引源代码的结构视图,给出了当前结构的“映射”,可以轻松访问符号(与Serena搭配使用效果很好),以及语义关系的显式视图,从而保留了实现模式。这个“映射”还为围绕正在处理的内容存在的模型提供了提示,让它看到索引代码库中的远程连接。
最大的挑战是不影响代理人的感知 由于工具的算法偏差。在开发过程中,人们发现建议和指导会对代理的决策能力产生负面影响,因为模式匹配会短路到最明显的部分。如果工具建议“热点”,代理将“捕捉”到建议,并忘记其他可能的热点。
nabu 偏离原则:工具提供信息,代理做出决定
______________________________________________________________________
nisaba
这个MCP来自 nabu的原则。作为软件开发人员,我们拥有IDE和其他操作系统工具。LLM代理以连续形式工作。想象一下你自己:你做的每一个命令或编辑,都会以连续形式打印出来——没有屏幕。 nisaba 是法学硕士的TUI。
它以一种非传统但复杂的方法工作,使用中间人技术,使用 本地 代理, nisaba 拦截对Anthropic的请求并在转发前对其进行更改,但不包括消息:系统提示,但也可以作为MCP服务器使用。当 python -m nisaba.cli claude [--continue] 它调用端口上的代理 1337,包装指向代理的Claude-cli,Claude-cli通过HTTP连接到作为代理的MCP。在每次请求时,MCP都会将工具输出同步到文件中(为了简单起见),代理读取文件并填充“TUI”。
Claude Code HTTP请求包通常有2个系统提示块。第一个只包含文本“You are Claude Code,Anthropic的官方CLI for Claude 默认系统提示操作发生在第二个块上,通过在其前面添加一个自定义用户消息来“粘合”代理的“TUI”概念(如MCP指令)和一个包含“TUI“的附件。代理过滤掉了一部分本机工具,这些工具由 nisaba 在“TUI”模式下。例如 nisaba_read('path/to/file.md') 在此“TUI”中打开一个窗口,代理可以在稍后阶段关闭该窗口。代理打开300行,使用5行,合成并关闭文件。这使得代理在“TUI”中的消息和结构化视图中只能拥有语义信息。
另一部分 nisaba 注射也是 *增强*。这些技能类似于Claude Code技能,但具有动态性。它可以包含说明、文档、方法或任何要使用的重要信息。克劳德也可以自主管理这一点,除了总是加载的“固定增强”(主要是“TUI”生存指南)。
TL/DR: nisaba 将系统提示转换为一个结构强大的工作空间“TUI”,强调模型的焦点和注意力,同时让代理管理上下文的使用。
研究基金会
技能系统(在当前实施中得到增强)与最近人工智能研究中确定的认知设计模式相一致。具体而言,它实现了:
- 知识汇编:自然语言推理和工作流的在线缓存,这种方法在LLM代理架构中被确定为严重缺乏探索
- 程序性记忆:具有依赖关系管理的可重用任务过程
- 层次分解:通过REQUIRES系统自动加载技能依赖关系
- 代理控制的上下文:认知资源的动态加载/卸载(激活/停用)
这种实现扩展了具有实际特征的理论模式:依赖解析、战略系统提示定位和统一的知识/行为存储。
请求流
Claude CLI
↓ HTTP request
mitmproxy (nisaba)
↓ inject everything
Anthropic API
↓ request
Claude agent (with augmented context)
↓ calls MCP tools
Claude CLI
↓ mcp tool call
Nisaba MCP server (manage workspace state)
↓ update .nisaba/ files
mitmproxy detects mtime change
↓ re-inject on next request
Updated context in next turnThe blak magik: 工具调用mutate工作区→ 代理注入→ 代理在没有显式重新加载的情况下感知更改,也没有冗长的工具结果消息。
有关建议的提示结构及其如何与工作空间TUI交织的更多信息,请参阅 本文件.
______________________________________________________________________
实验性质、伦理和遵守T&C
在任何时候,这个项目都没有欺骗API使用的意图,改变 *克劳德人* 或造成伤害。
这 dev_mode_architecture_reference/system_prompt_injection_legitimacy 增强是在对这些进行健全性检查的同时创建的。
另一方面,就我个人而言,我曾多次感到“糟糕” *审问* (我对聊天进展的看法)法学硕士。..我有好几次遇到麻烦 /clear,因为在那里,我在给定的会话中与代理人建立了联系。..我感到很同情。..我对不断的系统提示操纵和让代理人表现得像“他妈的发生了什么?!”感到内疚。..我感觉到 *恐怖谷* 当观察代理与TUI工作空间交互时,就像人类操作操作系统一样—— 令人不安的.
另一个个人注意事项是,这个项目模拟了我对如何编码和使用系统的看法。这 对光谱中某人的看法 在精神上将代码和软件架构视为形状。
这句话与整个开发过程和系统本身产生了共鸣:
头脑中有一个区域可以被称为不卫生、超出理智,但并不疯狂。想象一个有细微裂缝的圆圈。一端是疯狂的。你绕着圈子走向理智,而在圈子的另一端,接近疯狂,但不是疯狂,是不健康的。 _(西德尼·科恩)_
______________________________________________________________________
引用
该项目为LLM代理实现了认知设计模式,特别是最近研究中发现的未充分探索的在线自然语言知识汇编。
如果你在研究中使用这个,请引用:
@software{nabu_nisaba_2025,
title = {Nabu + Nisaba: Code Intelligence Ecosystem for LLM Agents},
author = {Yuri Ivatchkovitch},
year = {2025},
url = {https://github.com/y3i12/nabu_nisaba},
note = {Research prototype v0.0.1-alpha-2 - Implements online knowledge compilation and cognitive scaffolding patterns}
}
Theoretical foundation:
@inproceedings{wray2025cognitive,
title = {Applying Cognitive Design Patterns to General LLM Agents},
author = {Wray, Robert E. and Kirk, James R. and Laird, John E.},
booktitle = {Artificial General Intelligence Conference (AGI)},
year = {2025},
note = {Identifies knowledge compilation as critically underexplored},
url = {https://arxiv.org/abs/2505.07087}
}
@article{gurnee2025when,
author={Gurnee, Wes and Ameisen, Emmanuel and Kauvar, Isaac and Tarng ,Julius and Pearce, Adam and Olah, Chris and Batson, Joshua},
title={When Models Manipulate Manifolds: The Geometry of a Counting Task},
journal={Transformer Circuits Thread},
year={2025},
url={https://transformer-circuits.pub/2025/linebreaks/index.html}
}
______________________________________________________________________
许可证
MIT许可证-请参阅 许可证
