Files
reader/docs/openclaw/openclaw-candidate-input-field-spec.md
T

8.8 KiB

OpenClaw Candidate Input 字段说明

1. 文档目的

本文档定义当前项目输出给 OpenClaw 的结构化输入对象:OpenClawCandidateInput。

这是一份面向 OpenClaw 消费侧的接口说明文档,不要求了解本项目内部的 item、article、filter_result 等实现细节。

当前定位是:

  • 单篇候选内容的精简输入
  • 用于 OpenClaw 做日报聚合、排序、栏目分配和后续汇报
  • 不承载正文全文、不承载本地文件路径、不承载规则引擎完整证据链

2. 设计原则

这个 payload 的设计遵循以下原则:

  1. 足够轻
    • 不发送正文全文,避免浪费 token
  2. 足够稳定
    • 不暴露本地目录结构和内部中间文件路径
  3. 足够可消费
    • 字段扁平化,避免 OpenClaw 反复解析嵌套对象
  4. 足够有判断信号
    • 保留摘要、主题、价值判断、筛选结果、排序信号
  5. 足够可去重
    • 同时提供原始 url 与归一化后的 canonical_url

3. 完整 JSON 示例

{
  "candidate_id": "cand:sha256:4139f277b8cb621b02b3398f8a7bd78e3f9eef7bcd320b70b8590e802540c6ca",
  "title": "套壳中国大模型撑起500亿美元估值?扒一扒 Cursor 的\"套壳\"疑云",
  "url": "http://www.ruanyifeng.com/blog/2026/03/kimi-cursor.html?utm_source=rss",
  "canonical_url": "http://www.ruanyifeng.com/blog/2026/03/kimi-cursor.html",
  "published_at": "2026-03-21T10:19:11Z",
  "author": "阮一峰",
  "source_name": "阮一峰的网络日志",
  "language": "zh-CN",
  "summary": "AI编程工具Cursor推出的Composer 2模型被证实套壳中国Kimi K2.5模型,引发侵权争议。Kimi官方确认Cursor通过Fireworks AI获得授权,不存在侵权。作者分析Cursor隐瞒事实是为了支撑其不断膨胀的估值,将其包装成大模型公司。",
  "highlights": [
    "Cursor的Composer 2模型被技术手段揭露实际调用的是Kimi K2.5模型。",
    "Kimi官方确认Cursor通过Fireworks AI获得授权,因此不构成侵权。",
    "Cursor隐瞒使用Kimi模型,被认为是为了支撑其高达500亿美元的估值。"
  ],
  "keywords": ["Cursor", "Composer 2", "Kimi K2.5", "Fireworks AI", "AI编程工具"],
  "topics": ["人工智能", "大模型", "商业伦理"],
  "category": "观点评论",
  "worth_keeping": true,
  "worth_reason": "文章深入剖析了AI行业的热点事件,涉及技术真相、商业动机和行业趋势,具有较高的参考价值。",
  "selection_decision": "review",
  "selection_reason": "Worth-keeping signal is positive but no stronger keep rule matched.",
  "digest_section_hint": "insights",
  "digest_rank": 60
}

4. 字段总览

字段名 类型 必填 说明
candidate_id string 是 单篇候选内容唯一标识
title string 是 文章或内容标题
url string 是 原始链接
canonical_url string | null 否 归一化链接,用于更稳定的去重
published_at string | null 否 发布时间,ISO 8601 格式
author string | null 否 作者名
source_name string | null 否 来源名称,例如博客名、站点名、Feed 名
language string | null 否 语言标记,例如 zh-CN、en
summary string 是 2 到 3 句话的精简摘要
highlights string[] 是 3 到 5 条单句要点
keywords string[] 是 5 到 8 个关键词
topics string[] 是 3 到 5 个高层主题标签
category string 是 内容分类
worth_keeping boolean 是 摘要层给出的长期保留判断
worth_reason string 是 对 worth_keeping 的解释
selection_decision string 是 规则层压缩后的筛选决策
selection_reason string | null 否 对 selection_decision 的简短解释
digest_section_hint string | null 否 建议栏目
digest_rank integer 是 建议排序分值,范围 0-100

5. 字段详细说明

5.1 candidate_id

含义:

  • 单篇候选内容的稳定唯一标识

约束:

  • 同一条上游内容在当前系统中应保持稳定
  • OpenClaw 可以把它作为去重、回溯、引用的主键

5.2 title

含义:

  • 候选内容标题

来源:

  • 优先来自标准化 item.title
  • 如果上游标题缺失,则退回摘要结果中的 summary.title

5.3 url

含义:

  • 原始内容链接

