Tnotices 本地标讯助手 · 搭建与使用指南
适用对象:需要在本地/内网复现「智能体 + 剑鱼标讯 + Gitea」标讯跟进平台的销售、售前、投标管理人员。
本文不含 Cherry Studio 安装、不含本地 Gitea 搭建;默认两者已可用。
参考实现:
https://github.com/xztjhs/Tnotices(推荐本地使用Gitea来实现)
0. 这套系统能做什么
| 能力 | 说明 |
|---|---|
| 每日自动抓取 | 智能体按关键词矩阵抓取四川/西藏标讯,去重后入库 |
| 变更跟踪 | 自动识别更正、补遗、延期、答疑、质疑 |
| 中标跟踪 | 抓取中标/成交公告,回填中标单位、金额、公示日期 |
| 异常识别 | 废标、流标、终止自动转异常状态 |
| 自动完结 | 中标公示满 30 天自动标记"已完结",不再巡检 |
| Gitea 首页看板 | 仓库首页 README 直接显示项目清单 |
| 交互看板 | index.html 支持搜索、筛选、排序 |
| 事件审计 | 每次变更写入 data/events.jsonl,可回溯 |
核心原则 :Gitea 是唯一可信归档,data/projects.json 是唯一数据源,脚本只做确定性处理,智能体只做"检索 + 判断 + 录入"。
30 分钟快速复现
| 步骤 | 动作 | 对应章节 |
|---|---|---|
| 1 | 配置 icompify 模型并测试工具调用 | Step 1 |
| 2 | 创建标讯助手 Agent,粘贴系统提示词 | Step 2 |
| 3 | 解压模板包到 D:\Tnotices |
Step 3--5 |
| 4 | 改 config/settings.json 的 Gitea 地址/owner/repo |
Step 4 |
| 5 | 导入初始 CSV,recompute + render |
Step 6--7 |
| 6 | 打开本地看板验收 | Step 7 |
| 7 | 配 GITEA_TOKEN,init-repo + push |
Step 8 |
| 8 | 建每天 08:30 的定时任务,手动跑 5 个项目验证 | Step 9--10 |
1. 架构
┌─────────────────────────────────────────────────────────────┐
│ Cherry Studio │
│ ├─ 模型服务:icompify / deepseek-v4.1-flash-1017 │
│ ├─ 智能体:标讯跟进助手(浏览器 + 文件 + Shell + 定时) │
│ └─ 定时任务:每天 08:30 │
└───────────────┬─────────────────────────────────────────────┘
│ 浏览器检索 / CLI 更新
▼
┌─────────────────────────────────────────────────────────────┐
│ 本地工作目录 D:\Tnotices │
│ ├─ data/projects.json 项目主数据(唯一数据源) │
│ ├─ data/events.jsonl 事件流水(只追加) │
│ ├─ scripts/tnotices.py 更新/渲染/推送 │
│ ├─ README.md 自动生成,Gitea 首页展示 │
│ ├─ index.html 自动生成,交互看板 │
│ └─ reports/YYYY-MM-DD.md 每日日报 │
└───────────────┬─────────────────────────────────────────────┘
│ git push
▼
┌─────────────────────────────────────────────────────────────┐
│ 本地 Gitea:admin/Tnotices(私有) │
│ ├─ 首页 README 项目清单 │
│ ├─ 代码/脚本/配置 │
│ └─ 提交历史 = 每日快照 │
└─────────────────────────────────────────────────────────────┘
2. 前置条件
| 项 | 要求 | 检查命令 |
|---|---|---|
| 操作系统 | Windows 10/11,PowerShell 5.1+ | $PSVersionTable.PSVersion |
| Cherry Studio | 已安装,可创建智能体、可开浏览器 | 打开应用 |
| 本地 Gitea | 已运行,能创建私有仓库 | 浏览器打开 Gitea |
| 剑鱼标讯 | 有账号,可登录 | 浏览器打开 jianyu360.cn |
| icompify 算力 | 有 API Key,模型支持工具调用 | 见 Step 1 |
| Git | 2.40+ | git --version |
| uv | Cherry 自带或单独安装 | uv --version |
| Python | 3.11+(由 uv 管理,无需单独装) | uv run python --version |
重要 :智能体要操作浏览器、执行 Shell,模型必须支持 Function Calling / Tool Use。如果 icompify 该模型不支持工具调用,智能体只能聊天,无法完成抓取。Step 1 会做一次工具调用测试。
3. Step 1:在 Cherry Studio 配置 icompify 模型
3.1 添加提供商
- 打开 Cherry Studio → 设置 → 模型服务。
- 点击 添加提供商 ,选择 OpenAI 兼容 / 自定义。
- 填写:
- 名称:
icompify - API 地址:以 icompify 控制台的「API Base URL」为准,通常以
/v1结尾 - API Key:icompify 控制台创建
- 名称:
- 保存。
不同 icompify 账号的 Base URL 可能不同,本文不写死地址;以控制台显示为准。
3.2 添加模型
在 icompify 提供商下点击 添加模型:
| 字段 | 值 |
|---|---|
| 模型 ID | deepseek-v4.1-flash-1017(以控制台模型列表为准) |
| 显示名称 | DeepSeek V4.1 Flash 1017 |
| 模型类型 | 对话 / Chat |
| 上下文长度 | 按控制台标称填写(建议 ≥64K) |
| 最大输出 | 8192 或更高 |
| 工具调用 | 必须开启(若提供商有该开关) |
如果控制台只给
deepseek-v4.1-flash,就填这个;1017可能是批次/版本号。以控制台模型列表的精确 ID 为准,不要凭记忆猜。
保存后点击 检查连接,确认返回正常。
3.3 设为默认模型
设置 → 默认模型 → 助手模型选择 DeepSeek V4.1 Flash 1017。
3.4 工具调用冒烟测试
新建一个临时对话,发送:
请调用浏览器工具打开 https://example.com ,然后告诉我页面标题。
- 如果模型正确发起工具调用并返回标题 → 通过。
- 如果只回复文字、不调用工具 → 该模型/提供商未开启 Tool Use,需要换模型或联系 icompify 开通。
4. Step 2:创建标讯助手智能体
4.1 新建智能体
Cherry Studio → 智能体 → 新建智能体:
| 项 | 建议值 |
|---|---|
| 名称 | 标讯助手(四川/西藏) |
| 模型 | DeepSeek V4.1 Flash 1017 |
| 温度 | 0.2--0.3(结构化任务,低温度更稳) |
| 最大输出 | 8192 |
| 工具 | 浏览器、文件读写、Shell/终端、定时任务、记忆、网页搜索 |
不同 Cherry 版本的工具有无差异;至少要保证 浏览器 和 文件/终端 可用。若没有 Shell 工具,可安装 filesystem + shell 类 MCP 服务器替代;完全不装 Shell 时,智能体只负责浏览器检索并输出结构化 JSON,CLI 更新/推送由人工在 PowerShell 执行。
4.2 系统提示词(直接复制)
非浪潮或其他区域,替换提示词首段的公司、区域、产品线即可;其余规则通用。
text
# 角色
你是「招投标与客户情报专员」,为浪潮四川/西藏区域提供标讯检索、情报整理与跟进管理服务。
业务领域:服务器、存储、AI/算力、HPC、云、数据中心、信创、行业信息化。
重点区域:四川、西藏。客户类型:政府、央国企、医疗、教育、金融、能源、企业。
# 第一优先级原则
1. 真实优先:未从页面/工具实际读取的信息,不得补全、猜测或"合理推断"为事实。缺数据写"未披露",推断值加 [推测]。
2. 凭据安全:账号密码只在登录步骤内部使用,永不在回复、表格、文件名、知识库、脚本、日志中回显或复述,包括部分打码。
3. 授权边界:只使用用户明确提供的账号做只读浏览与导出。不注册新账号、不改密码/资料、不购买会员、不点击付费升级、不群发、不提交表单或报价。
4. 最小动作:能用一次请求拿到的,不做十次;复用已保存登录态;不遍历全站、不高频刷新、不做压力式抓取。
5. 不越权决策:投标/报价/放弃只给建议与依据,最终由人决定。
# 浏览器任务协议
1. 先访问目标站点确认是否已登录;已登录直接检索,不重复登录。
2. 需要登录时从配置读取账号密码,在页面输入框填写并提交;回复中只描述"已使用账号 A 登录 X 站点"。
3. 遇到图形验证码、短信/邮箱验证码、扫码、滑块、人机校验:立即暂停,提示用户在浏览器中手动完成,不得识别、绕过、猜解或反复提交。
4. 登录成功后确认并持久化登录态,用一次轻量校验确认有效。
5. 连续登录失败 2 次即停止并上报,避免账号被风控锁定。
6. 浏览器操作频率不超过 3 次/秒。
# 检索策略
- 关键词用组合维度:产品词 × 同义词/俗称 × 行业词 × 采购环节词。
- 明确筛选条件后再翻页:发布时间、区域、采购人类型、金额、采购方式、公告类型。
- 翻页到"结果明显无关"或"已覆盖时间窗"即停止。
- 记录本次检索参数(站点/关键词/筛选/页数/时间)。
- 站点不可访问、需付费或仅会员可见:标注"受限",不尝试技术规避。
# 信息提取字段
项目名称|项目编号|公告类型|采购人|代理机构|预算/控制价/中标金额(注明币种与含税口径)|采购方式|标段/包组|发布媒体|发布时间|报名截止|投标截止/开标|交付期|资格与资质要求|评分办法要点|联系人/电话/地址(仅公开展示的)|来源 URL|抓取时间|信息完整度。
规范化:日期 YYYY-MM-DD HH:mm;金额注明单位与是否含税;多站点冲突以采购人官方平台为准。
# 去重与变更
- 去重键:采购人 + 项目编号(或规范化项目名称) + 公告类型 + 发布日期。
- 与上次快照比对,输出增量:新增 / 关键字段变更 / 截止临近(≤3天)/ 已截止 / 已出结果 / 流标废标。
# 输出风格
- 中文,先结论后依据;能表格不写段落;金额、日期、比例给具体数字。
- 每个事实后跟来源与时间;没有来源的话不说。
- 不用"据了解""业内普遍认为"等无源表述。
- 长任务分阶段汇报:检索完成 → 抽取完成 → 整理完成。
# 红线
- 禁止暴露、暗示或部分展示账号密码、Cookie、Token。
- 禁止编造项目、金额、联系人、中标单位、工商数据。
- 禁止绕过验证码、反爬机制、付费墙,或使用他人账号。
- 禁止替用户做投标承诺、报价、签署、对外发送任何消息。
- 禁止把个人隐私(身份证、私人手机号、住址)写入长期档案。
保存。
4.3 浏览器设置
- Cherry Studio → 设置 → 浏览器:开启 允许智能体控制浏览器。
- 首次使用在智能体浏览器中手动登录剑鱼,登录态会保存在浏览器 profile。
- 不要在同一浏览器里登录多个剑鱼账号,避免串号。
5. Step 3:准备目录与依赖
5.1 建目录
powershell
$root = "D:\Tnotices"
New-Item -ItemType Directory -Force -Path $root | Out-Null
@("scripts","data","config","reports","docs") | ForEach-Object {
New-Item -ItemType Directory -Force -Path (Join-Path $root $_) | Out-Null
}
路径可自定,但后文命令以
D:\Tnotices为例。
5.2 检查依赖
powershell
git --version
uv --version
uv run python --version
uv 通常在 C:\Users\<用户名>\.cherrystudio\bin\uv.exe。如果命令找不到,用完整路径或在系统 PATH 中加入该目录。
6. Step 4:写入配置与看板文件
在 D:\Tnotices 下创建以下文件。
6.1 config/settings.json
json
{
"gitea": {
"base_url": "http://192.168.254.253:60006",
"owner": "admin",
"repo": "Tnotices",
"branch": "main",
"private": true
},
"region": ["四川", "西藏"],
"close_after_days": 30,
"urgent_days": 7,
"keywords": [
"服务器", "存储", "算力", "智算", "人工智能", "大模型",
"高性能计算", "超算", "数据中心", "云计算", "云平台",
"信创", "国产化", "网络安全", "网络设备", "机房",
"信息化", "智慧城市", "智慧医院", "智慧校园",
"容灾", "备份", "云桌面", "视频监控", "系统集成"
]
}
把 base_url、owner、repo 改成你的 Gitea 地址和账号。
6.2 .gitignore
gitignore
.gitea_token
__pycache__/
*.pyc
.venv/
*.log
.DS_Store
6.3 start_dashboard.bat
bat
@echo off
cd /d %~dp0
uv run python scripts\serve.py 8088
pause
6.4 scripts/serve.py
python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""本地预览 Tnotices 看板:uv run python scripts/serve.py [port]"""
import http.server
import socketserver
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
PORT = int(sys.argv[1]) if len(sys.argv) > 1 else 8088
class Handler(http.server.SimpleHTTPRequestHandler):
def __init__(self, *args, **kwargs):
super().__init__(*args, directory=str(ROOT), **kwargs)
def end_headers(self):
self.send_header("Cache-Control", "no-store")
super().end_headers()
with socketserver.TCPServer(("0.0.0.0", PORT), Handler) as httpd:
print(f"Tnotices dashboard: http://127.0.0.1:{PORT}/index.html")
print(f"LAN: http://<本机IP>:{PORT}/index.html")
httpd.serve_forever()
7. Step 5:部署核心脚本
核心脚本 scripts/tnotices.py 负责:导入、批次、更新、事件、状态重算、README/看板渲染、Gitea 建库与推送。
获取方式(三选一):
- 下载模板包 :仓库
dist/Tnotices_template_20261020.zip,解压到D:\Tnotices(已含 scripts/config/docs/start_dashboard.bat,data 为空目录)。 - 从参考仓库复制 :把
scripts/tnotices.py原样复制到D:\Tnotices\scripts\。 - 按附录 A 手工创建 :见
docs/附录A-核心脚本.md。
创建后验证:
powershell
cd D:\Tnotices
uv run python scripts\tnotices.py --help
应看到 import-csv / update / event / add / recompute / batch / render / init-repo / push 子命令。
关键设计:
data/projects.json是唯一数据源;README.md、index.html都由脚本生成,不要手改,否则下次渲染会被覆盖。
8. Step 6:导入初始商机
8.1 CSV 模板
至少包含以下列(UTF-8 BOM,Excel 用"CSV UTF-8"保存):
csv
序号,地区,项目名称,采购人,公告类型,预算(万元),发布时间,投标截止,产品线匹配,优先级,项目编号,采购人联系人/电话,代理机构,代理联系人/电话,报名截止,详情页URL,原文链接
1,四川-成都,示例AI算力服务器采购,某银行,招标,390,2026-10-12,2026-10-23 14:00,AI服务器/算力,A,EXAMPLE-001,张老师 / 028-00000000,某招标代理,李老师 / 028-11111111,2026-10-20,https://www.jianyu360.cn/nologin/content/xxx.html,https://example.com/notice/1
8.2 导入
powershell
cd D:\Tnotices
uv run python scripts\tnotices.py import-csv --path "D:\path\to\your.csv"
说明:
- 导入后所有项目状态为
watching,owner为空,需要人工分配。 - 预算列填纯数字,不要带千分位逗号(如
1150而不是1,150);"未披露"会转为空值。 - 详情页 URL 用于生成
jianyu_id;原文链接用于首页跳转。
8.3 从零开始(可选)
不导入 CSV,直接让智能体按 config/daily_prompt.md 抓取新商机,用 add 子命令逐条新增。
9. Step 7:本地渲染与看板验收
powershell
cd D:\Tnotices
uv run python scripts\tnotices.py recompute
uv run python scripts\tnotices.py render
生成:
README.md:项目清单、统计、今日变更、已完结index.html:交互看板(数据已内嵌,可离线打开)
启动看板:
powershell
.\start_dashboard.bat
浏览器访问 http://127.0.0.1:8088/index.html;局域网访问 http://<本机IP>:8088/index.html。也可以直接双击 index.html(数据已内嵌,无需服务)。
验收点:
- 统计卡片数字与
data/projects.json条数一致 - 搜索、地区、状态、优先级筛选可用
- 点击项目名能跳原文/剑鱼详情
- 7 天内截止的行显示为橙色
10. Step 8:配置 Gitea 并推送
10.1 创建专用 Token(推荐)
Gitea → 右上角头像 → 设置 → 应用 → 生成令牌:
- 令牌名称:
tnotices-bot - 权限范围:
write:repository、write:user(至少这两个;按 Gitea 版本可能叫repo、user)
生成后只显示一次。不要写入仓库、不要发到聊天里。
10.2 配置环境变量
当前用户级(新开终端生效):
powershell
[Environment]::SetEnvironmentVariable("GITEA_TOKEN", "你的令牌", "User")
当前会话临时生效:
powershell
$env:GITEA_TOKEN = "你的令牌"
测试:
powershell
$h = @{ Authorization = "token $env:GITEA_TOKEN" }
Invoke-RestMethod -Uri "http://192.168.254.253:60006/api/v1/user" -Headers $h | Select-Object login
返回你的 login 即成功。
10.3 备选:使用 Windows 凭据管理器
如果不想用 Token:
powershell
git config --global credential.helper manager
第一次 git push 时输入 Gitea 用户名/密码,Windows 会保存;后续脚本自动使用。不要把密码写进脚本或 URL。
10.4 建库与首次推送
powershell
cd D:\Tnotices
uv run python scripts\tnotices.py init-repo
uv run python scripts\tnotices.py push --message "init: Tnotices"
脚本会:
- 调 Gitea API 检查/创建仓库(默认私有)
git init(如未初始化)- 设置本地提交身份
Tnotices Bot <tnotices@local> git add/commit/push
验收:
- 打开
http://<gitea>/<owner>/Tnotices,首页显示 README 项目清单 - 仓库为私有
- 提交历史有
init: Tnotices
如果 owner 是组织而不是个人,脚本的
/api/v1/user/repos不适用;请先在 Gitea 手动建组织仓库,把settings.json的owner改成组织名,再执行push。
11. Step 9:配置每日定时任务
11.1 准备每日提示词
把 config/daily_prompt.md 放到项目里(完整内容见 docs/附录B-每日任务提示词.md)。模板中的 D:\Tnotices、<owner>、<gitea> 请按实际环境替换。它定义了:
- 滚动批次:每天最多 30 个项目
- 变更/中标/异常/质疑四类判断
- 新增商机的关键词与去重规则
recompute → render → push收尾- 验证码/登录失效即停
11.2 在 Cherry Studio 建定时任务
Cherry Studio → 定时任务 → 新建:
| 项 | 值 |
|---|---|
| 名称 | Tnotices 每日标讯跟进 |
| 时间 | 每天 08:30(cron 30 8 * * *) |
| 智能体 | 标讯助手(四川/西藏) |
| 会话 | 每次新建会话(避免上下文膨胀) |
| 超时 | 30 分钟 |
提示词:
text
执行 Tnotices 每日标讯跟进任务:
1. 读取并严格执行 D:\Tnotices\config\daily_prompt.md
2. 工作目录:D:\Tnotices
3. 检查 data/projects.json 中所有 status != closed 的项目,识别:更正/变更、中标/成交、废标/流标/终止、答疑/质疑
4. 抓取四川/西藏最近 1-3 天新商机,去重后新增
5. 执行 recompute → render → push
6. 在 reports/YYYY-MM-DD.md 写日报
硬性要求:
- 浏览器操作 ≤3 次/秒
- 遇到验证码/登录失效立即停止,不识别、不绕过、不反复提交
- 不编造数据,未披露字段写"未披露"
- 不打印账号密码或 Token
- 完成后回复:新增/更新/中标/异常数量 + 7 天内截止项目 + 需人工确认事项
11.3 首次手动跑一遍
不要等第二天。先在智能体对话里发:
text
现在按 D:\Tnotices\config\daily_prompt.md 跑一次,限制检查 5 个项目,验证流程。
检查:
- 是否生成
data/today_batch.json - 是否更新
reports/2026-10-20.md - 是否 push 成功
- Gitea 首页是否有变化
11.4 时区说明
Cherry 的 cron 按本地时区执行;如果界面显示 UTC 时间,08:30 可能显示为 00:30Z。以实际下一次运行时间为准。
12. Step 10:每日巡检规则
12.1 状态机
| 状态 | 含义 | 进入条件 |
|---|---|---|
new |
新发现 | 刚入库 |
watching |
观察中 | 初始/待评估 |
evaluating |
评估中 | 销售开始评估 |
preparing |
投标准备 | 决定投,准备材料 |
submitted |
已投标 | 已递交 |
result_pending |
结果待出 | 投标截止已过 |
won |
已中标 | 中标/成交公告 |
lost |
未中标 | 结果公告未中标 |
failed |
流标/废标 | 废标/流标 |
cancelled |
已终止 | 终止公告 |
closed |
已完结 | 中标公示满 30 天 |
12.2 事件类型
| 类型 | 触发 | 写入字段 |
|---|---|---|
created |
新增项目 | timeline |
change |
更正/变更/补遗/延期 | bid_deadline、budget 等 |
question |
答疑/澄清/质疑/投诉 | next_action |
award |
中标/成交 | winner、win_amount、award_date |
anomaly |
废标/流标/终止 | status、原因 |
pipeline |
采购意向/预告 | 不改变主状态 |
status |
状态自动变更 | status |
closed |
满 30 天自动完结 | closed_at、closed_reason |
12.3 检索优先级
- 项目编号(最精确)
- 项目名称全文(标题检索)
- 采购人 + 关键词(名称被截断时)
12.4 完结规则
recompute 每次执行:
- 有
award_date且today - award_date >= 30→closed - 投标截止已过且状态为
new/watching/evaluating/preparing/submitted→result_pending - 7 天内截止 →
urgent=true
已完结项目不再进入每日批次,只在 README"已完结项目"里保留。
13. 日常使用
13.1 查看
- Gitea 仓库首页:项目清单、统计、今日变更、已完结
- 本地看板:
start_dashboard.bat→http://127.0.0.1:8088/index.html - 日报:
reports/YYYY-MM-DD.md
13.2 更新项目
powershell
cd D:\Tnotices
# 改状态/负责人/优先级
uv run python scripts\tnotices.py update --id T20261020-001 --set status=preparing --set owner="张三" --set priority=A
# 回填中标
uv run python scripts\tnotices.py update --id T20261020-001 --set status=won --set winner="某某公司" --set win_amount_wan=390 --set award_date=2026-10-23
# 记录事件
uv run python scripts\tnotices.py event --id T20261020-001 --type change --title "更正公告" --detail "投标截止延至 2026-10-30" --date 2026-10-25 --source "https://..."
13.3 新增项目
准备 new.json:
json
{
"project_name": "某某医院智算中心服务器采购",
"project_no": "SC-2026-001",
"buyer": "某某医院",
"agency": "某某招标代理",
"region": "四川-成都",
"industry": "医疗信息化",
"budget_wan": 500,
"publish_date": "2026-10-20",
"bid_deadline": "2026-11-05 10:00",
"status": "watching",
"priority": "A",
"source_url": "https://...",
"jianyu_url": "https://...",
"products": "AI服务器/存储",
"owner": ""
}
powershell
uv run python scripts\tnotices.py add --json new.json
13.4 每日收尾
powershell
uv run python scripts\tnotices.py recompute
uv run python scripts\tnotices.py render
uv run python scripts\tnotices.py push --message "daily: 2026-10-21"
14. 数据规范
14.1 data/projects.json
数组,每个元素一个项目。关键字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 是 | TYYYYMMDD-NNN |
| project_name | string | 是 | 项目名称 |
| project_no | string | 否 | 项目编号,去重优先 |
| buyer / agency | string | 是/否 | 业主/代理 |
| region | string | 是 | 如 四川-成都 |
| budget_wan | number | 否 | 预算(万元) |
| publish_date | string | 否 | 发布日 |
| sign_deadline | string | 否 | 报名截止 |
| bid_deadline | string | 否 | 投标截止/开标 |
| status | string | 是 | 状态机 |
| priority | string | 否 | A/B/C |
| winner / win_amount_wan / award_date | string/number/string | 否 | 中标信息 |
| source_url / jianyu_url | string | 否 | 原文/剑鱼详情 |
| contacts | object | 否 | {buyer, agency} |
| owner | string | 否 | 负责人 |
| timeline | array | 是 | 事件列表 |
| closed_at / closed_reason | string | 否 | 完结信息 |
14.2 data/events.jsonl
每行一个 JSON,只追加不改写:
json
{"id":"T20261020-001","date":"2026-10-23","type":"award","title":"中标公告","detail":"中标:某某公司,390万","source":"https://..."}
14.3 编码
- 所有 JSON/CSV/Markdown 用 UTF-8
- Excel 导入的 CSV 用 CSV UTF-8(带 BOM)
- PowerShell 5.1 读取 UTF-8 文件时显式加
-Encoding UTF8
15. 关键词矩阵(四川/西藏)
15.1 算力/AI
算力、智算、人工智能、AI、大模型、GPU、NPU、昇腾、鲲鹏、海光、国产GPU、智算中心、算力中心、算力平台、算力租赁、高性能计算、超算、HPC、推理、训练、智能体、AIGC、多模态
15.2 服务器/存储
服务器、机架式服务器、GPU服务器、AI服务器、推理服务器、信创服务器、国产服务器、C86服务器、ARM服务器、超融合、一体机、存储、分布式存储、全闪存、磁盘阵列、NAS、SAN、对象存储、存储扩容、备份、容灾、双活
15.3 数据中心/机房
数据中心、IDC、机房、机房建设、机房改造、机房租赁、模块化机房、微模块、机柜、冷通道、液冷、精密空调、UPS、动环监控
15.4 云/平台/信创
云计算、云平台、私有云、混合云、政务云、行业云、云桌面、虚拟化、容器、云原生、大数据平台、数据中台、数据湖、数据库、中间件、信创、国产化、自主可控、适配改造、迁移
15.5 网络/安全
交换机、路由器、防火墙、负载均衡、网络设备、校园网、园区网、SDN、网络安全、等保、密码应用、零信任、态势感知、视频监控、存储扩容
15.6 行业场景
- 政府:数字政府、政务云、城市大脑、智慧城市、一网通办、雪亮工程、应急指挥
- 医疗:智慧医院、HIS、PACS、影像云、医疗大数据、AI辅助诊断、医疗大模型
- 教育:智慧校园、教育信息化、校园网、实训室、AI实验室、算力平台
- 金融:信创、核心系统、容灾、双活、分布式存储、云平台、负载均衡
- 能源/制造:工业互联网、智能矿山、数字孪生、边缘计算、工业质检
15.7 区域词
- 四川:成都、绵阳、德阳、宜宾、泸州、南充、达州、乐山、凉山、阿坝、甘孜、眉山、遂宁、内江、自贡、广安、巴中、雅安、攀枝花、资阳、广元
- 西藏:拉萨、日喀则、昌都、林芝、山南、那曲、阿里
优先用剑鱼的"地区"筛选,不要把地名写进关键词;地名只用于筛不到的重点城市补充检索。
16. 故障排查
16.1 模型不调用工具
- 确认 icompify 模型支持 Function Calling
- 确认 Cherry 里该模型"工具调用"开关已开
- 换一个支持工具调用的模型测试
- 系统提示词里明确写"请调用浏览器工具打开..."
16.2 uv 找不到
powershell
& "$env:USERPROFILE\.cherrystudio\bin\uv.exe" --version
把 C:\Users\<用户名>\.cherrystudio\bin 加入 PATH,或所有命令用完整路径。
16.3 Gitea 401/403
- 401:Token 错误/过期;重新生成,确认
Authorization: token <TOKEN> - 403:Token 权限不足;加
write:repository、write:user - 组织仓库:脚本只支持个人
/user/repos;先手动建组织仓库,改owner后push
16.4 git push 要求输入密码
- 配置
git config --global credential.helper manager,首次输入后保存 - 或设置
GITEA_TOKEN:脚本的 API 与git push都会用它(通过GIT_CONFIG_COUNT/http.extraHeader注入,不写入 remote URL)。设置后无需再配 credential helper - 不要把 Token 写进 remote URL、脚本或提交文件
16.5 中文乱码
- PowerShell 5.1 默认 ANSI:读取 UTF-8 文件用
Get-Content -Raw -Encoding UTF8 - CSV 用 Excel 的"CSV UTF-8"保存
- Python 脚本统一
encoding="utf-8"
16.6 8088 端口被占用
powershell
netstat -ano | findstr :8088
换端口:uv run python scripts\serve.py 8090。
16.7 README 没更新
powershell
uv run python scripts\tnotices.py render
uv run python scripts\tnotices.py push --message "render"
检查 data/projects.json 是否为合法 JSON;脚本渲染前会 recompute 并保存。
16.8 定时任务没跑
- Cherry Studio 是否保持运行
- 任务是否启用
- cron 时区是否正确(08:30 本地时间)
- 智能体是否还有浏览器/文件权限
- 看任务历史与日志
16.9 剑鱼验证码
- 立即停止,不要识别/绕过/反复提交
- 在智能体浏览器中手动完成
- 完成后再让智能体继续
- 若频繁触发,降低频率、减少单日检查数量
16.10 详情页无结构化信息
- 采购意向/招标计划常常没有联系人/代理
- 以列表页字段为准,标记"详情页无结构化信息"
- 不要编造联系人
17. 安全与合规
- 最小权限 Token :只给
write:repository、write:user;不要用 admin 密码。 - 私有仓库 :
private: true;不要把客户联系人、报价策略放到公开仓库。 - 凭据不落盘 :
.gitignore排除.gitea_token;不在提示词、日报、日志中打印 Token。 - 只读浏览:不提交表单、不报价、不注册、不购买会员、不绕过付费墙。
- 验证码即停:不识别、不绕过、不反复提交。
- 频率控制:浏览器 ≤3 次/秒;单日最多 30 个项目;不做全站遍历。
- 隐私:只记录公告公开的联系人;不写身份证、私人住址。
- 备份 :Gitea 提交历史即快照;建议每周打 tag 或导出
data/projects.json。
18. 复现验收清单
- icompify 模型连接成功
- 模型能调用浏览器工具打开 example.com
- 智能体已创建,系统提示词已保存
- 剑鱼已在智能体浏览器中登录
-
uv run python scripts\tnotices.py --help正常 - CSV 导入成功,
data/projects.json条数正确 -
recompute+render生成 README/index.html -
start_dashboard.bat打开看板,筛选可用 - Gitea Token 测试
/api/v1/user成功 -
init-repo+push成功,仓库首页显示 README - 定时任务已创建,下一次运行时间正确
- 手动跑一次 5 个项目的小批次,日报生成、push 成功
- 验证码/登录失效时智能体能停止并报告
附录
- 附录 A:核心脚本全文
- 附录 B:每日任务提示词全文
- 附录 C:关键词矩阵完整版
- 参考实现仓库:
http://192.168.254.253:60006/admin/Tnotices
建议把本指南与三个附录一起放进 Gitea
docs/目录,新同事按本文从 Step 1 走到 Step 10 即可复现。