local-conversation-history
Entry point for local AI conversation history across providers. Routes a request to the one skill that owns it, by platform (Claude Code, OpenAI Codex, Kimi CLI) and action (read evidence vs continue interrupted work), and owns the one job none of them own alone: a single inventory spanning all three providers. Use when the provider is unknown or plural ("our history", "what have I been working on", "which chats did I have"), when the user wants Kimi CLI history at all, when it is unclear whether they need evidence or resumption, or when they ask for this skill by name. Vague recall that names no platform ("we discussed this once, when was it?") belongs here rather than to a single-provider reader, because a Claude-only answer to an unscoped question cannot support an absence claim. When the platform and the action are both already clear, load that executor skill directly instead — except Kimi CLI, which has no reader or continuation skill of its own and always routes through here.
1实现原理 · 为什么它能做到
它是有意做窄的路由器:只决定‘哪个技能跑’,自己不做任何 provider 解析、不持有单 provider 命令、不复实现 executor 已有能力;发现自己开始讲某家 flag 就说明走错技能。
This skill decides **which** skill runs. It does not parse history itself, does not own commands for a single provider, and never re-implements what an executor already does.
路由前先定两件事:平台(Claude Code / Codex / Kimi)与动作(读证据 / 续接工作);平台未声明时禁止猜——按 read-claude-code-history 精确查找 → read-codex-history rollout 定位的顺序用返回的 verified identity 决定,前缀像不像不算数。
Only a lookup that returns a verified identity decides which continuation skill runs; a plausible-looking ID prefix does not.
Provider scope 是它独占的职责:跨 provider 需求分两轴且用不同旗标——inventory(‘我最近在干嘛’)用 --source all/--source kimi;内容搜索(‘我们是否聊过 X’)给 Claude 搜索追加 --codex 与 --kimi;其余 flag(--all-projects/日期/--include-archived…)一律交给 executor。
Both readers ship the same inventory command and its `--source` already defaults to `all` — but each reader's own task table pins it to that reader's provider (`--source claude`, `--source codex`), so the default never fires on its own.
意图决定路由而不是‘history’这个词:要列表→inventory;要找含某内容的会话→search;要原始输入按时间顺序→verbatim-input 路径;要续接已识别会话→continuation(先 read)。
The requested output wins over the background motivation.
跨路由存活的不变量:完整性(Claude inventory 源集不可分割:自动发现 homes + ~/.claude/history-sources.json 注册的 archives,缺 archive 是配置错误不是部分答案的许可);自匹配排除(当前会话会命中关于自身的查询,先排除再当历史证据);零结果≠不存在。
- **Self-match.** The current session records the user's question and this agent's own commands, so it matches almost any query about itself. Exclude the current session ID before treating a hit as historical evidence.
边界纪律写成 Do not 清单:不在本技能跑 provider 解析/SQLite/rg/jq/JSONL 管道;不复制 executor 的 flag(除 --source/--codex/--kimi 三个 scope 旗标);不为了回答过去的问题路由到续接技能(读是证据,续接会改变世界)。
- Do not run provider-specific parsing, SQLite, `rg`, `jq`, or JSONL pipelines here.
2核心能力
3外部依赖
| Kind | Dependency / Endpoint |
|---|---|
| skill | read-claude-code-history(含 Kimi scope、inventory、search) |
| skill | read-codex-history(rollout 定位/inventory/search) |
| skill | continue-claude-code-work / continue-codex-work(续接执行器) |
4管控建议与判定依据
- 本地工作目录: 文件读写与工件输出: (无——路由器自身不写;executor 技能与续接技能按其自身授权动作)
5第二遍独立确认
- [ok] 无脚本/无网络/无凭证/无写入 — 目录仅 SKILL.md,内容无任何命令执行或文件动作
- [ok] 被路由技能全部真实存在 — read-claude-code-history / read-codex-history / continue-claude-code-work / continue-codex-work 均在 daymade-claude-code/ 下(git ls-files 核实)
- [ok] scope 旗标边界一致 — 文中仅 --source/--codex/--kimi 被本技能持有,其余 flag 明确‘Let the executor own every flag’
- [ok] Kimi 无专属技能的路由说法属实 — 仓库无 read-kimi-history/continue-kimi-work;Kimi 行确实路由到 read-claude-code-history + Kimi scope
- [ok] 意图映射无矛盾 — 列表→inventory、找内容→search、verbatim→reader 的 verbatim 路径、续接→read 后 continue——表格与正文一致
6结论
5ed0cb7338547d20…