Skip to main content
Glama

🎮 Universal-Game-Framework

一个能自己跑的单文件游戏 Agent

看画面 → 预判 → 评估 → 出动作 → 查/写经验 → 复盘 → 汇报 → 学习,全在一个 agent.py 里。

CI Python Coverage mypy License

中文 | English

⚠️ 声明:仅用于本地 AI 智能体技术研究。在 florr.io 官方服务器运行 bot 违反游戏服务条款,可能导致账号封禁。请在本地 / 自建 / 已授权环境使用。


这是什么(给零基础看的)

想象一个"游戏代打机器人",它每一步都做这几件事:

  1. 看:拿到当前画面里有什么(自己血量、怪物、队友)。

  2. 算:怪物下一秒会走到哪、打得过还是打不过。

  3. 查:翻自己的"经验本"(知识库),看以前遇到这种情况该怎么办。

  4. 动:按经验做出移动 / 攻击 / 切套装的动作。

  5. 记:打完一局写复盘,把有用的经验继续写进本子。

这个"机器人"就是 agent.py —— 一个文件、一条命令就能开跑,不需要装 MCP 服务、不需要别的 Agent 托管。


Related MCP server: Pokemon MCP Server

快速开始

# 1. 先离线试跑(不碰键鼠、不需要密钥,最安全)
python agent.py selftest            # 全链路自检,应输出 19/19 通过
python agent.py run --dry-run --rounds 20

# 2. 看运行模式和手册
python agent.py mode
python agent.py guide

# 3. 真机开跑(需要外部感知服务 + 装了 pyautogui)
pip install "pyautogui>=0.9.54"     # 有显示器 / X server 才需要
python agent.py run

依赖极简:离线链路零第三方库即可跑通;真实运行建议 pip install -r requirements.txt(只有 pyyaml + requests)。


全部命令

命令

作用

run

主循环(--rounds N 限制回合 / --interval S 间隔 / --dry-run 空跑)

mode

查看运行模式(dry-run?感知后端?LLM 开没开?当前游戏?)

selftest

离线自检:跑通全链路并断言关键产物

perceive

手工取一帧画面状态

predict

手工取一帧 + 全实体 1.2s 预判

action

执行动作:action move --x 100 --y 200 / action attack

set

切换套装:set retreat

afk

AFK 弹窗处理指引

kb

知识库:list / search / write / append / export / import / boss / tactic / clean / maintain

learn

视频学习:learn video.mp4 或 learn --url <链接> --frames 5

report

生成对局报告(写 run_logs/,可配 Webhook 推送)

session

看会话记忆与历史战绩

tune

自动调参:tune --status / tune --reset

guide

打印使用手册


能力清单(一个不少)

能力

在哪体现

感知

Perception:支持 mock(离线合成)/ http(接外部检测服务)双后端

全实体预判

Predictor:按历史轨迹预测未来位置,带置信度与 prediction_trusted

战斗评估

judge_combat:按威胁比 / 血量 / 怪物档次给出 fight / cautious_fight / retreat

动态心态

decide_mindset:激进 / 平衡 / 保守,随场面变化

知识闭环

extract_tactics + apply_tactics:战术带适用条件,命中才影响决策

拟人动作

移动抖动、随机停顿、安全区钳制、鼠标四角安全暂停

BOSS 记忆

归纳移动模式 / 追踪距离,写回知识库

组队协同

识别队友、分工、保持距离

死亡复盘

只有 BOSS / 组队局才生成复盘,避免噪声

会话记忆

断点续玩、历史战绩

自动调参

按战斗统计自动微调阈值(阈值批次写入 tuned_overrides.yaml)

自动汇报

生成 Markdown 报告,可选 Webhook 推送

视频学习

逐帧 VLM 提战术,去重后写入知识库


配置

改参数不用改源码,全部集中在这三处(优先级从低到高):

  1. agent.py 里的内置 DEFAULT(最后兜底)

  2. config.yaml(全局配置)

  3. game_profiles/<游戏名>.yaml(游戏档案,见 game_profiles/)

