mcpField
O
owner-goals

owner-goals

github.com/thedotmack生产力104.0k78 次安装今天更新
代码仓库

关于 owner-goals

owner-goals 从 Claude Code 和 Codex 会话中提取用户亲自输入的提示词,整理优先事项与未完成请求,并保存到 My Work 的 Goals。适用于需要追踪用户目标及其原话证据的工作流程。

主要功能

  1. 01导出用户亲自输入的提示词
  2. 02排除疑似 Agent 撰写的提示词
  3. 03按时间范围筛选并生成目标地图
  4. 04校验引用并保存目标快照
  5. 05支持更新当前目标或保存历史周期

适用场景

  1. 01汇总一段时间内的用户优先事项
  2. 02从新提示词更新已保存的目标
  3. 03核对目标引用是否来自原始提示词

安装

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

$npx skills add https://github.com/thedotmack/claude-mem --skill owner-goals

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

附带文件scripts/export_owner_prompts.pyscripts/save_goals.py

详细介绍

主人的目标

根据主人亲自输入的提示词,梳理主人想要什么、关注什么,然后将最重要的优先事项和未解决的请求保存到工作状态中;「我的工作」会在请求卡片上方以 目标 的形式显示这些内容。每个目标都会保留主人的原话,以及输入时的日期和时间。

${CLAUDE_SKILL_DIR} 是存放此文件的文件夹。脚本使用 Python 3 标准库。

1. 导出主人的提示词

在当前项目中选择一个输出文件夹,例如 .scratch/owner-goals/<YYYY-MM-DD>/,然后运行:

python3 "${CLAUDE_SKILL_DIR}/scripts/export_owner_prompts.py" --out "<folder>" --days 31

