Skip to content
Back to skills

Optional Local Agent

ASecurity

"Operate DeepXiv's optional OpenAI-compatible LangGraph ReAct Agent

  • 247 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 8, 2026
ai-agentspythonreactapi

Works with

  • cli
  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 6 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill optional-local-agent --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Optional Local Agent?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Optional Local Agent
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-optional-local-agent/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-optional-local-agent)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: optional-local-agent
description: "Operate DeepXiv's optional OpenAI-compatible LangGraph ReAct Agent
  for local paper search, reading, and multi-turn analysis."
disable-model-invocation: true
metadata:
  disco-role: operating
license: MIT
---

# Optional local Agent

Use this route when the task needs DeepXiv's **local** ReAct loop with a caller-selected OpenAI-compatible chat model. It owns the `deepxiv_sdk.Agent` class, its optional dependency boundary, provider request options, paper-context persistence, tool orchestration, budgets, and failure recovery.

Do **not** use this route for hosted `Reader.agent_search*` calls or `deepxiv agent ...` CLI configuration/query syntax; route those to the Reader/CLI sibling skills.

## Fast route

1. Run [`scripts/agent_dependency_probe.py`](scripts/agent_dependency_probe.py) before diagnosing an optional-install problem. It performs local import/spec checks only; it never calls an LLM or the paper service.
2. Install the optional set with `python -m pip install "deepxiv-sdk[agent]"` (or `[all]`). The published 1.0.0 extras declare `openai`, `langgraph`, and `langchain-core`, but **do not declare `tiktoken`**, although `deepxiv_sdk.agent.agent` imports it at module load. Install `tiktoken` explicitly when the probe reports it missing.
3. Construct `Reader` and pass it explicitly to `Agent`; `reader` is a required constructor argument in source. Supply the model API key to `api_key`, and use `base_url` for an OpenAI-compatible provider.
4. For reasoning models used across tool rounds, set `enable_thinking=False` (or pass an equivalent provider field through `extra_body`) when the provider rejects reasoning content in non-final assistant messages.
5. Keep `max_llm_calls` and `max_time_seconds` bounded. Preserve context across follow-up `query` calls unless `reset_papers=True` or `reset_papers()` is intentional.
6. Follow the load-first and progressive-reading protocol in [`references/tool-protocol.md`](references/tool-protocol.md); consult [`references/troubleshooting.md`](references/troubleshooting.md) for missing papers versus service failures.

## Operating rules

- The base package can expose `Reader` without the Agent. `deepxiv_sdk.__init__` attempts the Agent import and silently omits `Agent` when an optional import raises `ImportError`; check dependencies rather than assuming the symbol exists.
- Never put a key, token, private endpoint, checkout path, or environment name in a public skill or example. Pass secrets at runtime.
- Treat `add_paper()` returning `False` as a recoverable missing/not-yet-indexed result. Do not treat it as proof that the ID is invalid forever; try a different ID or broader search. Genuine server/auth/rate-limit failures propagate from `add_paper()`.
- A tool result describing a malformed argument, an unloaded paper, or a missing section is recoverable and must not by itself trip the service circuit breaker. Repeated service-side result markers do trip it and force a tools-less final-answer call.
- `query()` returns the graph's extracted answer, but catches graph exceptions and returns an `Error: ...` string. `add_paper()` has different behavior: expected not-found/bad-request cases return `False`, while genuine API failures propagate.

## References

- [`references/api-reference.md`](references/api-reference.md) — constructor, methods, provider fields, state and return contracts.
- [`references/workflows.md`](references/workflows.md) — bounded first query, persistent follow-up, manual preload, and reasoning-provider recipes.
- [`references/tool-protocol.md`](references/tool-protocol.md) — exact tool order, load/read rules, caches, budgets, and breaker classification.
- [`references/troubleshooting.md`](references/troubleshooting.md) — optional-import, provider, paper availability, and termination diagnostics.

Files in this skill

  • SKILL.md3.8 KB
  • references/api-reference.md6.2 KB
  • references/tool-protocol.md7.5 KB
  • references/troubleshooting.md5.7 KB
  • references/workflows.md4.9 KB
  • scripts/agent_dependency_probe.py6.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.