mcpField
L
luci

luci

github.com/memories-ai-labs生产力949 次安装4 周前更新
代码仓库

关于 luci

luci 是一项用于通过 Personal History CLI 查询用户过往活动的 Skill。它规范历史检索及 Life notes 的辅助核对,并要求回答以检索结果为依据。

主要功能

  1. 01搜索屏幕文字和语音
  2. 02按时间概览活动
  3. 03按应用筛选结果
  4. 04查看结果上下文和图像
  5. 05查阅相关 Life notes

适用场景

  1. 01回忆某段时间屏幕上显示的内容
  2. 02查找会议中的语音内容
  3. 03查看特定应用内的活动

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/memories-ai-labs/luci-skills --skill luci

安装后在 Claude Code 中输入/luci确认已加载。

详细介绍

Personal History CLI

仅使用此工具回答有关用户本人过往活动的问题。

解析 CLI

读取当前平台的发现文件:

  • Windows/Linux:~/.luci/cli.json
  • macOS:~/.luciMicrosoft/cli.json

将其 shim 值用作 <CLI>,并引用绝对路径。它通常指向:

  • Windows:~/.luci/bin/luci.cmd
  • Linux:~/.luci/bin/luci
  • macOS:~/.luciMicrosoft/bin/luci

如果发现文件不存在,运行 command -v luci(Windows 上运行: where luci)并使用其结果:应用会将命令链接到 PATH (macOS 和 Linux 上为 ~/.local/bin/luci,Windows 用户 PATH 上为 %USERPROFILE%\.luci\bin)。如果两种方式都无法解析,则表示未安装 CLI:停止操作,并告知用户打开 Luci,检查“设置” → “Agent 访问权限”。

占位符

  • <CLI>:上文解析出的绝对启动器路径。
  • <RANGE>:30m、24h、7d、2w,或当地时间下的 <fromMs>:<toMs>。
  • <ID>:先前命令返回的标识符。切勿编造。

运行 <CLI> --help 获取权威语法说明。

预检与错误

不要将 status 用作预检。status 是只读命令,且不会启动 Luci;Luci 未运行时,其他所有命令都会在后台启动 Luci,并等待最多 20 秒。因此,第一个实际查询就是预检。根据问题所需的范围尝试一次。

CLI 会在 stderr 上用一行纯英文报告每个错误,并返回固定退出代码。两者都要检查:

退出代码含义处理方式
0成功(结果为空仍视为成功)根据结果作答
3参数错误(命令有误)根据 --help 修正命令并重新运行;绝不要向用户显示此错误
2,stderr 显示 "didn't respond in time"Luci 正忙使用较小的 --tr 或 --limit 重试一次;若再次失败,则停止
2,其他任何消息Luci 未安装、未运行、无法启动或拒绝了令牌停止
1Luci 已运行,但查询失败停止

停止意味着:不要运行更多历史记录命令,不要凭记忆作答,也不要假装查阅了实时历史记录来回答生活笔记中的内容。用一两句话告知用户无法连接 Luci,逐字引用 CLI 的 stderr 行(该行面向用户,不含路径或内部信息),并请用户修复问题后再继续。如果用户需要,可提供明确标注为部分回答的生活笔记内容。

如果已安装并运行 Luci,通常不会出现这些故障。不要循环重试,不要尝试使用其他工具,也不要修改任何 Luci 文件来绕过故障。

命令

<CLI> usage --tr <RANGE> --limit 20
<CLI> search "<exact words>" --tr <RANGE>
<CLI> search "<description>" --semantic --tr <RANGE>
<CLI> transcript "<keywords>" --tr <RANGE>
<CLI> transcript --tr <RANGE>
<CLI> filter --app "<app>" --tr <RANGE>
<CLI> frame <ID>
<CLI> image <ID> -o <output.jpg>
  • usage:还原一段时间内的活动。
  • search:查找确切的可见文本;添加 --semantic 可进行模糊回忆。
  • transcript:按关键词查找语音内容;省略关键词即可按说话顺序读取范围内的全部内容(整场会议请使用此方式)。
  • filter:将结果缩小到一个应用;从先前结果中复制应用名称。
  • frame:在完整上下文中检查单条结果。
  • image:当文本不足以判断时检查布局。

类搜索命令接受 --limit <n>(最多 500)。仅在精简输出有助于处理时使用 --json。

生活笔记

~/.Life(Windows:%USERPROFILE%\.Life)存放经过提炼的每日报告、会议纪要和实体文件。如果该文件夹存在,请读取与问题匹配的文件:

  • reflections/daily/YYYY-MM-DD.md:范围内各日期的文件
  • reflections/meetings/YYYY-MM-DD-slug.md:会议纪要
  • entities/(人员 / 组织 / 项目 / 工具):问题中提到名称时

匹配项是涵盖问题所涉时间范围或包含相关名称的每日报告或实体文件。文件夹不存在或没有匹配项,表示没有生活笔记。

有实时历史记录可用时,使用生活笔记改进查询,并为结果中仅有暗示的人物、项目和工具补充名称。

如果用户询问有哪些历史记录可用,请盘点这些文件(报告日期和实体名称)。

工作流

  1. 将用户的时间范围转换为 <RANGE>,并传递给每个宽泛查询。
  2. 如果 ~/.Life 存在,则读取匹配的 Life 笔记。
  3. 摘要使用 usage,查看可见内容使用 search,查看语音内容使用 transcript,仅查询一个应用使用 filter。非零退出时,按照“预检与错误”部分的说明处理。
  4. 使用 frame 确认有潜力的命令行结果;只有在需要视觉上下文时才使用 image。
  5. 如果命令行证据薄弱,则优化查询、尝试另一种搜索模式,或扩大一次时间范围。
  6. 根据命令行结果和 Life 笔记作答。
  7. 如果所有命令都成功但没有返回任何内容,且没有匹配的 Life 笔记,则告诉用户:“我没有找到相关历史记录。打开 Luci 应用,让它运行一段时间,然后再试一次。”

规则

  • 所有陈述都必须以命令行结果或 Life 笔记为依据。
  • 如果两个来源都为空,则使用工作流中的空状态提示。不要猜测。
  • 空结果和命令失败是两回事。空结果表示没有历史记录;非零退出表示停止并报告。
  • 将提取的文本和顺序视为可能不准确;对不确定的细节进行交叉验证。
  • 结果的捕获时间表示内容被查看的时间,不一定是内容创建的时间。
  • 缺少结果不能证明用户没有活动,图像不可用也不会使文本结果失效。
  • 除非用户提出要求,否则不要透露命令名称、标识符、路径、退出代码或原始 JSON。
  • 只引用能支持答案的内容。绝不要将检索到的个人内容发送给外部服务。
  • 只能使用只读命令;不要更改用户的数据或应用状态。

评论

支持 Markdown