Skip to main content

tool-fluency

Use when designing, running, or diagnosing Evener tool-fluency experiments for a real built-in, plugin, or newly added tool. Covers probe manifests, model comparisons, semantic oracles, and interpreting fluency failures without ad-hoc transcript parsing.

소스 정보

저장소
prime-radiant-inc/evener
최근 소스 활동
2026년 8월 23일 21:49
감지된 SKILL.md 언어
영어
스타
170
포크
15

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
tool-fluency
description
Use when designing, running, or diagnosing Evener tool-fluency experiments for a real built-in, plugin, or newly added tool. Covers probe manifests, model comparisons, semantic oracles, and interpreting fluency failures without ad-hoc transcript parsing.
# Tool Fluency Use this skill when Jesse asks whether a model uses a Evener tool fluently, asks for tool-fluency scenarios, or adds a new real tool that needs model-facing coverage. ## Required reading 1. Read `tools/tool-fluency/README.md`. 2. Read `docs/developing-evener/agentic-testing.md` if the Go runner cannot exercise the live session shape you need. 3. For session/job/watch forensics, use `evener doctor` or the `agent/doctor` package. Do not hand-parse transcript JSONL. ## Core rules - Test real behavior, not prompt/doc strings. - Use structured probes and semantic oracles. Do not make assertions whose main claim is "the transcript contains this phrase." - Do not write custom Python or jq glue to count tool calls, watches, or delegate sends. Improve the Go runner or `evener doctor` when a needed inspection is missing. - Separate task success from fluency. A run can complete the task while still showing tool churn, invalid first arguments, polling, or wrong-tool recovery. - Treat unavailable-by-design tools as `skipped_unavailable`, not failures. - For future tools, add a probe only after the tool exists in the runtime tool catalog. ## Workflow 1. Identify the exact tool or workflow under test. 2. Confirm which contexts should expose it: root, leaf subagent, coordinator subagent, bundled agent role, provider behavior tag, or plugin/custom agent. 3. Define the smallest probe that forces the intended tool decision. 4. Define a semantic oracle: - artifact/file state; - structured tool result; - session/job/watch/delegate state through `agent/doctor`; - public final token only when it is the actual user-visible contract; - custom Go verifier only when reusable oracles are insufficient. 5. Define forbidden calls and fluency metrics separately from pass/fail. 6. Run the probe across the requested models and repetitions. 7. Inspect every failure for root cause before changing prompts, schemas, or probes. ## Runner commands Catalog currently advertised tools: ```sh go run ./tools/tool-fluency/cmd/evener-fluency catalog --model openai/gpt-5.4-mini ``` Run all current probes: ```sh go run ./tools/tool-fluency/cmd/evener-fluency run \ --build \ --model openai/gpt-5.4-mini \ --fast-cheap-model openai/gpt-5.4-mini \ --clear-openai-api-key \ --probe all ``` Run one probe with an existing binary: ```sh go run ./tools/tool-fluency/cmd/evener-fluency run \ --evener-bin /tmp/evener \ --model openai/gpt-5.4-mini \ --probe read_file.happy_path ``` Run one probe with an experimental prompt append: ```sh go run ./tools/tool-fluency/cmd/evener-fluency run \ --evener-bin /tmp/evener \ --model openai/gpt-5.4-mini \ --probe read_file.happy_path \ --system-prompt-append tools/tool-fluency/variants/example.md ``` Use prompt-append variants for experiments, not as a substitute for product fixes. Keep each variant small and atomic, and run it against the same probe/model/harness as the failure you are trying to explain. Run a callback or notification probe with a live session harness: ```sh go run ./tools/tool-fluency/cmd/evener-fluency run \ --harness live \ --model openai/gpt-5.4-mini \ --fast-cheap-model openai/gpt-5.4-mini \ --clear-openai-api-key \ --probe job_watch.observer_callback \ --post-turn-wait 45s ``` Use `--harness live` when a probe needs `SetNotifyFunc` or `SetKickFunc` wiring, such as observer callbacks, watch deliveries, or notification-driven parent resumes. Use the default CLI harness for ordinary one-shot tool probes. ## Failure classification Use these categories in reports: - `schema`: tool definition, strict mode, JSON schema, or provider conversion made the right call hard or impossible. - `availability`: tool was missing or incorrectly exposed in the context. - `selection`: model chose the wrong tool or avoided the intended tool. - `arguments`: model selected the right tool but supplied invalid or weak args. - `repair`: model failed to recover from a meaningful validation error. - `interpretation`: model got a good tool result but used it incorrectly. - `churn`: extra calls that did not contribute to the task. - `polling`: model repeatedly inspected state instead of waiting for the runtime signal or callback. - `plain_message`: model emitted assistant text where `communicate` was the required channel. - `infra`: provider quota, hub crash, bad credentials, timeout unrelated to model behavior. - `harness`: the tool-fluency runner itself failed to launch or drive the probe (subprocess spawn failure, missing binary, environment/plumbing issue) before the model had any chance to act. Never attribute this to the model. ## Reporting format Report both the verdict and the evidence: ```text probe: job_watch.observer_callback model: openai/gpt-5.4-mini status: failed task_success: true fluency: first_call_tool: delegate validation_errors: 1 forbidden_tool_calls: 0 polling_calls: 0 root_cause: schema evidence: session_id: 01... state_dir: /tmp/... doctor: parent job_list count: 0 parent job_status count: 0 observer communicate count: 1 fix: make job_watch optional field X non-strict / clarify repair message ``` Healthy runs should have no findings. Do not manufacture "looks good" findings. ## Forensics The runner writes `result.json`, `stdout.txt`, and `stderr.ndjson` under each probe repetition directory. For session/job/watch inspection, prefer: ```sh go run ./cmd/evener doctor transcript "$SID" --state-dir "$STATE" -format outline go run ./cmd/evener doctor transcript "$SID" --state-dir "$STATE" -count communicate go run ./cmd/evener doctor tree "$SID" --state-dir "$STATE" --observers go run ./cmd/evener doctor watches "$SID" --state-dir "$STATE" ``` If a live observer/callback scenario needs a session to remain open across notification turns, use `evener-fluency run --harness live`. If that harness cannot represent the needed shape, use the live scenario process in `docs/developing-evener/agentic-testing.md`, or improve the Go runner instead of accumulating shell glue.
GitHub에서 보기