改完保存即热加载生效,不用重启。

常用环境变量

复制 .env.example 为 .env 再填:

变量

作用

UGF_DRY_RUN=1

只记录动作,不碰真实键鼠(推荐先这样试)

UGF_PERCEPTION_BACKEND

mock(离线合成)/ http(接外部检测服务)/ auto

UGF_PERCEPTION_URL

外部感知服务地址(留空则用 127.0.0.1:<端口>/perceive)

AGENT_GAME

切换游戏档案,如 space_invaders

LLM_API_URL / LLM_API_KEY / LLM_MODEL

LLM 决策

VLM_API_URL / VLM_API_KEY / VLM_MODEL

视频学习的视觉模型

UGF_WEBHOOK_URL

报告推送地址


为什么这么轻

对比项

旧版(MCP 服务)

现在(单文件 Agent)

文件数

100+ 个模块 / 文档 / 工具

agent.py 一个文件

每回合开销

MCP 子进程 + JSON-RPC 往返 6 次

进程内函数调用,零 IPC

依赖

flask / mcp / numpy / psutil / dotenv…

核心只需 pyyaml + requests(缺失自动降级)

离线可跑

需要装一堆包

只用标准库即可跑通 dry-run 全链路

细节设计:requests / yaml / pyautogui / cv2 全部惰性 import; 预判与战斗评估是纯 math,不引入 numpy。


测试

pip install pytest
python -m pytest tests/ -q      # 单元测试
python agent.py selftest        # 端到端离线自检

CI(.github/workflows/ci.yml)会在 Python 3.11 / 3.13 上跑这两项。


文档

文档

内容

docs/architecture.md

分层架构、数据流、模块地图、配置优先级、可靠性设计

docs/game-profile-guide.md

30 分钟接入一款新游戏(含常见错误速查)

docs/faq.md

安装 / 感知 / 知识库 / 排障 / 合规常见问题

docs/demo.md

5 分钟 Demo 走查(bash tools/demo.sh 一键版)

docs/windows-service.md

Windows / Linux 常驻运行(计划任务 / NSSM / systemd)

ROADMAP.md

技术优化路线图(26 项,v3.1.0 已全部落地)

CHANGELOG.md

版本变更记录


目录结构

Universal-Game-Framework/
├── agent.py              # 全部能力都在这里(单文件 Agent)
├── config.yaml           # 全局配置(阈值 / 路径 / 降级链,可热加载)
├── game_profiles/        # 游戏档案:florr / demo_arcade / space_invaders
├── docs/                 # 架构 / 新游戏接入指南 / FAQ
├── tests/                # 150+ 项测试(含故障注入与 fuzz)
├── tools/secret_scan.py  # 密钥防泄漏扫描(pre-commit + CI)
├── src/ugf/              # 模块化分片源(build.py split/agent 与单文件互转)
├── build.py              # 构建工具:zipapp 分发 + 分片↔单文件互转与一致性校验
├── ROADMAP.md            # 优化路线图(26 项)
├── CHANGELOG.md          # 版本变更记录
├── requirements.txt      # 依赖(核心只有 pyyaml + requests)
├── pyproject.toml        # pip install . 后可用 ugf 命令
├── Dockerfile            # 多阶段构建 + 非 root + 健康检查
├── docker-compose.yml    # 容器编排示例
├── start.bat / start.ps1 # Windows 一键启动
└── README.md

运行期会自动生成(已在 .gitignore 中忽略): knowledge_md/(经验本)、run_logs/(日志与报告)、agent_state.json、session_history.json。


贡献与安全

  • 参与贡献:CONTRIBUTING.md(双源工作流 / 质量门槛 / 提交规范)

  • 报告漏洞:SECURITY.md(请走 GitHub 私密通道,勿开公开 Issue)

  • Issue 模板:Bug 报告 / 功能建议


License

MIT,见 LICENSE。

Available Tools

16 tools
clean_cacheA

清理运行期缓存。

