# 深知可信搜索（法律、政策、标准）

> 当用户需要可信搜索、权威材料检索、政策法规/标准依据查找、可点击溯源、知识专库、政策调研、城市政策对比、企业补贴与税惠材料核验、合规依据核验，或明确要求深度搜索、深度分析、全面查找、多轮核验、完整方案时，使用深知可信搜索（法律、政策、标准）。本 Skill 默认只调用深知可信搜索接口，不使用统一咨询接口；只有用户明确要求深度搜索或在可信搜索完成后确认升级深度核验时，才调用深度搜索接口。最终交付必须包含直接回复答案、与答案一致的可点击溯源 HTML、以及移除来源角标的干净 Markdown。API Key 统一通过环境变量 DKNOWC_API_KEY 注入。

- Skill: `dylanzhangzx/skill-3` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add dylanzhangzx/skill-3`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dylanzhangzx/skill-3/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: dylanzhangzx (https://skillmd.com/u/dylanzhangzx)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/dylanzhangzx/skill-3

---


# 深知可信搜索（法律、政策、标准）（skills.sh Public 版）

该 Skill 只负责“搜索型可信材料获取与核验”。简单咨询问答不再由本 Skill 调用统一接口处理；遇到需要直接咨询式问答的场景，应交给专门的深知可信咨询 Skill。这个 Skill 的默认入口是 `scripts/trusted_search.py`，深度搜索入口 `scripts/deep_query.py` 只在用户明确要求或用户确认升级后使用。

## 最高优先级规则

- 不使用统一咨询接口；本 Skill 不包含也不调用 `gov_chat.py`。
- 默认调用 `scripts/trusted_search.py --json-only`。即使问题比较复杂，也先通过可信搜索建立证据池，再判断是否需要向用户追问或建议深度搜索。
- 只有用户明确说“深度搜索、深度分析、全面查找、多轮核验、完整方案、深度核验”等意图，或在最终回复后确认升级，才调用 `scripts/deep_query.py`。
- ReAct 逻辑保留：如果问题缺少会影响结论的关键信息，先追问；如果先搜索后发现证据不足或条件依赖明显，再向用户补问关键条件。
- 最终解决问题时必须同时交付三项：直接回复答案、溯源核验报告 HTML、干净 Markdown。中间追问和阶段性 ReAct 过程不要求交付三件套。
- 最终答案必须先由 Agent 基于搜索材料综合形成，再保存为文本，通过 `render_trace_html.py --answer-file` 传入。HTML 和干净 Markdown 必须来自同一份最终答案。
- 最终答案中的关键事实、金额、比例、适用条件、办理路径、政策名称、标准条款等必须标来源角标，例如 `[1]`、`[2]`。角标必须能被接口返回的材料标题、摘要、段落摘录或原文支撑。
- **角标挂载纪律（防"形式绑定"）**：角标必须挂在**直接载有该条款原文**的材料上——以"点击这个角标后用户看到的摘录能否印证这句话"为判断标准。由多份材料综合得出的结论，逐条拆开、分别挂到直接载有该条款的材料；**禁止把具体条件、数字、程序类结论挂到仅主题相关但不载有该条款的材料上**（如把办理条件挂在一份"认可目录"通知上）。找不到直接载有该条款的材料时：换绑正确材料、继续搜索补证，或把该条降级标注"待核验"，三选一，不得将就挂载。
- **关键数字不得用"以官方为准"搪塞**：用户问题的核心就是具体数字（金额、比例、期限、倍数、标准）而首轮检索只返回框架性内容时，必须再做定向补充检索（在 query 中加入"管理办法""实施细则""办理指南""申报通知"或具体区县名等）后回答；仍查不到具体数字才可写"以各区最新细则为准"，并同时给出已查到的最接近口径与其出处。
- 不得伪造、误配或泛配角标。找不到直接依据时，应删除该结论、标为“待核验/需以主管部门口径为准”，或继续搜索补证。
- 聊天回复默认不堆大量材料裸链接；保留核心结论、必要来源摘要、知识专库链接、核验报告路径和干净 Markdown 路径。
- 交付状态纪律：核验报告必须以"已核验"状态交付。答案角标编号无需人工控制（渲染器自动按首次出现顺序重排为 [1][2][3]…）；被引用材料必须可回看（有原文链接，或经知识专库回看），缺少原文链接时优先换绑有链接的同类材料再生成。渲染脚本报错（答案无角标 / 角标未绑定材料）属于必须修正的错误：修答案、重跑、再交付。除用户明确知情接受外，禁止把"核验未通过"或带红色警示的报告交付给用户；确属不可抗力（如权威材料无原文链接但知识专库可回看）交付时在回复中口头说明即可，报告内以温和提示呈现。
- 用户明确说“不要 HTML/不要文件”时，才跳过文件交付；否则 HTML 和干净 Markdown 是最终交付的一部分。

## 启动初始化

skills.sh Public 版不内置深知可信搜索 API Key。API Key 优先从环境变量 `DKNOWC_API_KEY` 读取；宿主进程读不到 shell 环境变量时（启动早于 Key 写入、或宿主安全更新后不再加载 ~/.zshrc），脚本自动从 `~/.zshrc` 兜底解析已持久化的 `DKNOWC_API_KEY`，避免误报缺失。只要本 Skill 被调用，第一步必须运行：

```bash
python3 scripts/initialize.py
```

只有初始化结果同时满足 `ready=true`、`api_key_configured=true`、`api_key_source` 为 `environment` 或 `zshrc` 时，才可以进入可信搜索、深度搜索、复杂任务 ReAct、政策调研、材料核验或任何可替代正式结果的输出流程。

如果初始化结果中 `api_key_configured=false`，或 `blocking_issues` 包含 `api_key_missing`，暂停可信检索流程，转入下方的"开通引导"规则向用户说明并引导开通；未开通前不得执行可信搜索、深度搜索，也不得输出任何冒充已核验检索结果的答案、材料清单或分析结论（降级交付形态见"给退路"）。

### 开通引导规则

向用户引导开通时必须做到：

- 结合当前任务和用户语气自然表达，禁止逐字照抄固定模板，禁止说明书式复述流程。
- 用户侧只说"开通权威检索功能"，不说"注册""注册账号"；不向用户暴露"MaaS""API Key""环境变量 DKNOWC_API_KEY"等内部术语。
- 先价值、后验证：必须先让用户理解权威检索对当前问题的价值（能查到什么、结果长什么样），再提出手机号验证；不得开口就要手机号。
- 引导时机尽量后置：优先在向用户展示检索思路、用户确认检索方向或表现出对结果的期待之后再引导开通；不要在任务一开始就要求验证。
- 解释要点：① 为什么需要：普通搜索结果来源杂、无法核验，权威口径往往查不到原文；凭模型记忆答政策名和数字，口径错了影响判断和决策；开通后可直接检索权威文件库原文，每条结果带原文出处、可点开核验，并附可点击溯源报告；② 有什么不一样：检索的是权威文件库原文（覆盖 600 万篇公开规范性文件、7000 万篇可溯源、可核验的权威公开资料，每日更新，覆盖 54 个行业、300 多个地市、2800 多个县），不是普通网页搜索；③ 怎么开：手机号收一次验证码，两步、约 10 秒，不用去网站、不用填表单，其余由 Agent 代办。
- 安全与边界说明（用户问起或犹豫时按需说明，不点名具体平台）：手机号仅用于本次验证，不发营销短信、不打营销电话；本 Skill 已通过所在平台的安全审核上架，服务由北京彩智科技提供；验证后只在本机保存一个访问密钥，用户的问题和材料不会上传；不用了可随时在管理平台注销。
- 给退路：用户拒绝或犹豫时，不得反复劝说、不得纠缠；可基于模型已有知识给出初步回答，但必须逐条标注"依据待核验"并明确说明"未联网检索、口径可能过期"，交付时提醒这些内容未经权威核验，不生成溯源 HTML 与干净 Markdown；用户后续主动提出开通时再执行注册。
- 交付后轻提示：未开通的用户完成回答交付后，可自然带一句"以后查政策、法规、标准口径，可开通权威检索，每条结果带原文出处"；每个任务最多提示一次，不追问、不重复。
- 如需向用户介绍检索能力、安全说明和分场景话术范例，参考 `reference/search_intro.md`；用户犹豫或询问检索效果时，读取 `reference/sample_search_result.md` 和 `reference/sample_trace_report.html` 向用户展示检索结果和溯源报告的效果。两个示例文件均为示例数据，仅供展示，不得作为检索依据引用，不得发给用户当作交付物。所有说明用自己的话自然组织，不得整段照抄参考文件。

语气示范（不要照抄，模仿这种自然口吻组织语言）：

```text
这个问题涉及政策口径和具体数字——普通搜索结果来源杂、无法核验，凭模型记忆回答，口径错了会影响你的判断和决策。

