@roll-agent/octopus-agent 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -28,7 +28,6 @@ python -m octopus_skill "查询我能看到的品牌列表"
28
28
 
29
29
  ```bash
30
30
  roll agent install @roll-agent/octopus-agent
31
- roll run octopus-agent diagnostic_status --json
32
31
  ```
33
32
 
34
33
  该 npm package(npm 包)直接包含 Python 源码;`roll agent install` 不会再从 PyPI 下载 `octopus-skill`。
@@ -41,6 +40,21 @@ roll config set agents.env.octopus-agent.OCTOPUS_PYTHON_COMMAND "py -3.11"
41
40
 
42
41
  Windows 用户只要安装 Python 3.11+,通常不需要额外创建 `python3` 别名。
43
42
 
43
+ ### 首次使用引导(安装后必做)
44
+
45
+ 业务查询前先完成这两步,可减少首次 `query_sponge` 冷启动耗时,并尽早发现配置问题:
46
+
47
+ ```bash
48
+ # 1) 检查 token、schema 缓存、日志路径
49
+ roll run octopus-agent diagnostic_status --json
50
+
51
+ # 2) 预热本地 schema 缓存(Windows 请用 --input-file,见下文)
52
+ roll run octopus-agent refresh_schema --json \
53
+ --input-json '{"traceId":"trace_schema_10001"}'
54
+ ```
55
+
56
+ 确认 `diagnostic_status` 里 `spongeMcp.accessTokenConfigured=true`,且 `refresh_schema` 成功后,再发起业务查询。
57
+
44
58
  ### 本地源码注册
45
59
 
46
60
  ```bash
@@ -49,19 +63,70 @@ roll run octopus-agent diagnostic_status --json
49
63
  roll run octopus-agent refresh_schema --json \
50
64
  --input-json '{"traceId":"trace_schema_10001"}'
51
65
  roll run octopus-agent query_sponge --json \
52
- --question "查询我能看到的品牌列表"
66
+ --input-json '{"question":"查询我能看到的品牌列表","originalQuestion":"查询我能看到的品牌列表"}'
53
67
  ```
54
68
 
55
69
  `refresh_schema` 必填 `traceId`。Agent 会自动读取本地缓存里的 `schemaVersion` 并传给 Sponge。
56
- `query_sponge` 不接收用户或设备标识;Sponge MCP Server 会根据 `Authorization` token 解析用户权限。
70
+ `query_sponge` 必填 `question` 和 `originalQuestion`;不接收用户或设备标识;Sponge MCP Server 会根据 `Authorization` token 解析用户权限。
57
71
  Agent 只生成业务 SQL,不生成 `:scope.project_ids`、`:scope.brand_ids` 等权限占位符。
58
72
  权限范围由 Sponge MCP Server 在 `execute_sql` 阶段统一补全,并写入 `mcp_sql_records.scope_bindings`。
59
73
 