入参:target 取 all(默认,清全部)/ predict(只清预判历史)/ frames(只清临时帧目录)。 返回:清理结果文本。 用途:长时间运行后释放磁盘;换局前保证预判数据干净。 下一步:清完预判历史后重新连续 perceive_game 积累帧;长时间运行前可先清 frames 省磁盘。

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it discloses what each target destroys (prediction history, temp frame dir, everything) and the purpose of freeing disk. It does not address reversibility or required permissions, but for a cache-clean operation the destruction profile is reasonably clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structured into 入参/返回/用途/下一步 with the core action front-loaded; every section adds actionable information and nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A single-optional-param tool whose parameter meanings, effects, and follow-up steps are all documented, and return values need not be explained since an output schema exists. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the schema does not even declare the enum, so the description's documentation of all (default) / predict / frames with meanings is the only source of parameter semantics. It fully compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('清理运行期缓存') and enumerates exactly what each mode clears, so an agent knows the scope. It does not explicitly differentiate from the sibling reset_predictor, which sounds related to the 'predict' target, leaving mild ambiguity about which tool to reach for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use conditions: free disk after long runs, keep prediction data clean before switching rounds, and clear frames before long sessions. It does not state when NOT to use it or compare directly to reset_predictor, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

game_actionA

执行一个游戏动作。

用途:把决策落地成实际操作。 入参:action_type 必填,取 move / attack / defend / synthesize / idle; move 时必须给 x、y 目标坐标(内部会做拟人化路径微扰和偶发停顿)。 切换套装请用 switch_set,不要用本工具。 返回:动作执行结果文本。默认 dry-run(UGF_DRY_RUN=1)只校验参数并返回描述, 不会真的动键鼠;只有在获得授权的环境里才关闭 dry-run。 下一步:回到 perceive_game → predict_all_entities 的循环;遇到 AFK 弹窗用 handle_afk。

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
action_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden, and it delivers: it discloses the dry-run default (UGF_DRY_RUN=1) that only validates parameters, that real input control requires an authorized environment, and that move actions apply anthropomorphic path perturbation and occasional pauses. These are unique behavioral traits not available elsewhere.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then structured as 用途 / 入参 / 返回 / 下一步. Every sentence adds value, though the repeated formatting labels are slightly verbose; it remains compact for the amount of information conveyed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and 0% schema coverage, the description is nearly complete: purpose, parameters, return format, and workflow context are all present. It could be improved by listing the return fields or error cases, but it already provides a full picture for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It does: action_type is said to be required with allowed values 'move / attack / defend / synthesize / idle', and x/y are described as target coordinates required when action_type is move. This fully covers the parameter semantics that the bare schema omits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('执行一个游戏动作') and clarifies the intent: turning a decision into an actual operation. It explicitly distinguishes itself from the sibling switch_set ('切换套装请用 switch_set,不要用本工具').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use in the workflow loop ('回到 perceive_game → predict_all_entities 的循环'), names a direct alternative (switch_set), and describes a specific escalation path ('遇到 AFK 弹窗用 handle_afk'). It even states the dry-run condition under which the tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

handle_afkA

处理游戏内的 AFK 人机验证弹窗。

用途:长时间挂机触发验证时调用。 入参:无。 返回:操作指引文本。 下一步:结合 perceive_game 返回的弹窗坐标,用 game_action(move) 完成点击验证。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that it returns operation guidance text and that the actual click is done via game_action(move), implying this tool does not click itself, but it omits permissions, side effects, and failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with purpose, then usage, parameters, return, and next step. Every sentence earns its place and nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter tool with an output schema, the description covers purpose, usage, parameters, return type, and the next-step workflow. It is complete enough for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4. The description explicitly states '入参:无', matching the empty input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb '处理' and resource '游戏内的 AFK 人机验证弹窗', plus the long-idle trigger context. It is clear, but it does not explicitly contrast with sibling tools beyond mentioning perceive_game and game_action as next steps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to call it: when long idle triggers verification. It also provides a clear next-step workflow with perceive_game and game_action(move), but gives no when-not guidance or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kb_appendA

向知识库已有文档追加内容(文档不存在则自动新建)。

