AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻译准备中
阅读 CP-SAT 的搜索日志:每个章节都有解释,进度已绘制,参数已审查,且每条声明都链接到其来源行。
AI 翻译
Read CP-SAT's search log: every section explained, the progress plotted, the parameters reviewed, and every claim linked to the line it came from.
开发工具Python · TypeScriptGitHub @d-krupke在线运营者未确认
试用过了吗? 点一下就好,无需登录。
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证A webapp that visualizes and annotates your ortools' CP-SAT logs. Partially inspired by gurobi-logtools.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
CP-SAT's search log is dense, long, and full of information that only makes sense if you know
the solver's internals. This tool turns it into something you can read: parsed, explained,
plotted, and annotated with what the numbers actually mean for your model.
Paste a log, upload a file, or click one of the bundled examples. Nothing is stored - your log
is processed in memory for the duration of the request and then gone. No database, no account,
no cookies, no tracking.
This project is not affiliated with Google.查看完整 README ↗CP-SAT's search log is dense, long, and full of information that only makes sense if you know the solver's internals. This tool turns it into something you can read: parsed, explained, plotted, and annotated with what the numbers actually mean for your model.
Try it: https://cpsat-loganalyzer.krupke-algorithms.de/
Paste a log, upload a file, or click one of the bundled examples. Nothing is stored - your log is processed in memory for the duration of the request and then gone. No database, no account, no cookies, no tracking.
This project is not affiliated with Google.
Explains every section of the log. Solver header, initial and presolved model, presolve
passes, search events, statistics tables, response summary - each gets a text that says what it
is and what to look for. Tables and their columns, constraint kinds (kNoOverlap2D,
kAllDiff, ...), solver messages and every response field are documented too.
Points out what matters. An Overview card scores the run - OR-Tools version, worker count, final gap, presolve share of the wall time, solutions and bound improvements, and whether a solution hint was given and used - and colors a tile when something deserves attention. On top of that, two dozen insight triggers look for specific situations and say what they imply, for example:
Says what became of your hint. Whether a solution hint reached the solver, whether it was
complete and feasible, and whether CP-SAT actually started from it (the complete_hint
solution) - including the trap that CP-SAT prints "The solution hint is complete and is
feasible." for runs that were given no hint at all.
Plots the progress. Incumbent objective and proven bound over time, interactive, and every point links back to the log line that produced it.
Attributes the work. Which subsolver found the solutions, which raised the bound, and what
each of the ~20 workers in CP-SAT's portfolio (default_lp, core, fs_random_no_lp,
graph_arc_lns, shared_tree, ...) is actually for.
Reviews your parameters. Every overridden parameter is shown with its official
documentation, practical advice, and a warning when it quietly disables part of the portfolio -
interleave_search, use_lns_only, linearization_level, FIXED_SEARCH and friends have
consequences that the log alone does not spell out.
Copes with broken logs. A run that was killed, a log clipped by a terminal, one prefixed by a logging framework, your own prints mixed in, or the wrong file entirely: nothing crashes, the parts that could not be read are marked in the raw log and listed, and the analysis says up front that it is looking at an incomplete log.
Keeps the evidence. Every parsed value knows the line it came from, so the analysis and the raw log sit side by side, linked in both directions - no claim without the line that supports it.
Speaks CP-SAT 9.3 to 9.15, including the older log formats, and is checked against 295 real logs from public instance libraries on every test run.
Open https://cpsat-loganalyzer.krupke-algorithms.de/ - that instance runs this repository, and needs nothing installed.
To run your own, so that logs never leave your machine or your network:
git clone https://github.com/d-krupke/CP-SAT-Log-Analyzer.git
cd CP-SAT-Log-Analyzer
docker compose up --build
# open http://localhost:8080
Deploying it for others, configuration, sizing and operations: docs/deployment.md.
The earlier Streamlit implementation - the one behind
https://cpsat-log-analyzer.streamlit.app/ - lives on the legacy branch and is
feature-frozen.
| Read this | For |
|---|---|
| docs/deployment.md | running it for other people |
| docs/development.md | local setup, tests, editing the explanations |
| docs/architecture.md | how the parser, backend, knowledge base and UI fit together |
| docs/README.md | index, including the per-component READMEs |
The repository is the analyzer: backend/ the FastAPI app,
frontend/ the React UI, knowledge/ the TOML
texts and corpus/ the 295 logs the tests run against. Reading the log
itself is the job of cpsat-logutils, a separate package developed for this tool -
pip install cpsat-logutils if you want the parsed model without the UI.
Issues and pull requests are welcome. Two things are easy to contribute without touching much code:
knowledge/ - texts, parameter advice, subsolver descriptions,
table columns. Correcting or sharpening a text needs no Python.backend/app/insights/triggers/: it gets the parsed log and
either stays quiet or writes its sentence. base.py shows the shape.Before opening a pull request, run the suites listed in
docs/development.md. If you changed something visible, regenerate the
screenshots on this page with npm run screenshots in frontend and commit them with the
change.
Developed by Dominik Krupke. There is no funding for this project; it is mainly developed in spare time. If you want to support it, contribute or get in touch.
MIT, see LICENSE.