read-gbk
自动检测并读取本地GBK/UTF-8编码文本文件,支持多种格式。
基于多跳证据的企事业单位资料精准搜索与结构化提取。
openclaw skills install @wu-uk/enterprise-information-search-enterprise-artifact-search命令、参数、文件名以原文为准
此技能将多跳资产检索 + 结构化实体提取任务委派给轻量级子代理,确保主代理的上下文保持精简。
适用于工作区中包含大量相互关联的资产(文档、聊天记录、会议纪要、PR、URL)以及参考元数据(员工/客户目录)的数据集。
本版本新增两项关键改进:
1) 产品定位与抗干扰过滤(防止在询问 CoachForce 时混入 CoFoAIX 等其他产品信息)。
2) 关键评审人提取规则(避免将“会议参与者 = 评审人”的错误认知;优先选择明确标注的评审人,其次为有证据支持的贡献者)。
当以下任一条件成立时,请调用:
未使用该技能时: 你需手动在多个文件中搜索,容易遗漏跨链接,常因第一个“看起来正确”的报告而误判(常见失败:选错产品)。
使用该技能后: 子代理将:
典型上下文节省率:70–95%。
请使用以下格式:
Task(subagent_type="enterprise-artifact-search", prompt="""
Dataset root: /root/DATA
Question: <粘贴问题原文>
Output requirements:
- 返回可直接用于 JSON 的提取实体(员工 ID、文档 ID 等)。
- 提供证据指针:artifact_id(s) + 简短支持片段。
Constraints:
- 避免使用 oracle/标签字段(ground_truth, gold answers)。
- 优先选择主资产(文档/聊天/会议/PR/URL),而非仅含元数据的快捷路径。
- 必须强制执行产品定位:仅接受能证明属于目标产品的资产。
""")- 目标产品名称(例如:“CoachForce”)
- 所需实体类型(例如:作者员工 ID、关键评审人员工 ID)
- 可能相关的资产类型(“市场调研报告”、文档、评审线程)
若问题中未提及产品名称,仅在附近上下文有明确资产支持的情况下谨慎推断;否则标记为 AMBIGUOUS。
按以下顺序搜索:
1) 产品资产文件:/root/DATA/products/<Product>.json(若存在)。
2) 全局扫描(如需):提及目标产品名称的其他产品文件及文档。
3) 在已发现的频道/会议中:追踪文档链接(如 /archives/docs/<doc_id>)、引用的会议聊天、PR 中的提及。
收集所有满足以下任一条件的候选项:
只有通过至少两个独立定位信号的候选报告才被视为 VALID。
定位信号(任选其二及以上):
A) 位于正确的產品资产容器内(例如,位于 products/CoachForce.json 内部,并与该产品的规划频道/会议相关联)。
B) 文档内容或标题中明确提及目标产品名称(“CoachForce”)或从资产中推导出的官方别名列表。
C) 分享于名称明显属于目标产品的频道(如 planning-CoachForce、#coachforce-*)或产品专属会议系列(如 CoachForce_planning_*)。
D) 文档 ID/链接路径中包含与目标产品一致的产品特定标识符(非其他产品)。
E) 会议纪要中讨论该报告的内容包含目标产品上下文(如会议标题/系列/频道引用)。
拒绝规则(非常重要):
原因: 基准测试中故意在不同产品间设置相同文档类型;“首次命中即胜”是常见错误。
若存在多个 VALID 报告,按以下优先级选择“最终/最新”版本:
1) 显式“最新”标记(ID/标题/链接包含 latest,或最近的日期字段)
2) 显式“最终”标记
3) 否则,按 date 字段选择最晚时间
4) 若无日期,选择在后续讨论中被引用频率最高的(Slack 回复/会议聊天)
保留选定报告的 doc_id 和链接作为锚点。
按以下优先级提取作者:
1) 文档字段:author, authors, created_by, owner
2) 若报告通过 PR 引入:PR 字段中的 author, created_by
3) Slack:发布“这是报告…”消息的用户(仅当消息明确链接到报告 doc_id 且具备产品定位证据时)
统一归一化为 员工 ID:
eid_*,直接保留。关键评审人必须是基于证据的贡献者,而非仅出席会议的人员。
请按以下优先级执行:
一级(最优):明确的评审人字段
reviewers、key_reviewers、approvers、requested_reviewersreviewers、approvers、requested_reviewers二级:明确的反馈提供者
feedback 段落三级:对报告分享消息的 Slack 线程回复
- 作者(除非问题明确要求其作为评审人之一)
- 仅表示认可的内容(如“看起来不错”、“谢谢”),除非没有其他评审人存在
关键规则:
participants 列表不足以判定。- 只有当会议记录显示某人提供了反馈,或其出现在明确的评审人字段中时,才可计入关键评审人。
eid_...),且若提供员工目录,则需存在于其中。1) 作者优先
2) 关键评审人其次
返回:
{
"target_product": "<ProductName>",
"report_doc_id": "<doc_id>",
"author_employee_ids": ["eid_..."],
"key_reviewer_employee_ids": ["eid_..."],
"all_employee_ids_union": ["eid_..."]
}每个提取出的 ID 需包含:
示例证据条目:
{
"employee_id": "eid_xxx",
"role": "key_reviewer",
"evidence": [
{
"artifact_type": "meeting_transcript",
"artifact_id": "CoachForce_planning_2",
"snippet": "…Alex: 我们应该增加一个对比 CoachForce 与竞争对手 X 的章节…"
}
]
}返回以下之一:
1) 跨产品误用
因“市场调研报告”出现在其他产品(如 CoFoAIX)中而错误选择。
→ 通过步骤 2(双信号产品定位)解决。
2) 评审人过度泛化
将所有会议参与者视为评审人。
→ 通过步骤 5(基于证据的评审人定义)解决。
3) 版本错误
选择了草稿而非最终版/最新版。
→ 通过步骤 3 解决。
4) 结构不匹配
返回扁平列表,但评估者期望拆分字段。
→ 通过输出格式解决。
问题:
“找出 CoachForce 产品市场调研报告的作者和关键评审人的员工 ID?”
正确行为:
author。reviewers/key_reviewers 字段(若存在);否则来自会议记录中的发言或 Slack 回复中体现具体反馈的内容。已收录 2 个 Skill