agentscope-ai/agentscope-java

建议:简化 PlanNotebook 工具数量,参考 Kilocode 和 OpenCode 的设计

Open

#746 opened on Feb 6, 2026

View on GitHub
 (3 comments) (1 reaction) (1 assignee)Java (3,253 stars) (693 forks)user submission
enhancementhelp wanted

Description

问题描述

当前 PlanNotebook 提供了 10 个工具函数来管理计划和子任务,虽然功能完整,但工具数量较多可能会:

  1. 增加 LLM 的上下文负担
  2. 降低工具选择的准确性
  3. 提高学习和使用成本

对比分析

当前 agentscope-java 设计

  • 工具数量: 10 个
  • 工具列表:
    • Plan 管理: createPlan, updatePlan, deletePlan, getPlan, listPlans
    • SubTask 管理: createSubTask, updateSubTask, deleteSubTask, getSubTask, listSubTasks

Kilocode 设计(3 个工具)

ew_task: 创建子任务(启动独立 Agent 会话)

  • ttempt_completion: 完成任务并返回结果
  • update_todo_list: 更新 TODO 列表

优点:

  • 极简设计,工具数量少
  • 任务委托模式,子任务完全独立
  • 元数据管理(Token 使用、成本跟踪)

OpenCode 设计(5 个工具)

  • ask: 启动子 Agent 处理任务
  • plan_enter: 进入计划模式
  • plan_exit: 退出计划模式
  • odoread: 读取 TODO 列表
  • odowrite: 写入 TODO 列表

优点:

  • 模式切换设计(Plan Agent Build Agent)
  • 主动式 TODO 管理(强调频繁使用)
  • 子任务会话化,支持恢复

改进建议

方案 1: 合并 CRUD 操作

将 create/update/delete/get/list 合并为更少的工具:

\\java // 当前: 5 个 Plan 工具 createPlan(), updatePlan(), deletePlan(), getPlan(), listPlans()

// 建议: 2-3 个工具 managePlan(action, planId?, data?) // action: create/update/delete queryPlans(planId?) // 查询单个或列表 \\

方案 2: 参考 Kilocode 的委托模式

简化为核心工具:

  • createPlan: 创建计划
  • manageTasks: 管理子任务(合并 create/update/delete)
  • queryPlan: 查询计划和任务状态

方案 3: 参考 OpenCode 的模式切换

引入计划模式概念:

  • enterPlanMode: 进入计划模式
  • updatePlan: 更新计划内容
  • exitPlanMode: 退出计划模式并激活

预期收益

  1. 减少上下文消耗: 工具数量从 10 个减少到 3-5 个
  2. 提高工具选择准确性: 更少的选项,更清晰的职责
  3. 保持功能完整性: 通过参数化设计保留所有功能
  4. 降低学习成本: 更简洁的 API 设计

相关讨论

欢迎讨论是否需要简化工具数量,以及哪种方案更合适。

Contributor guide