用途:一局结束后补一行结论、给 BOSS 习性加一条新观察。 入参:filename、markdown_content、game_name(可选,分类文件夹)。 返回:成功为「已追加到知识库: <路径>」;失败返回「错误: ...」。 下一步:配合 kb_search 复用这些累积经验。

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYes
game_nameNo
markdown_contentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does disclose meaningful behavior: content is appended (additive), and a missing document is auto-created. It also names the success/failure return strings. It does not cover permissions, concurrency, or what happens on duplicate filenames.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action, then uses labeled sections (用途/入参/返回/下一步) for scannability with no filler. The 返回 line is arguably redundant given an output schema exists, but overall it is tight and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be re-explained, and the description still adds role guidance for game_name plus usage scenarios. The main gap is lack of differentiation from the sibling kb_write, which an agent may otherwise confuse with this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It names all three parameters and clarifies that game_name is an optional categorization folder, which is genuinely useful. It does not explain the expected filename format or markdown_content conventions, so the compensation is only partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (append content to an existing knowledge-base document) and adds the fallback behavior of auto-creating the file. It does not distinguish itself from the sibling kb_write, which is the most obvious alternative for writing documents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage scenarios (add a conclusion line after a match, add a new observation to a BOSS habit), which clearly frames when this tool is appropriate. However it offers no exclusions or explicit routing versus kb_write/kb_search, leaving the append-vs-write choice to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kb_exportA

把整个知识库(活跃 + 归档)打包成 tar.gz 备份。

用途:换机迁移、定期备份。 入参:无。 返回:备份文件路径或状态文本。 下一步:在新机器上用 kb_import 恢复。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose meaningful traits: what is included in the archive, that the operation is non-destructive (produces a separate artifact), and that the result is a file path or status text. It omits where the artifact is written, whether it requires permissions/disk space, and how long a full export takes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and scope, then broken into short labeled lines for purpose, inputs, return, and next step. Nothing is padded; the 'no inputs' line is the only mildly redundant element and costs a few characters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no elaboration, and the description covers scope, use cases, and the follow-up workflow. What remains unaddressed is operational context the agent may need, such as permissions, artifact location, and failure modes, which matters given the absence of annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4. The description explicitly confirms '入参:无' (no inputs), which matches the empty schema and removes any doubt that the agent must supply something.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (package the entire knowledge base, active + archived, into a tar.gz backup), which is far more precise than a bare name restatement. The scope note ('active + archived') distinguishes it cleanly from siblings like kb_list, kb_search, and kb_write, none of which export.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives two concrete use cases (machine migration, periodic backup) and names the complementary next tool, kb_import, for restoration on the new machine. It stops short of stating exclusions or when another tool would be preferable, so it is clear context without full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kb_importA

从 kb_export 生成的 tar.gz 备份恢复知识库(同名文件覆盖)。

入参:backup_path,备份文件的绝对路径或相对项目根目录的路径。 返回:恢复结果文本(含恢复的文件数)。 下一步:kb_list 确认恢复结果,kb_search 抽查具体内容。

ParametersJSON Schema
NameRequiredDescriptionDefault
backup_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the load and does disclose the key destructive trait — same-name files are overwritten — plus the expected return (restore result text with file count). It omits error/partial-restore behavior and any auth or path-existence requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded statement of purpose followed by clearly labeled sections (入参/返回/下一步). Every line earns its place and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single required parameter, an output schema that covers the return shape, and no annotations, the description supplies purpose, overwrite semantics, path semantics, and next steps — nothing essential is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: backup_path is explained as an absolute path or a path relative to the project root. That exceeds the bare 'Backup Path' title, though no format/validation detail is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (从备份恢复知识库) and names kb_export as the counterpart that produces the input, so an agent can immediately tell this is the inverse of export rather than a sibling like kb_write.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly frames the use case as restoring from a kb_export tar.gz and names follow-up tools (kb_list to verify, kb_search to spot-check). It does not state explicit exclusions (e.g. when to prefer kb_write instead), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kb_listA

列出知识库里已有的 Markdown 文档名。

