standalone: убрать demo-toolset после e2e-проверки
Удаляю DemoToolset.kt, поле AgentikConfig.demoToolset и парсер AGENTIK_DEMO_TOOLSET — после ночной e2e-проверки toolsets они больше не нужны в проде. Механика покрыта ChatAgentToolsetsTest через stub-тулы inline. Если потребуется live e2e — проще прокинуть свой ToolsetContribution-список из main/test.
This commit is contained in:
@@ -202,8 +202,6 @@ fun main() {
|
|||||||
reflectionInterval = config.reflectionInterval,
|
reflectionInterval = config.reflectionInterval,
|
||||||
skillMiner = skillMiner,
|
skillMiner = skillMiner,
|
||||||
skillMiningInterval = config.skillMiningInterval,
|
skillMiningInterval = config.skillMiningInterval,
|
||||||
// Демо-тулсет для e2e проверки механики toolsets (AGENTIK_DEMO_TOOLSET=1)
|
|
||||||
toolsets = if (config.demoToolset) listOf(pw.binom.agentik.standalone.toolsets.DemoToolset.contribution()) else emptyList(),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Куратор памяти: фоновая архивация stale-заметок. Поднимается до server'а,
|
// Куратор памяти: фоновая архивация stale-заметок. Поднимается до server'а,
|
||||||
|
|||||||
@@ -115,17 +115,6 @@ data class AgentikConfig(
|
|||||||
* отладка: `AGENTIK_DEBUG_ENDPOINTS=1`.
|
* отладка: `AGENTIK_DEBUG_ENDPOINTS=1`.
|
||||||
*/
|
*/
|
||||||
val debugEndpoints: Boolean = false,
|
val debugEndpoints: Boolean = false,
|
||||||
/**
|
|
||||||
* Регистрирует демонстрационный тулсет ("media" с парой stub-инструментов)
|
|
||||||
* в агенте. Полезно для проверки механики toolsets в e2e без подключения
|
|
||||||
* реальных тулсетов: модель видит секцию Toolsets в system prompt и
|
|
||||||
* может вызвать enable_toolset/disable_toolset. Тулы в демо-тулсете
|
|
||||||
* возвращают безопасные stub-результаты и НЕ выполняют реальных действий.
|
|
||||||
*
|
|
||||||
* Opt-in: `AGENTIK_DEMO_TOOLSET=1`. По умолчанию выключен (агент не знает
|
|
||||||
* о механике toolsets вообще — per design contract A1-α).
|
|
||||||
*/
|
|
||||||
val demoToolset: Boolean = false,
|
|
||||||
) {
|
) {
|
||||||
/** Бэкенд долговременной памяти. */
|
/** Бэкенд долговременной памяти. */
|
||||||
@Serializable
|
@Serializable
|
||||||
@@ -184,9 +173,6 @@ data class AgentikConfig(
|
|||||||
debugEndpoints = env("AGENTIK_DEBUG_ENDPOINTS")?.let {
|
debugEndpoints = env("AGENTIK_DEBUG_ENDPOINTS")?.let {
|
||||||
it.equals("1", ignoreCase = true) || it.equals("true", ignoreCase = true)
|
it.equals("1", ignoreCase = true) || it.equals("true", ignoreCase = true)
|
||||||
} ?: false,
|
} ?: false,
|
||||||
demoToolset = env("AGENTIK_DEMO_TOOLSET")?.let {
|
|
||||||
it.equals("1", ignoreCase = true) || it.equals("true", ignoreCase = true)
|
|
||||||
} ?: false,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,50 +0,0 @@
|
|||||||
package pw.binom.agentik.standalone.toolsets
|
|
||||||
|
|
||||||
import pw.binom.agentik.toolsets.ToolsetContribution
|
|
||||||
import pw.binom.litert.LiteTool
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Демонстрационный тулсет `media` — используется в e2e для проверки механики
|
|
||||||
* toolsets без подключения реальных тулсетов (image processing, web fetch).
|
|
||||||
*
|
|
||||||
* Тулы возвращают безопасные stub-результаты: `resize_image` пишет что уменьшил
|
|
||||||
* картинку до 100x100, `fetch_url` возвращает заглушку с URL. Реальных
|
|
||||||
* побочных эффектов нет — модель видит тулсет, активирует/деактивирует
|
|
||||||
* через enable_toolset/disable_toolset, и видит корректные результаты.
|
|
||||||
*
|
|
||||||
* Включается через `AGENTIK_DEMO_TOOLSET=1`. По умолчанию выключен —
|
|
||||||
* механика toolsets полностью невидима для модели (per design contract A1-α).
|
|
||||||
*/
|
|
||||||
object DemoToolset {
|
|
||||||
|
|
||||||
const val NAME = "media"
|
|
||||||
const val DESCRIPTION = "image and URL helpers (stub tools for testing toolset mechanics)"
|
|
||||||
|
|
||||||
fun contribution(): ToolsetContribution = ToolsetContribution(
|
|
||||||
name = NAME,
|
|
||||||
description = DESCRIPTION,
|
|
||||||
tools = listOf(
|
|
||||||
ToolsetContribution.ToolEntry("resize_image", ResizeImageTool),
|
|
||||||
ToolsetContribution.ToolEntry("fetch_url", FetchUrlTool),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
private object ResizeImageTool : LiteTool {
|
|
||||||
override fun describe(): String = """
|
|
||||||
{"name":"resize_image","description":"Resize an image to 100x100 px (stub).","parameters":{"type":"object","properties":{"image_id":{"type":"string","description":"Image identifier (e.g. file path or URL)."}},"required":["image_id"]}}
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override fun invoke(arguments: String): String =
|
|
||||||
// Просто принимаем любые аргументы и возвращаем заглушку — никаких реальных файловых IO.
|
|
||||||
"""{"status":"ok","result":"image resized to 100x100","args":${arguments}}"""
|
|
||||||
}
|
|
||||||
|
|
||||||
private object FetchUrlTool : LiteTool {
|
|
||||||
override fun describe(): String = """
|
|
||||||
{"name":"fetch_url","description":"Fetch a web page and return its title (stub).","parameters":{"type":"object","properties":{"url":{"type":"string","description":"URL to fetch."}},"required":["url"]}}
|
|
||||||
""".trimIndent()
|
|
||||||
|
|
||||||
override fun invoke(arguments: String): String =
|
|
||||||
"""{"status":"ok","title":"stub title","content":"(stubbed page body)","args":${arguments}}"""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user