@hy-sde-org dsh-graph-stream
英语| 中文
总结
dsh-graph-stream 是Agent图的派生层。它层层叠叠 @hy-sde-org/dsh-graph-control (持久决策存储)和拥有 可以从提交的行重新计算的所有内容:工作状态投影、记录折叠、跟踪/路线派生、准备意图、输入切换和单次飞行协调驱动程序(AgentGraphCoordinator),它沿着Maka编写的驱动循环(供应→监督→选择→渲染→执行)对该存储。
拆分遵循Maka的一个硬性规则:存储是权威,流层除了通过存储自己的commit/claim/provision方法外,永远不会写入任何内容。这里的每一个投影都是确定的和纯粹的——重新计算它永远不会开始工作;允许和执行是存储密封的(在它观察到的时间表修订时,使用预先分配的转弯/运行身份进行索赔)。
id是确定的sha256切割为32十六进制字符(graph_intent_…, graph_operator_…, graph_edge_…, graph_route_…, graph_record_…, graph_claim_…),因此重播在构造上是幂等的。标识比较使用UTF-16代码单元顺序(compareAgentGraphIdentity),而不是语言环境比较。
这个包不提供任何工具、提示符或插件行——执行器适配器和管理器工具会使用它。
目录表
使用这个包
import Storage, { storageBackendServiceKey } from '@deepseek-ai/dsh-storage'
import { GraphControlStore } from '@hy-sde-org/dsh-graph-control'
import { AgentGraphCoordinator } from '@hy-sde-org/dsh-graph-stream'
const backend = await ctx[storageBackendServiceKey('sqlite')]
const unit = await backend.kv.open(GraphControlStore.descriptor)
const store = await GraphControlStore.open(unit)
const coordinator = new AgentGraphCoordinator(graphId, {
store,
executor: { provisionOperator, runClaimedAgentGraphIntent, stopSession },
recordSource,
newId,
})
await coordinator.scheduleUpdate({ graphId, addWork: [work] }) // commits, then wakes the drive
const result = await coordinator.reconcileAndWait() // runs one drive to idle
理解实现
确定性恒等式和排序
stableHash(value) = sha256: +十六进制的规范化JSON(排序对象键, undefined/函数/→象征 "[undefined]", bigint→数值型字符串; required/enum 排序为 localeCompare,日期→ISO)。所有id都使用前32个十六进制字符。 compareAgentGraphIdentity UTF-16代码单元顺序在进程中是稳定的吗 localeCompare.
预测
- 安排投影 (
projectAgentGraphSchedule):将仅追加的更新日志折叠到模型可见的工作视图中;验证连续性(从1开始的修订),完成后没有更新,没有重复的工作id,错误的图id被拒绝。stopped赢了superseded. - 记录褶皱 (
readCommittedAgentGraphProjection):从每个(操作员,会话)提交的事件中派生仅引用的记录;跳过部分事件;每次激活最多一个终端记录;确定的订单。 - 跟踪 (
validateAgentGraphTraceTopology,buildAgentGraphTraceSnapshot):验证DAG(重复的id /端点,自循环,未知操作符,通过Kahn的循环)并派生出一条路由(记录×传出边)。 - 准备 (
buildAgentGraphReadinessSnapshot): map策略-每条路由通过声明的传入边缘接收一个意图,并根据触发记录进行密封(policyFingerprint,readinessContextFingerprint,graph_intent_…通过稳定哈希)。 - 切换 (
hydrateAgentGraphInputHandoffs,renderAgentGraphScheduledWorkPrompt):解析有界结论文本(16 KiB/条,共48 KiB;…省略号(对代码点进行二进制搜索)并呈现操作符提示符:指令+GRAPH_OPERATOR_HANDOFF_PROTOCOL+<agent_graph_input_handoffs>与<逃出来的一样\u003c. 记录保持仅供参考;文本仅在呈现时解析。
和解和协调者
reconcileAgentGraphSchedule 走Maka的阶段:A提供操作符→B派生主管意图→C选择(现有索赔总是;新的上限) maxNewActivations、过剩→ activation_limit)→D呈现(全部或失败)→E执行(在修订时索赔→运行 admitExecution =在修订时开始执行)。状态: reconciled | waiting | limit_reached | failed | cancelled | stale. applyScheduleStops 替换(status: 'superseded')、取消索赔和批量停止会话。
AgentGraphCoordinator 是流程本地单次飞行驱动程序: scheduleUpdate 提交一行然后唤醒驱动器; reconcileAndWait 恰好连接一个驱动器; recover 重新启动后,以非空调度恢复图; stop/wake/isClosed 表面相同的生命周期。当工作或停止的目标仍然存在时,驱动器重新运行,并将现有的索赔视为已经分派(执行者根据索赔id进行重复)。
遗嘱执行人缝
export interface AgentGraphExecutor {
provisionOperator(request: AgentGraphOperatorProvisionRequest): Promise<AgentGraphOperatorProvisionResult | undefined>
runClaimedAgentGraphIntent(input: AgentGraphRunClaimedIntentInput): Promise<void>
stopSession(sessionId: string, opts?: { reason?: string }): Promise<void>
}
协调器从不直接调用提供者——执行器包提供子代理/工作树支持的实现。
进一步的探索
@hy-sde-org/dsh-graph-control:该层折叠的持久行。src/reconcile.ts/src/coordinator.ts:驱动回路和状态推导。src/hash.ts/src/identity.ts:每个id和指纹所依赖的规范化和排序原语。tests/graph-stream.spec.ts/tests/reconcile.spec.ts:投影、验证、切换和端到端驱动场景,针对真实的sqlite支持的存储。
模型经验
该包是纯TypeScript,具有狭窄的、单一职责的模块,没有环境状态。类型是显式的;结果是普通数据(除了协调器之外,没有跨模块边界的类实例)。错误进行 reason 验证失败和存储冲突错误的代码不加更改地传播。
已知的限制和延迟的工作
- 准备策略类型:
map只有- - - - - -all_settled而管理就绪类型则被推迟到管理工具层。 - 没有客户端投影/检查点(
onCheckpoint);没有工具视图分页;住院医师是不可能的。 - 映射策略意图是派生的,但不是由调和器自动分派的——它们会出现在管理器工具上。
- 唱片的形状是带有出处的复制(细长),故意偏离了Maka的18面全唱片;流层永远不会改变存储的记录。
- 协调器是进程本地的:持有相同图存储的另一个进程不会自动唤醒这个驱动程序(唤醒传递是)
dsh-graph-wakes)。