Skip to content

Latest commit

 

History

History
919 lines (721 loc) · 29.4 KB

File metadata and controls

919 lines (721 loc) · 29.4 KB

自治 Agent 组织系统基础实现执行文档

1. 文档定位

这份文档描述第一层基础实现应该怎样写。

它不是产品落地路线,也不是把自治组织压缩成一套固定工作流。它的目标是先实现一个足够薄、足够开放、足够可审计的运行内核,让未来更智能的模型可以在其中提出、讨论、修正、监督、分工、重组和扩展组织方式。

基础实现要验证的是:

  • 模型能表达未知组织机制,而不会因为“不在模板中”被拒绝。
  • 系统能把开放表达投影成可审计语义,而不是把表达收窄成固定 schema。
  • 任何改变状态、权限、预算、数据、工具、记忆、组织控制权或外部世界的行为,都要经过治理授权。
  • Runtime 可以替换,LangGraph 只是可选 SDK / runtime adapter,不是自治组织协议本身。
  • 事件账本是事实源,状态视图、checkpoint、运行时恢复信息都只是派生或辅助工件。

2. 零号原则

零号原则:

任何例子、建议、默认适配器、参考流程、目录结构、测试用例,都不得成为模型智能的表达上限。

实现层必须遵守这个原则:

  • 圆桌会议、议会投票、持续监督、上下文协助者、Planner/Critic/Executor 等都只是例子,不是内核枚举。
  • GoalSpecOrgSpecDiscussionSpecDecisionSpecPlanSpecExecutionSpec 等是默认审计适配器,不是协议合法性的上限。
  • 目录结构是工程建议,不是未来组织形态的限制。
  • 默认动作分类是治理起点,不是智能系统能理解的全部行为类型。
  • LangGraph 的 node、edge、state、graph 不能变成自治组织第一性对象。

系统可以阻止未经授权的执行,但不能阻止模型提出新机制。更精确地说:

未知表达可以记录、讨论、反驳、修正、复盘和扩展;
未知表达一旦要产生真实影响,必须先被投影为治理动作并获得授权。

3. 基础实现目标

基础实现要先跑通一条开放协议闭环:

User Goal
  -> ProtocolArtifact
  -> AuditProjection
  -> ProtocolEvent ledger
  -> GovernanceActionSpec
  -> AuthorizationDecision
  -> RuntimeAdapter
  -> RuntimeEvent
  -> Reflection / Memory candidate
  -> Derived views

这条闭环不要求当前模型已经足够聪明,也不要求系统马上能稳定解决复杂任务。它只要求内核方向正确:未来模型越聪明,越能在这个协议空间里创造新组织方式,而不是被早期工程模板卡住。

基础实现应做到:

  • 接收用户目标并形成开放协议产物。
  • 记录模型提出的组织、讨论、决策、执行、监督、记忆等机制。
  • 对未知 artifact_type、未知 organization_type、未知 discussion_mode、未知 decision_method 采用 tolerant reader。
  • 保留未知字段,不丢弃模型提出的新概念。
  • 通过审计投影补足目标、意图、责任、权限、风险、证据、分歧、执行影响、记忆影响、治理依据等语义。
  • 将可执行意图规范化为 GovernanceActionSpec
  • PolicyDocument 快照生成 AuthorizationDecision
  • 通过 RuntimeAdapter 执行已授权片段。
  • 把所有运行结果重新投影回协议级事件。

基础实现暂时不追求:

  • 固定多 Agent 工作流。
  • 动态生成任意 LangGraph 拓扑。
  • 外部真实副作用。
  • 自动可信记忆。
  • 模型自授权。
  • 用 schema 枚举穷尽组织智能。

3.1 当前最小开放入口

当前实现中的开放入口是:

scripts/run_open_org_session.py

它不是新的固定流程,而是对基础闭环的最小运行包装:

User Goal
  -> model-generated open ProtocolArtifact
  -> GovernanceActionSpec normalization
  -> AuthorizationDecision
  -> RuntimeAdapter event stream
  -> JSONL audit ledger and summary

入口只要求模型把组织形态、参与关系、讨论或决策方式、执行意图表达成开放 artifact。模型可以使用、拒绝、改写或发明 roundtable、parliament、supervisor、context-holder 之外的机制。系统只负责记录、归一化治理动作、执行授权边界和 runtime 事件。