用途:动手前先看本地有没有这个游戏的资料,避免重复研究。 入参:game_name 可选;给了就只列该游戏文件夹下的文档。 返回:JSON 字符串——文档名数组。 下一步:把感兴趣的文档名交给 kb_search 检索正文;没有相关资料就先 kb_write 建一份。

ParametersJSON Schema
NameRequiredDescriptionDefault
game_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does reasonably well: it discloses the return type (JSON string array of document names) and the scoping behavior when game_name is supplied. It does not state access/permission requirements or that it is a read-only, non-destructive operation, which is implied by 'list' but not declared.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by labeled sections (用途/入参/返回/下一步). Every line earns its place; the labeled structure is slightly formulaic but no content is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter list tool with an output schema, the description covers purpose, parameter meaning, return shape, and workflow handoff. Nothing an agent needs to invoke it is missing; the only gap is the absence of any read-only/permission statement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter has only a type and default, so the description must compensate. It does: 'game_name 可选;给了就只列该游戏文件夹下的文档' explains optionality and the filtering semantics the schema does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: list existing Markdown document names in the knowledge base. It is clearly distinguishable from kb_search (retrieves content) and kb_write (creates docs), which it explicitly routes to in the '下一步' section.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives the situation for use ('动手前先看本地有没有这个游戏的资料,避免重复研究') and names the follow-up alternatives kb_search and kb_write. No explicit when-not condition, but the workflow context is strong enough to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kb_writeA

把一段 Markdown 写进知识库(不存在则新建,已存在则整体覆盖)。

用途:保存新学到的战术、怪物习性、本局结论。 入参:filename 文件名(不要带路径);markdown_content 正文;game_name 可选,用于分类到子文件夹。 返回:成功为「已写入知识库: <路径> (N 字符)」;失败返回「错误: ...」。 注意:这是覆盖写。想追加请用 kb_append。 下一步:想追加而不是覆盖,用 kb_append;写完可用 kb_search 抽查内容。

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYes
game_nameNo
markdown_contentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It clearly discloses the destructive/overwrite behavior ('已存在则整体覆盖' and the explicit 注意: 这是覆盖写), which is the key behavioral trait for a write tool. It also documents return values (success and error formats). It does not mention permissions, atomicity, or size limits, so not a perfect 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with labeled sections (用途/入参/返回/注意/下一步), front-loaded with the core action. Every line earns its place and there is no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param write tool with no annotations and an output schema, the description covers purpose, parameters, overwrite semantics, return format, and sibling routing. Note that although an output schema exists, the description still describes return values, which is mildly redundant but harmless. Nearly complete aside from permission/path-safety details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and largely does: it explains filename (no path), markdown_content (body), and game_name (optional, for subfolder categorization). This adds real semantic meaning beyond the bare schema property names. Minor gap: it doesn't specify accepted file extensions or path sanitization rules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (写进知识库 / write Markdown into knowledge base) and clarifies the semantics of create-vs-overwrite in the first sentence. It distinguishes itself from siblings by explicitly noting it is an overwrite write, contrasted with kb_append for appending.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('保存新学到的战术、怪物习性、本局结论') and explicitly names the alternative for the append case ('想追加请用 kb_append'), plus a follow-up suggestion (kb_search) for spot-checking. Alternatives and conditions are spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

perceive_gameA

获取当前游戏画面状态(自身 HP、周围实体列表等),并自动喂给预判模块。