用途:

  • OpenClaw 在日报中回链原文
  • 后续人工 review 或知识库引用时回溯来源

5.4 canonical_url

含义:

  • 对原始 url 做轻量归一化后的链接

当前归一化策略:

  • 去掉 fragment
  • 去掉常见追踪参数,例如 utm_*、fbclid、gclid、ref 等
  • 保留其他非追踪 query 参数

用途:

  • 让 OpenClaw 在去重时更稳定
  • 避免同一篇文章因为带不同追踪参数被当成两篇

说明:

  • url 保留原始值,canonical_url 提供去重辅助
  • OpenClaw 建议优先用 canonical_url 做去重键,不足时再结合 candidate_id

5.5 published_at

含义:

  • 内容发布时间

格式:

  • ISO 8601,例如 2026-03-21T10:19:11Z

5.6 author

含义:

  • 作者名称

5.7 source_name

含义:

  • 内容来源名称

常见示例:

  • 阮一峰的网络日志
  • FreshRSS
  • 某个 Feed 标题
  • 某个站点域名

5.8 language

含义:

  • 语言标记

常见示例:

  • zh
  • zh-CN
  • en

用途:

  • OpenClaw 后续处理多语言输入时做风格和分类控制
  • 为知识库入库、多语言日报、翻译或过滤策略留出口

说明:

  • 如果当前上游无法可靠识别语言,可以为 null

5.9 summary

含义:

  • 摘要主文本

约束:

  • 当前上游约束是 2 到 3 句话
  • 长度不超过 140 个中文字符

5.10 highlights

含义:

  • 关键要点列表

约束:

  • 3 到 5 条
  • 每条一条独立信息

5.11 keywords

含义:

  • 具体实体、工具名、方法名、关键概念

约束:

  • 5 到 8 个

5.12 topics

含义:

  • 高层主题标签

约束:

  • 3 到 5 个
  • 语义层级高于 keywords

5.13 category

含义:

  • 内容分类

当前允许值:

  • 资讯
  • 方法论
  • 工具实践
  • 观点评论

5.14 worth_keeping

含义:

  • 这条内容是否具有持续保留价值

说明:

  • 这是摘要层的价值判断,不是最终入库决定
  • OpenClaw 可以把它当作优先筛选信号,而不是绝对真值

5.15 worth_reason

含义:

  • 对 worth_keeping 的解释

5.16 selection_decision

含义:

  • 规则引擎压缩后的筛选决策

当前允许值:

  • keep
  • review
  • drop

5.17 selection_reason

含义:

  • 对 selection_decision 的简短解释

说明:

  • 当前一般取规则引擎 reasons 的第一条压缩说明
  • 不承诺包含全部规则命中细节

5.18 digest_section_hint

含义:

  • 建议日报栏目

当前允许值:

  • top_news
  • tools_and_workflows
  • risk_and_security
  • open_source
  • insights
  • deep_dive
  • null

5.19 digest_rank

含义:

  • 建议排序分值

范围:

  • 0 到 100

建议解释:

  • 80-100:高优先级,建议优先关注
  • 50-79:中优先级,建议正常进入候选池
  • 0-49:低优先级,建议降权或仅保留参考

6. OpenClaw 消费建议

推荐 OpenClaw 主要消费这几组信号:

6.1 语义聚合信号

  • summary
  • highlights
  • keywords
  • topics
  • category

6.2 选择与排序信号

  • worth_keeping
  • worth_reason
  • selection_decision
  • selection_reason
  • digest_rank
  • digest_section_hint

6.3 来源展示信号

  • title
  • url
  • canonical_url
  • published_at
  • author
  • source_name
  • language

7. 当前不会提供的字段

OpenClaw 当前不应期待以下字段:

  • 正文全文,例如 plain_text
  • 本地文件路径,例如 source_refs
  • 完整规则证据链,例如 filter_result.matches
  • 内部中间对象,例如完整的 item、article、summary、filter_result
  • 人工确认状态,例如 review_status、knowledge_decision

最后一类字段不会放在这个对象中,原因是:

  • OpenClawCandidateInput 表示的是上游候选事实
  • 人工确认和知识沉淀属于下游流程状态
  • 两者混在一起会让输入对象逐渐失真、变脏

8. 兼容性约定

当前版本约定:

  • 这是单篇输入对象,不是批量 envelope
  • 批量投递由上层 OpenClawDeliveryPayload 承载
  • 本文档只约束 candidates[] 中单条对象的字段

9. 一句话结论

OpenClawCandidateInput 是“给 OpenClaw 聚合日报用的单篇精简对象”:它保留来源信息、摘要语义、价值判断、去重辅助和排序信号,但不会携带正文全文、本地路径、规则证据链或人工确认状态。