跳至内容

源文件索引:packages/jobs

本页由 study-tools/generate-source-index.mjs 根据官方提交 aa6c361a972c8369148dea7380bb5c21c24e07ec 生成,共 13 个代码或界面源文件。每个标题对应一个真实路径;用途和拆分原因是面向初学者的结构化解释,自动索引不等于人工精读。

图例

本页所有条目共用以下说明:

  • 自动索引只提供定位线索,复杂行为需要回到源码和测试确认。
  • 条目中的行数、声明、结构线索和静态 import 数字是文件级定位证据,用来约束“为什么这样设计”的解释范围;它们用于定位,不替代人工源码阅读。
  • 源码链接固定到官方提交;如果当前条目与运行版本不同,应先重新生成索引再下结论。

packages/jobs/jobs-local/src/index.ts

  • 所属层:packages/jobs:可复用的 Harness 功能包
  • 文件角色:模块入口
  • 这个文件有什么用:它把后台任务相关的公开能力集中导出,并决定调用者可以依赖哪些边界;调用者因此不必记住所有内部文件。
  • 为什么这样设计:入口文件把公开边界固定下来,内部文件可以继续拆分或替换;其他包只依赖入口暴露的 API,依赖方向更稳定。
  • 文件级设计证据:源码顶部注释把它定位为“Process-local provider for the background-job capability seam (ctx.jobs). It keeps every record in memory and hands out fresh snapshots, never live state. Registrations outlive producer and controller fibers. Agent or service disposal cancels live work and ...”;固定提交中扫描到的声明包括 TASK_WAIT_TIMEOUTConfigLocalJobRegistryisTerminalJobLayer;本地静态 import 图显示它直接依赖 6 个源文件,并被 13 个源文件直接引用。
  • 直接协作者:packages/jobs/jobs-local/README.mdpackages/core/agent/src/index.tspackages/core/scope/src/index.tspackages/jobs/jobs/src/index.tsexamples/headless-agent/tests/code-mode.e2e.ts
  • 对应测试:examples/headless-agent/tests/code-mode.e2e.tspackages/host/apiproxy/tests/api-proxy-jobs.spec.tspackages/jobs/jobs-local/tests/jobs.spec.tspackages/jobs/jobs-local/tests/loader-composition.spec.tspackages/jobs/tool-jobs/tests/tool-jobs.spec.tspackages/shell/tool-bash/tests/integration.spec.ts
  • 测试关联依据:固定提交源码中的本地静态 import 直接引用;测试用例直接导入了这个源文件。
  • 测试支持:packages/core/agent-loop/tests/mock-adapter.ts
  • 阅读顺序:先读 packages/jobs/jobs-local/README.md、入口和消费者,再读当前契约,沿着 examples/headless-agent/tests/code-mode.e2e.tspackages/examples/agent-spine-demo/src/index.tspackages/host/apiproxy/tests/api-proxy-jobs.spec.ts 看它怎样约束运行时,最后对照 examples/headless-agent/tests/code-mode.e2e.tspackages/host/apiproxy/tests/api-proxy-jobs.spec.tspackages/jobs/jobs-local/tests/jobs.spec.ts
  • 代码证据:固定提交归档实际读取结果:约 534 行;扫描到的声明包括 TASK_WAIT_TIMEOUTConfigLocalJobRegistryisTerminalJobLayer;源码顶部原注释(英文,仅作回查线索):Process-local provider for the background-job capability seam (ctx.jobs). It keeps every record in memory and hands out fresh snapshots, never live state. Registrations outlive producer and controller fibers. Agent or service disposal cancels live work and ...。
  • 固定版本:源码链接固定到官方提交 aa6c361a972c8369148dea7380bb5c21c24e07ec

