Bug
dws calendar event list 不传 --start/--end 时返回一条全 null 占位行,而非当天日程。显式传入时间范围后可正确返回。
Related: #303(已关闭,但修而不治——从 business error 300000 变成了空占位数据,根本问题未解决)
Reproduce
# 无参数 → 空占位数据
dws calendar event list
# { "events": [ { "attendees": null, "categories": null, "meetingRooms": null, ... } ], "hasMore": false }
# 显式传参 → 正确返回
dws calendar event list --start 2026-06-29 --end 2026-06-30
Root Cause
internal/compat/registry.go 第 876-878 行:
if !anyChanged {
continue
}
CollectBindings 跳过了用户未显式设置的 flag,导致 startTime/endTime 不入 params。新增的 collectSchemaFlags 同样使用 cmd.Flags().Visit()(只遍历用户设置的
flag),也无法兜底。
最终 MCP tools/call 发送空的 arguments:
{ "name": "list_calendar_events", "arguments": {} }
服务端收到无时间范围的请求后返回空结果集。
Suggested Fix
参照 internal/helpers/attendance.go 的模式,添加 internal/helpers/calendar.go,用 NewCuratedCommand(优先级 100)覆盖动态生成的 event list 命令:
- 用户未传 --start → 默认当天 00:00:00
- 用户未传 --end → 默认当天 23:59:59
- 通过 cmdutil.ParseISOTimeToMillis 解析后转为毫秒时间戳传入 MCP
Environment
- dws version: main (e32fa15)
- Go 1.25+
- macOS
Bug
dws calendar event list不传--start/--end时返回一条全 null 占位行,而非当天日程。显式传入时间范围后可正确返回。Related: #303(已关闭,但修而不治——从 business error 300000 变成了空占位数据,根本问题未解决)
Reproduce