J
jahala/tilth
Smart code reading for humans and AI agents
在 GitHub 查看 ↗链接已于 2026-11-12 核查 · HTTP 200 · 打开的是厂商自己的官网
官方说明Smart code reading for humans and AI agents. Definitions, callers, dependencies and function-level diffs from tree-sitter. One binary, no index. MCP server + CLI. Install: cargo install tilth or npx tilth
安装与配置
客户端配置(取自该仓库的安装命令)
{
"mcpServers": {
"jahala-tilth": {
"command": "npx",
"args": ["tilth"]
}
}
}解析自我们于 2026-11-11 抓取的该仓库 README;我们未执行过。
command/args 来自仓库写明的安装命令;不确定时请以该项目 README 为准。
VS Code(.vscode/mcp.json —— 键名是 servers)
{
"servers": {
"jahala-tilth": {
"command": "npx",
"args": ["tilth"]
}
}
}VS Code 顶层键是 <code>servers</code>,其余与上面那份相同。
Claude Code(命令行)
claude mcp add --transport stdio jahala-tilth -- npx tilth
Claude Code 不收 JSON 文件,用这条命令直接加。
配置项的键名以你的客户端为准:客户端与 CLI
- ★ 数取值
- 362 ★ · jahala/tilth · 取自 GitHub 搜索 API · (2026-11-13 20:00:50 核对)
- 来源明细
- 从该仓库的 GitHub 页面直接读取 · 条目类型:开源项目
- 收录与活跃
- 收录于 2026-11-12 · 最近见到 2026-11-14 · 共见到 3 次 · 被 2 个来源列出
- 评分构成
- 综合分 204 · 362 ★ · 2 个来源 · repo
- 安装
npx tilth
常见问题(答案都来自我们的记录)
怎么安装?
该仓库给出的安装命令是
npx tilth。我们的记录里它是仓库自己提供的;不保证在你的客户端上直接可用。它适合谁 / 用来做什么?
我们把它归在这些标签下: 开源项目。标签来自条目自身,不是我们强加的分类。
谁维护它、还在更新吗?
仓库
jahala/tilth;我们收录于 2026-11-12;最近见到 2026-11-14。这里没有"官方认证"或"质量评级"——我们只记录来源与时间。# tilth
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Smart code reading for humans and AI agents. tilth parses your code with tree-sitter and answers questions that text search can't. It shows where a symbol is defined, who calls it, what it calls, what depends on a file, and what changed at function level.
tilth is one binary. It works as a command-line tool and as an MCP server, which is how most agent hosts connect to tools. It builds no index and needs no setup.
$ tilth fastapi/dependencies/utils.py
# fastapi/dependencies/utils.py (1026 lines, ~9.6k tokens)
[1-] imports: dataclasses, inspect, sys
[86-110] fn ensure_multipart_is_installed
def ensure_multipart_is_installed() -> None
[113-125] fn get_parameterless_sub_dependant
def get_parameterless_sub_dependant(, depends: params.Depends, path: str) -> Dependant
[128-179] fn get_flat_dependant
def get_flat_dependant(
...
[203-215] fn _get_signature
def _get_signature(call: Callable[..., Any]) -> inspect.Signature
[218-232] fn get_typed_signature
def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature
...
Small files come back whole. Large files come back as an outline with line ranges. Ask for the part you need with --section:
bash
tilth fastapi/dependencies/utils.py --section 218-232
tilth docs/guide.md --section "## Installation"
The examples in this README are real output from the FastAPI and Gin repositories. Lines marked ... are cut for length.
## Search finds definitions first
$ tilth get_typed_signature --scope fastapi --expand=1
# Search: "get_typed_signature" in fastapi — 2 matches (1 definitions, 1 usages)
### dependencies/utils.py:218-232 [definition]
[203-215] fn _get_signature
def _get_signature(call: Callable[..., Any]) -> inspect.Signature
-> [218-232] fn get_typed_signature
def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature
[235-241] fn get_typed_annotation
dependencies/utils.py:218-232
218 | def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature:
219 | signature = _get_signature(call)
220 | unwrapped = inspect.unwrap(call)
...
232 | return typed_signature
-- calls --
_get_signature dependencies/utils.py:203-215 def _get_signature(call: Callable[..., Any]) -> inspect.Signature
get_typed_annotation dependencies/utils.py:235-241 def get_typed_annotation(annotation: Any, globalns: dict[str, Any]) -> Any
### dependencies/utils.py:277 [usage in function get_dependant]
[244-253] fn get_typed_return_annotation
def get_typed_return_annotation(call: Callable[..., Any]) -> Any
-> [256-328] fn get_dependant
def get_dependant(
[331-352] fn add_non_field_param_to_dependency
(~439 tokens)
tilth uses the syntax tree to tell a definition from a mention, and it lists definitions first. Each match is shown with the symbols around it, so you can see where you are without reading the file.
An expanded definition ends with a -- calls -- footer. It lists the functions the definition calls, each with its file, line range and signature. An agent can follow a call chain from there without searching again.
A qualified name such as Engine::handleHTTPRequest or Context.reset finds the definition that type holds, in search and in grok. A qualifier that names a module or package (gin.New, crate::search::symbol::search) finds the function at the top level of that module, and Self::new, self.run or this.handle find the name in whichever type holds it.
tilth is one binary. It works as a command-line tool and as an MCP server, which is how most agent hosts connect to tools. It builds no index and needs no setup.
$ tilth fastapi/dependencies/utils.py
# fastapi/dependencies/utils.py (1026 lines, ~9.6k tokens)
[1-] imports: dataclasses, inspect, sys
[86-110] fn ensure_multipart_is_installed
def ensure_multipart_is_installed() -> None
[113-125] fn get_parameterless_sub_dependant
def get_parameterless_sub_dependant(, depends: params.Depends, path: str) -> Dependant
[128-179] fn get_flat_dependant
def get_flat_dependant(
...
[203-215] fn _get_signature
def _get_signature(call: Callable[..., Any]) -> inspect.Signature
[218-232] fn get_typed_signature
def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature
...
Small files come back whole. Large files come back as an outline with line ranges. Ask for the part you need with --section:
bash
tilth fastapi/dependencies/utils.py --section 218-232
tilth docs/guide.md --section "## Installation"
The examples in this README are real output from the FastAPI and Gin repositories. Lines marked ... are cut for length.
## Search finds definitions first
$ tilth get_typed_signature --scope fastapi --expand=1
# Search: "get_typed_signature" in fastapi — 2 matches (1 definitions, 1 usages)
### dependencies/utils.py:218-232 [definition]
[203-215] fn _get_signature
def _get_signature(call: Callable[..., Any]) -> inspect.Signature
-> [218-232] fn get_typed_signature
def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature
[235-241] fn get_typed_annotation
dependencies/utils.py:218-232
218 | def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature:
219 | signature = _get_signature(call)
220 | unwrapped = inspect.unwrap(call)
...
232 | return typed_signature
-- calls --
_get_signature dependencies/utils.py:203-215 def _get_signature(call: Callable[..., Any]) -> inspect.Signature
get_typed_annotation dependencies/utils.py:235-241 def get_typed_annotation(annotation: Any, globalns: dict[str, Any]) -> Any
### dependencies/utils.py:277 [usage in function get_dependant]
[244-253] fn get_typed_return_annotation
def get_typed_return_annotation(call: Callable[..., Any]) -> Any
-> [256-328] fn get_dependant
def get_dependant(
[331-352] fn add_non_field_param_to_dependency
(~439 tokens)
tilth uses the syntax tree to tell a definition from a mention, and it lists definitions first. Each match is shown with the symbols around it, so you can see where you are without reading the file.
An expanded definition ends with a -- calls -- footer. It lists the functions the definition calls, each with its file, line range and signature. An agent can follow a call chain from there without searching again.
A qualified name such as Engine::handleHTTPRequest or Context.reset finds the definition that type holds, in search and in grok. A qualifier that names a module or package (gin.New, crate::search::symbol::search) finds the function at the top level of that module, and Self::new, self.run or this.handle find the name in whichever type holds it.
收录徽章(可选)
想把收录标记放进 README 就复制这行,可选,不影响收录。
[](https://anclum.com/zh/s/jahala-tilth/)
- 来源
- github · https://github.com/jahala/tilth
- 按领域浏览
- 开源项目
- Traction
- 362 ★
- 收录来源
- 2 个独立来源
- 收录于
- 今天
同类推荐
所属领域与标签
每个标签都能点进去看同类的全部条目。数字是当前库里的真实条数。