feat(activity): add SAS stream_delta API for LLM progressive text (1.2.14)
All checks were successful
Publish Python Package to Gitea / publish (push) Successful in 24s

This commit is contained in:
2026-10-25 16:44:30 +08:00
parent 6c75ade463
commit 4ae8262aa6
5 changed files with 398 additions and 2 deletions

View File

@@ -87,6 +87,8 @@ send_prompt_via_composer(page, "第一行\n第二行")
|-----|------|
| `emit(text, ...)` | 写 Run Journal(`activity` / `progress` / `warn` / `debug`) |
| `step(text)` | `emit(type='activity')` 别名 |
| `stream_start` / `stream_delta` / `stream_end` | 写 `type=stream` 渐进文本(**不**步进闸门;供 HTML `jiangchang.stream`) |
| `stream_channel(...)` | 上下文管理器:start → delta → end |
| `finish(status=..., **fields)` | 写终态事件 + **唯一**向 stdout 输出单行 result JSON |
| `rpa_step(name)` | 装饰器:闸门 + 进入/成功/失败自动 emit |
| `checkpoint()` | consult control(不写步骤事件) |
@@ -94,6 +96,21 @@ send_prompt_via_composer(page, "第一行\n第二行")
| `JobStopped` | 宿主 stop 时抛出 |
| `job_context(...)` | 可选包裹 main;异常时自动 `finish(failed)` |
### LLM 流式示例(1.2.14+)
```python
from jiangchang_skill_core.activity import finish, stream_channel
with stream_channel("answer", skill="reply-xmz-knowledge") as ch:
for piece in llm_stream(...): # OpenAI/DeepSeek stream chunks
ch.delta(piece)
finish(status="success", skill="reply-xmz-knowledge", message=full_text, answer=full_text)
```
- `stream_delta` 默认合并短突发(约 50ms / 48 字符);可用环境变量 `JIANGCHANG_STREAM_COALESCE_MS` / `JIANGCHANG_STREAM_COALESCE_CHARS` 调整,或 `flush=True` 立即写出。
- 宿主 Task Center **不展示**逐字 `stream` delta;HTML 预览通过 `jiangchang.stream` 订阅。
### Run Journal 路径(宿主 tail 此文件)
```