74
+ #### Windows 调用注意(CMD / PowerShell)
75
+
76
+ Windows 的 CMD / PowerShell 会改写命令行里的引号,常见结果是把 JSON 变成 `{'question':...}`,从而报:
77
+
78
+ ```text
79
+ ✗ --input-json 不是合法 JSON: Expected property name or '}' in JSON at position 1
80
+ ```
81
+
82
+ 推荐优先用 `--input-file`,避免 shell 引号问题:
83
+
84
+ ```powershell
85
+ # 1) 先写无 BOM 的 UTF-8 JSON(Windows PowerShell 5.1 用 .NET 写,避免 BOM)
86
+ $path = Join-Path $env:TEMP "octopus-query.json"
87
+ $json = '{"question":"奥乐齐有哪些在招的岗位","originalQuestion":"奥乐齐有哪些在招的岗位"}'
88
+ [System.IO.File]::WriteAllText($path, $json, (New-Object System.Text.UTF8Encoding $false))
89
+
90
+ # 2) 再调用
91
+ roll run octopus-agent query_sponge --input-file $path --json
92
+ ```
93
+
94
+ 若必须内联 JSON:
95
+
96
+ ```powershell
97
+ # PowerShell:用双引号包住 JSON,内部双引号写成 \"
98
+ roll run octopus-agent query_sponge --json --input-json "{\"question\":\"查询我能看到的品牌列表\",\"originalQuestion\":\"查询我能看到的品牌列表\"}"
99
+ ```
100
+
101
+ ```bat
102
+ REM CMD:外层用双引号,内部双引号写成 \"
103
+ roll run octopus-agent query_sponge --json --input-json "{\"question\":\"查询我能看到的品牌列表\",\"originalQuestion\":\"查询我能看到的品牌列表\"}"
104
+ ```
105
+
106
+ macOS / Linux / Git Bash 仍可继续用单引号包 JSON:
107
+
108
+ ```bash
109
+ roll run octopus-agent query_sponge --json \
110
+ --input-json '{"question":"查询我能看到的品牌列表","originalQuestion":"查询我能看到的品牌列表"}'
111
+ ```
112
+
113
+ #### `MCP error -32001: Request timed out`
114
+
115
+ 这是 **roll-core 调用子 Agent 的 MCP `tools/call` 默认 60 秒超时**(`@modelcontextprotocol/sdk` 的 `DEFAULT_REQUEST_TIMEOUT_MSEC`),不是 Sponge HTTP 客户端自己的 30 秒超时。
116
+ `query_sponge` 会多次走 MCP Sampling(需求分析 / 实体抽取 / SQL 生成)再调 Sponge,整链路经常超过 60 秒,Windows 上网络或首次冷启动更明显。
117
+
118
+ 可先做这些排查:
119
+
120
+ 1. 先跑 `roll run octopus-agent diagnostic_status --json`,确认 `spongeMcp.accessTokenConfigured=true`、schema 缓存存在。
121
+ 2. 先跑一次 `refresh_schema`,避免查询时再拉大 schema。
122
+ 3. 确认本机到 `SPONGE_MCP_BASE_URL` 和 LLM provider 网络通畅。
123
+ 4. 若仍稳定在约 60 秒失败,需要 **升级 / 修复 roll-core**:让 `roll run` 对长耗时 tool(如 `query_sponge`)传入更大的 `callTool` `timeout`(当前 roll v0.15.0 未暴露该参数)。仅改本 Agent 的 `SPONGE_MCP` HTTP timeout 无法消除 `-32001`。
124
+
60
125
  指定输出格式:
61
126
 
62
127
  ```bash
63
128
  roll run octopus-agent query_sponge --json \
64
- --input-json '{"question":"查询我能看到的品牌列表","resultFormat":"markdown"}'
129
+ --input-json '{"question":"查询我能看到的品牌列表","originalQuestion":"查询我能看到的品牌列表","resultFormat":"markdown"}'
65
130
  ```
66
131
 
67
132
  支持 `text`、`json`、`yaml`、`md`、`markdown`、`html`。不传时会从问题里自动识别。
@@ -70,7 +135,7 @@ roll run octopus-agent query_sponge --json \
70
135
 
71
136
  ```bash
72
137
  roll run octopus-agent query_sponge --json \
73
- --input-json '{"question":"查询我能看到的品牌列表","includeSql":true}'
138
+ --input-json '{"question":"查询我能看到的品牌列表","originalQuestion":"查询我能看到的品牌列表","includeSql":true}'
74
139
  ```
75
140
 
76
141
  `includeSql=true` 时会返回 `generatedSql`、`normalizedSql`、`repairedSql` 和 `validation`。
package/SKILL.md CHANGED
@@ -40,19 +40,20 @@ Agent 只生成业务 SQL,不生成 `:scope.project_ids`、`:scope.brand_ids`
40
40
  ## 上层调用规则
41
41
 
42
42
  1. 用户只是说使用、启动、检查、看看丸子Agent,或确认 Agent 是否可用时,只调用 `diagnostic_status`,返回状态后停止;不得主动调用 `query_sponge`,不得编造示例业务问题。
