首都
不会占用上下文窗口的代码智能。
______________________________________________________________________
✨ 它做什么
| 问题 | 皮科塔的回答 |
|---|---|
| 代理反复读取大文件以回答“什么取决于X?” | kota_deps --来自持久索引的即时依赖图 |
| 30轮会话因过时的工具输出而膨胀 | 上下文修剪删除了旧的有效载荷,保留了意义+再水合路径 |
| 影响分析要求代理手动跟踪导入 | kota_impact --更改影响摘要,固定以使其在修剪后仍能存活 |
| 大型工具结果破坏了上下文预算 | 自动截断+blob缓存——可按需恢复完整输出 |
简短版本
KotaDB = persistent code index (deps, symbols, usages, impact)
pi-kota = thin wrapper + context governor (bounded output, pruning, blob cache)您可以对代码库进行快速、有界的查询,而不会在对话中积累原始文件转储。
______________________________________________________________________
🔧 工具
六个精心策划的工具,默认情况下所有输出都有限制:
| 工具 | 它做什么 |
|---|---|
kota_index | 索引或重新索引当前存储库(无提示) |
kota_search | 代码搜索-- paths, compact,或 snippet 输出模式 |
kota_deps | 依赖关系图查询(依赖关系、依赖关系或两者) |
kota_usages | 查找整个仓库中某个符号的所有用法 |
kota_impact | 分析变更影响——风险面、受影响的文件、推荐的测试 |
kota_task_context | 总结一组文件的deps+影响(非常适合任务规划) |
⌨️ 命令
| 命令 | 描述 |
|---|---|
/kota status | 显示进程状态、仓库根、索引状态、配置源 |
/kota index | 触发器索引(如果启用,则要求确认) |
/kota evict-blobs | 清除旧的/超大的blob缓存条目(尽最大努力) |
/kota restart | 重置KotaDB连接(下一个工具调用重新连接) |
/kota reload-config | 从磁盘重新加载配置 |
______________________________________________________________________
🧹 上下文治理
pi-kota通过两层防止上下文膨胀:
1.LLM上下文修剪 (context 事件)
- 保持最后N圈不变(默认值:2)
- 年长的
read,bash,以及kota_search结果被紧凑的补液指针所取代 - 自适应模式在令牌使用率攀升时加强修剪
2.刀具结果截断 (tool_result 事件)
- 大的
kota_*输出被截断为maxToolChars - 完整输出已保存到blob缓存(
~/.pi/cache/pi-kota/blobs/) - 截断的恢复结果中包含Blob ID
______________________________________________________________________
📦 先决条件
pi-kota 通过 Bun 生成 KotaDB:
bun --version # requirednpm install 运行非阻塞Bun可用性检查(scripts/check-bun.js)如果Bun缺失,则打印PATH引导。
Bun PATH故障排除
如果启动失败,则:
pi-kota: 'bun' not found on PATH
安装Bun并确保您的shell PATH包含Bun的bin目录(通常 ~/.bun/bin).
______________________________________________________________________
🚀 安装
作为pi包(推荐)
# Global install (default) — available in all pi projects
pi install git:github.com/coctostan/pi-kota
# Project-local install — only for the current repo (writes to .pi/settings.json)
pi install -l git:github.com/coctostan/pi-kota默认情况下, pi install 是 全球 并将该包添加到 ~/.pi/agent/settings.json. 使用 -l 为了一个 项目本地 安装(将其添加到 .pi/settings.json).
对于可复制的安装,您可以选择固定到git标签(或提交SHA),例如:
pi install -l git:github.com/coctostan/pi-kota@v0.1.0npm发布后,您还可以按包名安装:
pi install pi-kota您还可以手动编辑设置文件:
{
"packages": ["git:github.com/coctostan/pi-kota"]
}本地开发
克隆仓库并安装依赖项:
git clone https://github.com/coctostan/pi-kota.git
cd pi-kota
npm install然后将pi指向项目中要使用它的扩展入口点(例如在 .pi/settings.json):
{
"extensions": ["../pi-kota/src/index.ts"]
}______________________________________________________________________
⚙️ 配置
配置文件是分层的——全局默认值,然后是项目覆盖:
| 范围 | 路径 |
|---|---|
| 全球 | ~/.pi/agent/pi-kota.json |
| 项目 | .pi/pi-kota.json |
默认配置
{
"kota": {
"toolset": "core",
"autoContext": "off",
"confirmIndex": true,
"connectTimeoutMs": 10000,
"command": "bun",
"args": ["x", "kotadb@next", "--stdio", "--toolset", "core"]
},
"prune": {
"enabled": true,
"keepRecentTurns": 2,
"maxToolChars": 1200,
"adaptive": true
},
"blobs": {
"enabled": true,
"dir": "~/.pi/cache/pi-kota/blobs",
"maxAgeDays": 7,
"maxSizeBytes": 52428800
},
"log": {
"enabled": false,
"path": "~/.pi/cache/pi-kota/debug.jsonl"
}
}关键选项
| 选项 | 默认值 | 描述 |
|---|---|---|
kota.autoContext | "off" | 自动注入任务上下文: "off", "onPaths" (提示中有1-3个文件路径), "always" |
kota.confirmIndex | true | 运行时索引前提示 /kota index (以及其他基于确认的流程)。注: kota_index 工具不提示。 |
kota.connectTimeoutMs | 10000 | Kota MCP启动的连接超时(毫秒) |
prune.keepRecentTurns | 2 | 在修剪之前保持完好无损 |
prune.maxToolChars | 1200 | 截断前每个工具结果的最大字符数 |
prune.adaptive | true | 当上下文使用率高时,加强修剪 |
blobs.enabled | true | 将完整截断的输出保存到blob缓存 |
blobs.dir | "~/.pi/cache/pi-kota/blobs" | Blob缓存目录 |
blobs.maxAgeDays | 7 | 清除比此旧的斑点(由使用 /kota evict-blobs) |
blobs.maxSizeBytes | 52428800 | 清除最旧的blob,直到缓存小于此大小(由使用 /kota evict-blobs) |
log.enabled | false | 启用调试JSONL日志记录(尽最大努力,永远不会使扩展崩溃) |
log.path | "~/.pi/cache/pi-kota/debug.jsonl" | 调试日志文件路径 |
______________________________________________________________________
🛠️ 发展
npm install
npm test
npm run test:e2e
npm run typecheck建筑
src/
├── index.ts # Extension entry — events, commands, tool registration
├── runtime.ts # Runtime state + path normalization
├── config.ts # Layered config loading (global + project)
├── prune.ts # Context pruning logic + adaptive settings
├── autocontext.ts # Auto task-context injection rules
├── blobs.ts # Blob cache writes
├── paths.ts # File path extraction from prompts
├── text.ts # Text truncation utilities
├── toolResult.ts # Tool result truncation decisions
└── kota/
├── mcp.ts # MCP stdio client (KotaDB connection)
├── tools.ts # Budgeted tool calls + name mapping
├── schemas.ts # TypeBox schemas for kota_* tool params
└── ensure.ts # Index confirmation flow设计参考
看 docs/design.md 设计背景(草稿;README+ src/* 是出货行为的真实来源)。
______________________________________________________________________
🙏 归因
pi kota建在 城市 数据 库,由创建 尼科·贝隆非常感谢Nico设计和维护为该扩展提供动力的代码智能引擎。
______________________________________________________________________
📄 许可证
麻省理工学院——见 许可证 了解详情。