packages/jobs/jobs-local/src/invariant.ts

  • 所属层:packages/jobs:可复用的 Harness 功能包
  • 文件角色:运行时不变量
  • 这个文件有什么用:它检查后台任务必须始终成立的条件,在错误刚出现时报告,而不是等到更深层才出现难以解释的结果。
  • 为什么这样设计:把不变量集中在一个位置,调用者和测试就能用同一条规则检查状态;错误在边界处报告,比在后续 UI 或网络请求中才暴露更容易修复。
  • 文件级设计证据:源码顶部注释把它定位为“Package-owned invariant companion for @deepseek-ai/dsh-jobs-local. @module @deepseek-ai/dsh-jobs-local/invariant”;固定提交中扫描到的声明包括 nameinjectapply;本地静态 import 图显示它直接依赖 2 个源文件,并被 0 个源文件直接引用。
  • 直接协作者:packages/jobs/jobs-local/README.mdpackages/runtime-diagnostics/invariants/src/index.tsvendor/cordis/src/index.ts
  • 对应测试:没有确认到直接测试;公共入口可能仍有间接覆盖。
  • 测试关联依据:固定提交中没有找到直接或传递的本地静态 import,也没有找到明显的同包同名测试;公共入口可能仍有间接覆盖。
  • 阅读顺序:先读相关类型和事件,再读当前状态或存储实现,沿着 packages/runtime-diagnostics/invariants/src/index.tsvendor/cordis/src/index.ts 和所在包的入口或服务理解状态变化,最后对照同包中与它同名或覆盖相近场景的测试。
  • 代码证据:固定提交归档实际读取结果:约 33 行;扫描到的声明包括 nameinjectapply;源码顶部原注释(英文,仅作回查线索):Package-owned invariant companion for @deepseek-ai/dsh-jobs-local. @module @deepseek-ai/dsh-jobs-local/invariant。
  • 固定版本:源码链接固定到官方提交 aa6c361a972c8369148dea7380bb5c21c24e07ec

packages/jobs/jobs-local/tests/jobs.spec.ts

  • 所属层:packages/jobs:可复用的 Harness 功能包
  • 文件角色:测试用例
  • 这个文件有什么用:它用自动化测试检查后台任务的具体场景,包括“LocalJobRegistry.start”、“preserves the SessionId brand on public owner snapshots”、“refuses to register while no job controller serves the owner”、“refuses an owner whose own composition attaches no controller”;这些断言把“应该发生什么”变成可以重复运行的证据。
  • 为什么这样设计:把测试主题“LocalJobRegistry.start”写成独立测试用例,读者可以从输入、触发动作和断言反推实现的不变量;不同回归问题也不会互相遮蔽。
  • 文件级设计证据:固定提交中扫描到的声明包括 stubAgentdisposeAgentScopeproducerharnessattachControllerIn;本地静态 import 图显示它直接依赖 6 个源文件,并被 0 个源文件直接引用。
  • 直接协作者:packages/jobs/jobs-local/README.mdpackages/core/agent/src/index.tspackages/core/scope/src/index.tspackages/core/session/src/index.ts
  • 对应测试:本文件本身就是测试用例。
  • 测试关联依据:本文件本身就是测试用例,不把同目录的其他测试冒充成它的“对应测试”。
  • 阅读顺序:先看它直接导入的被测实现 packages/core/agent/src/index.tspackages/core/scope/src/index.tspackages/core/session/src/index.ts,再读本文件的测试主题、输入和断言;最后对照测试支持和失败输出。
  • 代码证据:固定提交归档实际读取结果:约 1137 行;扫描到的声明包括 stubAgentdisposeAgentScopeproducerharnessattachControllerInwaitResolverCountstart;扫描到的测试主题包括 “LocalJobRegistry.start”、“preserves the SessionId brand on public owner snapshots”、“refuses to register while no job controller serves the owner”、“refuses an owner whose own composition attaches no controller”、“lets a controller attached without a scope serve every owner”、“rejects an empty kind, empty label, and invalid output limit”。
  • 固定版本:源码链接固定到官方提交 aa6c361a972c8369148dea7380bb5c21c24e07ec

packages/jobs/jobs-local/tests/loader-composition.spec.ts

  • 所属层:packages/jobs:可复用的 Harness 功能包
  • 文件角色:测试用例
  • 这个文件有什么用:它用自动化测试检查后台任务的具体场景,包括“jobs-local through a real Loader composition”、“applies the provider-owned admission config from a Cordis row”;这些断言把“应该发生什么”变成可以重复运行的证据。
  • 为什么这样设计:把测试主题“jobs-local through a real Loader composition”写成独立测试用例,读者可以从输入、触发动作和断言反推实现的不变量;不同回归问题也不会互相遮蔽。
  • 文件级设计证据:本次固定提交归档没有扫描到顶部注释、顶层声明或专门的结构线索;本地静态 import 图显示它直接依赖 4 个源文件,并被 0 个源文件直接引用。
  • 直接协作者:packages/jobs/jobs-local/README.mdpackages/jobs/jobs-local/src/index.tsvendor/cordis/src/index.tsvendor/include/src/index.ts
  • 对应测试:本文件本身就是测试用例。
  • 测试关联依据:本文件本身就是测试用例,不把同目录的其他测试冒充成它的“对应测试”。
  • 阅读顺序:先看它直接导入的被测实现 packages/jobs/jobs-local/src/index.tsvendor/cordis/src/index.tsvendor/include/src/index.ts,再读本文件的测试主题、输入和断言;最后对照测试支持和失败输出。
  • 代码证据:固定提交归档实际读取结果:约 66 行;扫描到的测试主题包括 “jobs-local through a real Loader composition”、“applies the provider-owned admission config from a Cordis row”。
  • 固定版本:源码链接固定到官方提交 aa6c361a972c8369148dea7380bb5c21c24e07ec

