任务输入器
任务输入器负责把指令、文件、源码范围、Skill、运行设置和后续队列组织成一次可恢复的提交。主输入区必须由 TipTap 驱动;普通 textarea 无法可靠承载 Markdown、输入触发、结构化选择、输入法和受控草稿,因此不属于该组件的生产契约。
安装Terminal
设计边界
输入器回答四个问题:用户要做什么、允许参考哪些资源、按什么运行设置执行、当前操作会发送还是排队。上传、模型请求、权限判断和持久化仍由宿主拥有,组件只维护可见交互与稳定事件。
- Enter 提交,Shift + Enter 换行;输入法组合期间不得拦截 Enter。
@打开文件树,$打开 Skill 列表,/打开内置命令;菜单采用 listbox 或 tree,并通过aria-activedescendant保持焦点在编辑器。- 文件和目录可通过选择器或拖放进入资源区;资源必须可辨认、可移除,并保留类型和稳定标识。
- 运行中必须明确区分立即发送、加入队列、停止和不可提交,不能只替换图标。
- 提交失败保留 Markdown 草稿、选择、资源、设置与焦点;恢复动作直接说明下一步。
当编辑区还需要承载放置提示、校验消息或其它宿主内容时,可以用
data-composer-editor 包裹输入框。中间的包装元素会保持可收缩,长的
连续文本也只在输入框内部滚动,不会撑宽整个工作台:
公开结构
ready、submitting、streaming、queued、stopping、offline、error 和 disabled 是根状态。局部按钮仍使用原生 disabled。
控制器
关键事件包括 a3s:composer-before-submit、a3s:composer-submit、a3s:composer-draft-change、a3s:composer-trigger-change、a3s:composer-before-action、a3s:composer-action 与 a3s:composer-queue-action。
产品验收
在发布前至少验证中文输入法、撤销重做、长 Markdown、空草稿、失焦恢复、菜单键盘导航、文件夹拖放、资源去重、停止中的重复点击、离线重试、队列编辑与 320px 布局。测试只通过“能输入和能发送”仍不足以证明组件可用于真实任务工作台。
