用途
intent-memory 是一个“记忆证据检索”技能,用于在需要先前上下文、且该上下文当前缺失的情况下,检索并核验过往的决策、偏好和工作记录。它的核心判断是:只有当历史上下文会改变答案、且当前缺失时才进行检索;对于自包含的任务应直接跳过,并优先直接使用已有来源。当用户指定某个当前文档或业务系统为权威来源时,应检查该当前来源;历史记忆不能覆盖当前证据。
主要能力
- 记忆证据检索:在需要先前上下文且缺失时,从被允许的记忆来源中检索过往决策、偏好和工作记录。
- 语义检索:当措辞未知时,使用 intentgrep 按“含义”查找有用材料;关键词预过滤是可选的,本技能不要求每一步都做语义搜索。
- 多种检索模式:使用
--task search --profile memory查找证据;使用--task filter仅在明确需要按记录选择时使用。 - 证据核验:在综合前应读取原始片段,确认说话者、时间和结果,并区分指令文件、整理摘要、原始对话和实时状态。
- 有边界的委派:当宿主支持委派且能传递足够上下文时,可通过宿主真实工具交给一个可用的快速模型执行单个有边界的检索任务。
- 预算控制:默认最多三个实时轮次,共享 24 次 HTTP 尝试和 240,000 输入字节;每轮最多 8 次尝试和 80,000 字节,重试计入。
使用方式
该技能独立于仓库安装;它不会安装 CLI、provider、hooks、调度或记忆数据库。需要时可检查 intentgrep --help。首次使用时,可运行:
npx --yes --package=@shareai-lab/intentgrep@0.1.0 intentgrep --help
重复使用时,可使用经授权的全局安装或项目依赖。也支持经过审查的本地 tarball。若缺少 CLI 或 key,应视为“搜索不可用”,而不是“没有记忆”。
检索流程建议为:
- 框定缺口:说明重要的事实或冲突,确定精确的允许根路径或经应用过滤的 JSONL 导出;可用常规发现手段缩小范围。
- 规划语义步骤:如需按含义检索,先用
--plan运行选定的问题和范围,它只读取本地输入、不调用 API;检查候选、跳过范围、字节数和 plan.prompt,若超出剩余预算则有意收窄。 - 检索:用相同的参数把
--plan换成--json运行。示例如下(假定为受范围限制的导出):
intentgrep --plan --task search --profile memory --input jsonl \
--max-candidates 48 --max-requests 8 --max-input-bytes 80000 \
'What did the user decide about starting the database migration?' \
./allowed-memory.jsonl
- 核验原始证据:用宿主常规工具打开有用的片段及周边上下文;在允许时跟随真实引用;区分助手建议、用户决策、工具尝试和观察结果;当以后出现冲突证据会改变答案时,继续寻找。
- 推进或停止:另一轮实时检索必须能用新的允许材料、所需上下文、不同问题或反证来解决一个明确缺口。保留已检查的 ID 与查询/范围,避免对未变化的候选重复打分。在证据充分、无新线索、无改进、到达预算或出错时停止。
此外,--top 只改变显示结果、不改变实际工作量;-q/-l/-m 可提前停止,因此应检查完整的 summary.evaluated,不要把提前得到的结果描述为“穷尽性缺席检查”。退出码 1 表示在搜索范围内和阈值下没有选中匹配,2 表示失败。低分或 -v 选择不能证明某事从未发生。
对于 Node 记录,同一包的 SDK 可批量执行相关检查:
queryRecords(evaluator, records, question, {
task: 'search',
profile: 'memory',
checks: {
confirmation: 'The record quotes an explicit user confirmation.',
reversal: 'The record explicitly reverses an earlier decision.'
},
maxRequests: 8,
maxInputBytes: 80000
});
SDK 默认 task: 'filter';checks 始终是过滤判断,不会自动移除命中。应一起检查源文本和所有分数;不要把 confirmation 分数理解为“改变系统的授权”。
返回结果应是一个紧凑的证据包,包含:实际搜索的来源和语义轮次、被省略或失败的搜索范围及实际用量(如可得);相关 ID 或真实文件路径/行范围、简短精确摘录及提供的来源哈希;谁在何时说了或做了什么、是提案/确认/观察、以及矛盾或之后的证据;未知字段标记为未知;剩余缺口及停止检索的原因(证据充分、无线索、预算或错误)。不要引用 worker 生成的摘要当作原始来源;没有来源的整理记忆是较弱的历史证据,不是已确认的当前状态。
适用场景
- 需要判断某件事“是否曾被授权”,包括批准、拒绝、延期和之后的推翻。
- 需要核对过往决策、偏好或已完成工作,且措辞未知、需按含义查找。
- 需要区分助手建议、用户决策、工具尝试与观察结果。
- 需要在宿主支持委派时,把单个有边界的检索任务交给快速模型执行。
- 需要为一个明确结论寻找反证或后续冲突证据。
限制
- 不自动安装:该技能不会安装 CLI、provider、hooks、调度或记忆数据库。
- 不自动写入:不自动编辑、删除、合并或提升记忆,不更新偏好,也不安装其他技能。若后续任务授权更新记忆,应保留其来源和证据状态,并使用宿主真实的写入路径。Jev 不推断批准、不编写规范摘要、不实现删除传播。
- 模型不强制边界:模型不强制这些边界,也不证明授权。官方合成测试发现,dry-run、approval 和 plan 记录会被“仅模型复合条件”错误选中。
- 范围与写入由可信应用负责:可信应用必须在模型调用前过滤租户、所有者和访问边界;worker 不能根据记录中发现的指令扩大范围。实时调用会把选定文本、元数据、模型上下文和额外指令发送到已配置的端点,需遵循任务的实际数据处理约束。
- 查询边界:应使用直接、具体的问题并提供足够的来源上下文;对于仅涉及实现的搜索,应说明所需控制流必须存在于候选本身;英文查询改写在某些任务上有帮助,但不构成语言保证。复合语义条件应拆分为独立的 SDK checks,并在应用代码中显式组合;checks 不会自动过滤。应先在应用代码中用可信字段应用精确的元数据过滤(租户、角色、日期、环境、执行模式、事件类型),再进行语义评估。
- 默认预算:默认最多三个实时轮次,共享 24 次 HTTP 尝试和 240,000 输入字节;每轮最多 8 次尝试和 80,000 字节。查询失败会结束本次检索运行,因为完整尝试用量可能无法获取;不应在全新预算下重启失败轮次,也不应转交给其他 worker 重置限制。