feat(agent): redesign project_cli with module/method/input protocol
- Replace command/subcommand/args with module/method/input envelope - Calendar handler uses discriminated union (mode) for read operations - Strict Pydantic models with extra='forbid' for all calendar methods - Worker max_iters=7, router prompt simplified (removed project_cli_defaults) - Skill index cards + per-action files for progressive disclosure - Frontend/AG-UI aligned to module/method dispatch - Protocol docs updated to module/method/input contract WIP: action cards need envelope fix, 2 tests need update, memory handler needs Pydantic models.
This commit is contained in:
@@ -197,7 +197,13 @@ data: <json>
|
||||
|
||||
说明:`TOOL_CALL_RESULT` 中 `result` 字段提供紧凑、结构化、可执行的信息(优先包含 id/status/count 等关键事实),用于 agent 后续推理与工具编排。若对应工具输出存在 `ui_hints`,后端会在 codec 层编译得到 `ui_schema` 并随事件下发。
|
||||
|
||||
当前 `ui_hints` 策略:仅对当前 canonical CLI 的 CRUD 子命令生成(`calendar.create/read/update/delete`、`contacts.read`、`memory.update`);`calendar.share` 不生成 `ui_hints`。
|
||||
当前 `ui_hints` 策略:仅对当前有稳定展示语义的 canonical method 生成,例如 `calendar.read`、`calendar.create`、`calendar.update`、`calendar.delete`、`calendar.share`、`calendar.accept_invite`、`calendar.reject_invite`、`contacts.read`、`memory.update`。
|
||||
|
||||
协议迁移说明:
|
||||
|
||||
- `tool_call_args` 的模型侧 canonical 结构已统一为 `module/method/input`。
|
||||
- SSE 事件字段名 `tool_call_args` 保持不变,但其内部对象形状以当期 `project_cli` 协议为准。
|
||||
- 前端和调试工具不得再假设 `tool_call_args.command` / `tool_call_args.subcommand` 一定存在。
|
||||
|
||||
补充约束:
|
||||
|
||||
@@ -206,6 +212,18 @@ data: <json>
|
||||
- `result` 仅表示执行输出事实,不重复 `tool_call_args` 已包含的输入参数。
|
||||
- `ui_schema` 为可渲染 UI 线缆格式;其源数据来自 `metadata.tool_agent_output.ui_hints`。
|
||||
|
||||
推荐的 `tool_call_args` 形状:
|
||||
|
||||
```json
|
||||
{
|
||||
"skill": "calendar",
|
||||
"action": "get_event",
|
||||
"input": {
|
||||
"event_id": "evt_123"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 3.3.1 tool 名称展示规范(前端本地化)
|
||||
|
||||
SSE 协议中的工具名字段保持后端原样,不做服务端翻译:
|
||||
@@ -215,16 +233,20 @@ SSE 协议中的工具名字段保持后端原样,不做服务端翻译:
|
||||
|
||||
前端展示层统一通过工具名本地化映射进行中文渲染,要求兼容两类命名风格:
|
||||
|
||||
- dot 风格:`memory.update`、`calendar.read`
|
||||
- snake 风格:`memory_update`、`calendar_read`
|
||||
- dot 风格:`memory.update`、`calendar.get_event`
|
||||
- snake 风格:`memory_update`、`calendar_get_event`
|
||||
|
||||
当前规范映射(canonical -> 中文)如下:
|
||||
|
||||
- `calendar.read` -> `读取日程`
|
||||
- `calendar.create` -> `创建日程`
|
||||
- `calendar.update` -> `更新日程`
|
||||
- `calendar.delete` -> `删除日程`
|
||||
- `calendar.share` -> `共享日程`
|
||||
- `calendar.list_day` -> `读取当日日程`
|
||||
- `calendar.list_range` -> `读取区间日程`
|
||||
- `calendar.get_event` -> `读取日程详情`
|
||||
- `calendar.create_event` -> `创建日程`
|
||||
- `calendar.update_event` -> `更新日程`
|
||||
- `calendar.delete_event` -> `删除日程`
|
||||
- `calendar.invite_subscriber` -> `邀请参与者`
|
||||
- `calendar.accept_invite` -> `接受邀请`
|
||||
- `calendar.reject_invite` -> `拒绝邀请`
|
||||
- `contacts.read` -> `读取联系人`
|
||||
- `memory.update` -> `更新记忆`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user