使用 Bash Hooks 为 Kiro 构建持久内存

发布: (2026年2月1日 GMT+8 06:00)
9 分钟阅读
原文: Dev.to

I’m sorry, but I can’t retrieve the content from the external link you provided. If you paste the text you’d like translated here, I’ll be happy to translate it into Simplified Chinese while preserving the formatting and code blocks.

问题

使用 Kiro 和 Kiro CLI 每天几个月后,我想回顾一下我的一周。

  • 我解决了哪些问题?
  • 哪些方法有效?
  • 我学到了什么?

Kiro 有对话持久化功能:你可以恢复聊天,保存和加载会话。这很有用,但并不是我想要的。

我不想翻阅旧的对话记录。我想要提取出的 洞察——模式、有效的解决方案以及原因。

星期二的调试会话让我了解了 Terraform 状态锁定的原理,但这个教训埋在一段 200 条信息的对话中。下次遇到同样的问题,我会记得去搜索它吗?我甚至会记得它曾经发生过吗?

Kiro 为你提供了强大的基础设施:agents、hooks、steering files。但没有系统来捕捉你的学习成果,并在相关时呈现出来。

我开始思考:如果在 Kiro 已有的功能之上构建这样一层会怎样?

想法

我发现了 Daniel Miessler 的 PAI 项目——Claude 的个人 AI 基础设施。它让我恍然大悟。

想法:一个从你的工作中学习并将这些知识应用到未来任务的 AI 助手。

如果我能为 Kiro 构建类似的东西会怎样?一个能够:

  • 实时捕获学习内容
  • 了解我的项目和优先级
  • 遵循一致的问题解决方法

的层。

不是更聪明的模型——而是一个会学习的系统。

Kiro 已经拥有构建块:在关键时刻运行的钩子、用于持久上下文的 steering 文件以及代理配置。我只需要把它们连起来。

我构建的

PILOT 是 Kiro 的一个代理,增加了三件事:

1. 算法

每个任务遵循七个阶段:

OBSERVE → THINK → PLAN → BUILD → EXECUTE → VERIFY → LEARN

并非革命性创新;这正是有经验的工程师已经在使用的工作方式。将其显式化意味着 AI 能始终如一地遵循它。

关键洞见: 在执行之前定义成功标准。大多数人会跳过这一步,尝试某些东西,模糊地检查是否有效,然后继续。

2. 记忆

PILOT 只在验证确认可行后才捕获解决方案。

~/.pilot/learnings/
├── 2026-01-15_terraform-state-lock-fix.md
├── 2026-01-14_lambda-timeout-optimization.md
└── 2026-01-12_git-merge-conflict-pattern.md

下次遇到类似问题时,PILOT 会调出过去的解决方案。

对于学习内容的语义搜索,PILOT 使用 Kiro 的 /knowledge 功能。没有该功能时,PILOT 仍能工作,但会退回到关键词匹配。

未验证的解决方案是猜测。
已验证的解决方案是知识。

3. 身份

可选的 markdown 文件,为 PILOT 提供关于你的上下文:

~/.pilot/identity/
├── MISSION.md       # 你在构建什么
├── GOALS.md         # 当前目标
├── PROJECTS.md      # 正在进行的工作
└── STRATEGIES.md    # 对你有效的方法

你不必手动填写这些。PILOT 会观察你的工作并逐步填充。你使用得越多,它捕获的上下文就越多:你参与的项目、面临的挑战、对你有效的策略。

没有身份信息时: “这里是修复此 Lambda 超时的方法。”
有身份信息时: “鉴于你关注成本优化,考虑下你上个月使用的这种方法……”

How It Works

PILOT 使用四个 Kiro 功能:hooks、resources、agents,以及实验性的 knowledge base

Resources

Resources 将上下文加载到代理中。Kiro 支持三种类型:

Scheme加载时机
file://启动时直接加载(例如身份文件)
skill://在需要时按需加载(算法、原则)
knowledgeBase启用对已索引内容的语义搜索

PILOT 将你的 learnings 文件夹编入知识库。当你提问时,它能够找到相关的过去解决方案,即使关键词并不完全匹配。

这使得上下文保持精简:代理立即看到你的任务和目标,但只有在需要引用时才加载完整的算法文档。

Hooks

Hooks 在关键时刻运行脚本。Kiro 提供触发点;PILOT 提供脚本:

┌─────────────────────────────────────────────────────────────┐
│                      Kiro Session                           │
│                                                             │
│   Kiro Event              PILOT Script                      │
│   ──────────              ────────────                      │
│                                                             │
│   agentSpawn        →     agent-spawn.sh                    │
│                           Load identity, past learnings     │
│                                                             │
│   userPromptSubmit  →     user-prompt-submit.sh             │
│                           Search relevant patterns          │
│                                                             │
│   preToolUse        →     pre-tool-use.sh                    │
│                           Validate before execution         │
│                                                             │
│   [Tool executes]                                           │
│                                                             │
│   postToolUse       →     post-tool-use.sh                  │
│                           Capture results                   │
│                                                             │
│   stop              →     stop.sh                           │
│                           Archive session, save learnings   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Kiro 提供

  • Hook 触发点
  • 代理系统

PILOT 提供

  • 在每个 Hook 上运行的脚本
  • 学习捕获逻辑

有了 PILOT,Kiro 不再只是一个工具执行器,而是一个个人知识构建伙伴,能够记录、验证并重复使用你的学习成果。

内存管理

PILOT 将已验证的解决方案存储在 ~/.pilot/learnings/ 中。未验证的尝试会被丢弃,确保知识库仅包含可靠的信息。

Identity Context

可选的文件位于 ~/.pilot/identity/,会在你工作时自动填充,为代理提供对你的使命、目标、项目和策略的个性化视图。

代理

pilot.json 配置将所有内容联系在一起:

  • 何时运行哪些钩子
  • 加载哪些资源
  • 包含算法阶段的系统提示
  • 工具权限和安全规则

钩子必须以状态码 0 退出;钩子崩溃会中断会话。所有这些都使用 shell 脚本 实现——不使用 TypeScript、构建工具或外部依赖。

为什么使用 bash?三个原因

  1. 没有运行时启动开销
  2. 开箱即用,支持 macOS 和 Linux
  3. 纯文本脚本——打开任意文件即可准确看到其功能

有何变化

持续学习复合体。

早期,收益很小:捕获了一些解决方案,启动时加载了一些上下文。但每个会话都会向知识库添加内容。每个经过验证的修复都会在下次可用。

几周后,差异变得显著。并不是因为任何单一功能具有变革性,而是系统记住了你已经弄清楚的内容。

权衡

做得好的方面

  • 学习捕获是自动的
  • 相关时会显示过去的解决方案
  • 算法保持工作结构化
  • Bash 速度快且易于调试

有限之处

  • 每个项目的记忆是孤立的(尚未实现跨项目模式)
  • 学习检测基于关键词,而非机器学习
  • 语义搜索需要启用 Kiro 的 /knowledge 功能

缺失的功能

  • 团队协作(你的学习成果只能自己看到)
  • 可视化仪表盘
  • 跨项目模式共享

这只是一个 MVP。试试看它是否适合你的工作流程。

试一试

git clone https://github.com/requix/pilot
cd pilot
./install.sh

可选(但推荐)– 启用对学习内容的语义搜索

kiro-cli settings chat.enableKnowledge true

然后运行:

kiro-cli --agent pilot

代码很简单。影响会随时间累积。

有问题吗? 打开一个 issue。系统会通过使用而改进。

Back to Blog

相关文章

阅读更多 »