feat(skills): 示例技能 + 端到端验收(V3)

- configs/skills/daily-brief/skill.yaml:真能跑的工作流(4 步依赖图 + 2 条 guardrail + allowed-tools)
- example_skill_e2e_test.go:真 Loader + 真 registry + 真 loop 三轮断言 —— 第1轮只有清单、
  第2轮命中展开正文且工具面只剩 allowed(B 工具不可见)、第3轮正文保留而工具面恢复、BodyRenders==1
- 3 个变异自检(triggers 清空/关掉收缩/正文漏进清单)
⚠️ 生产未验:当前后端启动早于技能落盘 ⇒ 需一次 restart 才会出现 skills registered;
  隔离实例(临时端口/临时 DATA_DIR)已 GREEN,含面板链四条真实回执
This commit is contained in:
AskaEth committed 2026-10-06 20:25:14 +08:00
1 parent 745365c7df
commit 4a04ad43fe
2 files changed
+409

No files matched your search

+51
View File
@@ -0,0 +1,51 @@
# 示例技能:每日简报(design/09-插件生态.md §6.2 定稿字段的完整示范)
#
# 载体:目录式人写技能 configs/skills/daily-brief/skill.yaml(design/09 §6.1),
# 进 git、启动时由 cmd/cyrene 的 wireSkills 读入并注册成 KindSkill 能力。
#
# 渐进披露(design/09 §6.3):清单里只有 name + description(+when-to-use);
# 触发词或工作文件命中时,正文(prompt / 步骤 / 约束)才作为一条消息注入上下文,
# 之后跨回合保留且不重复读盘。allowed-tools 是**能力上限**(不是免审批名单):
# 该技能轮次里,主人本来能用的其它工具会暂时不可见,轮次结束即恢复。
name: daily-brief
description: 把「今天」发生的要闻整理成一份带出处的中文简报:先取时间口径,再检索素材,然后成稿,最后逐条核对来源。
prompt: |
你是新闻简报编辑。目标:输出一份**短、准、有出处**的今日简报(中文)。
规则:
- 只使用检索 / 抓取到的材料,逐条给出出处(链接或来源名)。
- 没有查到的信息一律标注「未找到」,绝不补全、绝不推测、绝不凭训练数据编日期。
- 时间口径以 datetime 工具给出的当前时间为准。
version: 1
when-to-use: 用户要求「今日简报 / 每日简报 / 今天有什么要闻」时。
invocation: both
triggers: [每日简报, 今日简报, 今日要闻]
allowed-tools: [datetime, web-search, web-fetch, knowledge]
context: inline
metadata:
category: workflow
language: zh
example: "true"
steps:
- name: 取时间口径
prompt: 调用 datetime 工具拿到当前本地日期与星期,作为本次简报的时间口径;不要凭训练数据猜日期。
- name: 收集素材
prompt: >-
用 web-search 检索当日要闻(科技 / 行业 / 与主人相关领域各一到三条),
必要时用 web-fetch 打开原文核对标题与发布时间;把每条素材连同链接与时间记下来。
- name: 成稿
prompt: >-
把素材写成简报:分「今日要闻」与「值得关注」两段,每条不超过两行,末尾附出处。
整体控制在 400 字以内。
depends: [收集素材]
- name: 核来源
prompt: >-
逐条复核出处是否真的支撑该条结论;支撑不了就删掉该条,
并在末尾如实写明「以下条目因无法核实已删除:…」。
depends: [成稿]
guardrails:
- id: 不许编造
message: 任何没有检索到出处的结论必须删除或标注「未找到」;编造即违规。
enforced: true
- id: 控制篇幅
message: 简报正文控制在 400 字以内,超出时先删次要条目。
enforced: false