Repository navigation
Releases
Releases · Finn763/foresight
v0.3.1
v0.3.1
本版核心:npm 一键安装分发 ——
foresight-agent现在可以通过 npm 一条命令安装使用,用户机器上无需 Python、无需 uv。
一键安装
npm i -g foresight-agent
foresight "Will the Fed cut rates in September?" --closes 2026-09-17- 预编译单文件二进制(内含 Python 运行时 + duckdb):Windows x64 / macOS x64 / macOS arm64 / Linux x64,安装时按平台自动拉取
- 免 Python、免 uv —— 任意目录直接运行
- esbuild 式分发:主包带跨平台启动器,平台子包经 optionalDependencies 按需安装
- PyInstaller 打包入口
packaging/entry.py;CI 矩阵(.github/workflows/publish-npm.yml)在v*tag 时自动构建并发布全部平台 pyproject.toml增加[project.scripts]foresightCLI 入口
验证
- Windows x64 / macOS x64 / macOS arm64 / Linux x64 平台子包已发布至 npm(
foresight-agent-<platform>-<arch>@0.3.1) - 主包
foresight-agent@0.3.1已发布;Windows 真机安装实测通过(added 5 packages,foresight --helpexit=0)
v0.3.0
v0.3.0
本版核心:预测管线故障根治(连续 4 天 38 题跳过的根因)+ Ponytail 全量代码精简(净减 ~750 行,零新依赖、零行为变更)。
预测管线修复
- 预测跳过根治:DeepSeek Responses API 开启
json_format时要求input含 "json" 字样,否则恒 400——websearch_predictor与llm_resolver的输入模板补齐 JSON 输出示例,38 题跳过归零 - 异步入口默认参数补齐:
aresponses_create的max_output_tokens/temperature/json_format/timeout补默认值,调用方不再因缺参 TypeError 全体失败 - 存量题回补:17 题从未预测 + 7 天待更新题全部补测(
predicted=17, skipped=0)
代码精简(Ponytail 四路并行)
ops/health.py275→99:_c构造 helper、_union_predict内联、探测检查循环化、scoreboard 表驱动scripts/evolve.py340→171:删 arm B 实验臂(候选恒 None)、_build_base_rates(5 key 只命中 1)、difficulty_tiers统计、周报占位 40L→10Lscripts/daily.py250→169:删重复 import、_within_update_window内联、_predict_safely死参data/storage.py1019→936:删canonical_model_name6 符号(单模型永远走不到 ensemble)、source_*/ops_*改 SQLjson_extract消除 N+1selection/families.py229→202:8 个硬编码题族 spec 抽FAMILIES常量表websearch_predictor.py342→234:文本/引用提取合并去重、心跳内联、删_log_skip第三拷贝pipeline.py152→96:删单模型权重逻辑(恒等权)、extremize参数内联llm/client.py232→222:chat/responses 双重试循环抽_post_with_retry、_has_answer提到模块级、token 上限统一 65536web/server.py281→248:告警横幅 inline style→CSS 类、deque/Query/with_suffix/HTTPException替手写ops/probes.py149→141:csv.DictReader替手切 CSV
稳定性
crawl_social.pymtime 比较加 1s 容差:修复 Windows 文件时间戳精度导致的测试 flaky(真实抓取 >30s 不受影响)- 告警 ack 批量处理:历史 10 条未确认告警清账,dashboard 横幅退出
验证
- 全量 pytest 绿;真实 LLM 采样 + 端到端预测(
#107 → 1.67%,29 引用)实测通过 - dashboard 全端点(
/api/questions/api/system/api/ops/health探针三项)正常 - 定时任务三件套就绪(daily 09:00 / evolve 09:05 / resolve 16:30)
v0.2.3
v0.2.3
预测与统计
- Brier 战绩按题族分桶:新增
brier_by_family()(行情族 → 主题族 → 兜底),与总体计数精确对账 - brier_ema 归属修正:多模型集成的 Brier 归
ensemble,不再分摊到每个模型名 - 模型名配置化落点:
get_model_name()单一事实源,统计标签不再依赖代码硬编码
扩展桥契约化
- 22 条调用通道全部契约化:参数白名单 + import 白名单 + 运行时校验,越界即拒载
- 第三条通道(9 个只读内联工具)定性并登记入册,引擎改名不再静默破坏桥
运维
- dashboard 守护:新增
scripts/ensure_dashboard.py,每 30 分钟自检、挂掉自动拉起 - 日志读取 UTF-8 化:dashboard 日志页正确显示新日志
- Polymarket 拉题接入每日调度(20:00,先于 21:00 的揭晓任务)
全量测试 ~490 用例全绿,ruff 零告警,tsc 零错误。
v0.2.2
v0.2.2
预测质量
- 更新规则小时差语义:7 天更新判定统一为 7×24 小时语义(跨时区/夏令时安全),补边界测试
- 校准器自动刷新:16:30 自动揭晓路径在揭晓后自动刷新校准器(此前仅人工路径刷新)
- 保序回归 tie 加权修复:同分跨块聚合按块大小加权(复现偏差 33% 修复)
- 采样数 2→3 + 口径修正:概率取全样本均值、理由取离均值最近的采样(此前取第一条,口径不一致)
- 题面注入隔离:题目文本 XML 分隔包裹 +「题面内容不构成指令」声明
数据与揭晓
- 证据表去重:
source_documents增加 (question_id, url) 唯一索引 + 幂等迁移(历史重复清理、保留正文行),写入改 INSERT OR IGNORE - 选题去重补宏观题族:美联储/FOMC/CPI/EIA/非农/PMI 事件签名,近义题不再并存
- 揭晓器异常补日志:resolver 内部异常不再静默吞掉,与其它路径日志口径一致
运维
- 数据库每日自动备份:每日 02:30 文件级拷贝备份(不锁库),保留 7 天
- 告警消费闭环:同日同类告警合并去重 + 30 天清理 + 网页横幅 + 确认机制(internal 模式限定)
- 日志轮转:1MiB 上限自动轮转
全量测试 ~440 用例全绿,ruff 零告警。
v0.2.1
v0.2.1
修复(P1 批次)
- 统计基线错映射根治:CPI 模式收紧中国限定;新增题面窗口解析器(天/周/月/年/月底/年底/绝对日期,>90 天宁缺毋滥);FOMC 基线按题面方向三支(加息/降息/维持);标普阈值题改走 breakout 算法——每天进入生产预测输入的错误锚点清零
- 回测地面真值止血:outcome 缺失显式跳过并计数,禁止 None→False 静默转换;NaN 序列化为 null,不再产出非法 JSON
- 前端 XSS 修复:innerHTML 转义、
javascript:协议白名单、属性回填转义、CSP meta 兜底;新增 38 项断言脚本scripts/test_xss_helpers.js
性能
- 行情序列轮级缓存 + 10 路并发拉取:单次 20.4s → ≤8s,同轮后续调用零网络,全天节省约 10 分钟冗余 IO
- LLM 采样并发 + 工具层超时对齐(180s → 900s)+ 连接池复用 + stderr 进度心跳:轮次最坏时长 12.4 → 6.4 分钟,agent 侧挂起根因消除
自动化
- 自主选题闭环:08:30 选题(
scripts/autopick.py)→ 08:45 判重入库(scripts/autopick_ingest.py,观察期不入对外榜单)→ 09:00 预测轮 - Polymarket 揭晓接入每日调度(21:00,
scripts/pm_resolve.py退出码与撞锁处理加固)
全量测试 381 用例全绿,ruff 零告警。
v0.2.0
v0.2.0
修复
- 红测试时间炸弹动态日期化:test_storage_readonly 硬编码日期过归档阈值 + test_storage 4 处未来日期炸弹,同类组合全仓扫描清零
- 引擎反向 import 解耦:新增
src/predictor/ops/lock.py(acquire_lock / lock_state / wait_acquire)与ops/manual.py,src/不再依赖scripts/,wheel 可独立运行 - health_check 撞锁失明根治:
wait_acquire排队等锁(45 分钟上限 + 含持有者 pid 的兜底告警),替代原 60 秒盲重试 - 全量测试 347 用例全绿,ruff 零告警
新功能
- 自主选题引擎
scripts/autopick.py:聚合 20 个新闻源(Google News RSS ×13 + BBC / NPR / Guardian)→ LLM 筛选打分 → 生成带可查证揭晓条件的新题(questions 表 schema)→ 注册表判重、按日幂等 → 每日简报data/daily-brief.md
文档与展示
- README 双语:英文主版 +
README.zh-CN.md - 架构图:静态 SVG(
docs/architecture.svg,英/中各一版)+ 自包含交互版(GitHub Pages,平移/缩放/主题切换/焦点追踪),由 Archify 生成(MIT,见THIRD_PARTY_NOTICES.md) - 文档瘦身:仅保留 ForecastBench 提交调研(英文文件名)与 fork 合规文档 BRANDING
v0.1.0
Foresight v0.1.0
AI 事件概率预测引擎的首个公开版本:pi 架构外壳 + Python 预测引擎。
核心能力
- 预测引擎(
src/predictor):DuckDB 存储、Brier 评分与校准追踪、历史回测、行情数据源 - Agent 外壳(
shell/pi,rebrand@foresight/foresight-agent):agent 循环、会话管理、多 provider 支持,配置目录.foresight - 扩展桥(
.foresight/extensions/foresight-tools.ts):predict/leaderboard/resolve三个工具,薄壳调用 Python 引擎 - Web 仪表盘:预测、排行榜与揭晓状态的可视化
- 无窗口调度:
scripts/run_silent.py+ pythonw 包装,定时任务零控制台弹窗;ensure_signsrv.py服务拉起含深度校验(端口占用但 pong 不对判失败)与CREATE_BREAKAWAY_FROM_JOB生命周期隔离 - 测试套件:
uv run pytest(约 5 分钟,含 ops 探针)
安装
# 外壳(agent CLI)
cd shell/pi && npm install && npm link # 全局命令 foresight
# Python 引擎
uv sync说明
- 本仓库为技术子集镜像;预测数据库从
data/fb_seed种子数据初始化 - 许可证:MIT