Skip to content

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

@richuV

Description

@richuV

问题描述

当前 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 设计

相关讨论

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions