学习通过 AGENTS.md、skills、prompt templates、context files 和 DefaultResourceLoader 控制 Pi agent 的行为边界。
上下文不是越多越好。对 coding agent 来说,上下文系统的价值是把项目规范、交付标准、可用技能、提示模板和临时约束按来源组织起来,并在每次 session 创建时装配成模型能遵守的行为边界。
为什么同一个模型在不同仓库里应该表现出不同的工程习惯?
- 项目规则提供本仓库的协作约束。
- skills 提供可复用工作流。
- prompt templates 提供可参数化任务入口。
- ResourceLoader 把这些来源合并成一份资源快照。
源码推演(省略版)
Section titled “源码推演(省略版)”下面不是完整源码,而是把本课主线压缩成可以在文档里直接阅读的关键形状。读者即使不打开本地源码,也应该能看出运行时如何组织职责。
async function buildSystemPrompt(task: Task) { const resources = await resourceLoader.reload(); return composePrompt({ baseInstructions, projectRules: resources.contextFiles, skills: resources.selectedSkills(task), template: resources.promptTemplate(task.kind), });}- 省略版源码说明上下文不是简单字符串拼接,而是多个来源按规则合成。
reload()的价值是让规则变化、skills 变化和 extension 发现能进入下一次 session。- diagnostics 很重要:上下文加载失败应该可见,而不是静默影响模型表现。
为一个团队仓库设计三类上下文:必须遵守的规则、可选技能、任务模板。
- 能解释项目规则、skills 和 prompt templates 的区别。
- 能说明 ResourceLoader 为什么是 runtime 边界。
- 能设计上下文加载失败时的用户提示。
- 实践题:基于本课的省略版源码,补出一个最小实现草图,要求写清输入、输出、副作用和错误处理。
- 思考题:本课机制如果只靠 prompt 约束,而不放进 harness 或 runtime,会出现什么工程风险?