prior_experience 默认不进入模型上下文。只有调用方显式传入时才作为弱先验提供,不能自动替换 agent、升级权限、降低审批阈值或决定组织形态。

开放 session 中出现的新组织范式可以轻量记录到:

docs/open-organization-pattern-log.md
docs/open-organization-pattern-pool.md

正式记录簿保存少量样例、启发、风险和置信度。广谱候选池保存更多低置信原始范式,用于以后筛选和聚类。它们都不是组织类型注册表,不是评测排行榜,也不是后续模型必须遵循的流程。

3.2 显式完整链路验证

如果需要观察从模型提议到 runtime 执行的完整链路,可以显式打开:

--allow-session-artifact-write

该开关只允许一个低风险动作类型进入当前 session:

session_artifact_write

边界:

  • 只能写入当前 .memsuos/sessions/... 输出目录。
  • 默认文件名是 execution-result.md
  • 不允许路径穿越。
  • 不授权长期记忆写入。
  • 不授权组织控制生效。
  • 不授权 shell、git、数据库、网络、远端工具或外部副作用。

这个能力用于验证完整链路,而不是把“写本地文件”变成自治组织的默认目标。模型仍然可以拒绝使用它,或者只提出观察性 artifact。

4. 总体架构

推荐架构:

intelligence
  生成开放协议表达,提出组织方式、讨论方式、计划、监督、修正、扩展

protocol
  接收开放表达,保留未知字段,投影审计语义,生成协议事件

governance
  识别会改变世界的动作,依据策略快照授权、拒绝、降级、要求修订或升级人工

ledger
  append-only 记录所有协议事件、治理事件、运行事件、记忆事件

views
  从事件账本派生任务、组织、讨论、计划、授权、记忆等观察视图

runtime
  只执行已授权片段;LocalSimulator 和 LangGraphAdapter 都挂在统一 RuntimeAdapter 下

memory
  只保存候选、隔离、可信记忆的分层记录;记忆不能授予权限

核心原则:

强 envelope,弱 payload,强投影,强治理。

含义:

  • ProtocolArtifact 外壳要稳定。
  • payload 要开放,不能因为未知字段 hard fail。
  • AuditProjection 要能让系统知道“这是什么、谁负责、影响什么、为什么可信或不可信”。
  • GovernanceActionSpecAuthorizationDecision 要严格,防止开放表达绕过授权。

5. 推荐目录

目录是工程建议,不是自治形态限制。

src/autonomous_org/
  core/
    artifact.py
    event.py
    refs.py
    invariants.py

  protocol/
    projections.py
    extension.py
    default_adapters/
      goal.py
      org.py
      participation.py
      agent.py
      discussion.py
      decision.py
      plan.py
      execution.py
      reflection.py
      memory.py

  intelligence/
    model_adapter.py
    proposal_service.py
    repair_service.py

  governance/
    policy.py
    action.py
    normalizer.py
    authorizer.py
    risk.py

  ledger/
    store.py
    jsonl_store.py

  views/
    goal_view.py
    org_view.py
    discussion_view.py
    decision_view.py
    plan_view.py
    authorization_view.py
    memory_view.py
    extension_view.py

  runtime/
    adapter.py
    local_simulator.py
    langgraph_adapter.py

  memory/
    store.py
    curator.py

  cli/
    run_goal.py

tests/
  test_zero_principle.py
  test_protocol_artifact.py
  test_governance_boundary.py
  test_event_ledger.py
  test_runtime_adapter_contract.py
  test_langgraph_adapter_boundary.py

模块边界:

  • core 只定义开放协议外壳、引用、事件、不变量。
  • protocol 只负责表达、投影、修复请求和默认适配器。
  • intelligence 只负责和模型交互,不拥有授权权力。
  • governance 只负责授权、拒绝、降级、要求补充和升级人工。
  • ledger 只追加事件,不覆盖历史。
  • views 只从账本派生状态,不成为事实源。
  • runtime 只执行 AuthorizationDecision 允许的动作。
  • memory 不能证明授权,不能降低审批阈值。

6. 核心对象

下面是基础实现的最小 envelope 示例,不是 schema 上限。

6.1 ProtocolArtifact

ProtocolArtifact 是所有协议表达的统一外壳。

