用途
GrepAI Watch Daemon 技能围绕 grepai watch 命令,用于配置和管理 GrepAI 的 watch 守护进程,主要面向代码的实时索引和文件监控。典型使用时机包括:执行初始代码索引、搭建实时文件监控、在后台运行守护进程,以及排查索引问题。
主要能力
watch 守护进程会执行以下工作:
- 扫描项目中的所有源文件
- 将代码切分为片段(约 512 tokens)
- 通过已配置的提供方生成嵌入向量
- 将向量存入已配置的后端
- 实时监控文件变更
- 在文件变化时更新索引
文件变更检测使用操作系统原生的文件监控机制:macOS 使用 FSEvents,Linux 使用 inotify,Windows 使用 ReadDirectoryChangesW。触发重新索引的行为包括:保存已有文件会重新嵌入该文件的片段;新建文件会索引新片段;删除文件会从索引中移除;重命名文件会更新路径并保留向量。
索引内容方面,守护进程会索引匹配受支持扩展名(如 .go、.js、.ts、.py 等)、不在忽略模式(如 node_modules、.git 等)中且遵循 .gitignore 的文件。较大代码库会显示进度。
使用方式
基本用法:
前台启动监控:
cd /your/project
grepai watch
后台启动:
grepai watch --background
检查守护进程状态:
grepai watch --status
停止守护进程:
grepai watch --stop
命令参考:
| 命令 | 说明 |
|---|---|
| grepai watch | 前台启动守护进程 |
| grepai watch --background | 后台启动守护进程 |
| grepai watch --status | 检查守护进程状态 |
| grepai watch --stop | 停止正在运行的守护进程 |
配置
watch 设置位于 .grepai/config.yaml,可配置去抖延迟(debounce_ms)。去抖用于将快速连续的文件变更合并,当保存文件时编辑器常会快速多次写入,去抖会等待变更稳定:100 表示更灵敏且重新索引更多;500 为默认的均衡值;1000 表示灵敏度较低且重新索引更少。
后台守护进程管理
可在系统启动时自启。 macOS(launchd):创建 ~/Library/LaunchAgents/com.grepai.watch.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.grepai.watch</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/grepai</string>
<string>watch</string>
</array>
<key>WorkingDirectory</key>
<string>/path/to/your/project</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
加载:
launchctl load ~/Library/LaunchAgents/com.grepai.watch.plist
Linux(systemd):创建 ~/.config/systemd/user/grepai-watch.service:
[Unit]
Description=GrepAI Watch Daemon
After=network.target
[Service]
Type=simple
WorkingDirectory=/path/to/your/project
ExecStart=/usr/local/bin/grepai watch
Restart=always
[Install]
WantedBy=default.target
启用:
systemctl --user enable grepai-watch
systemctl --user start grepai-watch
查看日志:
tail -f ~/.grepai/daemon.log
或使用 systemd:
journalctl --user -u grepai-watch -f
多项目处理
每个项目运行一个独立守护进程:
# Terminal 1: Project A
cd /path/to/project-a
grepai watch --background
# Terminal 2: Project B
cd /path/to/project-b
grepai watch --background
也可使用工作区(workspace)应对多项目:
grepai workspace create my-workspace
grepai workspace add my-workspace /path/to/project-a
grepai workspace add my-workspace /path/to/project-b
grepai watch --workspace my-workspace
故障排查
守护进程无法启动:
- “Another daemon is already running”:
grepai watch --stop
grepai watch --background
- “Config not found”:先初始化:
grepai init
grepai watch
- “Embedder connection failed”:启动嵌入提供方:
ollama serve # For Ollama
索引问题:
- 文件未被索引:检查配置中的忽略模式,确认文件扩展名受支持。
- 索引非常慢:可改用 OpenAI 进行更快的云端嵌入、增加忽略模式、增大分块大小。
- 索引似乎过时:清除并重新索引:
rm .grepai/index.gob
grepai watch
文件监控问题:
- 未检测到变更:降低 debounce_ms;Linux 下检查 inotify 限制:
echo 65536 | sudo tee /proc/sys/fs/inotify/max_user_watches
最佳实践
- 后台运行:用于持续监控
- 单仓库(monorepo)使用 workspace:便于组织
- 配置自启动:launchd 或 systemd
- 定期检查日志:监控错误
- 配置变更后重新索引:尤其是在更改嵌入模型后
状态检查
可使用以下命令进行常规健康检查:
grepai status
输出包含项目路径、配置文件、嵌入方、存储、索引文件数/片段数/大小/最后更新时间,以及守护进程运行状态(PID)。
watch 守护进程状态输出会包含:模式(后台)、PID、项目路径、初始索引信息(扫描文件数、创建片段数、耗时)、实时监控信息(去抖毫秒、已处理事件数、最后事件时间),以及后续可执行命令(搜索、查看状态、停止守护进程)。
限制
本资料未提供 GrepAI 的收费、价格、平台支持范围、嵌入提供方与后端的具体可选清单、向量存储的容量上限、索引精度或效果指标等信息。索引时间估算表中给出的耗时(Ollama 与 OpenAI 在小/中/大代码库下的时间)来自资料示例,实际表现可能因环境而异;该技能不保证具体效果或性能。