packages/jobs/jobs/src/brand.ts

  • 所属层:packages/jobs:可复用的 Harness 功能包
  • 文件角色:品牌类型
  • 这个文件有什么用:它为后台任务、品牌类型定义带语义的品牌类型,使编译器能阻止不同用途的标识符互相替换。
  • 为什么这样设计:在编译期区分语义不同的标识符,能把一类容易被普通字符串掩盖的调用错误提前暴露,而不增加运行时序列化成本。
  • 文件级设计证据:源码顶部注释把它定位为“dsh-jobs' owned branded id, carried across the registry, the model-facing control surface, and the client wire. It lives in its own leaf because the package root and ./types both reach dsh-agent through the owner and listener signatures, which a Client prog...”;固定提交中扫描到的声明包括 JobId;本地静态 import 图显示它直接依赖 1 个源文件,并被 3 个源文件直接引用。
  • 直接协作者:packages/jobs/jobs/README.mdpackages/util/brand/src/index.tspackages/host/apiproxy/src/api/jobs.schema.tspackages/host/apiproxy/src/api/jobs.tspackages/jobs/jobs/src/types.ts
  • 对应测试:间接测试线索(通过本地 import 链,非直接覆盖):apps/web/tests/background-job-list.e2e.tsexamples/headless-agent/tests/code-mode.e2e.tspackages/client/connection/tests/api-helpers.client.spec.tspackages/client/connection/tests/client-apply.client.spec.tspackages/client/connection/tests/connection.client.spec.tspackages/client/connection/tests/fixture-commands.client.spec.ts
  • 测试关联依据:固定提交源码中的本地静态 import 传递引用;这些测试通过包入口或中间模块到达本文件,不等于本文件被直接覆盖。
  • 阅读顺序:先读 packages/jobs/jobs/README.md、入口和消费者,再读当前契约,沿着 packages/host/apiproxy/src/api/jobs.schema.tspackages/host/apiproxy/src/api/jobs.tspackages/jobs/jobs/src/types.ts 看它怎样约束运行时,最后对照 apps/web/tests/background-job-list.e2e.tsexamples/headless-agent/tests/code-mode.e2e.tspackages/client/connection/tests/api-helpers.client.spec.ts
  • 代码证据:固定提交归档实际读取结果:约 28 行;扫描到的声明包括 JobId;源码顶部原注释(英文,仅作回查线索):dsh-jobs' owned branded id, carried across the registry, the model-facing control surface, and the client wire. It lives in its own leaf because the package root and ./types both reach dsh-agent through the owner and listener signatures, which a Client prog...。
  • 固定版本:源码链接固定到官方提交 aa6c361a972c8369148dea7380bb5c21c24e07ec