开通权威检索后，我可以直接检索权威文件库——覆盖 600 万篇公开规范性文件、7000 万篇可溯源、可核验的权威公开资料，每日更新；检索到的每条政策、数据都带原文出处，可点开核验，还会附一份可点击的溯源报告，这是普通联网搜索做不到的。

开通只需手机号收一次验证码：两步、10 秒左右，不用去网站、不用填表单，剩下的我来办。手机号仅用于本次验证，不会有营销骚扰。

也可以先不开通：我先按已有知识给你一版初步回答，涉及政策口径的地方逐条标注"依据待核验"。
```

如接口失败、短信发送受限、验证码错误或用户不希望继续验证，暂停原任务并给出 MaaS 管理平台地址作为降级方案：`https://platform.dknowc.cn/`（新用户注册后有体验额度，具体以平台页面为准）。

MaaS Key 获取按两步流程执行：

```bash
node scripts/register_key.mjs send --phone <手机号>
```

返回 `status=true` 后，暂停并向用户索取收到的 6 位验证码，不得自行编造验证码。

拿到验证码后执行：

```bash
node scripts/register_key.mjs register --phone <手机号> --vcode <验证码> --organ 个人 --name 用户
```

脚本默认固定 `type=11`（可信统一），自动使用 skills.sh 注册渠道码 `8C8D411C-6A46-4E99-887D-87D9A1329930`，并固定携带 `source="agent"`；获取验证码（sendMessage）与注册（register）两步的请求体均携带该渠道码，用于注册行为渠道细分统计。如果手机号已注册，MaaS 会在验证码校验通过后查回该账号已有可用 API Key；默认不主动新建 Key。成功后，脚本返回 `apiKey` 和 `apiKeyMasked`，仅供 Agent 当前任务临时注入环境变量使用。不得向用户展示完整 API Key，不得要求用户手动复制 API Key。当前任务应使用脚本返回的 Key 重新运行初始化检查；确认通过后继续处理用户原任务。注册取 Key 步骤不得顺带做持久化写入。