用户要求使用不同的时间范围时,请使用 --days。对于特定时段,例如过去一个月,请使用 --start YYYY-MM-DD --end YYYY-MM-DD,而非 --days(从开始日期当天的午夜起,直到结束日期当天的午夜前),并使用以开始日期命名的文件夹。该脚本会:

  • 读取 Claude Code 对话记录(~/.claude/projects)和交互式 Codex 会话(~/.codex/sessions),保留对话记录中标记为由真人输入的提示词;
  • 移除由 Agent 先行撰写的提示词:开头已出现在较早的 Agent 撰写文本(助手消息、工具输入、Codex 函数调用)中的提示词,以及以分配角色的方式开头的长提示词(“You are the…”,“Task: ”,“Branch: ”);
  • 写入 owner-prompts.md(按时间从早到晚排列,每条前面标有 ## YYYY-MM-DD HH:MM · tool · project)以及用于审计的 excluded-agent-written-prompts.md;
  • 如果 git 会以其他方式跟踪该文件夹,则将其添加到检出目录的本地 git 排除文件中。

脚本会输出保留和排除的提示词数量。

2. 使用子 Agent 构建映射

owner-prompts.md 内容较多,因此由子 Agent 阅读。将以下任务交给它,并填入路径:

完整阅读 <folder>/owner-prompts.md。该文件只包含主人输入的提示词。写入 <folder>/owner-map.md,梳理主人想要什么、关注什么,并包含以下部分:

  1. 总结:用一段话概述主人在这段时间内想要做什么。
  2. 按产品或项目分类的需求:主人想要的结果,以及提出过的请求。
  3. 主人希望如何开展工作。
  4. 让主人生气的事情,按时间从新到旧排列,并列出每件事的触发原因。
  5. 未解决的请求,按时间从新到旧排列:重复提出的事情、抱怨尚未完成的事情,或在后续提示词中看不到已完成的事情。
  6. 当前最重要的 10 项优先事项,按近期程度 × 重复次数 × 强烈程度排序。

每一点都引用主人的原话(保留错别字),并附上提示词标题中的时间戳(MM-DD HH:MM)。只使用提示词中写明的内容。主人改变方向时,展示变化并标出最新方向。内容不明确时,请注明不明确。看起来像 Agent 启动器或协调器消息的文本不能作为证据。

然后根据第 1、5、6 部分编写 <folder>/owner-goals.json:

{
  "generated_at": "<现在的时间,采用含偏移量的 ISO 8601 格式>",
  "window_days": <天数>,
  "source_prompt_count": <owner-prompts.md 中的提示词数量>,
  "human_summary": "<第 1 部分,纯文本>",
  "priorities": [{"rank": 1, "title": "<简短标题>", "product": "<产品或领域>",
                  "latest_at": "YYYY-MM-DD HH:MM", "times_asked": <引用的提示词数量>,
                  "evidence": [{"at": "YYYY-MM-DD HH:MM", "quote": "<原话>"}]}],
  "open_asks": [<与上述结构相同,rank = 第 5 部分中的位置>]
}

每项引用 2 到 4 条原话,按时间从新到旧排列,每条不超过 240 个字符,并准确照抄提示词及对应标题时间。跳过部分文字时,请在片段之间使用 ...。

或更新已保存的目标

如果之前已保存目标(已保存的 owner-goals.json,或使用 list: "owner-goals" 的 work_state_read),请更新它们,而不是重新映射整个时间段。在步骤 1 中添加 --since "<YYYY-MM-DD HH:MM>",将已保存的 generated_at 作为本地时间的分钟值:脚本还会写入 new-owner-prompts.md,其中仅包含从该分钟起的提示词。如果其中没有提示词,就用新的 generated_at 再次保存已保存的目标。否则,只读取 new-owner-prompts.md 并更新已保存的目标 JSON:

  • 按近期程度 × 重复次数 × 强度重新排序,添加新的优先事项和待处理请求,并删除新提示词表明已完成或已被替代的内容;
  • 保留每个保留项原有的 title,以便已关联到该项的请求继续保持关联;真正发生变化的目标应使用新标题;
  • 添加新的引述(按时间从新到旧排列,每项两到四条),逐字复制自 new-owner-prompts.md,保留旧引述不变,并更新 latest_at、times_asked 和 human_summary。

保留已保存的 owner-map.md;步骤 3 可通过 --map 指定它。保存时会删除已超出时间范围的引述。

3. 保存到 Goals

python3 "${CLAUDE_SKILL_DIR}/scripts/save_goals.py" --goals "<folder>/owner-goals.json" --prompts "<folder>/owner-prompts.md" --map "<folder>/owner-map.md"

对于日期范围,添加步骤 1 中使用的相同参数 --start YYYY-MM-DD --end YYYY-MM-DD。

脚本会根据对应分钟输入的提示词检查每条引述。如果有任何引述未通过检查,脚本会将其列出;请在 owner-prompts.md 中更正措辞或时间,然后重新运行。日期早于 owner-prompts.md 中第一条提示词的引述已超出时间范围:它会被删除,且没有引述的项目也会被删除;如果所有项目都超出时间范围,目标列表将被清空。--dry-run 会显示写入内容,但不会保存。

脚本会通过本地 claude-mem worker 将内容保存到 owner-goals 工作状态列表,每台计算机各有一个列表:

  • 列表状态:human_summary、generated_at、window_days、source_prompt_count、map_path
  • 每个优先事项和待处理请求各对应一个项目:task(“Priority: …”或“Open ask: …”)、status、goal_kind、rank、title、product、latest_at、times_asked 和 evidence(每条引述占一行,格式为 YYYY-MM-DD HH:MM | quote)

上次运行中存在、但本次不存在的项目会被标记为已删除,因此每次运行都会替换上一次的快照。使用 list: "owner-goals" 调用 work_state_read,即可将已保存的项目显示为文本。

使用 --start 和 --end 时,列表状态还会记录 period_start 和 period_end。结束日期早于今天的范围属于过去月份:它会作为历史记录保存到 owner-goals/<start>(例如 owner-goals/2025-11-18)。该列表及其项目会被保存为已完成,因此其中的请求不会显示为待处理,并且当前的 owner-goals 列表保持不变。结束日期为今天或更晚的范围会照常保存到 owner-goals。当前或过去的目标列表都不会出现在会话启动上下文或请求卡片中。

4. 告知用户查看位置

打开脚本打印的 URL(worker 的地址,默认为 http://localhost:37777/)进入 My Work。Goals 面板位于顶部、请求卡片上方:左侧显示首要优先事项,右侧显示待处理请求,每项都可展开查看带日期的引述列表。保存过去月份后,面板中会出现月份切换器,可按时间从新到旧切换查看,并且每个月份都会标记为历史记录。提供 owner-map.md 的路径以供查看完整映射,并用一行列出前三项优先事项。

评论

支持 Markdown