sharing-learnings 是 microsoft/github-copilot-modernization 中的一项技能,定义多智能体运行如何捕获知识并回馈到后续阶段与未来运行。经验文件存放在 {{BASE_PATH}}/learnings/<role>/<slug>.md,由 git 跟踪,跨运行持久存在,受众包括同次运行的后期智能体、该仓库的未来智能体以及人类。每个 worker 在预检第 2 步(消费先前经验)和完成阶段(产出新经验)调用它。
目录结构以目录树加文件名为索引,无需单独索引文件;每个文件前三行(H1、空行、一句话描述)作为可扫描元数据。消费经验时,先 list_dir {{BASE_PATH}}/learnings/<your-role>/ 及相关横切角色,只读每个文件前三行判断相关性,仅对相关文件 read_file 完整正文,加载后发出 [learnings-loaded] <role>/<slug>, ...,无相关内容用 (none),若经验与任务或章程冲突则 [notify:coordinator],不可静默忽略。
每个经验文件必须遵循固定格式:标题、一句话描述,以及 What Happened、Takeaway、可选 Example、History 各节,并引用来源项目与任务 ID。空白模板为 templates/learning.md。
产出经验时,在完成任务前评估所学与所决定。强制写入的情形包括:做出代码风格或命名约定选择、做出架构或设计决策、选择影响项目一致性的库/框架版本或配置。可选情形包括:失败或意外且有值得记录的解决方式、出现跨多文件的模式、框架行为与预期不符、源到目标映射规则可复用于其他模块。若任务不涉及风格/架构决策且无意外,可不写。
写入时一个主题一个文件,slug 用 kebab-case 表明主题;按角色归属写到 {{BASE_PATH}}/learnings/<your-own-role>/,属于其他角色则用 [notify:<that-role>]。同主题已有文件时追加新的 History 条目而非新建重复文件。保持简短,目标少于 40 行,过长则拆分。写入后发出 [learnings] written: [<role>/<slug>, ...],空列表亦可。