packages/jobs/jobs/src/index.ts

  • 所属层:packages/jobs:可复用的 Harness 功能包
  • 文件角色:模块入口
  • 这个文件有什么用:它把后台任务相关的公开能力集中导出,并决定调用者可以依赖哪些边界;调用者因此不必记住所有内部文件。
  • 为什么这样设计:入口文件把公开边界固定下来,内部文件可以继续拆分或替换;其他包只依赖入口暴露的 API,依赖方向更稳定。
  • 文件级设计证据:源码顶部注释把它定位为“The background-job Service Definition (ctx.jobs). It owns the contract for job ids, session-scoped access, lifecycle state, completion listeners, and owner cleanup while producers retain their execution resources. The process-local registry lives in @deepse...”;本地静态 import 图显示它直接依赖 3 个源文件,并被 14 个源文件直接引用。
  • 直接协作者:packages/jobs/jobs/README.mdpackages/core/agent/src/index.tspackages/jobs/jobs/src/types.tsvendor/cordis/src/index.tsapps/web/tests/background-job-list.e2e.ts
  • 对应测试:apps/web/tests/background-job-list.e2e.tspackages/host/apiproxy/tests/api-proxy-jobs.spec.tspackages/jobs/jobs-local/tests/jobs.spec.tspackages/jobs/jobs/tests/invariant.spec.tspackages/jobs/jobs/tests/service.spec.tspackages/jobs/tool-jobs/tests/tool-jobs.spec.ts
  • 测试关联依据:固定提交源码中的本地静态 import 直接引用;测试用例直接导入了这个源文件。
  • 测试支持:apps/web/tests/scaffold.tsapps/web/tests/support.ts
  • 阅读顺序:先读 packages/jobs/jobs/README.md、入口和消费者,再读当前契约,沿着 apps/web/tests/background-job-list.e2e.tspackages/host/apiproxy/src/api-proxy.tspackages/host/apiproxy/tests/api-proxy-jobs.spec.ts 看它怎样约束运行时,最后对照 apps/web/tests/background-job-list.e2e.tspackages/host/apiproxy/tests/api-proxy-jobs.spec.tspackages/jobs/jobs-local/tests/jobs.spec.ts
  • 代码证据:固定提交归档实际读取结果:约 179 行;源码顶部原注释(英文,仅作回查线索):The background-job Service Definition (ctx.jobs). It owns the contract for job ids, session-scoped access, lifecycle state, completion listeners, and owner cleanup while producers retain their execution resources. The process-local registry lives in @deepse...。
  • 固定版本:源码链接固定到官方提交 aa6c361a972c8369148dea7380bb5c21c24e07ec

packages/jobs/jobs/src/invariant.ts

  • 所属层:packages/jobs:可复用的 Harness 功能包
  • 文件角色:运行时不变量
  • 这个文件有什么用:它检查后台任务必须始终成立的条件,在错误刚出现时报告,而不是等到更深层才出现难以解释的结果。
  • 为什么这样设计:把不变量集中在一个位置,调用者和测试就能用同一条规则检查状态;错误在边界处报告,比在后续 UI 或网络请求中才暴露更容易修复。
  • 文件级设计证据:源码顶部注释把它定位为“Package-owned background-job snapshot invariants. @module @deepseek-ai/dsh-jobs/invariant”;固定提交中扫描到的声明包括 nameinjectapplyvalidateSnapshot;本地静态 import 图显示它直接依赖 4 个源文件,并被 1 个源文件直接引用。
  • 直接协作者:packages/jobs/jobs/README.mdpackages/core/agent/src/index.tspackages/jobs/jobs/src/types.tspackages/runtime-diagnostics/invariants/src/index.tspackages/jobs/jobs/tests/invariant.spec.ts
  • 对应测试:packages/jobs/jobs/tests/invariant.spec.ts
  • 测试关联依据:固定提交源码中的本地静态 import 直接引用;测试用例直接导入了这个源文件。
  • 阅读顺序:先读相关类型和事件,再读当前状态或存储实现,沿着 packages/core/agent/src/index.tspackages/jobs/jobs/src/types.tspackages/runtime-diagnostics/invariants/src/index.tspackages/jobs/jobs/tests/invariant.spec.ts 理解状态变化,最后对照 packages/jobs/jobs/tests/invariant.spec.ts
  • 代码证据:固定提交归档实际读取结果:约 57 行;扫描到的声明包括 nameinjectapplyvalidateSnapshot;源码顶部原注释(英文,仅作回查线索):Package-owned background-job snapshot invariants. @module @deepseek-ai/dsh-jobs/invariant。
  • 固定版本:源码链接固定到官方提交 aa6c361a972c8369148dea7380bb5c21c24e07ec

packages/jobs/jobs/src/types.ts

  • 所属层:packages/jobs:可复用的 Harness 功能包
  • 文件角色:类型契约
  • 这个文件有什么用:它描述后台任务中流转的数据长什么样、哪些字段必填以及各部分怎样关联,让不同模块先共享同一份约定。
  • 为什么这样设计:先把形状和规则集中声明,执行代码只负责使用已经检查过的数据;这样错误更早暴露,读代码时也有一张共同的地图。
  • 文件级设计证据:源码顶部注释把它定位为“Types shared by job producers, the registry, and controllers. The service implementation lives in ./index.ts. @module @deepseek-ai/dsh-jobs/types”;固定提交中扫描到的声明包括 JobStatusJobKindMapJobKindJobOutcomeJobStart;本地静态 import 图显示它直接依赖 3 个源文件,并被 2 个源文件直接引用。
  • 直接协作者:packages/jobs/jobs/README.mdpackages/core/agent/src/index.tspackages/core/session/src/index.tspackages/jobs/jobs/src/brand.tspackages/jobs/jobs/src/index.ts
  • 对应测试:间接测试线索(通过本地 import 链,非直接覆盖):apps/cli/tests/web-agent-presets.e2e.tsapps/web/tests/agent-preset-selection.e2e.tsapps/web/tests/background-job-list.e2e.tsapps/web/tests/sidebar-subagent-activity.e2e.tsapps/web/tests/subagent-conversation.e2e.tsexamples/headless-agent/tests/code-mode.e2e.ts
  • 测试关联依据:固定提交源码中的本地静态 import 传递引用;这些测试通过包入口或中间模块到达本文件,不等于本文件被直接覆盖。
  • 阅读顺序:先读 packages/jobs/jobs/README.md、入口和消费者,再读当前契约,沿着 packages/jobs/jobs/src/index.tspackages/jobs/jobs/src/invariant.ts 看它怎样约束运行时,最后对照 apps/cli/tests/web-agent-presets.e2e.tsapps/web/tests/agent-preset-selection.e2e.tsapps/web/tests/background-job-list.e2e.ts
  • 代码证据:固定提交归档实际读取结果:约 160 行;扫描到的声明包括 JobStatusJobKindMapJobKindJobOutcomeJobStartJobHooksJobSnapshotJobRead;源码顶部原注释(英文,仅作回查线索):Types shared by job producers, the registry, and controllers. The service implementation lives in ./index.ts. @module @deepseek-ai/dsh-jobs/types。
  • 固定版本:源码链接固定到官方提交 aa6c361a972c8369148dea7380bb5c21c24e07ec

packages/jobs/jobs/tests/invariant.spec.ts

  • 所属层:packages/jobs:可复用的 Harness 功能包
  • 文件角色:测试用例
  • 这个文件有什么用:它用自动化测试检查后台任务的具体场景,包括“job-registry invariants”、“accepts coherent current and terminal snapshots”、“rejects an incoherent record already present at installation”;这些断言把“应该发生什么”变成可以重复运行的证据。
  • 为什么这样设计:把测试主题“job-registry invariants”写成独立测试用例,读者可以从输入、触发动作和断言反推实现的不变量;不同回归问题也不会互相遮蔽。
  • 文件级设计证据:固定提交中扫描到的声明包括 setup;本地静态 import 图显示它直接依赖 6 个源文件,并被 0 个源文件直接引用。
  • 直接协作者:packages/jobs/jobs/README.mdpackages/core/agent/src/index.tspackages/core/session/src/index.tspackages/jobs/jobs/src/index.ts
  • 对应测试:本文件本身就是测试用例。
  • 测试关联依据:本文件本身就是测试用例,不把同目录的其他测试冒充成它的“对应测试”。
  • 阅读顺序:先看它直接导入的被测实现 packages/core/agent/src/index.tspackages/core/session/src/index.tspackages/jobs/jobs/src/index.ts,再读本文件的测试主题、输入和断言;最后对照测试支持和失败输出。
  • 代码证据:固定提交归档实际读取结果:约 87 行;扫描到的声明包括 setup;扫描到的测试主题包括 “job-registry invariants”、“accepts coherent current and terminal snapshots”、“rejects an incoherent record already present at installation”。
  • 固定版本:源码链接固定到官方提交 aa6c361a972c8369148dea7380bb5c21c24e07ec

