qinghuan
返回三条项目主线

机制参考 · 按需阅读 / 读状态与权限;样例待补全

AgentScope Java DataAgent

研究状态保存与工具权限,再自己补齐数据查询

框架机制值得读,但这份 DataAgent 在固定版本中仍有未实现的 SQL 工具。因此本轮把它放在机制参考区;适合已有主项目后学习权限、状态版本和部署边界。

进阶;需补核心业务核对 2026-09-29

先固定版本和学习范围

JDK 17+ · AgentScope Java v2.0.3 · Examples Spring Boot 4.0.4

打开本轮固定源码 · 项目仓库

提交 1b8e3dcd2338550ae5198bdb2a7bae56df5bf2e0

仓库许可证标识:Apache-2.0。本页介绍所读版本,未保证未来版本保持相同行为。

开始前要会

  • 理解持久化状态和乐观并发控制
  • 有 Docker 与 Spring WebFlux 基础
环境、模型费用和额外服务
  • 默认DashScope qwen-max,需API key和网络;按提供商实际计费。
  • DataAgent当前源码默认使用Docker sandbox;Docker及镜像资源必需,不能只看README中的java -jar。
  • 默认H2适合演示;多副本还涉及共享数据库、状态store、sandbox路由/持久化,部署成本高于客服例子。

已经在源码中读到

一次任务大致怎样走

  1. 登录与工作区
  2. 模型决定调用工具
  3. 工具权限判断
  4. 运行并记录状态
  5. 返回结果 / 等待批准

应用骨架尚未闭环

describe_table 与 run_sql_preview 是未实现占位;默认服务端 ChartRenderer 是 Stub,仅返回接受状态,前端图表渲染本轮未验收。功能名存在不能当作业务已可用。

多实例说明要对照代码

UserSandboxRegistry 使用进程内存并要求用户粘性路由;默认状态存储也可能回退到内存。不能依据文档单独声称任意副本恢复。

需要自己补齐或验证

这些能力不能直接写成“已实现”

  • 共享技能的管理员审核,不等于执行每个工具前都经过业务批准。
  • 保存对话状态不能自动保存 Docker 工作区文件与外部工具效果。
  • 要做主项目,需先补真实只读 SQL、结构化结果和确定性验收,工作量高于客服示例。

建议改造 · 不是原仓库成绩

把原项目变成自己的项目

按顺序完成最小闭环,再增加难度。只把真正实现并测过的部分写进简历;如果声明支持恢复或并发,就补对应的故障实验。

01

补真正的只读查询工具

限定测试库、允许表列、只读账号、超时和结果上限。

怎样验收

  • 查询结果与固定 SQL 对照;写 SQL 和越权查询被拒绝。
02

明确部署边界

先声明单实例,再实现持久状态与工作区恢复方案。

怎样验收

  • 应用重启、同用户并发恢复、双用户同名文件隔离分别验证。
03

把批准绑定到原参数

保存工具名、参数摘要、批准者和过期时间。

怎样验收

  • 模型换参数必须重新批准;拒绝后工具不执行。

按这个顺序读源码

每读一步,画一条调用关系,写下输入、状态变化和失败出口。无需先把整个仓库读完。

  1. 第 1 步 · 先判断哪些业务尚未实现DataAgentToolkit.javaagentscope-examples/agents/agentscope-dataagent/src/main/java/io/agentscope/dataagent/tools/data/DataAgentToolkit.java
  2. 第 2 步 · 查默认持久化DataAgentConfig.javaagentscope-examples/agents/agentscope-dataagent/src/main/java/io/agentscope/dataagent/web/config/DataAgentConfig.java
  3. 第 3 步 · 查多实例假设UserSandboxRegistry.javaagentscope-examples/agents/agentscope-dataagent/src/main/java/io/agentscope/dataagent/web/workspace/UserSandboxRegistry.java
  4. 第 4 步 · 读人工许可PermissionHITLExample.javaagentscope-examples/documentation/src/main/java/io/agentscope/examples/documentation2/hitl/PermissionHITLExample.java
  5. 第 5 步 · 看版本冲突应怎样处理AgentStateStoreVersioningContractTest.javaagentscope-core/src/test/java/io/agentscope/core/state/AgentStateStoreVersioningContractTest.java

准备好回答这些追问

先用自己的实现和实验回答,再对照源码。只背术语,很难解释异常情况。

  1. 为什么官方README说无需sticky,而源码要求sticky?你选什么部署边界?
  2. 有Redis为什么还不能保证sandbox文件恢复?
  3. WITH开头的SQL就一定只读吗?数据库权限和SQL解析各管哪一层?
  4. 分享skill的管理员审批与执行工具前的人类确认有什么不同?
  5. 状态saveIfVersion解决了什么,为什么不能单独解决工具副作用恰好一次?
  6. 模型误选工具、工具报错、进程崩溃三类错误如何分别恢复?

本轮实际验证范围

  • 固定 v2.0.3 提交审阅;未构建、启动 Docker、调用模型或运行框架测试。

源码链接是阅读证据;改造建议是待完成任务。二者都不等于完整系统运行证明。