用途:每一步决策前先「看一眼」,也是 predict_all_entities 的数据来源。 入参:无。 返回:JSON 字符串——含自身状态与 entities 实体列表。需要连续调用多帧(≥3 帧) 后续预判才有效。感知服务不可用时会自动降级为进程内合成帧, 结果里带 _fallback 标记(离线联调照常可用,不会抛异常)。 下一步:predict_all_entities 做位置预判,或 kb_search 查资料。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and mostly meets it: it discloses the multi-frame requirement (≥3) and the graceful-degradation path — service unavailable yields in-process synthetic frames tagged with _fallback and never throws. It does not cover auth, rate limits, or timing costs, leaving minor gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line summary followed by clearly labeled 用途 / 入参 / 返回 / 下一步 sections. Every sentence carries distinct information — payload, frame count, fallback behavior, follow-on tools — with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still sketches the return shape (self state + entities list) and the _fallback flag, which is exactly the operationally important part. Combined with the frame-count and degradation notes, nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the description confirms this ('入参:无'), so there is nothing to disambiguate. Baseline of 4 applies for a no-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('获取当前游戏画面状态') and enumerates the payload (own HP, nearby entities list). It also positions itself relative to a sibling by naming predict_all_entities as its downstream consumer, so an agent can distinguish it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance: call 'each decision step before acting', call at least 3 consecutive frames for prediction to be valid, and explicit next steps (predict_all_entities or kb_search). This is the when/when-not/alternatives pattern done well.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

predict_all_entitiesA

预测画面中全部实体未来约 1.2 秒的位置。

