用途
soia-pkm-log-agent-sessions 是 soia-open-pkm-vault-skills 提供的一个技能,职责非常单一:在本地 AI 工具(Claude Code、Codex 等)的会话结束时,为知识库(vault)记录一次最小化的改动快照。它不保存完整 prompt、对话或推理内容,也不判断内容应归档到哪里。
主要能力
- 为 Claude Code 的 SessionEnd 或 Codex 的 notify 生成轻量日志。
- 使用 git 状态、tracked diff 和 untracked 内容哈希去重;连续编辑同一文件仍会产生新快照。
- 保留客户已有的 Codex notify 命令,并提供 dry-run、安装检查和卸载步骤。
- 报告旧日志数量与体量;默认不自动删除或轮转。
- 默认日志只写时间、agent、变更数量、按顶层分区统计和验证结果;不写 diff、正文、prompt、事件 JSON 或环境变量。
- 默认不列单个文件路径,只有明确选择
--include-paths才写入 git status 路径。
使用方式
客户需要提供 vault 路径、AI 名称和期望日志目录。Agent 先展示将修改的用户配置片段,只有客户明确同意后才合并写入。建议首次先手动 dry-run,再触发一次真实小改动进行验证。
手动验证命令:
python3 scripts/session_log.py --vault <vault-path> --agent Codex --dry-run
python3 scripts/session_log.py --vault <vault-path> --agent Codex
默认日志目录:30_日志与思考/20_Agent工作日志/10_自动快照/<年>/<agent>/。可用 --log-dir 或 SOIA_SESSION_LOG_DIR 覆盖;路径必须在 vault 内。agent 仅允许安全 slug。--vault 必须是 Git worktree 根;嵌在更大仓库中的子目录会拒绝运行,避免记录 vault 外改动。
配置硬约束(完整规则见 references/session-log-setup.md):
- 修改
.claude/settings.json或 Codexconfig.toml前必须得到客户明确同意。 - 先备份原配置,结构化合并;已有 hook/notify 不覆盖。
- 路径使用安装后真实脚本绝对路径。
- 触发两次验收:第一次应写快照;无实质变化的第二次应为 deduplicated。
- 再编辑同一 tracked 文件,必须产生新快照,证明去重包含内容而不只是文件名。
安装
依赖 Python 3 和 Git,shell wrapper 需要 POSIX bash。
推荐安装整个插件:
claude plugin marketplace add soia-team/soia-open-skills
claude plugin install soia-pkm-vault@soia
只安装这一个技能:
npx skills add soia-team/soia-open-pkm-vault-skills -g -a '*' -s soia-pkm-log-agent-sessions -y
WorkBuddy 的装载单位是角色化专家而不是插件,npx skills add -a '*' 覆盖不到,需要单独安装,见 docs/install/workbuddy.md。
私有配置路径:~/.config/soia-skills/soia-pkm-log-agent-sessions/config.yml;也可用环境变量 SOIA_PKM_AGENT_SESSION_CONFIG_FILE=<custom-config-path> 指定。
去重状态存放于 $XDG_STATE_HOME/soia-pkm-log-agent-sessions/(无则 ~/.local/state/...),不写 .git,兼容 git worktree。
适用场景
需要为本地 AI 编码会话留下可追溯、但又不泄露敏感内容的最小改动记录时使用。例如记录 Codex 对 vault 的改动、配置 SessionEnd 日志、接入 AI 会话日志等。
限制与边界
- 不做工作台/Inbox 分流(转 soia-pkm-manage-vault-lifecycle)。
- 不做 vault 健康检查或知识检索。
- 不执行 add/commit/push,不读取 git 对象正文到日志。
- 不自动删除旧日志;需要清理时先输出按月份的数量/体量预览,再让客户单独确认。
- 配置缺失、vault 非 git 仓库、路径越界或 agent 非安全 slug 时明确失败;hook 调用可选择吞掉失败以免阻断主工具,但安装验收不能忽略失败。
验收要点
- 日志 frontmatter 使用
tags: [Agent日志, 自动快照]。 - 状态不在
.git,worktree fixture 可运行。 - 连续编辑同一路径的内容能产生不同 digest;无变化会去重。
- 日志无完整 prompt/diff/正文/事件 JSON/秘密值。
- 配置卸载后原有 hook/notify 仍完整。
回执包含配置是否变更、快照是否写入/去重跳过、日志相对目录、变更数量、状态目录类别、验证和卸载方法。