packages/jobs/jobs/tests/service.spec.ts

  • 所属层:packages/jobs:可复用的 Harness 功能包
  • 文件角色:测试用例
  • 这个文件有什么用:它用自动化测试检查后台任务的具体场景,包括“JobRegistry seam”、“a concrete subclass registers as ctx.jobs and serves the abstract API”、“loading a second implementation throws (one jobs service per context — cordis standard)”、“mounting the abstract seam directly fails loudly at load (stale-composition fence)”;这些断言把“应该发生什么”变成可以重复运行的证据。
  • 为什么这样设计:把测试主题“JobRegistry seam”写成独立测试用例,读者可以从输入、触发动作和断言反推实现的不变量;不同回归问题也不会互相遮蔽。
  • 文件级设计证据:固定提交中扫描到的声明包括 StubJobRegistrySecondJobRegistry;本地静态 import 图显示它直接依赖 3 个源文件,并被 0 个源文件直接引用。
  • 直接协作者:packages/jobs/jobs/README.mdpackages/core/agent/src/index.tspackages/jobs/jobs/src/index.tsvendor/cordis/src/index.ts
  • 对应测试:本文件本身就是测试用例。
  • 测试关联依据:本文件本身就是测试用例,不把同目录的其他测试冒充成它的“对应测试”。
  • 阅读顺序:先看它直接导入的被测实现 packages/core/agent/src/index.tspackages/jobs/jobs/src/index.tsvendor/cordis/src/index.ts,再读本文件的测试主题、输入和断言;最后对照测试支持和失败输出。
  • 代码证据:固定提交归档实际读取结果:约 96 行;扫描到的声明包括 StubJobRegistrySecondJobRegistry;扫描到的测试主题包括 “JobRegistry seam”、“a concrete subclass registers as ctx.jobs and serves the abstract API”、“loading a second implementation throws (one jobs service per context — cordis standard)”、“mounting the abstract seam directly fails loudly at load (stale-composition fence)”。
  • 固定版本:源码链接固定到官方提交 aa6c361a972c8369148dea7380bb5c21c24e07ec

packages/jobs/tool-jobs/src/index.ts

  • 所属层:packages/jobs:可复用的 Harness 功能包
  • 文件角色:模块入口
  • 这个文件有什么用:它把后台任务、工具相关的公开能力集中导出,并决定调用者可以依赖哪些边界;调用者因此不必记住所有内部文件。
  • 为什么这样设计:入口文件把公开边界固定下来,内部文件可以继续拆分或替换;其他包只依赖入口暴露的 API,依赖方向更稳定。
  • 文件级设计证据:源码顶部注释把它定位为“Model-facing job_output, job_list, and job_kill tools over ctx.jobs. Loading the plugin attaches the controller required by producers. It also delivers unreported completions to the owning agent: injected into a busy owner's next step, or opening a turn on ...”;固定提交中扫描到的声明包括 nameinjectCompletionDeliveryConfigPublicJobSnapshot;本地静态 import 图显示它直接依赖 8 个源文件,并被 10 个源文件直接引用。
  • 直接协作者:packages/jobs/tool-jobs/README.mdpackages/core/agent/src/index.tspackages/core/system-prompt/src/index.tspackages/core/tools/src/index.tsexamples/headless-agent/tests/code-mode.e2e.ts
  • 对应测试:examples/headless-agent/tests/code-mode.e2e.tspackages/jobs/tool-jobs/tests/tool-jobs.spec.tspackages/shell/tool-bash/tests/integration.spec.tspackages/shell/tool-bash/tests/tools.spec.tspackages/shell/tool-pwsh/tests/integration.spec.tspackages/shell/tool-pwsh/tests/tools.spec.ts
  • 测试关联依据:固定提交源码中的本地静态 import 直接引用;测试用例直接导入了这个源文件。
  • 测试支持:packages/core/agent-loop/tests/mock-adapter.ts
  • 阅读顺序:先读 packages/jobs/tool-jobs/README.md、入口和消费者,再读当前契约,沿着 examples/headless-agent/tests/code-mode.e2e.tspackages/examples/agent-spine-demo/src/index.tspackages/jobs/tool-jobs/tests/tool-jobs.spec.ts 看它怎样约束运行时,最后对照 examples/headless-agent/tests/code-mode.e2e.tspackages/jobs/tool-jobs/tests/tool-jobs.spec.tspackages/shell/tool-bash/tests/integration.spec.ts
  • 代码证据:固定提交归档实际读取结果:约 402 行;扫描到的声明包括 nameinjectCompletionDeliveryConfigPublicJobSnapshotstatusLineapplypublicJob;源码顶部原注释(英文,仅作回查线索):Model-facing job_output, job_list, and job_kill tools over ctx.jobs. Loading the plugin attaches the controller required by producers. It also delivers unreported completions to the owning agent: injected into a busy owner's next step, or opening a turn on ...。
  • 固定版本:源码链接固定到官方提交 aa6c361a972c8369148dea7380bb5c21c24e07ec

