{"_id":"@buckeyestudio/toh-subagent-fork-in-process","name":"@buckeyestudio/toh-subagent-fork-in-process","dist-tags":{"next":"0.1.1-rc.2","latest":"0.1.1-rc.2"},"versions":{"0.1.1-rc.2":{"name":"@buckeyestudio/toh-subagent-fork-in-process","description":"In-process fork subagent backend: runs a child agent seeded with a prefix of the parent's log","version":"0.1.1-rc.2","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/dustinwloring1988/theopen-harness.git","directory":"packages/subagent/subagent-fork-in-process"},"type":"module","main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","author":{"name":"buckeyestudio"},"peerDependencies":{"@buckeyestudio/toh-agent":"^0.1.1-rc.2","@buckeyestudio/toh-session":"^0.1.1-rc.2","@buckeyestudio/toh-subagent-in-process-driver":"^0.1.1-rc.2","@buckeyestudio/toh-subagent":"^0.1.1-rc.2","@buckeyestudio/cordis":"^4.0.1","@buckeyestudio/toh-invariants":"^0.1.1-rc.2"},"dependencies":{"@buckeyestudio/schemastery":"^3.18.1"},"devDependencies":{"@buckeyestudio/cordis-plugin-loader":"^1.0.2","@buckeyestudio/toh-agent":"^0.1.1-rc.2","@buckeyestudio/toh-agent-loop":"^0.1.1-rc.2","@buckeyestudio/toh-invariants":"^0.1.1-rc.2","@buckeyestudio/toh-agent-loop-testkit":"^0.1.1-rc.2","@buckeyestudio/toh-llm":"^0.1.1-rc.2","@buckeyestudio/toh-session":"^0.1.1-rc.2","@buckeyestudio/toh-subagent":"^0.1.1-rc.2","@buckeyestudio/toh-subagent-in-process-driver":"^0.1.1-rc.2","@buckeyestudio/toh-subagent-spawn-in-process":"^0.1.1-rc.2","@buckeyestudio/cordis":"^4.0.1"},"_id":"@buckeyestudio/toh-subagent-fork-in-process@0.1.1-rc.2","bugs":{"url":"https://github.com/dustinwloring1988/theopen-harness/issues"},"homepage":"https://github.com/dustinwloring1988/theopen-harness#readme","_integrity":"sha512-bwjoNCVFgtsfFqipQ1QvPzRphCKX2NUtT9CNOdYiUBUmx7xCl2snbar0F5TrOVoZuhf8/7HRu0A6zqHqsfuZww==","_resolved":"/home/runner/work/theopen-harness/theopen-harness/dist/npm/buckeyestudio-toh-subagent-fork-in-process-0.1.1-rc.2.tgz","_from":"file:/home/runner/work/theopen-harness/theopen-harness/dist/npm/buckeyestudio-toh-subagent-fork-in-process-0.1.1-rc.2.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-bwjoNCVFgtsfFqipQ1QvPzRphCKX2NUtT9CNOdYiUBUmx7xCl2snbar0F5TrOVoZuhf8/7HRu0A6zqHqsfuZww==","shasum":"115d75ed784558dac8e474082c83a006b28eb456","tarball":"https://registry.npmjs.org/@buckeyestudio/toh-subagent-fork-in-process/-/toh-subagent-fork-in-process-0.1.1-rc.2.tgz","fileCount":9,"unpackedSize":17280,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCjtbXWd1jj+nOnxNb2fQbvEb0s0Tlgh8qLk3kHgIXWSwIgVVF3upc8awlGLo3NXvtTHLGQ9pifZC0jS5bePmyH6yo="}]},"_npmUser":{"name":"buckeyestudio","email":"dustinwloring1988@gmail.com"},"directories":{},"maintainers":[{"name":"buckeyestudio","email":"dustinwloring1988@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/toh-subagent-fork-in-process_0.1.1-rc.2_1787489347748_0.6661646271360679"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T12:49:07.573Z","0.1.1-rc.2":"2026-08-23T12:49:07.883Z","modified":"2026-08-23T12:49:08.128Z"},"maintainers":[{"name":"buckeyestudio","email":"dustinwloring1988@gmail.com"}],"description":"In-process fork subagent backend: runs a child agent seeded with a prefix of the parent's log","homepage":"https://github.com/dustinwloring1988/theopen-harness#readme","repository":{"type":"git","url":"git+https://github.com/dustinwloring1988/theopen-harness.git","directory":"packages/subagent/subagent-fork-in-process"},"author":{"name":"buckeyestudio"},"bugs":{"url":"https://github.com/dustinwloring1988/theopen-harness/issues"},"license":"MIT","readme":"# @buckeyestudio/toh-subagent-fork-in-process\n\n[English](README.md) | 中文\n\nfork 提供方会创建一个进程内子 agent（智能体），并以父 agent 已完成的对话轮次作为初始内容。它与 spawn 共用全部运行机制；唯一的行为差异是会话初始内容。\n\n## 初始内容边界\n\nsubagent 启动时，父 agent 当前的工具调用轮次仍未结束：其日志包含 assistant 工具调用，但尚无匹配的工具结果或 `turn/end`。直接复制这份原始日志会给子 agent 一个无效且不平衡的会话。\n\n因此，fork 会计算截至最后一个 `turn/end` 的连续前缀。子 agent 能看到父 agent 所有已完成轮次，但看不到进行中的轮次。如果父 agent 尚未完成任何轮次，初始内容为空，子 agent 的行为与全新 spawn 相同。\n\n初始内容只传递对话历史。子 agent 仍会获得全新的扁平注册作用域；它不继承父 agent 的工具限制或权限。\n\n## 启动与能力\n\n`start(request)` 将已完成轮次的初始内容传给 [`startInProcessRun`](../subagent-in-process-driver/README.zh.md)，并等待子 agent 发布。共享驱动器负责取消、深度、定制、结果读取和 dispose（资源释放）。\n\nfork 声明 `{ outputSchema: true, depthLimit: true, toolFilter: true, persona: true }`，与 spawn 相同。\n\n## 配置\n\n| 键 | 含义 |\n|---|---|\n| `providerName` | `ctx.subagents` 上的注册表名称（默认 `fork`）。 |\n运行生命周期、模型继承与深度跟踪均为共享行为，见 [`toh-subagent-spawn-in-process`](../subagent-spawn-in-process/README.zh.md)。\n\n## 模型体验\n\n### 子 agent 历史与包络\n\n#### 模型看到的内容\n\n子 agent 先接收由父 agent 已配平的已完成轮次构成的表层前缀，再逐字接收新的任务内容。配置的 persona 会在子 agent 的全新作用域中遮蔽提示词文本；工具限制会过滤其全局协议 schema、可执行工具查找和 Code Mode SDK 绑定，但不影响独立的指导内容。父 agent 的工具视图与权限不会被继承。可选的结构化输出请求会添加仅属于子 agent 的约定。父 agent 当前进行中的轮次会被排除。\n\n#### Token 影响\n\nfork 会把保留的已完成历史复制到独立的子 agent 请求中；随后子 agent 独立累积自己的 token。persona 会改变重复提示词的成本，过滤会改变 schema 或生成 SDK 的成本，而首轮 fork 没有继承历史。\n\n#### KV Cache 影响\n\n在提供方和模型相同的前提下，子 agent 可以复用继承的逐字节相同前缀。persona、工具过滤、生成 SDK 或路由变化可能在继承历史之前使复用失效；后续子 agent 历史仅追加。因此随附组合把本提供方绑定为 `backgroundMode: one-shot`：可继续子 agent 还会额外携带作用域局部的 `report` 工具及其提示词 section，而这些增量位于继承历史之前，会使继承历史整体失效（见 [fork 保持 one-shot 的 Agent Note](../../../.agents/notes/implemented/architecture/2026-08-10-fork-children-stay-one-shot.zh.md)）。\n\n### 父 agent 工具结果（间接）\n\n#### 模型看到的内容\n\n父 agent 只通过 `toh-tool-subagent` 接收子 agent 自身的最终输出，不接收继承的前缀或中间工作。\n\n#### Token 影响\n\n父 agent 输入会增加一个取决于数据的最终结果，并保留到压缩（compaction）为止。\n\n#### KV Cache 影响\n\n仅追加；新增可见内容位于可复用请求前缀之后，不会使现有 KV Cache 条目失效。\n\n## 已知限制与暂缓事项\n\n- **初始内容是一次性快照**：子 agent 只能看到 fork 时父 agent 已完成的轮次，看不到父 agent 此后记录的任何内容；不会实时共享上下文。\n- **没有任何随附组合会创建可继续的 fork 子 agent**：`prepareContinuable` 仍然实现完好，seam 也接受它，但每份随附的 `cordis.yml` 都在 fork 委派工具上设置 `backgroundMode: one-shot`，因此该提供方的可继续路径没有生产调用方。重新开放它需要子 agent 的系统提示词与工具 schema 与父 agent 逐字节一致，而这一点目前被 [`report` 返回通道](../tool-subagent-report/README.zh.md)阻止。理由与重新开放条件见 [fork 保持 one-shot 的 Agent Note](../../../.agents/notes/implemented/architecture/2026-08-10-fork-children-stay-one-shot.zh.md)。\n","readmeFilename":"README.zh.md","_rev":"1-2283d883e13133062ba2b6c785b14006"}