Oh My DSH.文档GitHub ↗
文档导航

DOCUMENTATION OMD 0.2.1-alpha.1.omd.0.5.2

本页目录

运行状态、后台任务和 Todo 阻塞处理#

文档目录 · 使用指南 · 上下文机制

在 设置 → Oh My DSH → 实验性功能 中配置。CoT 前置和后台优化默认开启,CFR、运行状态和预算提示默认关闭。保存后从下一次模型请求生效;已有会话同样适用。

运行状态#

状态与 Todo 共用同一条投递、压缩和回放链。开启状态提示、真实新用户输入、Todo 正常投递、压缩刷新或当前提示块缺失时,采样并投递最新状态;同一步合并一次,压缩刷新后不重复追加。没有 Todo 时也可只投递状态,不自动创建任务。未开启预算的额外注入时,后台任务、上下文记录内部变化、自动新回合、模型切换、时间和 token 数值变化均不独立触发注入。

内容包括采集时间、宿主实际执行回合与本轮步数、本回合经过的时间、当前保留内容的 token 估算、上下文记录的表示方式、最近确认的模型窗口及已注册后台任务。首次请求显示 turn 1 · step 1,日志事件序号不作为轮次或步数;这些是采样时的位置,不随每一步自动刷新。估算不包含尚未入场的输入和新系统装配,窗口不代表剩余额度;不会生成任务进度百分比、截止时间或虚构预算。

runtime_status({}) 可查询新鲜状态。任务的“完成”“已投递输出”和“验证成功”含义不同,不能相互代替。关闭自动状态提示会移除当前联合块的状态部分,任务、原文与验证证据保留。

归档记录标明 view=brief/detail。原文恢复仍使用已有 recall({from,to});recall({id}) 读取该记录保存的资料。

会话预算#

“向模型提供预算”默认关闭,可以独立于普通运行状态开启。开启后,未设置的维度显示“无限制”;全部未设置时只显示 预算:无限制。

在对话中发送 /预算 token=100k 轮次=30 时间=20m,三个维度任选或组合;原生命令 /budget 同样可用,并支持命令菜单补全。命令由宿主处理,不调用模型。Token 支持 k/m,时间支持 s/m/h 或秒/分钟/小时。

  • /预算 或 /预算 查看:查看当前用量与上限。
  • /预算 token=200k:修改指定上限,保留当前计数与其他维度。
  • /预算 时间=无限制:清除单项上限;/预算 无限制 清除全部上限。
  • /预算 重置:保留上限,重新计数。
  • /预算 关闭:关闭本会话预算展示与计数;再次设置时重新开始。

首次设置预算后开始计数。总 token 累计本会话、后台和子代理调用已返回的输入、缓存输入和输出用量;推理 token 不重复相加,用量缺失的调用单独标明。模型轮次只计本会话主执行调用(含返回失败的调用),后台和子代理不占主执行轮次。执行时间包含模型与工具运行,排除等待用户回答、空闲及重启停机时间。预算按会话保存,关闭全局展示开关不会重置已设置的预算。

开发分支:普通 fork 独立计量,不并入父会话预算或“当前会话”监控;Workflow 子代理使用原生预设时,其用量仍归入发起会话。预算保存失败时保留原计数、上限和计时起点。

预算默认随原状态节点更新:开启提示、真实新用户输入、Todo 投递、压缩刷新或提示块缺失时提供最新快照,设置、修改和重置预算也会刷新;消耗和轮次变化本身不会重复投递整段状态。

预算下的“每轮注入预算”默认关闭。开启后才显示频率选择:每轮、每 3/5/10 轮或自定义正整数间隔。设置了预算上限时,从最近一次预算投递起累计主执行模型调用,达到间隔后只追加预算,不连带重发 Todo、时间、上下文和后台任务状态;原有节点照常更新,同一节点不重复追加。关闭该开关后,已保存的频率不再触发额外注入。