packages/jobs/tool-jobs/src/invariant.ts

  • 所属层:packages/jobs:可复用的 Harness 功能包
  • 文件角色:运行时不变量
  • 这个文件有什么用:它检查后台任务、工具必须始终成立的条件,在错误刚出现时报告,而不是等到更深层才出现难以解释的结果。
  • 为什么这样设计:把不变量集中在一个位置,调用者和测试就能用同一条规则检查状态;错误在边界处报告,比在后续 UI 或网络请求中才暴露更容易修复。
  • 文件级设计证据:源码顶部注释把它定位为“Package-owned invariant companion for @deepseek-ai/dsh-tool-jobs. @module @deepseek-ai/dsh-tool-jobs/invariant”;固定提交中扫描到的声明包括 nameinjectapply;本地静态 import 图显示它直接依赖 2 个源文件,并被 0 个源文件直接引用。
  • 直接协作者:packages/jobs/tool-jobs/README.mdpackages/runtime-diagnostics/invariants/src/index.tsvendor/cordis/src/index.ts
  • 对应测试:没有确认到直接测试;公共入口可能仍有间接覆盖。
  • 测试关联依据:固定提交中没有找到直接或传递的本地静态 import,也没有找到明显的同包同名测试;公共入口可能仍有间接覆盖。
  • 阅读顺序:先读相关类型和事件,再读当前状态或存储实现,沿着 packages/runtime-diagnostics/invariants/src/index.tsvendor/cordis/src/index.ts 和所在包的入口或服务理解状态变化,最后对照同包中与它同名或覆盖相近场景的测试。
  • 代码证据:固定提交归档实际读取结果:约 30 行;扫描到的声明包括 nameinjectapply;源码顶部原注释(英文,仅作回查线索):Package-owned invariant companion for @deepseek-ai/dsh-tool-jobs. @module @deepseek-ai/dsh-tool-jobs/invariant。
  • 固定版本:源码链接固定到官方提交 aa6c361a972c8369148dea7380bb5c21c24e07ec

packages/jobs/tool-jobs/tests/tool-jobs.spec.ts

  • 所属层:packages/jobs:可复用的 Harness 功能包
  • 文件角色:测试用例
  • 这个文件有什么用:它用自动化测试检查后台任务、工具的具体场景,包括“tool-jobs setup”、“attaches the job controller on load and detaches it with the fiber”、“rejects a config whose default wait exceeds the cap”、“defaults delivery to wakeup and rejects an unknown lane”;这些断言把“应该发生什么”变成可以重复运行的证据。
  • 为什么这样设计:把测试主题“tool-jobs setup”写成独立测试用例,读者可以从输入、触发动作和断言反推实现的不变量;不同回归问题也不会互相遮蔽。
  • 文件级设计证据:固定提交中扫描到的声明包括 setupfakeAgentdetachAgentdisposeAgentScopeproducer;本地静态 import 图显示它直接依赖 10 个源文件,并被 0 个源文件直接引用。
  • 直接协作者:packages/jobs/tool-jobs/README.mdpackages/core/agent/src/index.tspackages/core/scope/src/index.tspackages/core/session/src/index.ts
  • 对应测试:本文件本身就是测试用例。
  • 测试关联依据:本文件本身就是测试用例,不把同目录的其他测试冒充成它的“对应测试”。
  • 阅读顺序:先看它直接导入的被测实现 packages/core/agent/src/index.tspackages/core/scope/src/index.tspackages/core/session/src/index.ts,再读本文件的测试主题、输入和断言;最后对照测试支持和失败输出。
  • 代码证据:固定提交归档实际读取结果:约 890 行;扫描到的声明包括 setupfakeAgentdetachAgentdisposeAgentScopeproducercalltextsettleTasks;扫描到的测试主题包括 “tool-jobs setup”、“attaches the job controller on load and detaches it with the fiber”、“rejects a config whose default wait exceeds the cap”、“defaults delivery to wakeup and rejects an unknown lane”、“rejects a wake budget that cannot bound anything”、“renders status lines with and without producer detail”。
  • 固定版本:源码链接固定到官方提交 aa6c361a972c8369148dea7380bb5c21c24e07ec