用途:判断威胁、决定走位与攻击目标。 入参:无(依赖此前多次 perceive_game 积累的历史帧)。 返回:JSON 数组,按威胁从高到低最多 8 个实体,每项含 raw_id / rarity / category / threat_score / x_now / y_now / x_predict / y_predict / vx_per_sec / vy_per_sec / confidence / prediction_trusted。confidence < 0.65 时 prediction_trusted=false 且 x_predict、y_predict 为 null(此时不要相信预判)。 历史帧不足时返回 {"status": "insufficient_data", ...}。 下一步:据此决定 game_action 的 move / attack。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses the no-input/history dependency, the max-8 threat-sorted output, the confidence < 0.65 gating rule (prediction_trusted=false, x_predict/y_predict null, 'don't trust it'), and the insufficient_data fallback. These are exactly the edge-case behaviors an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by a labeled 用途/入参/返回/下一步 structure. Slightly long due to the field list, but each block adds actionable information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 0-param tool with an output schema, the definition is fully complete: it covers purpose, dependency, next step, the confidence-gating edge case, and the insufficient_data failure mode. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so baseline is 4. The description reinforces this by explicitly stating '入参:无' and explaining the implicit input dependency (accumulated perceive_game history frames), which the empty schema cannot convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('预测画面中全部实体未来约 1.2 秒的位置') with a precise scope (all entities, ~1.2s horizon). It is clearly distinguishable from perceive_game (current-frame perception) and game_action (acting), so an agent can tell these apart without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear use context ('判断威胁、决定走位与攻击目标') and the next-step routing to game_action's move/attack. It also flags the prerequisite that the call depends on prior perceive_game history frames. It stops short of stating when not to use it or naming an alternative predictor, so it is not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_boss_historyA

读取知识库里记录的 BOSS 行为习惯。

入参:boss_name 可选;不传返回全部记录,传了只返回名字匹配的记录。 返回:历史习性文本;无记录时返回「知识库还没有 BOSS 行为记录(文件不存在)。」 下一步:把习性用于决策,打完用 kb_append 补充新观察。

ParametersJSON Schema
NameRequiredDescriptionDefault
boss_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that this is a read operation, details the optional parameter's effect, and specifies the return text including a no-record message. However, it omits permissions, safety profile, and whether it has any side effects beyond reading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, then cleanly organized into 入参, 返回, and 下一步 sections. Every sentence serves a distinct function with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with an output schema, the description covers purpose, parameter behavior, return format, edge case, and next-step guidance. It is nearly complete, missing only minor details like matching strictness (exact vs substring).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It fully explains the single parameter: boss_name is optional, omitting it returns all records, and providing it filters by name match. This adds substantial meaning beyond the schema's bare type declaration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (读取) and resource (知识库里记录的 BOSS 行为习惯), clearly distinguishing it from general knowledge base tools by its focus on BOSS behavior records. It does not explicitly name sibling alternatives like kb_search, but the intent is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage context by saying '把习性用于决策' and directs to kb_append for writing new observations. However, it lacks explicit guidance on when to use this tool versus general query siblings such as kb_search or kb_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reset_predictorA

清空预判模块的全部历史帧。

用途:新开一局、重生、或画面大幅跳变后调用,避免用旧轨迹误判。 入参:无。返回:确认文本。 下一步:重新连续调用 perceive_game 积累帧。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does reasonably well: it discloses that all historical frames are destroyed, explains the purpose (avoiding old-trajectory misjudgment), states the return type (确认文本, confirmation text), and specifies the necessary follow-up action. It does not mention permissions, reversibility, or side effects beyond the cleared frames.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action, then concisely lists usage, parameters, return value, and next step. Every line earns its place, with no redundant or filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter reset with an output schema, the description supplies everything an agent needs: what it does, when to call it, that it takes no arguments, what it returns, and what to do next. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. The description confirms this with 入参:无, and there is no additional parameter meaning to provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 清空预判模块的全部历史帧 (clear all historical frames of the prediction module). This distinguishes it from siblings like clean_cache, which operate on other caches, and names the exact module affected.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit triggering contexts: 新开一局、重生、或画面大幅跳变后调用 (call after a new game, rebirth, or large screen jump). It also provides the follow-up step of re-calling perceive_game to accumulate frames. However, it does not state when not to use the tool or an explicit alternative to use instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

switch_setA

切换当前套装 / 阵型。

入参:set_name 可传当前游戏档案 combat.sets 里的名字(例如 space_invaders 的 shoot / dodge / focus_mothership),也可传决策层的抽象名 (combat / tank / retreat / chase / team),后者按档案 combat.set_map 翻译。 返回:「已切换套装: <名称> (按键 N)」;dry-run 下返回 「[dry-run] 套装切换已记录(未真实执行)」;传错名字时返回「未知套装: ...」并列出可选值。 下一步:perceive_game 确认切换生效,再继续决策。

ParametersJSON Schema
NameRequiredDescriptionDefault
set_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and discloses several behavioral traits: accepted input forms, return messages for success, dry-run mode, and error handling with listing of valid options. It does not state whether the operation requires specific game state permissions, whether it is reversible, or other side-effect details, but the return and dry-run disclosures are substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with clear segments for purpose, input, return values, and next step. It is front-loaded with the action, and every section adds useful information. It is slightly longer than strictly necessary because it describes return messages despite an output schema existing, but the extra context is justified for a zero-coverage parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, 0% schema coverage, and an existing output schema, the description is largely complete: it covers parameter semantics, return behavior (including dry-run and error), and a next-step workflow. The main gap is the absence of explicit guidance on when to choose this over sibling tools like switch_tactic. Still, an agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain the single parameter. It does so thoroughly: set_name can be a name from combat.sets (with examples like shoot/dodge/focus_mothership) or an abstract name (combat/tank/retreat/chase/team) that is translated through combat.set_map. This fully compensates for the empty schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: '切换当前套装 / 阵型' (switch current set/formation). It clearly tells an agent what the tool does, but it does not explicitly differentiate from the sibling switch_tactic, even though both are switching operations. The resource is clear, but sibling differentiation is left to the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives like switch_tactic or game_action. It mentions a follow-up step ('下一步:perceive_game 确认切换生效'), but that is workflow context after invocation, not criteria for selecting this tool. This leaves the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

switch_tacticA

指定知识库里的一份 Markdown 文件作为「当前战术」。

用途:让后续决策直接读取这份战术,不用每次重新检索。 入参:tactic_file,知识库中的文档名。 返回:「已切换当前战术为: <文件名>」;文件名非法或文档不存在时返回对应错误文本。 下一步:配合 kb_search / kb_append 迭代这份战术。

ParametersJSON Schema
NameRequiredDescriptionDefault
tactic_fileYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the success message and the error condition (invalid filename or non-existent document returns error text), which is useful. However it omits whether the setting persists across sessions, its scope, or idempotency, so a mutation-style state change is only partially characterized.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is broken into labeled sections (用途/入参/返回/下一步) and is front-loaded with the core action. Every sentence carries distinct information with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still summarizes the return and error text, which is helpful. Combined with parameter meaning and follow-on guidance, it is nearly complete, though persistence/scope behavior of the 'current tactic' state remains unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (the schema only names 'tactic_file: string'), so the description must compensate, and it does: it explains the parameter is a document name within the knowledge base. It still does not give format constraints or examples for a valid file name, keeping it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: '指定知识库里的一份 Markdown 文件作为「当前战术」' (set a Markdown file as the current tactic), and distinguishes the intent from mere retrieval. It does not disambiguate against the potentially confusing sibling switch_set, which keeps it short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the point of the operation ('让后续决策直接读取这份战术,不用每次重新检索') and names follow-on tools ('配合 kb_search / kb_append 迭代这份战术'). It gives clear context for when to reach for it but offers no explicit when-not or alternative-selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ugf_guideA

返回本服务的使用手册(给刚接进来的 Agent 看,不用读仓库也能上手)。

用途:第一次连接时先调用它,了解能力边界、工具清单和推荐调用顺序。 入参:section 取 all(默认,全部)/ quick(一屏速览)/ tools(工具清单)/ chains(调用链)/ notes(注意事项与常见坑)。 返回:Markdown 文本手册。工具清单由运行时动态生成,与实际注册的工具始终一致。 下一步:按手册里的调用链开始 perceive_game → predict_all_entities → game_action。

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses the return format (Markdown text manual) and a dynamic behavior (tool list generated at runtime, always consistent). It does not mention read-only safety or permission requirements, but for a manual-return tool this is largely implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with labeled sections (用途, 入参, 返回, 下一步) and front-loaded with the core purpose. Every sentence adds useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple one-parameter tool with an output schema, the description covers everything an agent needs: purpose, when to use, parameter values, return format, and a recommended next step. It is complete and actionable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the schema has no enum, so the description fully compensates by listing all five section values (all, quick, tools, chains, notes) and explaining what each returns. This is exactly the kind of semantic enrichment needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (返回) and resource (本服务的使用手册), and specifies its audience and scope (for newly connected Agents). It clearly distinguishes itself from all sibling tools as the onboarding guide, and even names itself as the first call in a recommended chain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to call it first when first connecting, and provides next steps (perceive_game → predict_all_entities → game_action). It does not state when not to use it, but for a unique guide tool the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updatesv2.1.0
    • First observedclean_cache
    • First observedgame_action
    • First observedhandle_afk
    • First observedkb_append
    • First observedkb_export
    • First observedkb_import
    • First observedkb_list
    • First observedkb_search
    • First observedkb_write
    • First observedperceive_game
    • First observedpredict_all_entities
    • First observedquery_boss_history
    • First observedreset_predictor
    • First observedswitch_set
    • First observedswitch_tactic
    • First observedugf_guide

TDQS

A4.1/5.0

Scored across 16 tools

Disambiguation4/5

Most tools target distinct resource+action pairs, and several descriptions proactively cross-reference each other (e.g. game_action says to use switch_set instead, kb_write points to kb_append). However, reset_predictor and clean_cache(target=predict) both clear prediction history, and query_boss_history overlaps with kb_search for boss/habit lookups, so a couple of pairs could still be confused.

Naming Consistency4/5

All names use snake_case consistently, and the knowledge-base tools share a clear 'kb_' prefix group. The verb/noun ordering is mixed, though (kb_list/kb_write = noun_verb vs reset_predictor/switch_set/clean_cache = verb_noun, and perceive_game/game_action are noun phrases), a minor deviation from a single predictable pattern.

Tool Count4/5

16 tools is slightly above the comfortable 3-15 band but justified because the server spans several subsystems (KB lifecycle, perception, prediction, action, cache, guide). Each tool earns a place; no redundant or filler tools are present.

Completeness4/5

The surface covers the full game loop (perceive -> predict -> act) plus a near-complete KB lifecycle (list/search/write/append/export/import) and supporting utilities (AFK, cache, tactic, boss history, guide). Minor gaps remain, notably no KB delete/remove operation and boss history being read-only, but agents can work around these via overwrite and kb_append.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers