Skip to content

LoopX v0.4.7

Choose a tag to compare

@huangruiteng huangruiteng released this 15 Aug 07:56
· 899 commits to main since this release
dd7d1a4

LoopX v0.4.7

LoopX v0.4.7 让长程 goal 循环更连续、主机接入更可控、todo 权属更明确:OpenCode 1/2 不再因用户消息或任务收口而中断,DeepSeek Harness 以受管 Turn 连接器接入,per-goal handoff 模式把认领与租约权限落到状态文件门禁上,Explore 的飞书可视化可以一键自动建多块面板。无破坏性变更,未做持久状态迁移。

Interruption-free OpenCode goal loops, new governed host connectors, explicit per-goal handoff authority, and automated Explore Feishu visual boards.

At a Glance

Upgrade

Existing installs upgrade explicitly; fresh installs use the bootstrap command. Full commands live in ## Install / Update below.

loopx update --check       # 已是最新则无需操作
loopx update --execute     # 升级到 v0.4.7
loopx --version && loopx doctor

Highlights

  • OpenCode 1/2 连续长程 goal 循环(#3151): 用户消息只被回答、不再暂停循环;任务收口后进入 standby 轮询并在新工作出现时自动恢复;OpenCode 2 由持久 worker 驱动,TUI 关闭后循环仍然存活。Usage posture: loopx slash-commands --install,OpenCode 2 启动 loopx opencode2-goal-worker
  • DeepSeek Harness Turn 连接器(#3188): 用 LoopX 的 quota、验证与写回门禁治理一次 dsh 托管的工作段;deepseek-harness 成为可选 agent type,loopx[deepseek-harness] 为可选依赖。Usage posture: loopx agent-onboard --agent-type deepseek-harness
  • Per-goal handoff 模式(#3164, #3198): goal 可声明 legacy/soft_claim/hard_lease,用状态文件门禁挡住“软认领与硬租约各说各话”的分叉;hard_lease 下 user gate 完成时自动取钥匙。Usage posture: loopx handoff-mode set --goal-id <id> --mode hard_lease
  • Caller-approved 完成校验(#3142): todo add --validation-command 声明的命令在 durable 写回前执行,失败即阻断完成与 quota 消费,并返回类型化 receipt。Usage posture: loopx todo add --validation-command "pytest -q tests/test_x.py"
  • Explore 飞书可视化自动建板(#3187): feishu-visual-configure --auto-create 自动创建托管文档、executive 与 canonical 总览板,并按 Evidence Stage 懒创建阶段白板,无需手工拼接 docx/whiteboard token。Usage posture: loopx explore feishu-visual-configure --auto-create --execute
  • 控制面收口与只读观测(#3211, #3213, #3205, #3207, #3170): 未来 monitor 静默等待不再被误判为自主 replan;replan 语义出口收敛;新增只读 Turn journal 检查、stride 影子观测与确定性项目 registry。

Replan Fixes

  • 带有效未来调度的 monitor-only 通道被误判为 exhausted 并合成 replan -> 现在保持 typed quiet wait,到期或状态变化时才执行(#3211)。
  • 精确 bound successor 先于 replan 路由(#3176);后继必须有可执行语义(#3184);exhausted/closed goal 通过 typed semantic exit 收口(#3213)。
  • 等价 terminal coverage 会被拒绝,不再以等价名义重复消耗(#3194)。
  • 需要跨 agent 协作时要求显式 peer coordination,而不是隐式放行(#3181)。

Contributors

This release includes 10 community contributors: @NIU-123370, @noahniweb3, @ObVious55, @Ray0907, @liubf21, @yuefengw, @wchwawa, @graceyyy-afk, @elegracer, and @zennlyu. See the detailed ## Community Contributors section.

Release Decision

Who should upgrade: Stable-channel users who run OpenCode 1/2 goal loops, DeepSeek Harness-backed turns, per-goal todo handoff automation, autonomous replan or monitor lanes, or Explore Feishu visual sinks. Users who do not touch these surfaces can stay on v0.4.6 until the next maintenance release.

What this release solves: Long-running goal loops were interrupted by user messages or terminal closure; soft claims and hard leases could disagree on the same todo; healthy future monitor waits were misread as stalled replan work; and Explore Feishu visual setup required manual docx/whiteboard token plumbing. This release makes each of those paths explicit and gated.

Breaking changes: No. handoff_mode defaults to legacy so existing goals keep today's behavior; OpenCode 2, DeepSeek Harness, and feishu-visual-configure --auto-create are opt-in surfaces; no CLI/API contract is removed and no persisted-state migration is required. A goal that explicitly switches to soft_claim or hard_lease gains enforced claim/lease gates from that point on.

How to verify: Confirm the package identity and doctor state, run the premerge canary, then exercise the focused control-plane suites for handoff, validation, replan, journal inspection, and stride observation:

loopx --version
loopx doctor
loopx canary premerge --from-git-diff
python3 -m pytest -q tests/control_plane/test_goal_handoff_mode.py tests/control_plane/test_todo_completion_validation.py tests/control_plane/test_replan_semantic_action_behavior.py tests/test_loopx_turn_journal_inspection.py tests/control_plane/test_stride_observation.py

Contributors: Maintainer @huangruiteng prepared this release with community contributions from @NIU-123370, @noahniweb3, @ObVious55, @Ray0907, @liubf21, @yuefengw, @wchwawa, @graceyyy-afk, @elegracer, and @zennlyu; see ## Community Contributors below.

State Kernel & Control Plane

  • Per-goal handoff modes(#3164): handoff_mode 写入 goal 状态文件头部;legacy 保持双轨,soft_claim 拒绝 lease acquire/renew/transfer,hard_lease 要求所有权变更持有活租约且完成必须带钥匙;模式切换要求 goal 静止,不提供强制切换;新增 loopx handoff-mode show|sethard_lease 下 user-role user_gate 完成由完成栅栏自动 mint 并校验钥匙(#3198)。
  • Caller-approved completion validation(#3142): todo 可声明 validation_command,在 durable 写回与 quota 消费前执行,失败返回 typed validation receipt;完成校验编排抽取为 bounded module(#3209)。
  • 确定性项目 registry(#3170): 控制面新增 deterministic project registry,goal repo 解析不再依赖隐式路径推断。
  • 显式 peer coordination(#3181)与等价 terminal coverage 拒绝(#3194): 跨 agent 协作必须显式声明;等价终局覆盖不再被当作新进展。
  • Replan 语义收敛(#3176, #3184, #3213, #3211): 精确 bound successor 先路由;后继必须可执行;typed semantic exit 收口 exhausted/closed goal;未来 monitor quiet wait 保持静默且不产生花费。
  • 共享 settlement receipt-chain driver(#3199): typed settlement receipt 链统一驱动,降低各宿主重复实现差异。
  • 只读观测(#3207, #3189, #3205): hierarchical_stride_observation_v0 影子投影(delivery/authority/effect 三层,fail-closed);loopx turn inspect-journal 以 allowlisted loopx_turn_journal_inspection_v0 投影检查 Turn journal,不进入规划/执行/写回路径。
  • Material catalog per-entry cap(#3192): 材料目录按条目读取容量约束,不再一刀切。

Capabilities & Workflows

  • OpenCode 1/2 连续 goal 循环(#3151): OpenCode 1 bridge 的 unchanged-poll 限制改为可见暂停、锁文件防双驱动、quota 探测失败有界退避;OpenCode 2 通过持久 loopx opencode2-goal-worker 驱动 HTTP API 会话,TUI 关闭或 CLI 单次使用后循环仍存活;用户消息、任务收口、standby 自动恢复、可见停止通知、stale-host-poll 风险均有 typed 收据。
  • Explore composition frontier(#3173, #3185, #3186): 显式投影组合边界与派生联合实验 todos,README 改为 summary-first 并带中文镜像。
  • Explore 飞书可视化自动建板(#3187): feishu-visual-configure --auto-create 幂等创建 docx + 两块总览板,feishu-syncstage_boards_enabled 懒创建 canonical stage 板;Mermaid 无 SVG 时自动回退;29 节点示例按 10/10/9 平衡分板。
  • Auto-research 可见 worker 钩子(#3150): worker-turn 钩子改为 argv-safe,避免特殊字符注入宿主命令。
  • RFC 与文档(#3204, #3215, #3180): hierarchical agent stride 控制、post-outcome memory utility attribution、non-blocking human attention wishlist 三份 RFC 进入仓库。

Quality & Testing

  • Malformed-state hot-path coverage(#3156): 覆盖 malformed state 的 bounded detail 与测量路径。
  • Replan/monitor 回归(#3211, #3212, #3213): future monitor quiet wait、durable-completion read-side 对比探针、typed semantic exit 均补齐 focused/risk smokes。
  • Walkthrough smokes(#3070, #3071): PR-program snapshot 与 material decision planning walkthrough 进入 durable smoke 集合。
  • Turn settlement parity(#3193): key/owner 不匹配的 settlement replay 关闭失败;built-in CLI provider 投影 durable completion continuation(#3195)。
  • Release 文档 gate(#3177): release note 模板改为 scan-first ## At a Glance,发布文案先给结论再给细节。

Benchmarks & Integrations

  • DeepSeek Harness Turn connector(#3188): scripts/dsh_turn_host_adapter.pyloopx_turn_host_request_v0 翻译为一次 bounded dsh 会话并解析 loopx_turn_result_v0deepseek-harness agent type、可选 loopx[deepseek-harness] extra、hermetic fake-dsh 与 real-dsh(mock LLM)三套 smoke。不构成任何 benchmark 或长程结果提升声明,因此 stable/candidate 配对结果证据不在本版本要求内。
  • OpenCode 1/2 runtime connectors(#3151): runtime-connector-catalog 与 getting-started 同步记录 opencode2_goal_worker 的持久 worker、host poll receipt 与 stale-host-poll 风险。
  • Explore Feishu visual sink(#3187): 自动建板与阶段白板发布只消费 public-safe Explore 投影,不读写原始会话材料。
  • nokv shadow provider probes(#3212): durable-completion 投影与 fail-closed 规则在 provider 字节上复现一致。

Documentation & Compatibility

  • 产品定位(#3202): LoopX 明确为 agent harness 之上的控制层,README、host list 与 frontstage hero 同步收紧措辞。
  • 连接器文档(#3188, #3151): DeepSeek Harness connector 与 OpenCode 1/2 runtime connector 各自具备安装、边界与验证说明。
  • 路线图(#3108): 新增 SaaS opportunity assessment roadmap,供后续产品决策公开参考。
  • 兼容性: 无持久状态迁移;handoff_mode 缺省即 legacy,存量 goal 行为不变;新主机面均为显式 opt-in。

Community Contributors

  • @NIU-123370 — caller-approved completion validation(#3142)、completion-validation 编排模块抽取(#3209)、durable-completion read-side 对比探针(#3212)。
  • @noahniweb3 — future monitor quiet-wait 分类修复(#3211)。
  • @ObVious55 — 只读 Turn journal interpretation lens(#3189)与 loopx turn inspect-journal#3205)。
  • @Ray0907 — malformed-state hot-path 测试覆盖(#3156)。
  • @liubf21 — DeepSeek Harness Turn adapter(#3188)、settlement replay parity(#3193)、durable completion continuation 投影(#3195)、PR-program 与 material 决策 walkthrough smokes(#3070, #3071)。
  • @yuefengw — 拒绝等价 terminal coverage(#3194)。
  • @wchwawa — per-goal handoff 模式认领/租约门禁(#3164)。
  • @graceyyy-afk — deterministic project registry(#3170)。
  • @elegracer — OpenCode 1/2 连续长程 goal loops(#3151)。
  • @zennlyu — SaaS opportunity assessment roadmap(#3108)。

Optional Capability Activation & Use

validation-command

Activation: Declare a caller-approved command when adding a todo:

loopx todo add --goal-id example-goal --text "task" --validation-command "pytest -q tests/test_x.py"

Validation: loopx todo complete --goal-id example-goal --todo-id todo_xxx runs the command before durable writeback; a failing command returns ok=false with a typed validation receipt and blocks quota spend.

Disable / rollback: Omit --validation-command to keep the unchanged fast path; re-add the todo without the field to remove it.

Authority boundary: The command runs in the goal repository workspace with the invoking user's privileges, without shell expansion, and captures no stdout/stderr or local paths.

Docs: https://github.com/huangruiteng/loopx/blob/v0.4.7/loopx/control_plane/runtime/validation_command.py

opencode-goal-loops

Activation: Install the shared OpenCode command facade, then start a goal with --host-surface opencode2 and launch the persistent worker from the activation packet:

loopx slash-commands --install --surface opencode --with-goal-bridge
loopx opencode2-goal-worker --goal-id <goal_id> --directory <project_dir> --task-body "<task body>"

Validation: Read back the installed surface and worker contract:

loopx slash-commands --dry-run
loopx opencode2-goal-worker --help

Disable / rollback: Stop the worker, uninstall the LoopX-managed OpenCode files, and remove the private per-project state:

loopx slash-commands --uninstall --surface opencode --with-goal-bridge
rm -rf "$XDG_STATE_HOME/loopx/opencode2" .opencode/goals

Authority boundary: The worker only drives quota-gated continuation prompts; quota should-run --record-host-poll is opt-in and writes a compact local receipt; the loop cannot install, update, or roll back LoopX itself, and grants no merge or provider authority.

Docs: https://github.com/huangruiteng/loopx/blob/v0.4.7/loopx/opencode2_goal_mode/README.md

deepseek-harness-turn-connector

Activation: Install the optional extra and onboard the deepseek-harness agent type:

python -m pip install 'loopx[deepseek-harness]'
loopx doctor --agent-type deepseek-harness
loopx agent-onboard --agent-type deepseek-harness --project . --goal-id <goal-id> --agent-id deepseek-worker --available-capability shell

Validation: Run the hermetic connector smokes, which need no DeepSeek API key:

python3 examples/dsh-turn-host-adapter-smoke.py
python3 examples/loopx-turn-dsh-real-e2e-smoke.py

Disable / rollback: Stop using the adapter and remove the optional dependency and its local session root:

python -m pip uninstall deepseek-harness-sdk
rm -rf .local/.dsh-sessions

Authority boundary: dsh owns model calls, tools, sandboxing, and raw session logs; the adapter never publishes raw transcripts, credentials, or local absolute paths into LoopX state, and an independent validator is required before LoopX writeback.

Docs: https://github.com/huangruiteng/loopx/blob/v0.4.7/docs/integrations/deepseek-harness-connector.md

per-goal-handoff-modes

Activation: Read the effective mode, then switch a quiescent goal explicitly:

loopx handoff-mode show --goal-id <goal-id>
loopx handoff-mode set --goal-id <goal-id> --mode hard_lease

Validation: Confirm the mode and that the gate rejects the wrong ownership path:

loopx handoff-mode show --goal-id <goal-id>
loopx task-lease acquire --goal-id <goal-id> --todo-id <todo-id> --owner <agent-id> --idempotency-key <key>

Disable / rollback: Switch the goal back to the legacy behavior when it is quiescent; no force switch exists:

loopx handoff-mode set --goal-id <goal-id> --mode legacy

Authority boundary: The mode is enforced by the state-file write gate; setting it grants no bypass, merge, or provider authority, and hand-editing the state file outside the CLI is outside the contract.

Docs: https://github.com/huangruiteng/loopx/blob/v0.4.7/docs/architecture/rfcs/shared-goal-authority-state-provider-v0.md

explore-feishu-visual-auto-create

Activation: Bootstrap the hosting document and overview boards, then sync per-stage boards:

loopx explore feishu-visual-configure --auto-create --execute
loopx explore feishu-sync --goal-id <goal-id> --execute

Validation: Review the dry-run plan, then confirm the readback digest:

loopx explore feishu-visual-configure --auto-create
loopx explore feishu-sync --goal-id <goal-id> --execute

Disable / rollback: Reconfigure with explicit tokens instead of --auto-create, and set stage_boards_enabled: false for the role sink to stop per-stage boards; remove auto-created Feishu documents through the Feishu UI:

loopx explore feishu-visual-configure --view-role canonical --docx-token <existing-token> --execute

Authority boundary: The sink creates or updates Feishu docx/whiteboards only after --execute; it renders public-safe Explore projections and never sends raw transcripts or credentials, and it grants no merge or provider authority.

Docs: https://github.com/huangruiteng/loopx/blob/v0.4.7/docs/capabilities/explore/README.md

Install / Update

New users should install from the named stable ref. Existing users should preview the update, then execute it explicitly:

loopx update --check --ref stable
loopx update --execute --ref stable
loopx doctor

Fresh installs (no existing LoopX):

curl -fsSL https://huangruiteng.github.io/loopx/install.sh | bash
export PATH="$HOME/.local/bin:$PATH"
loopx doctor

中文摘要

LoopX v0.4.7 聚焦连续性、权属与可控性:OpenCode 1/2 长程 goal 循环不再被用户消息或任务收口打断;DeepSeek Harness 以受管 Turn 连接器接入;每个 goal 可用 handoff_mode 明确认领/租约规则;Explore 飞书可视化支持一键自动创建托管文档与多块总览/阶段面板;未来 monitor 的静默等待不再被误判为 stalled replan。无破坏性变更,无持久状态迁移。

升级决策

谁需要升级: 使用 OpenCode 1/2 goal 循环、DeepSeek Harness Turn、per-goal todo 交接自动化、自主 replan/monitor 通道或 Explore 飞书可视化 sink 的稳定通道用户。不涉及这些面、当前在 v0.4.6 的用户可以等待下一个维护版本。

解决了什么: 长程循环被用户消息或任务收口打断;软认领与硬租约对同一 todo 可以各说各话;健康的未来 monitor 等待被误判为 replan 卡住;Explore 飞书可视化需要手工拼接 docx/whiteboard token。本版本把这些路径全部显式化并加上门禁。

是否有破坏性变更: 无。handoff_mode 缺省为 legacy,存量 goal 行为不变;OpenCode 2、DeepSeek Harness 与 feishu-visual-configure --auto-create 均为显式 opt-in;不删除任何 CLI/API 契约,无需持久状态迁移。goal 一旦显式切到 soft_claimhard_lease,认领/租约门禁从切换时刻起生效。

如何验证: 先确认包身份与 doctor 状态,再跑 premerge canary 与聚焦控制面测试(handoff、完成校验、replan 语义出口、Turn journal、stride 观测):

loopx --version
loopx doctor
loopx canary premerge --from-git-diff
python3 -m pytest -q tests/control_plane/test_goal_handoff_mode.py tests/control_plane/test_todo_completion_validation.py tests/control_plane/test_replan_semantic_action_behavior.py tests/test_loopx_turn_journal_inspection.py tests/control_plane/test_stride_observation.py

贡献者: 由 maintainer @huangruiteng 准备,社区贡献者包括 @NIU-123370@noahniweb3@ObVious55@Ray0907@liubf21@yuefengw@wchwawa@graceyyy-afk@elegracer@zennlyu;详见下方社区贡献者章节。

状态内核与控制面

  • Per-goal handoff 模式(#3164): loopx handoff-mode show|setlegacy 默认双轨,soft_claim 拒绝 lease acquire/renew/transfer,hard_lease 要求所有权变更持活租约、完成带钥匙;切换需静止,不提供强制切换;user gate 完成自动取钥匙(#3198)。
  • Caller-approved 完成校验(#3142): 写回与 quota 消费前执行 validation_command,失败返回 typed receipt;编排抽取为 bounded module(#3209)。
  • 确定性项目 registry(#3170)与显式 peer coordination(#3181)。
  • Replan 收敛(#3176, #3184, #3213, #3211): 精确 bound successor 先路由;后继必须可执行;typed semantic exit 收口;未来 monitor 静默等待不产生花费。
  • 共享 settlement receipt-chain driver(#3199)与等价 terminal coverage 拒绝(#3194)。
  • 只读观测(#3207, #3189, #3205): stride 影子观测与 loopx turn inspect-journal,均不进入写回路径。
  • Material catalog per-entry cap(#3192)。

能力与工作流

  • OpenCode 1/2 连续 goal 循环(#3151): 用户消息不再暂停循环;任务收口进入 standby 自动恢复;OpenCode 2 持久 worker 在 TUI 关闭后仍存活;可见停止通知与 stale-host-poll 风险。
  • Explore composition frontier(#3173, #3185, #3186)与飞书可视化自动建板(#3187)。
  • Auto-research argv-safe worker 钩子(#3150)。
  • RFC(#3204, #3215, #3180): hierarchical agent stride、post-outcome memory utility attribution、human attention wishlist。

质量与测试

  • Malformed-state hot-path 覆盖(#3156)。
  • Replan/monitor 回归(#3211, #3212, #3213)。
  • Walkthrough smokes(#3070, #3071)与 Turn settlement parity(#3193, #3195)。
  • Release 文档 gate scan-first 模板(#3177)。

基准与集成

  • DeepSeek Harness Turn connector(#3188): 可选 loopx[deepseek-harness]deepseek-harness agent type、hermetic smoke 三件套。本版本不宣称 benchmark 或长程结果提升,因此不要求 stable/candidate 配对结果证据。
  • OpenCode 1/2 runtime connectors(#3151)与 Explore Feishu visual sink(#3187)。
  • nokv shadow provider 探针(#3212)。

文档与兼容性

  • 产品定位(#3202): LoopX 明确为 agent harness 之上的控制层。
  • 连接器文档(#3188, #3151)与 SaaS 路线图(#3108)。
  • 兼容性: 无持久状态迁移;handoff_mode 缺省 legacy;新主机面均为显式 opt-in。

社区贡献者

可选能力启用与使用

validation-command

启用: 添加 todo 时声明 caller-approved 命令:

loopx todo add --goal-id example-goal --text "task" --validation-command "pytest -q tests/test_x.py"

验证: loopx todo complete --goal-id example-goal --todo-id todo_xxx 会在 durable 写回前执行该命令;失败返回 ok=false 与 typed validation receipt,并阻断 quota 消费。

停用 / 回退: 不声明 --validation-command 即保持原有快速路径;重新添加不带该字段的 todo 可移除它。

权限边界: 命令在 goal 仓库工作区以调用者权限运行,不做 shell 展开,不捕获 stdout/stderr 与本地路径。

文档: https://github.com/huangruiteng/loopx/blob/v0.4.7/loopx/control_plane/runtime/validation_command.py

opencode-goal-loops

启用: 安装共享 OpenCode 命令门面,并以 --host-surface opencode2 启动 goal 后运行持久 worker:

loopx slash-commands --install --surface opencode --with-goal-bridge
loopx opencode2-goal-worker --goal-id <goal_id> --directory <project_dir> --task-body "<task body>"

验证: 读回已安装面与 worker 契约:

loopx slash-commands --dry-run
loopx opencode2-goal-worker --help

停用 / 回退: 停止 worker,卸载 LoopX 管理的 OpenCode 文件,并删除项目内私有状态:

loopx slash-commands --uninstall --surface opencode --with-goal-bridge
rm -rf "$XDG_STATE_HOME/loopx/opencode2" .opencode/goals

权限边界: worker 只驱动 quota 门控的续跑提示;quota should-run --record-host-poll 为 opt-in 且只写本地紧凑收据;循环不能自行安装/更新/回退 LoopX,也不授予 merge 或 provider 权限。

文档: https://github.com/huangruiteng/loopx/blob/v0.4.7/loopx/opencode2_goal_mode/README.md

deepseek-harness-turn-connector

启用: 安装可选 extra 并 onboard deepseek-harness agent type:

python -m pip install 'loopx[deepseek-harness]'
loopx doctor --agent-type deepseek-harness
loopx agent-onboard --agent-type deepseek-harness --project . --goal-id <goal-id> --agent-id deepseek-worker --available-capability shell

验证: 运行无需 DeepSeek API key 的 hermetic smoke:

python3 examples/dsh-turn-host-adapter-smoke.py
python3 examples/loopx-turn-dsh-real-e2e-smoke.py

停用 / 回退: 停止使用 adapter,卸载可选依赖并删除本地会话目录:

python -m pip uninstall deepseek-harness-sdk
rm -rf .local/.dsh-sessions

权限边界: dsh 负责模型调用、工具、沙箱与原始会话日志;adapter 不会把原始会话、凭据或本地绝对路径写入 LoopX 状态,写回前必须有独立 validator。

文档: https://github.com/huangruiteng/loopx/blob/v0.4.7/docs/integrations/deepseek-harness-connector.md

per-goal-handoff-modes

启用: 读取当前模式,并在 goal 静止时显式切换:

loopx handoff-mode show --goal-id <goal-id>
loopx handoff-mode set --goal-id <goal-id> --mode hard_lease

验证: 确认模式生效,并验证错误权属路径被门禁拒绝:

loopx handoff-mode show --goal-id <goal-id>
loopx task-lease acquire --goal-id <goal-id> --todo-id <todo-id> --owner <agent-id> --idempotency-key <key>

停用 / 回退: 在 goal 静止时切回 legacy;没有强制切换开关:

loopx handoff-mode set --goal-id <goal-id> --mode legacy

权限边界: 模式由状态文件写入门禁强制;设置模式不授予绕过、merge 或 provider 权限;CLI 之外手工编辑状态文件不属于契约范围。

文档: https://github.com/huangruiteng/loopx/blob/v0.4.7/docs/architecture/rfcs/shared-goal-authority-state-provider-v0.md

explore-feishu-visual-auto-create

启用: 一键创建托管文档与总览板,再按阶段同步白板:

loopx explore feishu-visual-configure --auto-create --execute
loopx explore feishu-sync --goal-id <goal-id> --execute

验证: 先看 dry-run 计划,再确认读回 digest:

loopx explore feishu-visual-configure --auto-create
loopx explore feishu-sync --goal-id <goal-id> --execute

停用 / 回退: 改用显式 token 重新配置并关闭阶段白板;自动创建的飞书文档可在飞书界面删除:

loopx explore feishu-visual-configure --view-role canonical --docx-token <existing-token> --execute

权限边界: 仅在 --execute 后创建/更新飞书 docx 与白板;只渲染 public-safe Explore 投影,不发送原始会话或凭据,也不授予 merge 或 provider 权限。

文档: https://github.com/huangruiteng/loopx/blob/v0.4.7/docs/capabilities/explore/README.md

发布验证

loopx --version
loopx doctor
loopx canary premerge --from-git-diff
python3 -m pytest -q tests/control_plane/test_goal_handoff_mode.py tests/control_plane/test_todo_completion_validation.py tests/control_plane/test_replan_semantic_action_behavior.py tests/test_loopx_turn_journal_inspection.py tests/control_plane/test_stride_observation.py