diff --git a/README.md b/README.md index c784318..4541f84 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ CraftKit 是一组面向 Codex 插件市场的中性 Skill 工具。项目从通 | `dev` | 软件设计、编码、审查与测试 | 已初始化,暂无 Skill | | `doc` | 文档转换、整理与写作 | 已迁移 `format-md`、`docx-to-md`、`md-to-docx`、`xlsx-to-md`、`archive` | | `git` | 分支、提交、变更提取与集成 | 已迁移 `commit-msg`、`branch`、`identity`、`export`、`integrate` | -| `knowledge` | 项目初始化、交接、复盘与经验 | 已迁移 `handoff`、`init` | +| `knowledge` | 项目初始化、交接、复盘与经验 | 已迁移 `handoff`、`init`、`trace`、`distill`、`lessons`、`worklog` | | `skill` | 项目规范及 Skill 创建、迁移与维护 | 已迁移 `guidance` | ## 目录结构 diff --git a/migration/MIGRATION_PLAN.md b/migration/MIGRATION_PLAN.md index 4e60932..2a52956 100644 --- a/migration/MIGRATION_PLAN.md +++ b/migration/MIGRATION_PLAN.md @@ -99,11 +99,11 @@ 所属插件:`knowledge` -1. `analyze-agent-failure` -2. `distill-task` -3. `maintain-lessons` -4. `summarize-worklog` -5. `init` +1. `trace`(已完成) +2. `distill`(已完成) +3. `lessons`(已完成,合并初始化、维护、审计和提升) +4. `worklog`(已完成) +5. `init`(已完成) 来源中与经验初始化、提升和回扫相关的多个能力统一合并为 `maintain-lessons`,通过模式区分具体工作。 @@ -235,3 +235,4 @@ plan-change - [x] 完成首个同质批量:`md-to-docx`、`xlsx-to-md`、`archive`。 - [x] 完成 Git 本地操作批次:`identity`、`export`。 - [x] 完成 Git 高风险隔离集成样本:`integrate`。 +- [x] 完成知识管理批次:`trace`、`distill`、`lessons`、`worklog`。 diff --git a/migration/source-lock.json b/migration/source-lock.json index 18b06b2..c803348 100644 --- a/migration/source-lock.json +++ b/migration/source-lock.json @@ -278,27 +278,44 @@ "source-b:905e74ea51281da1": { "sourcePathHash": "905e74ea51281da179c1eb31677af71569a95139a74fb139d39dadd52db2ce62", "sourceSha256": "cfc1eb3fafb15dc51b730dd36d3ad507b5ae415d5f1a5da5138471170afdde38", - "status": "pending" + "status": "migrated", + "target": "plugins/knowledge/skills/trace", + "targetVersion": "0.1.0", + "reviewedAt": "2026-08-25" }, "source-b:274c4aac900a23c3": { "sourcePathHash": "274c4aac900a23c3ca0506807c4df8e09c95e21b84fd633951bae146f6c41028", "sourceSha256": "b4beacdc745cd06ee4be20694d60bae0c9c6122fb61b917b12b66451497651e9", - "status": "pending" + "status": "migrated", + "target": "plugins/knowledge/skills/lessons", + "targetVersion": "0.1.0", + "reviewedAt": "2026-08-25" }, "source-b:6e1a4d182b2e41fd": { "sourcePathHash": "6e1a4d182b2e41fddd28051c20d7170821a87b518e49684cc4f12b731789831d", "sourceSha256": "cf106df97100aabf260db7c8d45c2d6d499c643b4898d7e46c98852a90b7134d", - "status": "pending" + "status": "superseded", + "target": "plugins/knowledge/skills/lessons", + "targetVersion": "0.1.0", + "reason": "经验提升能力已合并到 lessons 的 promote 模式", + "reviewedAt": "2026-08-25" }, "source-b:cd4c15d66d5cfba0": { "sourcePathHash": "cd4c15d66d5cfba0c568b6f3ac4ceac9a7cea797eca8c6bf5eab81187e70f7d7", "sourceSha256": "a9b109dc659e8e65645b6507ab2a39a04598d0c0ed63feaef0985765d3ff9f3f", - "status": "pending" + "status": "superseded", + "target": "plugins/knowledge/skills/lessons", + "targetVersion": "0.1.0", + "reason": "经验回扫能力已合并到 lessons 的 audit 模式", + "reviewedAt": "2026-08-25" }, "source-b:a6062c4036828615": { "sourcePathHash": "a6062c4036828615945db311cf68c2ac886feef91c79b53d882bbe41fd71143f", "sourceSha256": "94b7e58d4c4903498cf29365fe466aaba8bfdf4675754f65cd30bad37c99e02f", - "status": "pending" + "status": "migrated", + "target": "plugins/knowledge/skills/distill", + "targetVersion": "0.1.0", + "reviewedAt": "2026-08-25" }, "source-b:f58c6cd52bc983e8": { "sourcePathHash": "f58c6cd52bc983e87d265308ade0da8d89bd74d5d4f1e96fc463ef299a9fe94a", @@ -331,7 +348,10 @@ "source-b:aa42f7c1a045bb49": { "sourcePathHash": "aa42f7c1a045bb496bbc9e62beb7a7b74544153ed9551492f5b801ca4c9df098", "sourceSha256": "aff6fad01afa2a15756a36d210c67b229a1eb2155981292450f0487c3005125d", - "status": "pending" + "status": "migrated", + "target": "plugins/knowledge/skills/worklog", + "targetVersion": "0.1.0", + "reviewedAt": "2026-08-25" }, "source-b:3763e17cff825df6": { "sourcePathHash": "3763e17cff825df6920f57d84736093082014f2a0316d9e84ee18ac8078ff6e5", diff --git a/migration/tests/test_knowledge_batch.py b/migration/tests/test_knowledge_batch.py new file mode 100644 index 0000000..f21f499 --- /dev/null +++ b/migration/tests/test_knowledge_batch.py @@ -0,0 +1,59 @@ +"""验证知识管理批次的职责边界、中性模板和模式路由。""" + +from __future__ import annotations + +import unittest +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[2] +KNOWLEDGE = ROOT / "plugins/knowledge/skills" + + +class KnowledgeBatchTests(unittest.TestCase): + """检查四个 Skill 不重叠,并保持项目知识目录一致。""" + + def read(self, relative: str) -> str: + """读取待验证的 Skill 资源。""" + + return (KNOWLEDGE / relative).read_text(encoding="utf-8") + + def test_trace_is_evidence_based_and_does_not_auto_write(self) -> None: + """偏离复盘应使用中性失效分类,不能自动修改规则。""" + + text = self.read("trace/SKILL.md") + for value in ("missing", "unread", "mismatch", "misapplied", "insufficient", "尚未执行"): + self.assertIn(value, text) + self.assertNotIn("七问", text) + + def test_distill_routes_long_term_knowledge_and_excludes_handoff(self) -> None: + """知识提炼和任务交接必须具有不同产物边界。""" + + text = self.read("distill/SKILL.md") + routing = self.read("distill/references/routing.md") + self.assertIn("不生成接续提示词", text) + for path in (".craftkit/knowledge/pitfalls/", ".craftkit/knowledge/decisions/", ".craftkit/standards/"): + self.assertIn(path, routing) + + def test_lessons_merges_full_lifecycle_without_fixed_categories(self) -> None: + """经验初始化、维护、审计和提升应共享一个目录与中性模板。""" + + text = self.read("lessons/SKILL.md") + for mode in ("`init`", "`curate`", "`audit`", "`promote`"): + self.assertIn(mode, text) + self.assertIn(".craftkit/knowledge/pitfalls/", text) + index = self.read("lessons/assets/index.md") + self.assertIn("当前尚未建立分类", index) + self.assertNotIn("lowcode", index.casefold()) + + def test_worklog_requires_git_evidence_and_separate_write_permission(self) -> None: + """工作日志不能推测工作量或自动写入日报文件。""" + + text = self.read("worklog/SKILL.md") + self.assertIn("不把提交数量当作工作量", text) + self.assertIn("范围内确实没有提交时如实说明", text) + self.assertIn("需要新的明确授权", text) + + +if __name__ == "__main__": + unittest.main() diff --git a/plugins/knowledge/.codex-plugin/plugin.json b/plugins/knowledge/.codex-plugin/plugin.json index 2efa191..371e1ce 100644 --- a/plugins/knowledge/.codex-plugin/plugin.json +++ b/plugins/knowledge/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "knowledge", - "version": "0.1.0", + "version": "0.2.0", "description": "项目初始化、任务交接、复盘与知识沉淀工作流。", "author": { "name": "CraftKit" @@ -9,7 +9,7 @@ "interface": { "displayName": "Knowledge", "shortDescription": "项目初始化与知识沉淀工具", - "longDescription": "提供项目 Agent 上下文初始化、任务交接、过程复盘、经验维护和工作总结工作流。", + "longDescription": "提供项目初始化、任务交接、Agent 复盘、知识提炼、问题经验维护和 Git 工作日志。", "developerName": "CraftKit", "category": "Productivity", "capabilities": ["Read", "Write"], diff --git a/plugins/knowledge/skills/distill/SKILL.md b/plugins/knowledge/skills/distill/SKILL.md new file mode 100644 index 0000000..f939650 --- /dev/null +++ b/plugins/knowledge/skills/distill/SKILL.md @@ -0,0 +1,28 @@ +--- +name: distill +description: 从当前任务和项目证据中提炼可复用结论、决策与问题经验,并在用户确认后分流到 .craftkit 知识结构。适用于阶段性知识沉淀;任务交接、Agent 失效复盘、工作日志或未经确认写入知识库不应触发本 Skill。 +--- + +# 提炼任务知识 + +只沉淀有证据、适用范围明确且未来可复用的内容。大多数任务没有值得长期记录的知识是正常结果。 + +## 核实任务 + +读取本次对话和相关项目文件;在 Git 仓库中根据需要检查分支、状态、差异和提交。分别列出已完成、已验证、未完成和未验证内容,不以静态检查替代实际运行结果。 + +## 候选分流 + +按 [分流规则](references/routing.md) 为每个候选确定唯一主要去向。先展示内容摘要、证据、适用范围、目标路径和复用价值,并明确标记“尚未写入”。 + +用户可以逐项确认、调整或拒绝。只写入已确认内容;已有文件必须先完整读取并保守合并,不建立同义平行记录。 + +## 写入要求 + +- 结论与证据分开,推断必须标明,未验证内容不进入长期知识。 +- 使用项目相对路径,不记录凭据、个人信息和无必要的内部地址。 +- 指向源码或文档位置,不复制大段源码、日志或对话。 +- 新证据与既有结论冲突时暂停,交由 `lessons` 的维护规则处理,不能静默覆盖。 +- 完成后报告实际写入、未采纳和未写入内容;Git 提交需要独立授权。 + +`distill` 不生成接续提示词、不维护当前任务交接文件;需要继续任务时使用 `handoff`。 diff --git a/plugins/knowledge/skills/distill/agents/openai.yaml b/plugins/knowledge/skills/distill/agents/openai.yaml new file mode 100644 index 0000000..a9b4b13 --- /dev/null +++ b/plugins/knowledge/skills/distill/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Distill Task Knowledge" + short_description: "从当前任务提炼并分流可复用项目知识" + default_prompt: "使用 $distill 从本次任务提炼有证据的长期知识,确认前不要写入。" diff --git a/plugins/knowledge/skills/distill/references/routing.md b/plugins/knowledge/skills/distill/references/routing.md new file mode 100644 index 0000000..0e51890 --- /dev/null +++ b/plugins/knowledge/skills/distill/references/routing.md @@ -0,0 +1,11 @@ +# 知识分流 + +| 内容 | 目标 | 不应进入的内容 | +| --- | --- | --- | +| 已验证、可复用的问题模式 | `.craftkit/knowledge/pitfalls/` | 单次偶发错误、未验证猜测 | +| 重要技术选择及其约束 | `.craftkit/knowledge/decisions/` | 临时实现细节 | +| 长期有效的项目事实 | `.craftkit/knowledge/` 的现有主题 | 可从源码立即得出的重复说明 | +| 对开发决策有约束力的规则 | `.craftkit/standards/` | 仅本任务适用的偏好 | +| Agent 使用与读取约定 | `.craftkit/agents/` 或 `AGENTS.md` | 业务知识正文 | + +当前任务状态、下一步动作和接续提示属于 `handoff`;Agent 为什么偏离属于 `trace`;经验条目的初始化、合并、审计和提升属于 `lessons`。 diff --git a/plugins/knowledge/skills/init/assets/knowledge-index.md b/plugins/knowledge/skills/init/assets/knowledge-index.md index 7fde220..73e76f7 100644 --- a/plugins/knowledge/skills/init/assets/knowledge-index.md +++ b/plugins/knowledge/skills/init/assets/knowledge-index.md @@ -1,3 +1,7 @@ # 项目知识索引 当前没有已验证的项目知识。只收录有证据、适用范围明确且能够复用的技术决策与经验。 + +- 问题经验按需建立在 `pitfalls/`,不预建空分类。 +- 重要技术决策按需建立在 `decisions/`。 +- 其他长期知识应优先并入已有主题,避免同义平行文档。 diff --git a/plugins/knowledge/skills/lessons/SKILL.md b/plugins/knowledge/skills/lessons/SKILL.md new file mode 100644 index 0000000..8117011 --- /dev/null +++ b/plugins/knowledge/skills/lessons/SKILL.md @@ -0,0 +1,26 @@ +--- +name: lessons +description: 初始化和维护 .craftkit 问题经验库,并按已确认的经验判据审计项目或提出规范提升建议。适用于经验条目的创建、合并、过时处理、回扫和提升;普通任务总结、直接修改代码或自动改写插件不应触发本 Skill。 +--- + +# 项目问题经验 + +统一维护 `.craftkit/knowledge/pitfalls/`。经验必须来自可复核证据,并明确现象、根因、处理、验证和适用范围;不把猜测或一次性任务细节升级为长期规则。 + +## 选择模式 + +- `init`:首次建立经验索引,读取 [初始化规则](references/init.md)。 +- `curate`:新增、合并、纠正或标记过时经验,读取 [维护规则](references/curate.md)。 +- `audit`:按条目中明确的扫描规则只读回扫项目,读取 [审计规则](references/audit.md)。 +- `promote`:把项目经验提炼为项目规范或 CraftKit 改进建议,读取 [提升规则](references/promote.md)。 + +用户未说明模式时,根据目标提出建议并确认。初始化授权不包含重组,审计授权不包含修复,提升授权不包含修改目标规范或插件。 + +## 共同边界 + +- 先读取适用的 `AGENTS.md`、`.craftkit/README.md`、知识索引和已有经验,不建立第二套经验目录。 +- 不预建空分类;条目较少时保持扁平,只有检索确有困难时才提议分类。 +- 已有条目、索引和用户章节保守合并,不整文件覆盖。 +- 重命名、合并、删除、纠正和移动条目前展示影响并取得确认。 +- 不记录凭据、个人信息、机器绝对路径或大段源码与日志。 +- 写入完成后报告实际文件和未采纳建议;不自动暂存、提交或推送。 diff --git a/plugins/knowledge/skills/lessons/agents/openai.yaml b/plugins/knowledge/skills/lessons/agents/openai.yaml new file mode 100644 index 0000000..f2c93f5 --- /dev/null +++ b/plugins/knowledge/skills/lessons/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Maintain Project Lessons" + short_description: "初始化、维护、审计并提升项目问题经验" + default_prompt: "使用 $lessons 维护项目问题经验,先确认模式和拟修改内容。" diff --git a/plugins/knowledge/skills/lessons/assets/entry.md b/plugins/knowledge/skills/lessons/assets/entry.md new file mode 100644 index 0000000..8124455 --- /dev/null +++ b/plugins/knowledge/skills/lessons/assets/entry.md @@ -0,0 +1,22 @@ +# 问题或决策信号 + +- 状态:有效 +- 适用范围: +- 最后验证: + +## 现象 + +## 根因 + +## 处理 + +## 验证 + +## 证据 + +## 扫描规则(可选) + +- 范围: +- 判据: +- 排除: +- 风险: diff --git a/plugins/knowledge/skills/lessons/assets/index.md b/plugins/knowledge/skills/lessons/assets/index.md new file mode 100644 index 0000000..47348d0 --- /dev/null +++ b/plugins/knowledge/skills/lessons/assets/index.md @@ -0,0 +1,13 @@ +# 问题经验索引 + +本目录保存经过验证、可跨任务复用的问题经验。文件名应直接表达症状或决策信号;条目较少时保持扁平,只有检索困难时才建立分类目录。 + +## 分类 + +当前尚未建立分类。新增分类时记录目录、收录边界和检索信号,不使用与当前项目无关的预设技术分类。 + +## 使用方式 + +1. 先按当前症状搜索文件名和正文关键词。 +2. 阅读条目的适用范围、证据和状态。 +3. 结论与当前代码或规范冲突时停止套用,并按维护流程确认纠正、保留或废弃。 diff --git a/plugins/knowledge/skills/lessons/references/audit.md b/plugins/knowledge/skills/lessons/references/audit.md new file mode 100644 index 0000000..5155f75 --- /dev/null +++ b/plugins/knowledge/skills/lessons/references/audit.md @@ -0,0 +1,11 @@ +# 按经验审计项目 + +审计只使用条目“扫描规则”中的明确范围、判据、排除和风险口径。缺少可执行判据的条目列为人工提醒,不根据叙事自行发明扫描规则。 + +1. 只读盘点条目并按文件域形成扫描计划。 +2. 展示每个域的来源条目、范围、命令或语义检查方法,等用户选择后执行。 +3. 优先使用 `rg` 等只读工具;需要语义判断时逐项核对代码上下文。 +4. 每个发现记录相对文件、行号、证据、命中原因、排除核对和风险等级。 +5. 输出到用户确认的报告位置;没有约定时先建议 `.craftkit/knowledge/audits//`,写入前确认。 + +审计不修改代码、经验条目或规范。误报、修复建议和经验判据调整分别列出,等待后续确认。 diff --git a/plugins/knowledge/skills/lessons/references/curate.md b/plugins/knowledge/skills/lessons/references/curate.md new file mode 100644 index 0000000..3c8cd17 --- /dev/null +++ b/plugins/knowledge/skills/lessons/references/curate.md @@ -0,0 +1,11 @@ +# 维护经验条目 + +新增前按症状、根因和影响组件检索现有条目。使用 `assets/entry.md` 作为字段提示,不强制保留空章节。 + +- 重复:补充现有条目,不新建同义文件。 +- 同一机制的多个案例:保留一个机制主条目,案例作为证据或子节。 +- 新证据推翻旧结论:标记为待复核,展示冲突后让用户选择纠正、废弃或保留历史说明。 +- 完全失效:删除仍需确认;需要历史时优先保留状态和替代链接。 +- 分类困难:保持扁平,不为了目录整齐强行归类。 + +每次修改都记录最后验证证据和适用范围。项目特定案例可以保留,但不得把它错误提升为跨项目规则。 diff --git a/plugins/knowledge/skills/lessons/references/init.md b/plugins/knowledge/skills/lessons/references/init.md new file mode 100644 index 0000000..89e3341 --- /dev/null +++ b/plugins/knowledge/skills/lessons/references/init.md @@ -0,0 +1,9 @@ +# 初始化经验库 + +1. 检查 `.craftkit/knowledge/pitfalls/`、知识索引和适用的 Agent 说明。 +2. 目录已有内容时不重组,只报告索引缺口和冲突。 +3. 目录不存在时展示拟创建的 `INDEX.md` 内容;用户确认后仅创建目录和索引,不创建空分类。 +4. 项目尚无 `.craftkit` 时先使用项目初始化约定建立最小目录,不自行复制完整模板树。 +5. 检查 `.craftkit` 没有被整体忽略,且 `pitfalls/` 属于可共享内容;发现忽略冲突时停止处理。 + +索引基于 `assets/index.md` 独立生成,并根据项目已有领域词汇补充;不得预置特定框架、组件或业务分类。 diff --git a/plugins/knowledge/skills/lessons/references/promote.md b/plugins/knowledge/skills/lessons/references/promote.md new file mode 100644 index 0000000..d98d6d0 --- /dev/null +++ b/plugins/knowledge/skills/lessons/references/promote.md @@ -0,0 +1,11 @@ +# 提升经验 + +把项目经验中的通用结论提炼为项目规范或 CraftKit 改进建议,不直接修改目标载体。 + +1. 确认源条目范围,并区分项目事实、通用工程规则和未验证推断。 +2. 读取目标仓库适用的 `AGENTS.md`、Skill 入口和规范索引,动态寻找唯一权威落点。 +3. 已有等价规则时建议补证据或链接,不重复写入。 +4. 生成建议 patch:目标文件、章节位置、建议条款、适用范围和源条目证据。 +5. 用户逐文件确认后才允许修改;修改插件、项目规范和源经验收敛是三个独立确认范围。 + +提升时删除业务字段、专有路径和单项目偶然细节,只保留有跨项目证据的判断与规避动作。目标是 CraftKit 插件时仍须遵守该仓库迁移与知识产权规则。 diff --git a/plugins/knowledge/skills/trace/SKILL.md b/plugins/knowledge/skills/trace/SKILL.md new file mode 100644 index 0000000..49cf90e --- /dev/null +++ b/plugins/knowledge/skills/trace/SKILL.md @@ -0,0 +1,30 @@ +--- +name: trace +description: 基于对话、项目文件和命令证据复盘 Agent 在当前任务中的偏离、漏读或规则失效,并提出待确认的改进载体。适用于用户明确要求分析 Agent 为什么出错;普通代码缺陷分析、任务总结或自动修改规则不应触发本 Skill。 +--- + +# Agent 偏离复盘 + +分析失效机制,不追责,也不根据结果反向编造过程。默认只输出复盘和改进建议,任何文件修改都需要后续明确确认。 + +## 证据顺序 + +1. 还原用户目标、授权边界和任务发生时可见的信息。 +2. 定位第一个实质偏离点,区分错误判断、错误操作和遗漏动作。 +3. 检查当时适用的 `AGENTS.md`、Skill、`.craftkit/standards/`、知识条目、对话记录和命令输出。 +4. 无法确认的内容标记为未知,不把当前检查到的资料假定为当时已被读取。 + +## 失效分类 + +- `missing`:所需规则或知识没有被记录。 +- `unread`:规则存在,但任务中没有读取或 Skill 没有触发。 +- `mismatch`:规则措辞或触发范围与真实场景不匹配。 +- `misapplied`:证据已读取,但适用性或优先级判断错误。 +- `insufficient`:当时证据不足,Agent 却没有停下来确认。 +- `incidental`:单次偶发行为,没有证据支持增加永久规则。 + +## 输出 + +依次给出预期与边界、实际偏离、证据、失效分类、影响和改进候选。每项改进只指向一个主要载体:现有 Skill、`AGENTS.md`、项目规范、项目知识或新的 Skill 提案。 + +改进清单必须明确标记“尚未执行”。只有用户确认具体文件和内容后才能修改;规则修改、知识沉淀和 Git 提交分别遵循各自授权边界。 diff --git a/plugins/knowledge/skills/trace/agents/openai.yaml b/plugins/knowledge/skills/trace/agents/openai.yaml new file mode 100644 index 0000000..d91db01 --- /dev/null +++ b/plugins/knowledge/skills/trace/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Trace Agent Failure" + short_description: "基于证据复盘 Agent 偏离和规则失效原因" + default_prompt: "使用 $trace 复盘本次 Agent 偏离,先给出证据和尚未执行的改进建议。" diff --git a/plugins/knowledge/skills/worklog/SKILL.md b/plugins/knowledge/skills/worklog/SKILL.md new file mode 100644 index 0000000..e66715f --- /dev/null +++ b/plugins/knowledge/skills/worklog/SKILL.md @@ -0,0 +1,28 @@ +--- +name: worklog +description: 根据指定仓库、日期范围、时区和作者的真实 Git 提交生成简洁工作日志。适用于每日或周期提交总结;任务交接、工作量推测、未提交工作总结或无证据编写日志不应触发本 Skill。 +--- + +# Git 工作日志 + +从本地 Git 历史提炼工作主线。默认只在对话输出,不自动 fetch,不写文件,也不把提交数量当作工作量。 + +## 确认范围 + +明确仓库、起止日期、时区和作者。自然语言日期必须换算为准确日期并向用户展示;用户未指定作者时可读取当前仓库 `user.name` 作为候选,但不能假定它覆盖全部作者身份。 + +多仓库按仓库分别取证,再合并相同日期范围的结论。当前目录不在仓库中时询问路径,不向上枚举无关目录。 + +## 收集证据 + +使用 `git log --since`、`--until`、`--author` 和明确日期格式读取提交主题、作者、时间;需要理解主线时再读取 `--stat` 或相关提交详情。默认只读本地引用,用户要求远端最新结果时单独确认 fetch。 + +作者过滤无结果时先查看该时间范围内的作者分布,向用户确认别名后重查。范围内确实没有提交时如实说明,不使用工作区、聊天记忆或文件修改时间补造工作内容。 + +## 输出层级 + +- 默认:日期或范围标题,加一句主要工作方向。 +- 用户要求展开:按模块、成果、问题修复或验证整理,但每项必须能回溯到提交。 +- 用户要求提交清单:再列短哈希和主题,不默认输出完整时间线。 + +避免暴露提交中的个人邮箱、内部地址或敏感配置内容。写入周报、日报文件或提交日志产物需要新的明确授权。 diff --git a/plugins/knowledge/skills/worklog/agents/openai.yaml b/plugins/knowledge/skills/worklog/agents/openai.yaml new file mode 100644 index 0000000..3fbab04 --- /dev/null +++ b/plugins/knowledge/skills/worklog/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Git Worklog" + short_description: "根据真实 Git 提交生成每日或周期工作日志" + default_prompt: "使用 $worklog 根据指定日期和作者的 Git 提交生成简洁工作日志。"