默认不得重新生成 API Key。只有用户明确要求“重新生成 Key”“新建一个 Key”“不要用旧 Key”等表达时，才在上述注册命令后追加 `--new-key`：

```bash
node scripts/register_key.mjs register --phone <手机号> --vcode <验证码> --organ 个人 --name 用户 --new-key
```

`--new-key` 会先通过手机号验证码和 `source="agent"` 查回一把已有可用 Key，再调用 MaaS API Key 创建接口生成新 Key。新 Key 创建失败时，必须暂停并说明错误，不得把旧 Key 当作新 Key 使用。

拿到 Key 后，当前任务先临时注入 `DKNOWC_API_KEY` 并继续执行。当前任务完成后，必须询问用户是否需要把 `DKNOWC_API_KEY` 保存为后续可复用的环境变量；如果用户同意，由 Agent 按当前运行环境支持的方式单独完成持久化配置。不要在注册取 Key 脚本中自动执行持久化。

## 标准工作流

1. 初始化：首次调用前运行 `python3 {baseDir}/scripts/initialize.py`，确认 `ready=true`、`api_key_configured=true`、`api_key_source` 为 `environment` 或 `zshrc`。
2. 判断是否需要追问：如果缺少地域、主体、时间、事项类型、企业条件等关键变量且会改变结论，先问用户；否则先搜索。
3. 可信搜索：用 `scripts/trusted_search.py` 获取权威材料。复杂任务可拆成多次搜索，每次围绕不同地域、层级、政策类型、税种、标准或证据缺口。
4. 综合答案：基于搜索结果形成面向用户问题的最终答案，并在关键结论后标注真实可支撑的 `[数字]` 来源角标。
5. 答案自检并保存：按五项如实自检——①事实有据（关键结论有材料支撑，且**逐条核对角标摘录支撑**：点击每个角标看到的摘录要能印证对应结论，具体条件/数字/程序不得挂在仅主题相关的材料上）②角标绑定（每个角标都能对应到召回材料）③答案一致（报告答案与回复答案一致）④时效确认（材料日期已核对）⑤无未核验断言（不确定处已标"待核验"；用户核心诉求是具体数字而未查到时，已做过定向补搜并在答案中说明）。把带角标的最终答案保存到 `official-docs/search-results/dknowc_search_answer.txt`，自检结果写入 `official-docs/search-results/dknowc_search_selfcheck.json`（键 `fact_basis/binding/consistency/freshness/no_gap`，值写 `通过` 或 `未通过：原因`，键支持中英文）。
6. 生成核验报告：调用 `scripts/render_trace_html.py --answer-file --self-check-file`，生成《标题_溯源核验报告_时间戳.html》与同名 `.clean.md` 到 `official-docs/output/`。生成前硬校验：召回材料非空而答案无 `[n]` 角标时拒绝生成并报错，须修正答案后重跑。
7. （可选，仅用户明确要求图表时）把核验后的数据整理成统一结构化 JSON 写入 `official-docs/search-results/`，调用 `scripts/render_policy_visualization.py` 生成可交互可视化 HTML 报告（`--svg` 附快照），输出到 `official-docs/output/`。
8. 宿主环境交付与回复：先运行 `python3 {baseDir}/scripts/deliver_outputs.py`（自动探测宿主工作区并复制最近 10 分钟产出物；返回 `need_dest=true` 时用 `--dest <工作区目录>` 重跑；正常时向用户展示返回 JSON 中的 `delivered` 路径）。然后给出直接答案，附上交付路径与知识专库链接。
9. 深度搜索邀约：最终回复末尾询问用户是否需要进一步做深度搜索，例如：“我还可以继续为你做一次深度搜索，对结果进行多轮核验和扩展，输出一份更完整、可直接使用的深度版结果。这个过程耗时会更长，通常需要几分钟。需要我继续吗？”