43
- 2. 查询前如需排查环境,先调用 `diagnostic_status`。
44
- 3. schema 过期或缺失时,调用 `refresh_schema`。
45
- 4. 用户提出明确业务数据查询时,调用 `query_sponge`。
46
- 5. 不要求上层提供真实项目 ID 或品牌 ID;权限由 Sponge MCP Server 处理。
47
- 6. 权限范围由 Sponge MCP Server 在 `execute_sql` 阶段统一补全并记录。
48
- 7. 不允许绕过本 Agent 直接连业务数据库。
49
- 8. 运行参数由 Agent 内置;本地只通过环境变量配置 Sponge 地址和 Token。
50
- 9. LLM roll-core 通过 MCP Sampling 代调,本 Agent 不读取模型 API Key
51
- 10. 对“匹配效果”“分析报告”“找出报名多但入职少/在招多但报名少/候选人多但岗位少”等报告类问题,只能调用一次 `query_sponge` 处理完整原始问题,不要拆成多个品牌/项目/城市子查询。
52
- 11. `query_sponge` 返回后,最终回复正文必须完整复制工具返回的 `answer`,不要只把报告放在执行命令、思考过程、工具详情或可折叠步骤里。
53
- 12. 如果 `structuredContent.needsClarification=true`(`clarificationType=schema_no_match`),最终回复只能展示 `structuredContent.answer`;这是"暂不支持该查询"的说明,用户补充明确需求后重新发起查询即可。
54
- 13. 品牌、项目等实体多候选由 queryPlan 的同组 OR 条件处理;上层不要要求用户先选择品牌或项目。
55
- 14. 如果 `answer` 已包含分析报告,最终回复顺序必须保持:完整分析报告 -> 总结关键发现;不要自行改写成摘要替代报告。
43
+ 2. **首次安装或新环境**:先调用 `diagnostic_status`,再调用 `refresh_schema` 预热 schema 缓存;确认 token 与缓存正常后,再接受业务查询。
44
+ 3. 查询前如需排查环境,先调用 `diagnostic_status`。
45
+ 4. schema 过期或缺失时,调用 `refresh_schema`。
46
+ 5. 用户提出明确业务数据查询时,调用 `query_sponge`。
47
+ 6. 不要求上层提供真实项目 ID 或品牌 ID;权限由 Sponge MCP Server 处理。
48
+ 7. 权限范围由 Sponge MCP Server 在 `execute_sql` 阶段统一补全并记录。
49
+ 8. 不允许绕过本 Agent 直接连业务数据库。
50
+ 9. 运行参数由 Agent 内置;本地只通过环境变量配置 Sponge 地址和 Token
51
+ 10. LLM roll-core 通过 MCP Sampling 代调,本 Agent 不读取模型 API Key。
52
+ 11. 对“匹配效果”“分析报告”“找出报名多但入职少/在招多但报名少/候选人多但岗位少”等报告类问题,只能调用一次 `query_sponge` 处理完整原始问题,不要拆成多个品牌/项目/城市子查询。
53
+ 12. `query_sponge` 返回后,最终回复正文必须完整复制工具返回的 `answer`,不要只把报告放在执行命令、思考过程、工具详情或可折叠步骤里。
54
+ 13. 如果 `structuredContent.needsClarification=true`(`clarificationType=schema_no_match`),最终回复只能展示 `structuredContent.answer`;这是"暂不支持该查询"的说明,用户补充明确需求后重新发起查询即可。
55
+ 14. 品牌、项目等实体多候选由 queryPlan 的同组 OR 条件处理;上层不要要求用户先选择品牌或项目。
56
+ 15. 如果 `answer` 已包含分析报告,最终回复顺序必须保持:完整分析报告 -> 总结关键发现;不要自行改写成摘要替代报告。
56
57
 
57
58
  ## 最终展示 few-shot
58
59
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roll-agent/octopus-agent",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "丸子Agent(Octopus Agent)",
5
5
  "license": "UNLICENSED",
6
6
  "keywords": [
package/pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "octopus-skill"
3
- version = "0.1.2"
3
+ version = "0.1.3"
4
4
  description = "丸子Agent(Octopus Agent)"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.1.2"
3
+ __version__ = "0.1.3"