# Xskill Dev

> Use when developing xskill itself — editing agent tool docstrings, changing the generate agent tool surface, or verifying what schema the Agno framework actually sends to the model. Covers the dump_schema workflow and where tool descriptions come from.

- Skill: `skillnerds/xskill-dev` (Agent Skill)
- Install (CLI): `npx skillmds@latest add skillnerds/xskill-dev`
- Raw SKILL.md: https://api.skillmd.com/api/skills/skillnerds/xskill-dev/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: SkillNerds (https://skillmd.com/u/skillnerds)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/skillnerds/xskill-dev

---


# Developing xskill

## 工具描述从哪来

Agno 框架直接把 `@tool` 装饰的 Python 函数 docstring 当作发给模型的工具描述，
参数说明也从 docstring 里解析。也就是说 docstring 就是模型上下文的一部分：

- 写给模型看，不写内部实现细节（内部细节放代码注释）。
- 系统提示词里不要再抄一遍工具清单，框架会自动注入 schema，抄了会漂移。
- generate 代理的轨迹工具在 `src/xskill/agents/traj_tools.py`，
  通用工具在 `src/xskill/agents/agent_tools.py`，
  wiki 工具在 `src/xskill/agents/llm_wiki.py`。

## 改完 docstring 必跑：dump_schema

改任何工具的 docstring 或签名之后，跑一次导出脚本，看 Agno 实际生成的
schema 是什么样，确认模型看到的和你想的一致：

```bash
/home/admin/xskill/.venv/bin/python \
  scratch/standalone-generate/tool_surface/dump_schema.py
```

输出写在同目录 `SCHEMA.txt`。对照检查：

- 每个工具的 description 是否完整、有没有被截断或混进实现细节；
- 参数名、类型、必填项是否与函数签名一致；
- 新增或删除工具后，工具总数是否符合预期（generate 面当前是 16 个）。

`SCHEMA.txt` 可以进 code review diff，reviewer 能直接看到模型侧的变化。

## 上下文预算的流式陷阱

`_wrap_with_context_mgmt` 只包 `model.invoke`。任何用 `stream=True` 跑 agent
的路径都会走 `invoke_stream`，完全绕过 compact、spill 和超长兜底，模型跑在
后端原生窗口里（DeepSeek 是 1M），而且日志里一条 CONTEXT 事件都不会有。
产品 GenerateAgent 用非流式 `agent.run()` 所以没事；写实验脚本、demo、
新 agent 入口时必须非流式，或先给 `invoke_stream` 补包装。判断预算机制
是否真在跑，看 agent.log 里有没有 CONTEXT 事件（Compacted context、
Spilled、Compact was not needed 任意一种）。

llm_cfg 里开剪裁的键名是 `enable_spill`，不是 `spill`。

## 相关材料

- 工具面设计与取舍：`docs/plans/2026-08-27-generate-tool-surface.md`
- 独立实验台（Phoenix 观测、变体对比）：`scratch/standalone-generate/`，
  入口 `run_experiment.py`，`product` 变体加载产品 traj_tools 与产品
  SYSTEM_PROMPT，是验证产品行为的首选变体。