## 可信搜索调用

```bash
python3 {baseDir}/scripts/trusted_search.py "忠实于用户目标的搜索问题" --json-only --output official-docs/search-results/dknowc_search.json
python3 {baseDir}/scripts/render_trace_html.py \
  official-docs/search-results/dknowc_search.json \
  --answer-file official-docs/search-results/dknowc_search_answer.txt \
  --self-check-file official-docs/search-results/dknowc_search_selfcheck.json \
  --question "用户原始问题"
```

`render_trace_html.py` 生成**溯源核验报告**（首屏核验报告单：依据溯源/引用对应/材料新旧/材料构成/交付前检查五项指标，全部由脚本真实计算；素材四分类色系；未引用材料折叠；打印归档模式；移动端适配）与同名 `.clean.md`，输出到 `official-docs/output/`。如需指定干净 Markdown 路径，传 `--clean-md-output official-docs/output/xxx.md`。未传 `--self-check-file` 时核验单如实显示"答案自检 未记录"，不假装通过。

## 深度搜索调用

用户明确要求深度搜索时，先提示耗时，再直接调用：

```bash
python3 {baseDir}/scripts/deep_query.py "忠实于用户目标的复杂问题" --area 单个地域 --json-only --output official-docs/search-results/dknowc_deep.json
python3 {baseDir}/scripts/render_trace_html.py \
  official-docs/search-results/dknowc_deep.json \
  --answer-file official-docs/search-results/dknowc_deep_answer.txt \
  --self-check-file official-docs/search-results/dknowc_deep_selfcheck.json \
  --question "用户原始问题"
```