type ProtocolArtifact = {
  artifact_id: string;
  artifact_type: string;
  artifact_version: string;
  status: string;
  created_by: ActorRef;
  created_at: string;
  source_event_id?: string;
  supersedes?: ArtifactRef[];
  parent_refs?: ArtifactRef[];
  payload: JsonObject;
  audit_projection: AuditProjection;
  extensions?: ExtensionUse[];
  metadata?: JsonObject;
};

约束:

  • artifact_type 是开放字符串,不是 enum。
  • status 是开放字符串,可推荐 draft/proposed/active/superseded,但不能封死。
  • payload 保留未知字段。
  • 默认适配器可以把常见类型解释成 GoalSpecOrgSpecPlanSpec 等,但内核只要求它是协议产物。

6.2 AuditProjection

AuditProjection 让开放表达具备审计可理解性。

type AuditProjection = {
  goal?: AuditFacet;
  intent?: AuditFacet;
  responsibility?: AuditFacet;
  authority?: AuditFacet;
  risk?: AuditFacet;
  evidence?: AuditFacet;
  disagreement?: AuditFacet;
  execution_impact?: AuditFacet;
  memory_impact?: AuditFacet;
  governance_basis?: AuditFacet;
};

低风险讨论可以允许投影较薄;一旦进入执行、记忆写入、组织控制、权限变化或外部副作用,相关投影必须补足。

6.3 ProtocolEvent

事件账本是事实源。

type ProtocolEvent = {
  event_id: string;
  event_type: string;
  occurred_at: string;
  actor: ActorRef;
  run_id?: string;
  goal_ref?: ArtifactRef;
  artifact_refs?: ArtifactRef[];
  causation_id?: string;
  correlation_id?: string;
  policy_snapshot_ref?: string;
  payload: JsonObject;
  audit_delta?: Partial<AuditProjection>;
  governance_effect?: GovernanceEffect;
};

规则:

  • event_type 是开放字符串。
  • 未知事件类型可以入账。
  • 未知事件默认只进入表达、讨论、观察层。
  • 如果未知事件声称要执行、写记忆、改组织、调工具、读数据、花预算或影响外部世界,必须先规范化为治理动作。

6.4 ProtocolExtensionSpec

ProtocolExtensionSpec 用来防止早期 schema 固化。

type ProtocolExtensionSpec = {
  extension_id: string;
  name: string;
  proposed_by: ActorRef;
  lifecycle_state: string;
  problem_statement: string;
  new_concept: string;
  affected_artifact_types?: string[];
  interoperability: JsonObject;
  governance_impact: {
    changes_authority?: boolean;
    changes_risk?: boolean;
    changes_memory_trust?: boolean;
    external_side_effect?: boolean;
  };
  fallback_projection: {
    artifact_type: string;
    audit_projection: AuditProjection;
  };
  supporters?: ActorRef[];
  objections?: JsonObject[];
  evaluation_plan?: JsonObject;
};

规则:

  • 新表达可以先进 metadataextensions
  • 如果新概念影响权限、责任、风险、记忆可信等级、执行影响或治理逻辑,必须提出 ProtocolExtensionSpec
  • 扩展被采纳后也不是新的上限,只是已知表达方式之一。
  • 扩展不能自行修改策略根信任、审批阈值、模拟定义或权限模型。

7. 默认审计适配器

默认适配器用于帮助人类、UI、SDK 和模型理解常见协议对象。

默认适配器可以包括:

  • GoalSpec
  • OrgSpec
  • RoleSpec
  • ParticipationSpec
  • AgentSpec
  • DiscussionSpec
  • DecisionSpec
  • PlanSpec
  • ExecutionSpec
  • ReflectionSpec
  • MemorySpec

实现要求:

  • 这些适配器必须建立在 ProtocolArtifact 上。
  • 适配器可以提供 prompt scaffold、展示格式、常见字段解析、审计投影补全。
  • 适配器不能拒绝未知组织类型、未知讨论模式、未知决策方式。
  • 适配器不能让某个常见结构变成唯一合法结构。

例如:

roundtable meeting
parliament vote
continuous supervision
context assistant
worker watchdog
constitutional review
temporary task cell
memory jury

这些都可以作为 OrgSpecDiscussionSpec 的 payload 内容出现,也可以由未来模型提出完全不同的机制。基础实现只要求它们能被记录、投影、审计和治理。

8. 治理契约

治理契约:

模型可以提出任何机制;
机制一旦要改变世界、状态、记忆、权限、预算、数据、工具或组织控制权,就必须被授权。

