Customize Yak 是 YesYak 流程的定制环节。它的基本思路是:调整发生在人的设置里,而不是改动技能本身;没有任何技能会自行检查自己的调整项,而是由 AGENTS.md 中的 YesYak 区块通知智能体去应用这些调整。
用途
用于把一个既有的 YesYak 流程适配到具体项目或个人,可对某个流程步骤做“新增”“替换”“关闭”三种调整,作用范围可以是项目(写入 .agents/yesyak.json,进入 git,供团队使用,推荐)或仅个人(写入 ~/.agents/yesyak.json,不进入仓库)。
主要能力与流程
- 先检测再询问:读取并展示项目已有的内容,用一张表呈现,之后不再重复询问。检测范围包括:全量检查(测试,以及项目若有的 lint、格式与类型检查,来源为 package.json scripts、Makefile 目标、pyproject.toml、Cargo.toml、go.mod、composer.json、CI 工作流文件、根目录检查脚本);被忽略的工作文件(.scratchpad/ 是否在 .gitignore 中);文档目录及其语言;提交约定;项目是否保留决策记录;当前调整项(.agents/yesyak.json 与 ~/.agents/yesyak.json);AGENTS.md 中的 YesYak 区块;智能体读取的是 AGENTS.md 还是其自有文件,以及是否导入 AGENTS.md。
检测时只使用仅做检查的命令,不使用会就地修复文件的脚本。可在默认分支上先跑一次全量检查,记录既有失败,便于后续对比。串联命令中若前一步失败,后续步骤不会运行,因此需逐步单独运行。若标记损坏(有开始无结束、存在两个区块、标记位于代码围栏内),则停下询问,修复前不改任何文件。
-
询问要改什么:每轮最多四个问题,推荐项排在最前。询问要改哪个流程步骤、如何改(新增需提供指令和一行理由;替换只能针对卡片列为可替换的段落;关闭仅在卡片允许时提供)、作用于谁(项目或个人)。
-
预览后写入:每个文件的改动以 diff 展示,得到同意后才写入;用户拒绝则不做任何改动。设置文件中先读取并保留其他条目;一个技能可有一条调整或一个列表,off 是其技能的唯一条目。AGENTS.md 只写标记之间,标记之外的字节保持不变;若无区块,则在末尾加一个空行和区块。区块首行是必需的,即会话开始及压缩后从项目根目录用 python3 运行 ask-yak 技能的 scripts/check_yesyak.py,退出码为 0 时按其打印的 active: 行应用调整。写入时会省略 AGENTS.md 在区块外已用任何措辞表达过的行。
-
检查与报告:从项目根目录运行 check_yesyak.py,修正其报告的问题;将设置文件与 AGENTS.md 单独提交,与功能开发分开。报告改动的文件、提交及检查打印的生效调整。
-
审计:区块应保持简短,以单个 diff 提议删除区块外已说过的行、删除指向仓库中不存在的文件或脚本的行、删除流程图中不存在的技能的调整、合并重复行,仅在缺失或错误时补充必需的首行或“Adjusted skills”行。展示标记间行数前后变化,同意后写入并再运行检查。
适用场景与限制
适用于已引入 YesYak、希望按团队或个人习惯调整流程步骤的项目。仅个人作用域只在该指令文件含首行时生效,需为智能体的个人指令文件提议该行;单独的 user 条目不会改变项目的 AGENTS.md。写入仓库外文件必须获得用户本次会话中输入确认,无人值守运行无法给出该确认。