日本語 · English · 简体中文 · 繁體中文 · 한국어 · Deutsch · हिन्दी
The recommended way to run Fullseye is as the knowledge base (RAG) of an AI coding
assistant. Because every op carries a machine-readable Markdown note (docs/ops, a single
source of truth), no extra vector database or embedding service is needed. Any environment
that can grep is already a RAG.
Three tiers of adoption are provided. Tiers 0/1 have zero external dependencies (self-contained in the Fullseye repository).
Use from PyPI: in an environment where you
pip install fullseye, the console scriptfullseye-ragis available. A checkout (clone /pip install -e .) pins the fulldocs/opscorpus to the skill; a wheel-only install pins the bundledOP_CATALOG.md(the all-op catalog for AI) instead (if you later want the full per-op notes, just clone the repo and re-run). Update withpy -3.11 tools/update_fullseye.py(refuses a dirty tree,--ff-only, updates the skill over a backup, and leaves Studio settings untouched — designed not to wreck your environment).
Given only the documents, Codex and Copilot both failed to find the task-to-op index on the first try (2026-09-15), because this guide did not point to it. There are five ways in:
docs/CAPABILITIES.en.md. One file per task (docs/capabilities/) with the recommended pipeline (ordered ops) / alternatives / limits / real-world calibration; tests/test_capabilities.py checks that every op exists and that the types (in → out) connect from one step to the next.fullseye-rag search / fullseye.search_ops (next section).docs/ops/INDEX.md → family index → op note.fs.op_find(query) (free text, stems) / fs.op_assist(op) (spec, presets, what to chain next) / fs.op_path(from_sort, to_sort) (op chain from type A to type B) / fs.op_producers(sort) (ops that produce a type) / fs.op_accepts(op) (measured accepted types); on the command line fullseye has <op> (HALCON names work too).docs/OP_INDEX.json (type contracts of every op) and the OP_CATALOG.md shipped in the wheel.On Windows shells, read the notes as UTF-8 explicitly — they are UTF-8 without BOM; opened with the default code page the Japanese text turns to mojibake and an AI concludes “not there” when it simply could not read it (this happened with Codex). PowerShell: Get-Content -Encoding utf8; Python: PYTHONUTF8=1.
fullseye-rag search "remove noise" # command (works with just pip install fullseye)
fullseye-rag search "Rauschen entfernen" -k 5 --lang en
import fullseye
fullseye.search_ops("edge detection", k=5) # Python; over MCP use fullseye_find_ops
Every op summary is indexed in seven languages (the Japanese original plus English, Simplified and
Traditional Chinese, Korean, German and Hindi translations; the Hindi keeps technical terms in English, so search those in English) together with the op name, HALCON name and in/out
types; results come back ranked, with the summary in your query’s language and the path of the note.
The note bodies are Japanese, so a grep for “Rauschen”, “降噪” or “잡음” finds nothing — this search finds
ops in your own language. No embeddings and no external service (BM25, standard library only).
It does not know synonyms: if the hits look thin, rephrase or try English. If you already know the
name, MCP fullseye_search_ops (substring match) is faster. Runnable example:
py -3.11 examples/find_ops_by_meaning.py.
Open a checkout of the Fullseye repository in Claude Code and you can search and reference
docs/ops/INDEX.md and the per-op notes directly. The corpus is repository content (not bundled in
the wheel), so if you only pip-installed, clone the repository as well.
docs/ops/2d/<category>/<op>.md # call form, type contract, HALCON alias, references, related ops
docs/ops/3d/<category>/<op>.md
docs/ops/INDEX.md # whole table of contents, auto-generated by walking the folder tree
docs/ops/<family>/guides/<name>.md # per-family how-to guides (math, diagrams, canonical citations)
docs/OP_INDEX.json # machine-readable index of the registry
If you want to consult Fullseye while working in your own project, run the bundled setup script once:
py -3.11 tools/setup_claude_rag.py # install (re-run = update)
py -3.11 tools/setup_claude_rag.py --uninstall # remove
The bundled skill skills/fullseye-ops is copied to ~/.claude/skills/fullseye-ops, and the
FULLSEYE_REPO = line in SKILL.md is automatically pinned to this checkout’s absolute path (so
the AI knows where the corpus is no matter which project it is working in). It refuses to install on
a checkout where the corpus (docs/ops) cannot be found (fail-closed).
From then on, on image-processing / geometric-vision topics Claude Code automatically invokes this
skill and runs the flow: search (retrieve) docs/ops → pick ops whose types (sorts) connect and
implement → verify with the bundled worked example. The skill body itself is the “how-to-use
instructions for the AI”. To install it by hand, just copy skills/fullseye-ops into
~/.claude/skills/ (without the path pin, the AI looks up the repo location each time).
You can also build a “navigable corpus” that hierarchically clusters the 3,629 notes into topic
clusters with an LLM summary per cluster. Internally we use the corpus2skill of a
RAPTOR fork (TF-IDF + k-means + LLM summary), but this is
an optional optimization, not a requirement. The only requirement is “take docs/ops as input and
emit a per-cluster SKILL.md hierarchy”, so any equivalent tool can stand in.
Example of re-ingesting (after updating notes) — recorded honestly, exactly as we run it internally:
$env:RAPTOR_DIR="<path-to-raptor-checkout>"
py -3.11 raptor_corpus2skill.py --source <fullseye>/docs/ops --name fullseye_ops_corpus_v2 `
--overwrite --max-depth 2 --max-clusters 6 --min-cluster-size 8 # needs ANTHROPIC_API_KEY
Caveat: a clustered corpus is a snapshot at ingest time. If you update docs/ops it goes stale
unless you re-ingest (Tiers 0/1 never go stale because they always read the live notes).
An op note answers “what does this op do”; it does not answer “what should I measure in this process, for this part”.
docs/literature/ fills that gap: external literature corpora (mechanical design, mechatronic parts,
manufacturing processes, driving simulation and evaluation, sensor simulation — about 8,900 OpenAlex metadata records; one theme → op table per field) summarised per cluster, with the ops to use in each
cluster (a hand-written theme → op table whose op names are checked against the shipped notes at generation time) and
the title / year / DOI of representative papers as provenance. Read it as: process, part or driving-evaluation topic → literature cluster → ops to
use → op note (type contract, runnable example) → implementation. Abstracts are not copied, and ops are never picked by
word overlap (that was measured to surface unrelated ops on generic words and dropped). Because the corpora live outside
the repo, this layer alone is rebuilt with tools/gen_literature_notes.py --rad-root <RAD>, and
tests/test_literature_notes.py guards its shape.
Optical metrology and inspection reliability (POD, laser speckle, shape from polarization, global light transport, acceptance testing and uncertainty, synthetic data: six axes) is a hand-curated layer: the papers were chosen by hand and each axis has an overview written by hand (manifest docs/literature/curated/).
What can actually reach it: the layer is retrievable by reading the repository files (the Claude Code skill fullseye-ops, checkout mode). The MCP server’s search (fullseye_search_ops / fullseye_find_ops) and fullseye-rag search do not return the layer’s clusters or papers. The hand-written context of the theme → op table (“theme: why this op”, Japanese with an English translation) is, however, part of the meaning search’s index, so a shop-floor phrasing (weld bead height, polishing removal) can find the op, and the result shows it in its contexts field. The wheel (pip install) does not ship docs/literature either.
version +
fingerprint).in:/out: and “related ops whose types connect”, so
the AI can assemble a pipeline while type-checking it.examples/ / examples_3d/), so the
AI can run its own proposal and check it.py -3.11 studio.py) and a human can inspect what
the AI assembled as image windows and 3-D views on the same screen (scripts can place multiple
windows via dev_open_window, etc.).