orchestra
Context continuity & multi-session orchestration for DeepSeek Harness.
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 14, 2026
- Updated
- Aug 27, 2026
Introduction
Orchestra(乐团模式,曾用名:接力模式)· Continuity for DeepSeek Harness
English | 中文
让一个长任务跨多个上下文有限的 AI 会话持续前进:压力可测、交接可验证、会话可续、任务可并行、目标可自动编排、多会话可协调。
动机
- 上下文窗口有限:长任务跑到后半程,模型会遗忘、变慢、被压缩,最后无法继续。
- 手工续写不可靠:把旧对话内容复制给新对话,会丢信息、无法验证、不保证"从上次的下一步继续"。
- 复杂任务需要协作:多个并行会话各干一段,由一个协调者统筹;任何会话上下文快满时都能无缝轮换到新会话,任务不中断。
做法
全部是用户级装配,零侵入出厂 Harness,运行在 ~/.dsh:
| 层 | 位置 | 作用 |
|---|---|---|
| Agent 预设 | ~/.dsh/.agent-presets/continuity/ | 26 条专属命令(另有 6 条继承自标准模式)+ 角色纪律;GUI 预设选择器选中即用 |
| Host 驱动器 | ~/.dsh/continuity-host/ | 轮换、并行 worker、自动编排——经 profile 补丁层热应用 |
| 持久 checkpoint | 会话消息流 | 重启、轮换、新会话都从日志恢复,不依赖内存 |
能力五域:接力(跨会话续接)· 并行(worktree worker)· 编排(mission)· 协调(多会话 hub)· 节奏(pace)。
用法
| 场景 | 命令 |
|---|---|
| 看上下文还剩多少 | /continuity |
| 存档后继续 | /handoff |
| 从旧会话续跑 | /continue <session-id> |
| 一键换新会话 | /rotate |
| 开启并行任务 | /worktree <任务简报> |
| 管理 worker | /workers · /worker-report <id> · /worker-send <id> <消息> · /worker-stop <id> |
| 自动实现一个目标 | /mission <目标> · /mission_status · /mission resume |
| 链接两个会话 | /coordinate <session-id> |
| 星型协调已有会话 | /coordinate-hub <spoke-id>… [-- 你的想法] · /coordinate-intake |
| 只读窥视 | /session-peek <id> [n] [--full] |
| 会话清单 | /sessions · /sessions_active · /current_session |
| 节奏自省 | /pace |
v34 起:
/sessions、/sessions_active、/workers会按会话工作目录标注工作区类别([worktree of <repo>]= git worktree 兄弟检出、[plain]= 非 Git 目录),一眼看出每个会话在哪个仓库里干活。
v35 起:角色纪律段加入"能力自查"行——任何会话先检查自己实际拥有的委派工具(插件命令可用就用命令,否则用 subagent 族),需要隔离实验工作时自行
git worktree add建兄弟工作区并在报告中列出路径;worker 提示词相应获得"自组织许可"(第 6 条纪律),"只在此工作区干活、干完即停"语义不变。
v36 起:消息关联——
/relay、/steer、/coordinate-intake的信封带短问题编号q-xxxxxx;被点名会话回复时开头回显该 id(如[q-3f9a2c] 答案…),协调者一眼知道这条回复回答的是哪条指令;自动转发回来的回复还会带[reply to q-xxxxxx]标记兜底(启发式,找不到就不带)。
v37 起:决策层模型——每个协调者都知道自己处于什么决策层(等级 = 派生态:从协调树求到叶子的最长路径,L0 叶子 / L1 首层 hub / L2+ 嵌套 hub,树长等级就长),以及自己的 mandate(决策域旨意,
/coordinate-hub … --mandate <文本>声明并持久化);链接建立/重启恢复时定向注入等级行与信息契约(等级管信息浓度、mandate 管决策边界),/coordinate status随时可查——重启后依然可用。
v38/v9 起:轮换链接迁移修复(生产缺陷)——
/rotate(或/worker-successor)时协调链接随轮换迁移:源 hub 的hub=… spokes=…记录改写成继任者、每个 spoke 收到新hub=<继任者>记录,重启后 spokes 自动指向新 hub;迁移由插件侧读取源日志并传给 host 驱动(驱动侧拿不到 sessionQuery,这正是旧版本生产环境静默失败的根因);迁移失败绝不静默——完成消息写明coordination links NOT migrated: <原因>,继任者还会收到"协调链接未迁移"提示(手动/coordinate-hub或等重启 restore 恢复)。另外,配置coordinateForwardMarker后,回复开头回显问题编号 q-id 且该编号确为本会话日志中最近的协调指令时,即使没有协调标记也会自动转发回协调者(被点名问题的直接回答必须回来;裸"收到"仍被过滤)。
v39/v10 起:混合拓扑持久化 + worker-successor 输入调用方喂入(生产缺陷第二轮)——持久链接记录现在承载全部拓扑:hub 的
/coordinatepeer 链接也写进 hub 记录(hub=<id> spokes=… [peers=…]),非 hub 会话的多 peer 记录全量持久(peers=a,b,c),重启后 hub→peer、peer→hub 双向都在——此前 hub 的 peers 不进记录、重启后 hub→peer 方向永久丢失(peer 侧记录还在、变成单向);/worker-successor的 worker 日志读取(header/checkpoint/链接记录)也移到插件侧、由调用方喂给驱动(host 驱动侧拿不到 sessionQuery,v9 的自读在生产同样会失败);worker 日志读不到且无 sessionQuery 时响亮报错,链接迁移失败沿用"NOT migrated + 提示"模式。轮换迁移改写只动hub=,spokes=/peers=原样保留——继任者带着完整混合拓扑。
v41/v11/v9 起:轮换全自动(用户需求原文"我不想操作任何事,我想操作的就是 rotate;不要有妥协")——
/rotate后零手动步骤。除协调链接,/rotate还把 hub 的决策域 mandate 与持久 mission checkpoint 一并迁到继任者(mission 由插件自动 resume 续跑,无需手动/mission resume);worker 完成通知按 worker 最新链接记录重指到存活的继任者;oldSession默认'auto'——全部关系迁移成功才自动归档旧会话(部分失败则保持存活并在完成消息响亮说明)。旧会话归档可配置'keep'/'archive'覆盖。
v42 起:hub→spoke 投递通道防呆(生产缺陷修复)——向 spoke/peer 发消息的唯一途径是执行
/relay <会话-id> <消息>命令(重要内容用/steer);在回复正文写『【协调中心 → X】』『【协调者 → X】』(或[coordinator -> X])等格式不会被投递——spoke 只会收到你实际 relay/steer 的内容。协调者自身回复正文含该格式时,插件会提醒一次改用 /relay(不阻断、不改写回复)。
v46 起:全量 steer——所有 hub↔spoke 消息经下一步边界到达——hub→spoke 指令(/relay、/steer、/coordinate-intake 与对应工具)和 spoke→hub 自动转发全部改为 harness 的步骤边界通道(
agent.steer):目标运行中也收到、在下一步模型决策前被消费——修正不再等到目标回合结束才出现,hub 处理上一份报告的同一回合内就能看到新报告(不再基于旧快照发协调)。v43 的 mid-turn 拒绝废除(软边界下运行中目标必达);--force 保留为命令兼容;同一目标连续多条更新按到达顺序处理、以最新为准。v45 起:投递工具注册可靠性 + 通道文本点名工具——v44 重启后协调者仍称"本会话无 /relay"("spokes 指令需用户转达"),根因有二:① 预设 standing 挂载是单飞且按进程代次缓存,GUI 冷读可能在 boot 早期就先触发它(此时 host 的
tools服务未就绪),旧的"服务缺失即放弃"守卫让工具静默地从整代进程中消失;v45 改为在挂载时若服务不可达就每 2s 重试(幂等)。② v42 的投递通道文本(onboard.deliveryChannel/roles.coordDelivery)只说"唯一途径 = /relay 命令",从未提工具——v45 起两处文本都写明"或直接调用 agent 工具relay_to_session/steer_to_session(与命令同源同效,工具列表里有它们)",hub 不会再认为自己没有投递面。v44 起:投递工具 wire schema 修复(v43 上线即全局 400 的根因)——v43 的工具定义在
parameters.properties.<name>里写了required: true(布尔),这在 JSON Schema 里非法(required必须是对象级字符串数组);harness 本地注册只校验output.schema、parameters 原样发给模型,DeepSeek 端点严格校验后整请求返回 400Invalid schema for function 'relay_to_session': true is not of type "array"——预设是部署默认,所以当时任何会话的任何消息都报错。v44 删除属性级required: true(对象级required: ['target_id','message']保留),工具行为不变、wire 形状与一等公民工具一致。教训:工具化必须验证远端接受的 wire 形状,不能只看本地工具目录。v43 起:投递工具(插件注册的 agent 工具)——
relay_to_session(<目标会话-id>, <消息>)与steer_to_session(<目标会话-id>, <消息>)两个 agent 工具与/relay、/steer命令同源同效(同一投递内核、同一continuity-coord/continuity-steer源标记、同一 v36 q-id 信封),注册在预设 standing scope 层——本预设的 agent 工具目录里都有它们,模型调用工具即可投递(与命令逐字一致);steer_to_session无--force逃生口(目标 mid-turn 一律拒绝)。命令面仍 26 条(工具不占命令槽)。
v40 起:审批卡点检测 + goal 冲突提示(运维盲区修复,纯插件方案)——harness 审批无超时、无查询接口,卡在审批对话框的会话外部状态与正常干活无异(协调者巡检曾完全看不见);插件从会话自身日志的
approval/asked/approval/decided审计配对检测:hub 巡检为卡审批的 spoke 追加"审批卡点告警"(⚠️ spoke {id} 卡在审批:{tool}(自 {time})——可能需要你批准)、/workers在卡审批的 worker 行尾标⏳ 待审批: <tool>、/session-peek输出头部加待审批提示。另外,harness/goal是"驱动式"(agent 空闲就排下一轮、无退避)而协调是"等待式"——/coordinate status检测到本会话(hub)有激活 goal 时警告:等待 spoke 回复或用户决策时先/goal pause(GUI 或本会话均可),自动编排改用/mission。使用禁忌详见docs/COMMANDS.md六之二。
完整命令参考见 docs/COMMANDS.md。
快速开始
前提:已部署 DeepSeek Harness(DSH_HOME,默认 ~/.dsh)。
在任意目录执行(克隆到哪都行:安装脚本会把 deploy/ 镜像复制进 ~/.dsh,这个目录只是暂存区):
git clone https://github.com/yiqiaowang-arch/orchestra.git
cd orchestra
powershell -ExecutionPolicy Bypass -File scripts/install.ps1
然后新建会话,预设选择器选 Orchestra,跑 /continuity 看到 tokens / 容量 / 比率即成功。
维护者(本仓库发布者)流程:改动 live 运行时文件(
~/.dsh/.agent-presets/…、~/.dsh/continuity-host/…、profile 补丁层)后、每次提交前先运行scripts/sync-deploy.ps1——它把 live 镜像进deploy/(旧代次自动归档、<USER>占位符消毒),再运行scripts/install.ps1验证同一套文件的安装闭环(install 会还原占位符成真实路径并做差异备份)。克隆安装的用户不需要、也不应运行 sync-deploy——它只做 live→deploy 镜像(且写回的是仓库目录);安装一律走install.ps1(deploy→live)。
平台:当前面向 Windows。macOS / Linux 需自装 PowerShell Core(
brew install powershell→pwsh)才能运行安装脚本;且本预设的 shell 工具链目前只启用了 Windows 的 pwsh,macOS / Linux 暂未适配。
文档索引
| 文档 | 读者 |
|---|---|
| README.en.md | English readers |
| docs/AGENTS.md | 在此仓库工作的 Agent(红线/升级/提交/交接协议) |
| docs/ARCHITECTURE.md | 开发者(平面/组件/状态机/时序/约束) |
| docs/COMMANDS.md | 使用者(命令全集) |
| docs/STATES.md | 所有人(三种状态环速查) |
| docs/GLOSSARY.md | 所有人(双语术语表——全库口径准绳) |
| docs/CHANGELOG.md / docs/MANIFEST.md | 版本史 / 维护速查 |
| docs/design/CONTEXT_CONTINUITY_SYSTEM_DESIGN_V4.md | 设计文档 |
许可
本项目为 DeepSeek Harness(MIT)的个人能力扩展,运行于用户自有目录(~/.dsh),与业务仓库解耦;不修改出厂安装。采用与 DeepSeek Harness 相同的 MIT License。
仓库内不含任何个人绝对路径:本机路径一律以 C:\Users\<USER>\ 占位,安装脚本、测试与文档检查均通过 $DSH_HOME / $DSH_HARNESS 环境变量(缺省 ~/.dsh / ~/Documents/GitHub/deepseek-harness)动态解析真实位置。