预算快照沿用原状态的摘要排除和压缩清理:不进入预处理或全量摘要的正文,压缩时清理旧快照,只挂载最新快照。用量持续计数,改变注入频率不会重置预算;单次生成中的用量在返回后计入。占比可超过 100%,达到预算不会强制停止或触发自动收尾提醒。给模型的内容仅包含预算数据,不添加“软限制”标签,也不改变宿主本身的超时或其他硬限制。

后台任务#

开发分支还提供 Workflow 的共享输出目标,通过人类消息末尾的 +500k 设置,与上面的 /预算 会话提示独立。

调用方式 行为
直接调用 Shell,省略 run_in_background 最多先等 10 秒,仍未结束则返回同一命令的 job id,原超时继续计时。yieldMs 可设为 250–30000 毫秒。
run_in_background: false 完整等待前台结果。
run_in_background: true 立即返回 job id,支持读取增量输出;保留原显式后台的超时规则。
run_code 内省略后台参数 await 继续等待最终结果,不自动变成 job id。

自动让出不会重新执行命令。自动让出的任务在结束后提供捕获结果;需要运行期间的日志时,请显式启动后台任务。停止或卸载运行时会取消并等待其拥有的进程,不会在重启后重跑旧任务。旧编号不会指向重启后新建的任务。

完成通知包含任务编号、结束状态和有界输出预览。预览不消耗显式读取游标;输出不完整时继续调用 job_output。完成只表示执行结束,仍须检查退出码、超时、截断和实际结果。

直接调用 job_output({job_id, wait:true}) 时,省略 timeout_ms 会等待事件;任务完成、新插话、其他任务完成或指定超时都能结束等待。返回的 wakeReason 分别为 completed、user_input、other_completion、timeout。被唤醒不等于目标完成,也不会取消目标任务。

等待期间,输入框的主发送按钮显示“现在发送”,Enter 直接插话;显式排队仍保留。等待结束后恢复原输入偏好。若当前模型步还同时执行其他阻塞工具,需要等那些调用也结束后才能发起下一次模型请求。

OMD-PTC#

开启后台优化后,job_output、job_list、job_kill、runtime_status 可以直接调用;其他业务工具继续通过 run_code。

js
return await tools.bash({
  command: "pnpm test",
  description: "Run project tests",
  run_in_background: true
});

先返回任务编号,在后续步骤处理独立工作或等待结果。Windows 使用 tools.pwsh。PTC 程序内部的等待仍有原有限时,并受整个程序超时约束;本功能不把整段程序自动放到后台。

Todo 阻塞处理#

当没有可执行的有效下一步时,模型可以调用:

json
{"op":"pause_turn","reason":"缺少服务连接;需要先启动服务才能继续验证。"}

这会停止本回合的 Todo 收尾催促,让模型正常说明阻塞。未完成任务、证据和 BT 设置保持原样;新的用户输入或新回合恢复检查。完全相同的收尾提醒在同一回合、同一用户输入范围内只投递一次。

它不停止后台进程,也不暂停独立的 Goal。需要停止进程时仍调用 job_kill。

配套运行时#

发行包包含基于 DSH 0.1.7-alpha.1 的匹配组件,通过插件配置加载。宿主原工具注册表、Jobs、Shell 和输入框组件的完整实现保留,只增加上述能力。原生 DSH 预设保留原有执行方式;卸载 OMD 后原组件恢复,无需手工修改 node_modules。

在插件管理中启停整个 OMD 时,页面会自动刷新以切换完整输入框组件,会话历史、设置和文字草稿保留。附件需要重新添加;实验性功能开关本身不会刷新页面。

运行状态和预览增加少量上下文;日常快照在上下文尾部追加,压缩时合并为最新版并清理旧副本。无触发事件时不重发;预算仅在开启“每轮注入预算”后按所选间隔额外刷新,也不因时钟或后台任务变化唤醒模型。没有新增总结模型调用,也不承诺对所有模型和任务都有同样收益。