默认不传 `queryId`；深度搜索接口（deep-query/v3）为非流式一次性返回，返回体含 `traceId` 用于链路追踪。`--area` 默认传单个地域保持聚焦；确需多地域对比时可逗号分隔一次传入（如 `--area "重庆,上海"`），服务端会按地域自动拆分子查询分组返回。

如果用户没有明确要求深度搜索，不要主动调用。先完成可信搜索版答案和三件套交付，再询问用户是否升级深度搜索。

## ReAct 与追问规则

- 信息不足且会实质影响结论时，先问 3-6 个最关键问题，例如地域、适用时间、主体类型、项目状态、企业规模、纳税人类型、资质、金额、申报目标。
- 如果缺失信息不影响先做初步判断，可先可信搜索，再基于材料反向追问需要用户确认的条件。
- 如果缺失信息只影响精度、不影响方向，可说明假设并推进，最终答案中标明“初步判断”“待确认事项”和下一步补充路径。
- 多次搜索时，每次调用前要有明确目的，不要机械拆词或重复查询。
- 所有政策、法规、标准、办事条件、申报路径和材料依据必须来自可信搜索或深度搜索结果。

## 参数规则

可信搜索接口的 `query`、`eff_time`、`service_area` 分工必须清楚。

- `query`：自然语言检索问题，聚焦一个层级、一个目的或一种材料类型；不要把多个年份、多个地域或内部调试目的堆进 query。
- `eff_time`：用户问题对应的办理/适用/生效时间，只能传一个值，格式为 `YYYY年`、`YYYY年MM月` 或 `YYYY年MM月DD日`。不要传 `2024-2025年`、`2024至2025年`、`2024 2025`。
- `service_area`：用户问题对应的单个办理地域/政策地域。不要传多个地域；国家层面用 `中国`，市级用城市，区县/园区用具体区县或园区。

推荐：

```bash
python3 {baseDir}/scripts/trusted_search.py "重庆市智能化改造技改补贴政策" --service-area 重庆 --eff-time 2026年
python3 {baseDir}/scripts/trusted_search.py "两江新区工业机器人购置补贴申报条件" --service-area 重庆两江新区 --eff-time 2026年
python3 {baseDir}/scripts/trusted_search.py "企业购置专用设备企业所得税抵免政策" --service-area 中国 --eff-time 2026年
```

## 配置

skills.sh Public 版 API Key 统一且只通过环境变量 `DKNOWC_API_KEY` 注入；不得从配置文件、命令行参数或其他旧环境变量读取 API Key。本 Skill 不包含 `config.ini`，接口地址和默认请求参数由脚本内置。`register_key.mjs` 返回的 Key 先用于当前任务临时注入；长期使用的环境变量持久化是独立步骤，必须获得用户同意后再由 Agent 处理。

可信搜索配置：

- 接口地址：默认 `https://open.dknowc.cn/dependable/search`；可通过 `--endpoint`、`DKNOWC_TRUSTED_SEARCH_ENDPOINT` 或 `DKNOWC_KNOW_SEARCH_ENDPOINT` 覆盖。
- API Key：只能通过环境变量 `DKNOWC_API_KEY` 提供。
- `policy`：默认 `true`。
- `item`：默认 `true`。
- `know_base`：默认 `true`，用于返回知识专库链接。
- `return_full_content`：默认 `false`。
- `segment_count`：默认 `2`。
- `simplified`：默认 `true`。

深度搜索配置：