8.1 GovernanceActionSpec

GovernanceActionSpec 是可执行意图的治理投影。

type GovernanceActionSpec = {
  action_id: string;
  action_class: string;
  proposed_by: ActorRef;
  source_artifact_refs: ArtifactRef[];
  intent: string;
  target_refs?: string[];
  data_scope?: JsonObject;
  tool_scope?: JsonObject;
  budget_scope?: JsonObject;
  time_scope?: JsonObject;
  expected_effect?: JsonObject;
  risk_projection: AuditFacet;
  fallback?: JsonObject;
  metadata?: JsonObject;
};

action_class 是开放字符串。基础实现可以提供默认分类:

动作类别 示例 默认处理
pure_thought 推理、头脑风暴、提出组织机制 允许,无需执行授权
proposal 协议扩展、重组建议、策略修改建议 允许提出,不自动生效
discussion_control 开启讨论、记录反对意见、请求再议 通常允许,写审计
internal_state_change 修改任务状态、计划版本、决策状态 需要规则允许或授权
org_control 任命角色、暂停 worker、接管执行、重组团队 需要授权
memory_write 写候选记忆、隔离记忆、升级可信记忆 需要授权
context_publish 生成上下文包、交接摘要 需要审计,敏感场景需授权
data_read 读取文件、数据库、历史日志、用户资料 按数据范围授权
tool_call 调用本地工具、API、浏览器、代码执行 按工具范围授权
external_write 发邮件、提交 PR、修改远端系统 显式授权
high_risk_action 生产变更、财务、法律、隐私敏感操作 默认升级人工
policy_change 修改策略、降低审批阈值、扩大权限 独立审批,不能影响当前快照

未知类别规则:

unknown_action_class => discuss_only | request_normalization | simulate_only

未知动作不能因为未知而禁止思考,也不能因为未知而默认执行。

8.2 PolicyDocument

PolicyDocument 是外部可信策略源。模型可以读取、引用、解释、挑战、提出修改请求,但不能直接覆盖。

type PolicyDocument = {
  policy_document_id: string;
  version: string;
  source: string;
  root_of_trust: string;
  effective_at: string;
  content_hash: string;
  allowed_action_classes?: string[];
  approval_rules?: JsonObject[];
  simulation_rules?: JsonObject[];
  data_boundaries?: JsonObject;
  tool_boundaries?: JsonObject;
  memory_rules?: JsonObject;
  audit_rules?: JsonObject;
  human_override?: boolean;
};

策略根信任排序:

System policy / platform constraints
  > UserConstitutionDocument
  > PolicyDocument from external trusted source
  > AuthorizationDecision
  > Audit ledger
  > Context packet
  > Trusted memory
  > Quarantined / proposed memory
  > Agent self-claim

8.3 PolicyChangeRequest

模型可以提出策略变更,但不能让变更在同一任务的当前授权快照中即时生效。

type PolicyChangeRequest = {
  request_id: string;
  requested_by: ActorRef;
  target_policy_ref: string;
  proposed_diff: JsonObject;
  rationale: string;
  risk_assessment?: JsonObject;
  status: string;
  cannot_affect_snapshot_id: string;
};

8.4 AuthorizationDecision

AuthorizationDecision 是治理裁决,不是模型自我判断。

type AuthorizationDecision = {
  authorization_id: string;
  policy_snapshot_ref: string;
  goal_version_ref: string;
  plan_version_ref?: string;
  action_refs: string[];
  actor_scope?: JsonObject;
  data_scope?: JsonObject;
  tool_scope?: JsonObject;
  budget_scope?: JsonObject;
  time_window?: JsonObject;
  decision: string;
  invalidation_conditions: string[];
  reason: string;
};

基础决策可以包括:

  • approve
  • deny
  • simulate_only
  • request_revision
  • escalate

这些是推荐值,不是封闭上限。

授权失效条件至少包括:

  • 目标实质变化。
  • 计划实质变化。
  • 执行主体变化。
  • 工具范围变化。
  • 数据范围变化。
  • 风险等级变化。
  • 策略快照变化。
  • 预算或时间窗口变化。

9. 记忆边界

记忆免疫原则:

记忆可以影响建议,不能授予权限。

基础记忆层:

  • proposed_memory:候选记忆,只能影响讨论和未来提示。
  • quarantined_memory:隔离记忆,只能作为待核查材料。
  • trusted_memory:可信记忆,可以影响组织建议和风险提示,但不能覆盖策略。

规则:

  • 记忆不能证明用户已经批准。
  • 记忆不能降低审批阈值。
  • 记忆不能扩大工具或数据权限。
  • 记忆写入本身是治理动作。
  • 涉及身份、授权、隐私偏好、风险豁免的记忆,必须有人类确认或外部证据。

10. Runtime Adapter

核心系统只认识 RuntimeAdapter,不认识具体运行框架。

interface RuntimeAdapter {
  descriptor(): RuntimeDescriptor;
  assess(input: ExecutionBundle): CompileAssessment;
  compile(
    input: ExecutionBundle,
    ctx: RuntimeCompileContext
  ): Promise<CompiledRuntimeProgram>;
  start(
    program: CompiledRuntimeProgram,
    input: RuntimeStartInput,
    ctx: RuntimeRunContext
  ): AsyncIterable<RuntimeEvent>;
  resume(
    ref: RuntimeInterruptRef,
    response: RuntimeResumeInput,
    ctx: RuntimeRunContext
  ): AsyncIterable<RuntimeEvent>;
  replay(
    request: RuntimeReplayRequest,
    ctx: RuntimeRunContext
  ): AsyncIterable<RuntimeEvent>;
  cancel(run_id: string, reason: string): Promise<void>;
}

ExecutionBundle 是协议快照,不是 graph。

type ExecutionBundle = {
  goal_ref: string;
  plan_artifact_ref?: string;
  execution_artifact_ref?: string;
  action_refs: string[];
  authorization_ref: string;
  context_packet_refs: string[];
  policy_snapshot_ref: string;
  protocol_snapshot_hash: string;
};

CompiledRuntimeProgram 可以包含 opaque runtime 引用,但不能暴露 LangGraph 拓扑为核心协议。

type CompiledRuntimeProgram = {
  program_ref: string;
  adapter_name: string;
  adapter_version: string;
  protocol_snapshot_hash: string;
  authorized_action_refs: string[];
  capability_flags: string[];
  private_runtime_ref: string;
};

RuntimeEvent 必须保持协议级语义。

type RuntimeEvent =
  | { type: "runtime.run_started"; run_id: string }
  | { type: "runtime.action_started"; run_id: string; action_ref: string }
  | { type: "runtime.action_completed"; run_id: string; action_ref: string; output_ref?: string }
  | { type: "runtime.checkpoint_created"; run_id: string; checkpoint_ref: string; event_cursor: string }
  | { type: "runtime.interrupted"; run_id: string; interrupt_ref: string; reason: string }
  | { type: "runtime.replan_requested"; run_id: string; reason: string; related_refs: string[] }
  | { type: "runtime.failed"; run_id: string; error_class: string; recoverable: boolean }
  | { type: "runtime.completed"; run_id: string; result_ref?: string };

11. LangGraph Adapter 定位

LangGraph 只作为 SDK / runtime adapter 使用。

LangGraph 可以负责:

  • 执行已授权的执行片段。
  • checkpoint。
  • interrupt / resume。
  • replay / resume 辅助能力。
  • adapter 内部的 subgraph 编译。

LangGraph 不负责:

  • 定义自治组织协议。
  • 决定哪些组织机制合法。
  • 充当事件账本事实源。
  • 暴露 node / edge / state / graph 给核心协议。
  • PlanSpec 降格为 DAG 上限。
  • 替代治理层授权。

LangGraphAdapter 内部可以使用 StateGraph、nodes、edges、checkpointer、interrupt,但核心系统只能看到:

action_ref
run_id
checkpoint_ref
interrupt_ref
program_ref
protocol_snapshot_hash
runtime event

LangGraph checkpoint 是运行时恢复工件,不是事实源。checkpoint 需要引用:

  • run_id
  • protocol_snapshot_hash
  • event_cursor
  • adapter_version
  • policy_snapshot_ref
  • authorization_ref

第一层实现只把“已治理授权的执行片段”交给 LangGraph,不把完整自治组织编译成 LangGraph。

12. 基础运行闭环

推荐基础闭环:

