init — 一键写出项目的 AGENTS.md
导语
/init 不发明新协议:把「扫仓库 → 写规则」收成一条可重复的 prompt,让每个新项目第一步就能建好 agent 约定。
简介
Agent 进仓库第一件事本该是读项目规则,现实里常是没规则、规则过时、迁移成本高、入口不统一。没有高信号规则,agent 容易猜错测试命令、改错包边界、重复踩环境坑。@piex-dev/init 收成:pi install 一次,之后 /init 即可。
技术原理
pi 只加载规则不生成规则:内核从 ~/.pi/agent 与 cwd 向上发现 AGENTS.md/CLAUDE.md 注入 system prompt,但内置 slash 没有 /init。Prompt template = 零代码 slash 命令:prompts/init.md 文件名即命令名,支持 $ARGUMENTS,pi 展开为完整 user message 交给当前会话模型。
价值在调查清单不在模板长度:好的 init prompt 规定三件事——先读什么、提取什么、写什么/不写什么。可执行源(package.json scripts、CI、lockfile)优先于散文 README;已有规则就地改进不盲目覆盖。
使用说明
安装
pi install npm:@piex-dev/init
仓库源码:prompts/init
用法
/init # 扫描当前仓库并生成/改进 AGENTS.md
/init <说明> # 带额外说明
写完提示 /reload 使当前会话生效。
配置
纯 prompt 包,无 TypeScript、无 peer 依赖、无运行时代码。package.json 声明 "pi": { "prompts": ["./init.md"] },prompts/init.md 即命令本体。
实现方案
本包是纯 prompt 包,无 extensions/、无 peer 依赖。
prompts/init/
├── package.json # "pi": { "prompts": ["./init.md"] }
├── README.md
└── init.md
init.md 要求:优先读 README/manifest/构建测试 CI/既有 instruction/.pi/settings.json;只保留 agent 容易猜错的高信号事实;仓库答不上的才向用户提问;写到项目根 AGENTS.md,写完提示 /reload。刻意不做:全局 ~/.pi/agent/AGENTS.md 自动写入、交互菜单、extension 包装。
设计参考
| 项目 | 机制 | piex 取舍 |
|---|---|---|
| OpenCode /init | 内置 slash,模板注入会话;可问 question;就地改进 AGENTS.md | 采纳调查清单、写作规则、$ARGUMENTS、in-place 改进。不采纳内核内置、专用配置引用;改为 pi prompts/ 包 |
| oh-my-pi | 多 provider 发现/加载规则;无生成 /init | 不重复加载层(pi 已 walk-up)。借鉴「规则文件是一等上下文」,补齐生成侧 |
| pi 原生 | loadProjectContextFiles 只读;prompts/*.md 可作 slash | 直接建立在 prompt template 上,零运行时、随 pi 升级 |
结论:生成逻辑应是「可分发的 prompt」,不是第二个 agent 内核功能。
迭代记录
路线图
| 现状 | 影响 | 怎么补 |
|---|---|---|
| 单文件 prompt,依赖模型自觉按清单调研 | 无结构化校验生成质量 | 可选 thin extension 注入绝对路径与「已存在则提示 update」 |
| — | 复杂 monorepo 可能漏包级命令;写完需手动 /reload | 生成后自检 checklist(是否含 test/lint 命令);支持 /init global 写用户级规则 |
| — | 规则无法随会话沉淀 | 与 learning 类扩展衔接(会话中沉淀规则再 merge 进 AGENTS.md) |
版本记录
| 版本 | 日期 | 变更 |
|---|---|---|
| 0.1.0 | 2026-07-19 | 初始版本:纯 prompt 包(pi.prompts),/init 扫描仓库生成/改进 AGENTS.md;调查清单(README/manifest/CI/lockfile 优先于散文);就地改进已有规则不盲目覆盖;写完提示 /reload |
源稿 Markdown: docs/packages/init.md