SuperAPI AI 工具集

grepai-watch-daemon

编程与开发

查看项目

更新于 10-15 15:11

技能介绍

用途

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 在小/中/大代码库下的时间)来自资料示例,实际表现可能因环境而异;该技能不保证具体效果或性能。