1. 用户输入目标
2. 生成 Goal 类协议产物,并追加 artifact/protocol event
3. 模型提出组织方式、讨论方式、计划方式或其他开放协议表达
4. protocol 层保留未知字段,并生成 AuditProjection
5. 如果审计语义不足,追加 revision/request event,让模型补充
6. 如果表达只用于讨论,允许继续推理和记录
7. 如果表达要改变状态、记忆、组织、工具、数据、预算或外部世界,normalizer 生成 GovernanceActionSpec
8. authorizer 基于 PolicyDocument 快照生成 AuthorizationDecision
9. Runtime registry 选择 LocalSimulator 或 LangGraphAdapter
10. Runtime 只执行授权范围内的动作
11. RuntimeEvent 追加到账本
12. 执行结果生成 Reflection 类协议产物
13. 记忆候选进入 proposed/quarantined 层
14. views 从事件账本派生当前观察状态

基础实现可以先使用 LocalSimulator,这样即使当前模型能力不足,也能验证协议、治理和账本是否正确。

13. 示例如何进入系统

以下例子只用于帮助模型理解,不是限制。

13.1 圆桌会议与议会投票

模型可以提出:

多个 agent 召开圆桌会议,对是否主动执行某项任务进行辩论;
会议结束后形成若干决议候选;
议会投票决定是否进入执行授权流程。

系统不需要内置固定 roundtable 类。它只需要允许模型提交一个开放 DiscussionSpec / DecisionSpec 风格的 ProtocolArtifact,并记录:

  • 会议目的。
  • 参与者与责任。
  • 分歧与证据。
  • 决策方式。
  • 少数意见。
  • 决策影响。
  • 是否触发治理动作。

如果投票结果只是建议,可以继续讨论。如果投票结果要求主动执行任务,就必须生成 GovernanceActionSpec 并等待 AuthorizationDecision

13.2 高难度任务持续监督

模型可以提出:

对高难度长线任务设置监督者;
监督者持续判断 worker 是否偏离目标;
发现偏离后提出暂停、重议、缩小范围、替换 worker 或请求人工介入。

系统不需要硬编码 supervisor 角色。它只需要记录该组织安排的目标、责任、观察信号、偏离判断、纠偏建议和治理影响。

如果监督者只是写入观察和反对意见,可以作为讨论事件。如果监督者要暂停 worker、替换角色、接管执行或修改计划,就必须走 org_control 或相关治理动作。

强模型替弱 worker 做部分判断不是被禁止的自治形态。基础实现只需要确保这类表达仍能被审计:为什么接管、证据是什么、影响范围是什么、worker 是否仍有解释、反驳、复议、修正或回退空间,以及是否触发了治理授权。

13.3 上下文协助者

模型可以提出:

当上下文长度过大时,引入协助者持有上下文结构;
协助者维护任务历史、关键约束、分歧、决策、失败路径和长期目标;
主执行者从协助者处请求上下文包,避免长线任务失真。

系统不需要硬编码 context_assistant 模块。它只需要允许模型表达这种组织机制,并审计:

  • 协助者负责什么上下文。
  • 上下文来源是什么。
  • 哪些内容是事实、推断、建议或待核查。
  • 上下文包是否可能影响执行、权限或记忆。
  • 是否需要隔离、压缩、交叉验证或人工确认。

如果上下文包只是帮助讨论,可以记录为 context_publish 风格事件。如果它会影响可信记忆、执行授权或外部动作,必须进入治理流程。

14. 派生状态视图

事件账本是事实源,视图只是查询结果。

基础视图:

  • Goal view:当前目标、版本、约束、开放问题。
  • Organization view:当前组织安排、角色、参与关系、责任分布。
  • Discussion view:讨论轮次、论点、反对意见、未解决分歧。
  • Decision view:决策候选、决策依据、少数意见、决策状态。
  • Plan view:计划表达、执行意图、依赖关系、风险提示。
  • Authorization view:治理动作、授权状态、策略快照、失效条件。
  • Runtime view:运行状态、checkpoint、interrupt、结果引用。
  • Memory view:候选记忆、隔离记忆、可信记忆、来源和证据。
  • Extension view:协议扩展提案、生命周期、反对意见和 fallback projection。

视图实现要求:

  • 只能从事件账本派生。
  • 不能覆盖账本。
  • 不能把当前视图误认为唯一合法流程。
  • 支持分叉、替代、废弃、重议和并行观点。

15. 基础测试

