适用版本:ChengOS v0.1.0+ | 最后核对:2026-08-13 | 来源:
crates/cheng-nodes/src/nodes/builtin/chat
chat/input 与 chat/output 是对话式工作流的两端:前者接收进来的消息与会话身份, 后者把回复送回同一个会话。chat/history_search 是读取侧 —— 列出会话、检索消息,或取出某条命中附近的上下文 —— 有了它,智能体不必把整段历史塞进提示词,也能回答”之前说过什么”。
对话输入 — chat/input
接收多模态输入(文本、图片、文件等),处理后发送给下游节点
输入
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
raw_input |
string (端口) | ✅ | — | 原始输入载荷(JSON 格式). 连接端口,不是表单字段。 控件:textarea |
user_message_rich |
object (端口) | — | null |
来自上游节点的可选富用户消息. 连接端口,不是表单字段。 |
context |
object | — | null |
在此工作流执行前恢复的可选 AgentContext |
conversation_id |
string (端口) | — | null |
对话 ID(可选),由入口生成后透传给所有下游节点. 连接端口,不是表单字段。 |
workspace_id |
string (端口) | — | null |
工作空间 ID(可选),传给 turn coordinator 以实现按工作空间隔离对话. 连接端口,不是表单字段。 |
document_id |
string (端口) | — | null |
文档 ID(可选),由文档页面注入并通过环境上下文传递给下游节点. 连接端口,不是表单字段。 |
stream_mode |
boolean | — | false |
是否启用流式发送. 控件:switch |
enable_ocr |
boolean | — | false |
是否对图片进行 OCR 识别. 控件:switch |
merge_strategy |
enum | — | per_file |
多输入的合并策略. 控件:select. 取值:merge_all (合并所有消息为一个包), per_file (每个文件单独一个包), per_line (每行单独一个包) |
max_file_size_mb |
integer | — | 50 |
最大文件大小(MB). 控件:number |
model_override |
string | — | null |
模型覆盖(格式: credential_id::model_name) |
输出
| 字段 | 类型 | 说明 |
|---|---|---|
context |
object (端口) | AgentContext 封装,可直接连接到 agent/llm 的 context 端口. 连接端口,不是表单字段。 |
user_message |
string (端口) | 用户消息文本. 连接端口,不是表单字段。 |
user_message_rich |
object (端口) | 具有多模式部分的结构化用户消息. 连接端口,不是表单字段。 |
conversation_id |
string (端口) | 对话 ID(透传给下游节点). 连接端口,不是表单字段。 |
workspace_id |
string (端口) | 工作空间 ID(透传给 turn coordinator 以实现按工作空间隔离). 连接端口,不是表单字段。 |
document_id |
string (端口) | 文档 ID(通过环境上下文传递给下游文档节点). 连接端口,不是表单字段。 |
stats |
object | 处理统计信息 |
ui_event |
enum | UI 事件 |
model_override |
string | 模型覆盖(格式:credential_id::model_name) |
attachments_json |
string (端口) | 附件 JSON 数组,可直接连接 io/file_upload.files_json. 连接端口,不是表单字段。 |
对话输出 — chat/output
接收消息包并渲染到对话界面,支持流式显示、虚拟化和消息导出
输入
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
context |
object (端口) | — | "" |
Agent 最终回复文本或 AgentContext(自动提取文本). 连接端口,不是表单字段。 |
artifacts |
object (端口) | — | [] |
要渲染为媒体附件的产物引用. 连接端口,不是表单字段。 |
trace |
string (端口) | — | null |
Agent 执行轨迹(思考过程). 连接端口,不是表单字段。 |
theme |
enum | — | system |
显示主题. 控件:select. 取值:light, dark, system |
autoscroll |
boolean | — | true |
是否自动滚动到最新消息. 控件:switch |
keep_messages |
integer | — | 1000 |
内存中保留的最大消息数量. 控件:number |
virtualize_threshold |
integer | — | 100 |
消息数量超过此值时启用虚拟化. 控件:slider |
display_format |
enum | — | standard |
消息显示格式. 控件:select. 取值:compact (紧凑模式), standard (标准模式), detailed (详细模式) |
show_timestamp |
boolean | — | true |
是否显示消息时间戳. 控件:switch |
输出
| 字段 | 类型 | 说明 |
|---|---|---|
reply |
string | Assistant 最终回复的文本内容 |
trace |
string | Agent 执行轨迹(思考过程) |
ui_events |
array<enum> | 要发送给前端的 UI 事件 |
message_count |
integer | 当前保留的消息总数 |
virtualized |
boolean | 是否启用了虚拟化渲染 |
stats |
object | 处理统计信息 |
对话历史检索 — chat/history_search
搜索工作区中过去的对话。作为 LLM/Agent 按需工具使用,不是默认上下文提供程序。不要用于文件路径或文件内容,请使用文件工具处理这些需求。
输入
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
action |
enum | — | search_messages |
list_conversations \ |
workspace_id |
string | — | null |
工作区 UUID.缺失时回退到执行元数据. |
target_conversation_id |
string | — | null |
限制搜索到特定会话.与当前会话的 conversation_id 不同,支持跨会话搜索. |
query |
string | — | null |
关键字(不区分大小写,ILIK E风格). |
time_range |
enum | — | last_week |
时间范围.默认 last_week. 取值:last_hour, last_day, last_week, last_month, all_time |
limit |
integer | — | 10 |
单次返回上限. |
message_id |
string | — | null |
锚点 message_id(仅 get_message_context 使用). |
context_before |
integer | — | 2 |
锚点之前要带出多少条消息. |
context_after |
integer | — | 2 |
锚点之后要带出多少条消息. |
snippet_max_chars |
integer | — | 200 |
snippet 最大字符数(按字符截断,避免单条消息撑爆上下文). |
输出
| 字段 | 类型 | 说明 |
|---|---|---|
found |
boolean | 已找到 |
no_results_found |
boolean | 未找到结果 |
total |
integer | 总数 |
results |
array<object> | 结果 |
summary |
string | 摘要 |
suggestion |
string | 建议 |
call_limit_reached |
boolean | 当本次执行的搜索配额已用尽时为 true,调用方应避免再次发起. |
下一步
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END

暂无评论内容