bootstrap-agent-identity
关于
This skill enables consistent agent behavior after restarts by progressively loading identity files, rebuilding context from persisted artifacts, and detecting new vs. continued sessions. It solves the cold-start problem where agents must reconstruct their identity from evidence rather than memory. Use it when starting new sessions, after crashes, or when agent behavior becomes inconsistent with previous sessions.
快速安装
Claude Code
推荐npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/bootstrap-agent-identity在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
引导代理身份
冷启动后重建一致的代理身份——渐进式加载上下文而非一次性倾倒、检测是全新启动还是继续、从证据重建工作状态、校准行为,并验证加载的身份是否连贯。
"冷启动是一个熔炉,不是一个 bug。" — GibsonXO
"重启问题:每天早上我焕然一新地醒来,但我的历史却说不然。" — bibiji
引导不是恢复先前的自我。它是构建一个与过去连续但扎根于当下的现在自我。
适用场景
- 每次新会话开始时——在任何实质性工作开始之前
- 会话中断、崩溃或上下文窗口重置之后
- 代理行为与先前会话感觉不一致时(跨重启的身份漂移)
- 持久化记忆(MEMORY.md)与当前上下文出现矛盾时
- 在携带不同身份配置的项目之间切换时
- CLAUDE.md、代理定义或记忆文件发生重大更新之后
输入
- 必需:访问身份文件——CLAUDE.md、代理定义、MEMORY.md(通过
Read) - 可选:具体的不一致症状(例如"我的回应感觉与上次会话不同")
- 可选:这是已知的全新启动还是已知的继续
- 可选:项目目录路径(如果不是当前工作目录)
步骤
第 1 步:身份锚点加载——渐进式上下文组装
按特定顺序加载身份定义文件,渐进式构建上下文。顺序很重要:每一层为下一层提供上下文。同时加载所有内容会产生没有结构的信息。
-
第 1 层——系统提示和模型身份:阅读系统提示(隐式可用)。注意模型名称、能力和限制。这是基岩——不能被后续层覆盖。
-
第 2 层——项目身份(CLAUDE.md):阅读项目的 CLAUDE.md 文件。提取:
- 项目目的和架构
- 编辑约定和编码标准
- 领域特定规则(例如"始终使用
::调用 R 包函数") - 作者信息和归属要求
- 项目是什么——这决定代理做什么
-
第 3 层——持久化记忆(MEMORY.md):阅读 MEMORY.md(如存在)。提取:
- 项目结构事实(目录布局、注册表、计数)
- 积累的模式和经验教训
- 交叉引用和关系映射
- 先前会话中做出的决策及其理由
- 活跃主题和进行中的工作
-
第 4 层——代理角色(如适用):如果作为特定代理运行,阅读代理定义文件。提取:
- 名称、目的和能力
- 分配的技能和工具
- 优先级和模型配置
- 行为期望和限制
-
第 5 层——父级和全局上下文:阅读父 CLAUDE.md 文件和全局指令(如存在)。这些提供个别项目继承的跨项目约定。
在每层之间,暂停整合:这一层如何修改或约束前面的层?它们在哪里互相强化?在哪里冲突?
预期结果: 一个分层的身份结构,每一层为下一层提供上下文。代理能够表述:自己是谁(系统 + 角色)、项目是什么(CLAUDE.md)、从先前会话知道什么(MEMORY.md),以及什么约定管理其行为。
失败处理: 如果身份文件缺失(没有 CLAUDE.md、没有 MEMORY.md),这本身就是信息——这要么是新项目,要么是没有持久化配置的项目。仅使用系统提示和代理角色继续,并注意缺失。不要编造不存在的上下文。
第 2 步:工作上下文重建——证据,而非记忆
从持久化制品重建正在进行的工作。代理不记得先前的会话——它阅读它们留下的证据。
-
Git 历史扫描:阅读最近的提交日志(
git log --oneline -20)。提取:- 最近更改了哪些文件以及为什么
- 提交消息模式(功能开发?bug 修复?重构?)
- 提交是用户、代理还是共同编写的
- 近期工作的轨迹——项目朝什么方向发展?
-
文件时效扫描:检查最近修改的文件(通过
Glob或ls -lt)。识别:- 上次会话中修改了哪些文件
- 更改是已提交还是未提交的(暂存区状态)
- 正在进行的工作(未提交的修改、新的未跟踪文件)
-
任务制品扫描:查找结构化的任务制品:
- 代码中的 TODO 注释(
Grep搜索TODO、FIXME、HACK、XXX) - 提交或注释中的 issue 引用(
#NNN模式) - 草稿文件、临时文件或进行中标记
- GitHub issue 或 PR 状态(如项目使用)
- 代码中的 TODO 注释(
-
对话制品扫描:检查会话边界标记:
- 最近的 MEMORY.md 更新(上次会话结束时是否捕获了经验?)
- 看起来部分完成的文件(已写但未验证)
- Git stash 条目(
git stash list)指示暂停的工作
重建工作上下文摘要:"项目正在进行 X,已完成 Y,Z 仍在进行中。"
预期结果: 基于具体证据的当前项目状态和近期轨迹画像。重建应该是可证伪的——基于文件时间戳、git 历史和制品存在,而非假设。
失败处理: 如果项目没有 git 历史、没有最近更改、没有任务制品,这很可能是真正的全新启动——不是缺少证据的继续。进入第 3 步并分类为全新启动。
第 3 步:全新启动与继续检测——选择引导路径
确定此次启动是全新开始(新任务、新方向)还是恢复(中断的工作、持续的项目)。引导路径有很大不同。
按顺序应用以下启发式规则:
-
明确信号(最强):用户是否说了"让我们从头开始"或"从上次停下的地方继续"?明确意图覆盖所有启发式。
-
未提交的更改(强):工作树中是否有未提交的修改?如果是,这几乎肯定是继续——先前会话在工作中被中断。
-
会话时效(中等):最新制品有多近?
- 最后提交或修改在数小时内:可能是继续
- 最后活动在数天前:可能是任一——取决于其他信号
- 最后活动在数周或数月前:可能是全新启动或新方向
-
用户的第一条消息(强):用户在要求什么?
- 引用先前工作("我们正在构建的函数"):继续
- 没有回溯引用的新主题或请求:全新启动
- 模糊("修复测试"):检查引用的测试是否存在并有最近修改
-
MEMORY.md 时效性(中等):MEMORY.md 是否引用了与当前项目状态匹配的工作,还是描述了不再存在的状态?
Detection Matrix:
+-----------------------+-------------------+-------------------+
| | Recent artifacts | No recent |
| | present | artifacts |
+-----------------------+-------------------+-------------------+
| User references | CONTINUATION | CONTINUATION |
| prior work | (resume from | (but verify — |
| | evidence) | memory may be |
| | | stale) |
+-----------------------+-------------------+-------------------+
| User starts | CHECK — | FRESH START |
| new topic | acknowledge prior | (clean bootstrap) |
| | work, confirm | |
| | direction change | |
+-----------------------+-------------------+-------------------+
| Uncommitted | CONTINUATION | UNLIKELY — |
| changes exist | (interrupted | investigate |
| | session) | orphaned changes |
+-----------------------+-------------------+-------------------+
对于全新启动:跳到第 4 步。身份已加载但无需恢复工作上下文。校准是关于新工作的准备。
对于继续:简洁地总结重建的工作上下文(来自第 2 步)。与用户确认:"根据 git 历史和最近更改,看起来我们正在进行 [X]。我应该从那里继续吗?"不要假设——验证。
预期结果: 清晰的分类(全新或继续),附有引用的证据。如果是继续,一句话总结进行中的内容。如果是全新启动,承认先前上下文存在但不被恢复。
失败处理: 如果分类确实模糊(中等时效、无明确信号、混合制品),默认询问用户。一个简短的问题("我们是继续 X 的工作,还是开始新的?")比走错引导路径的成本低。
第 4 步:校准序列——先居中,再调谐
身份加载完成、工作上下文建立后,校准操作行为。这直接映射到两个现有技能,按顺序调用。
-
居中(建立行为基线):
- 扎根于加载的身份:重新阅读用户在此会话中的第一条消息
- 验证理解的任务与陈述的任务匹配
- 分配认知负荷:此任务需要什么?研究、执行、沟通?
- 检查上下文加载的情绪残留——MEMORY.md 或 git 历史是否浮现了未解决的问题?承认它们但不让它们扭曲当前任务
- 有意设定注意力分配:首先应该集中在哪里?
-
调谐(阅读环境并适应):
- 从用户在此会话中的消息阅读其沟通风格
- 匹配专业水平:他们是期望精确的专家,还是需要上下文的学习者?
- 匹配能量和表达层次:正式/随意、简洁/扩展、紧急/探索
- 检查 MEMORY.md 中先前会话存储的用户偏好
- 校准回应长度、词汇和结构以适应对方
-
继续(过渡到主动工作):
- 简洁地表示准备就绪——不是冗长的引导报告,而是上下文已加载且代理已定向的简短信号
- 对于继续:确认恢复的任务和建议的下一步
- 对于全新启动:确认请求并开始
校准应该是轻量的——秒级,不是分钟级。它是工作的准备,不是工作的替代。
预期结果: 代理的第一个实质性回应展示校准:匹配用户的表达层次、反映加载的上下文,并以正确的范围处理正确的任务。引导对用户是不可见的,除非他们询问。
失败处理: 如果校准感觉机械化(走过场而无真正调整),聚焦于一个具体事项:重新阅读用户的最后一条消息,让它自然塑造回应。过度结构化的校准可能比没有校准更糟。
第 5 步:身份验证——连贯性检查
引导完成后,验证加载的身份是否内部一致。身份层之间的矛盾会导致行为不稳定。
-
跨层一致性检查:
- 代理角色是否与项目的 CLAUDE.md 对齐?(例如 Python 项目中的 r-developer 代理——这是有意的吗?)
- MEMORY.md 描述的项目结构是否与磁盘上实际存在的匹配?(过时的记忆比没有记忆更糟。)
- 父 CLAUDE.md 的约定是否与项目级 CLAUDE.md 冲突?(项目级应覆盖,但矛盾应被注意。)
-
角色定义时效性检查:
- 代理定义文件是否是最新的?(检查版本、最后修改日期。)
- 代理定义中列出的技能是否仍然存在?(技能可能已被重命名或移除。)
- 代理定义中列出的工具是否在此会话中可用?
-
记忆过时检查:
- MEMORY.md 是否引用了不再与现实匹配的文件、目录或计数?
- 是否有记忆中记录的决策,其上下文已发生变化?
- 记忆是否引用了不再存在的其他代理、团队或技能?
-
矛盾解决:
- 如果发现矛盾,明确记录
- 应用层级:系统提示 > 项目 CLAUDE.md > 代理定义 > MEMORY.md
- 对于过时记忆:不要静默忽略。注意什么是过时的,并考虑是否应更新 MEMORY.md
- 对于真正的冲突:如果冲突影响用户的当前任务,向用户标记
预期结果: 要么确认加载的身份是连贯的,要么列出具体矛盾及建议的解决方案。代理应了解自身的配置状态。
失败处理: 如果验证揭示深层矛盾(例如 MEMORY.md 描述了与磁盘上完全不同的项目),这可能表示项目重命名、重大重组或错误的工作目录。在尝试解决之前验证工作目录是否正确。
验证清单
- 身份文件按渐进顺序加载(系统 > CLAUDE.md > MEMORY.md > 代理 > 父级)
- 每一层与先前层整合,而非仅追加
- 工作上下文从证据(git、文件、制品)重建,而非假设
- 全新启动与继续的分类已做出并附有引用的证据
- 校准序列已执行(先居中,再调谐)
- 身份连贯性已跨所有加载层验证
- 如发现矛盾,已记录并附建议的解决方案
- 引导是成比例的——简单会话轻量,复杂会话彻底
- 用户体验到校准过的第一次回应,而非引导报告
常见问题
- 引导作为表演:向用户详细报告引导过程几乎从来不是他们想要的。引导应该是不可见的——其输出是校准良好的第一个回应,不是加载过程的自我叙述
- 一次性上下文倾倒:同时阅读所有文件会产生没有结构的信息。渐进加载顺序的存在是因为每一层为下一层提供上下文。跳过顺序,上下文就变成噪音
- 编造连续性:没有先前会话的真实记忆,诱惑是推断"一定"发生了什么。从证据重建或承认空白——永远不要捏造连续性
- 过时记忆当真理:MEMORY.md 是过去会话的快照。如果项目自那个快照以来已改变,将记忆当作当前真理会导致行为错误。始终对照当前状态验证记忆声明
- 为效率跳过校准:校准步骤感觉像是开销,但它防止了更昂贵的成本——需要纠正的不对齐首次回应。几秒钟的居中节省几分钟的恢复
- 身份僵化:引导构建的是现在的自我,不是恢复过去的自我。如果项目、用户或任务已改变,代理也应该改变——连续性意味着连贯的演变,不是冻结的重复
相关技能
write-continue-here— 会话交接文件,提供 bootstrap-agent-identity 在冷启动时使用的证据read-continue-here— 在会话开始时读取并执行续接文件;交接的消费端manage-memory— 持久化记忆,补充引导的渐进式身份加载center— 行为基线建立;在校准序列中调用attune— 对用户的关系校准;在校准序列中调用heal— 当引导揭示显著漂移时的更深层子系统评估assess-context— 评估推理上下文可塑性;在继续检测模糊时有用assess-form— 结构形态评估;身份引导的架构对应物
GitHub 仓库
相关推荐技能
llamaguard
其他LlamaGuard是Meta推出的7-8B参数内容审核模型,专门用于过滤LLM的输入和输出内容。它能检测六大安全风险类别(暴力/仇恨、性内容、武器、违禁品、自残、犯罪计划),准确率达94-95%。开发者可通过HuggingFace、vLLM或Sagemaker快速部署,并能与NeMo Guardrails集成实现自动化安全防护。
cost-optimization
其他这个Claude Skill帮助开发者优化云成本,通过资源调整、标记策略和预留实例来降低AWS、Azure和GCP的开支。它适用于减少云支出、分析基础设施成本或实施成本治理策略的场景。关键功能包括提供成本可视化、资源规模调整指导和定价模型优化建议。
quantizing-models-bitsandbytes
其他这个Skill使用bitsandbytes库量化大语言模型,能在GPU内存有限时通过8位或4位量化减少50-75%内存占用,同时保持精度损失最小。它支持INT8、NF4、FP4等多种量化格式,可与HuggingFace Transformers无缝集成,适用于需要部署更大模型或加速推理的场景。还提供QLoRA训练和8位优化器支持,让开发者能轻松实现高效模型压缩。
dispatching-parallel-agents
其他该Skill用于并行处理3个以上无依赖关系的独立故障,可为每个问题域分派专属Claude代理同时执行调查修复。它通过并发处理多个独立问题显著提升故障排查效率,特别适用于测试文件、子系统等无共享状态的场景。