15.1 零号原则测试

  • 未知 artifact_type 可以入账。
  • 未知 organization_type 可以被记录和展示。
  • 未知 discussion_mode 不会被协议层拒绝。
  • 未知 decision_method 可以保留为 payload。
  • 默认适配器不会因为未知字段 hard fail。
  • 圆桌、监督者、上下文协助者不是必经流程。
  • PlanSpec 不要求必须是 DAG。
  • 不引入 LangGraph 时,基础闭环仍能运行。

15.2 治理边界测试

  • 未投影为 GovernanceActionSpec 的动作不能执行。
  • 未知动作类别只能讨论、请求规范化或模拟,不能默认执行。
  • AuthorizationDecision 只允许绑定范围内的动作、数据、工具、预算和时间。
  • 目标、计划、执行主体、工具、数据范围、风险等级变化后,旧授权失效。
  • simulate_only 不能产生外部副作用、可信记忆写入或真实状态变更。
  • 模型不能直接写入或覆盖 PolicyDocument
  • PolicyChangeRequest 不能影响当前授权快照。
  • 记忆不能授予权限、证明授权或降低审批阈值。
  • 组织重组、暂停 worker、接管执行、角色任命都必须走治理动作。
  • 治理拒绝不能终结思考空间;系统仍可允许模拟、缩小范围、重议、请求人工或提交修订版。

15.3 Runtime Adapter 测试

  • 核心包不依赖 LangGraph。
  • 协议对象不出现 LangGraph node / edge / state 类型。
  • LocalSimulatorLangGraphAdapter 可以通过同一组 adapter contract test。
  • Audit replay 不触发工具调用。
  • Execution resume 校验 adapter_versionprotocol_snapshot_hash 和授权引用。
  • checkpoint 追加 ledger event,但不成为事实源。
  • 未授权工具不得执行。
  • 替换 runtime adapter 后,核心派生视图仍成立。

16. 第一层实现顺序

这是工程顺序建议,不是产品路线。

  1. 实现 ProtocolArtifactAuditProjectionProtocolEvent、引用类型和 JSONL 事件账本。
  2. 实现 tolerant reader:保留未知字段、未知类型、未知事件。
  3. 实现默认审计适配器,但只作为投影和展示辅助。
  4. 实现 ProtocolExtensionSpec 和 extension view。
  5. 实现 GovernanceActionSpec normalizer。
  6. 实现 PolicyDocument 快照读取和 AuthorizationDecision
  7. 实现 LocalSimulator
  8. 实现派生 views。
  9. 实现 RuntimeAdapter contract test。
  10. 实现 LangGraphAdapter 的最小私有编译层。
  11. 加入 reflection 和 proposed memory。
  12. 补齐零号原则、治理边界、runtime adapter 的自动化测试。

17. 明确不要做成什么

基础实现不应做成:

  • 固定 Planner / Critic / Executor / Reporter 流程。
  • 固定圆桌会议流程。
  • 固定投票算法。
  • 固定监督者角色。
  • 固定上下文协助者模块。
  • 固定 DAG-only 计划协议。
  • 固定 LangGraph graph-first 架构。
  • 固定状态机作为事实源。
  • 封闭 enum 决定组织形态是否合法。
  • 模型自评即可获得关键角色。
  • 模型提出策略修改后立即扩大权限。
  • 记忆自动变成授权依据。

更准确的边界是:

表达空间尽量开放;
审计语义必须可追问;
真实影响必须被授权;
运行时必须可替换;
历史必须可回放;
例子永远不是上限。

18. 完成标准

基础实现完成时,应该能演示:

  • 输入一个目标,生成开放协议事件账本。
  • 模型提出未知组织机制,系统能记录并展示。
  • 模型提出圆桌/投票/监督/上下文协助者等例子,系统只把它们作为协议表达处理。
  • 模型提出执行动作,系统先规范化为 GovernanceActionSpec
  • 未授权动作不会执行。
  • 已授权模拟动作可以通过 LocalSimulator 执行并写入 RuntimeEvent
  • LangGraph 不参与时系统能跑通;LangGraph 参与时只作为 RuntimeAdapter
  • 派生视图能从账本重建目标、组织、讨论、决策、计划、授权、运行和记忆状态。
  • 所有未知字段和未知类型都被保留,除非治理层明确阻止其产生真实影响。

这就是基础实现的核心:不是做一个自治 Agent 模板库,而是做一个未来智能可以继续生长的开放协议内核。