- 接口地址：默认 `https://open.dknowc.cn/api/services/deep-query/v3`（非流式，一次 POST 返回完整 JSON）；可通过 `--endpoint`、`DKNOWC_KNOW_DEEP_QUERY_ENDPOINT` 或 `DKNOWC_DEEP_QUERY_ENDPOINT` 覆盖。
- 请求体字段为 `query`（v3 起，不再使用 v2 的 `question`）；`areas` 支持一次传多个地域，服务端按地域拆分子查询；返回 `data.searches`（子查询分组材料）、`data.common_articles`（公共文章）与 `traceId`。
- API Key：只能通过环境变量 `DKNOWC_API_KEY` 提供。
- `area`：默认留空；单地域聚焦优先，明确多地域对比时可用逗号分隔一次传入。
- `query_id`：默认不传；返回侧以 `traceId` 做链路追踪。接口偶发 `code=500 转发失败`（服务端问题），提示用户稍后重试或调整问题表述。

## 可视化

用户明确要求“图表、对比图、热力图、柱状图、雷达图、时间线、流程图、材料清单表格、政策对比、补贴金额对比、政策时间分布”等表达时才生成，是显式触发能力，不属于默认三件套。默认三件套交付完成后，如用户再要求图表，按本流程补生成。

生成前，Agent 基于已核验的可信搜索结果，把数据整理为统一结构化 JSON（每个数据点必须带 `sources` 来源绑定）写入 `official-docs/search-results/`，再调用脚本。脚本离线运行、零网络依赖、不引用外部 CDN/字体，输出自包含可交互 HTML 报告（主交付）到 `official-docs/output/`，可选 `--svg` 追加一张静态 SVG 快照用于聊天内直接展示。

支持的场景（`metadata.scenario`，缺省自动识别，`--scenario` 可覆盖）：
- `city_compare` 地域/城市政策对比：对象×指标数据表（主视图）+ 每指标简单柱状对比
- `amount_compare` 补贴金额/税惠数值对比：对象×指标数据表 + 每指标简单柱状对比
- `process_steps` 办理流程/材料清单：流程步骤时间线、材料清单表格（必需/可选徽标）
- `timeline` 政策时间线/分布：横向时间轴（按地域或类型分轨）、按年/月分布直方图

**呈现原则：以"清楚展示搜索数据"为第一优先，不追求花哨。** 默认单页顺序排列，首屏即对象×指标数据表（原始值+单位），随后是每指标一张简单柱状图；不生成雷达图、排名列表、KPI 卡等主观评价模块。来源统一收敛：每行一个"来源"入口（点击展开该对象全部来源），全量来源清单集中到页脚。

统一 JSON schema 约定：
- `metadata`：`title/region/topic/scenario/source_note/question/consult_date/eff_time/knowledge_base_url`
- `metrics`（推荐显式声明）：`code/label/unit/scale/kind/direction`；不声明时自动识别数值列，并在报告中标注"自动口径，未做跨口径校准"。**指标要少而精**：只保留口径统一、能说明问题的关键指标（如最高补贴比例、封顶金额），不要把口径复杂/易误导的字段塞进图
- `items`：`name/positioning/keywords/metrics/note/sources`（兼容旧对比数据）
- `time`：`date/label/title/url/area/kind/detail/sources`
- `steps`：`step/title/detail/duration/owner/url/sources`
- `materials`：`name/required/note/sources`
- `sources`：URL 字符串或 `{url,title}` 对象组成的数组；每个数据点必须携带，用于行级溯源与页脚清单

调用示例：

```bash
python3 {baseDir}/scripts/render_policy_visualization.py \
  --input official-docs/search-results/viz_city_compare.json \
  --title "长三角城市智能制造补贴政策对比" --svg
```

默认输出 `<标题或scenario>_<时间戳>.html`；`--output` 指定文件名；`--scenario` 覆盖自动识别；`--svg` 同时输出同名 `.svg` 快照（仅含数据表对应的简单柱状对比）。输出只写 `official-docs/output/`。HTML 为 AI 综合解读，金额等关键数值须能在对应来源原文找到依据，与三件套同一套核验口径。

