LoopX 1.2.3
At a Glance
LoopX 1.2.3 makes conversational Goal setup usable in the App, keeps Chat and delegation results connected to their original work, and adds explicit research evidence and Kiro CLI integration. It also tightens local state, monitor and release CI behavior.
Upgrade
Existing installations should inspect their update owner and apply the named version. New PyPI installations can install 1.2.3 directly:
loopx update check
loopx update plan
loopx update apply
loopx --version
loopx doctor
# New PyPI installation: python3 -m pip install 'loopx==1.2.3'Highlights
- In App Chat, a request for distinct new work can produce an editable Goal draft; creation still requires an explicit Apply. Attached sessions remain bound to the exact Goal, and interrupted Turn streams can reconnect. #4376 #5130 #5262
- Kiro CLI has an opt-in managed
/loopxskill and typed MCP tools. Install withloopx slash-commands --install --surface kiro-cli; native quota pacing remains advisory. #5243 - New Goals may opt into a creation-time File or SQLite storage target, without migrating existing Goals. Explore can record typed research observations and show a read-only composition shadow. #5242 #5250
- Usage statistics now send eligible command aggregates sooner after renewed visible disclosure; disable remains persistent and synthetic runs remain excluded. #5271 #5272
Replan Fixes
- A quota replan retains its original Turn after adding a successor; a scoped auxiliary Monitor cannot steal the replan-bound turn. #5256 #5279
Contributors
Community work in this release came from @songoow, @LIHUA919, @Duang777, @karenchuu, @Jim-jimu, @vlean, and first-time contributor @KashiwaByte. Their concrete PRs are credited below.
Release Decision
Who should upgrade: App Chat and delegation users, Kiro CLI users, Explore research operators, and maintainers affected by monitor/replan or Goal storage targeting. Unaffected installations may follow their normal update window.
What this release solves: Distinct conversational work can become a reviewed new-Goal draft, Chat/attached-session and delegation paths preserve their exact return context, and local operators can choose a new Goal's storage target while research evidence becomes inspectable. Several state, monitor and CI regressions are repaired.
Breaking changes: No automatic migration of existing Goals or new host-enforced Kiro quota hook. The usage-statistics delivery cadence changes after renewed first-use disclosure; loopx usage-ping disable or LOOPX_USAGE_PING=0 still stops collection. Typed research envelopes are explicit opt-in; older strict readers should upgrade before reading them.
How to verify: After upgrading, confirm the package identity and health, then use the relevant readback in the optional-capability section:
loopx --version
loopx doctor
loopx usage-ping statusContributors: @songoow, @LIHUA919, @Duang777, @karenchuu, @Jim-jimu, @vlean and first-time contributor @KashiwaByte; contributions and pull requests are linked below.
App, Chat & Collaboration
- Chat reuses existing Goal owners when appropriate and exposes an editable App-only draft for explicitly separate work; it does not silently create or execute a Goal. Attached sessions bind to
GoalRef. Streaming and local-service errors remain visible and recoverable. #4376 #5130 #5262 #5269 #5267 - Delegated inbox continuity is bound to the exact Goal; request return routing and validation diagnostics retain their owner and result evidence. This improves return visibility but does not itself prove receiver adoption or independent task acceptance. #5106 #5234 #5253 #5274
State, Research & Hosts
- Creation-time Goal storage selection is explicit; retries retain the chosen target and existing Goals are not switched. Canonical Todo/status reads, replan settlement and monitor replay retain their owning state. #5242 #5237 #5256 #5277 #5281 #5285
- Explore now records attributable typed observations and explicit binary composition candidates, with a bounded read-only summary. It does not enable research scheduling, model selection or shared write-time enforcement. Kiro CLI gains an explicit host profile and MCP binding; quota pacing remains advisory inside its session. #5250 #5243
- File and status reads reuse validated authority inputs; private-text classification has one owner. These are latency/ownership changes, not a claim of sustained benchmark uplift. #5222 #5245 #5273 #5299
Reliability & Quality
- The CI workflow again runs Python Tests and Full Public Smokes on
main; registry and scheduler ACK qualification was repaired. The 1.2.3 release below uses a deliberately narrow, disclosed validation scope rather than claiming a full rerun. #5292 #5288 - Synthetic CI and native profiles opt out of usage collection; public research campaign coverage now includes the runtime-observation path. #5272 #5255
Community Contributors
- @songoow — Restored mainline Python/public smoke CI, repaired Chat stream and local-service errors, and clarified offline workspace/Lark behavior. #5292 #5262 #5269 #5267 #5264 #5284 #5270
- @LIHUA919 — External community contributor. Added typed Explore research evidence and tightened scoped Monitor/replay routing and registry/scheduler qualification. #5250 #5279 #5277 #5288
- @Duang777 — Bound attached Chat sessions and delegated inbox continuity to exact Goals; consolidated status carriers and documented provider-effect acceptance. #5130 #5106 #5285 #5246 #5227
- @karenchuu — External community contributor. Centralized private-text classification and covered benchmark study runtime observation. #5245 #5255
- @Jim-jimu — External community contributor. Rejected duplicate admitted external-evidence source references. #5260
- @vlean — External community contributor. Delivered the opt-in Kiro CLI visible-Goal profile and typed MCP control plane. #5243
- @KashiwaByte — External, first-time contributor to LoopX. Integrated conversational Goal drafts into the existing App workspace with explicit review and Apply. #4376
Optional Capability Activation & Use
App Goal Drafts
Activation: Start loopx dashboard --no-open, open the local App Chat, ask for explicitly separate new work and review the resulting Goal draft. Only Apply creates the Goal; ordinary conversation and suggestions do not.
Validation: After Apply, read back the chosen Goal:
loopx status --goal-id "$NEW_GOAL_ID"Disable / rollback: Discard the draft or close the App before Apply to create nothing. A created Goal is not automatically undone; stop its activity and use the documented Goal lifecycle or the owning package's versioned rollback plan after review.
Authority boundary: A draft does not grant execution, receiver adoption, credential access or automatic Goal creation. App draft cards are not the Lark creation flow.
Docs: Versioned conversation and draft contract.
Kiro CLI Goal Mode
Activation: On a host with Kiro CLI installed, opt in explicitly:
loopx slash-commands --install --surface kiro-cliValidation: In Kiro CLI, inspect the managed MCP entry and run /loopx <task> in a connected project:
kiro-cli mcp listDisable / rollback: loopx slash-commands --uninstall --surface kiro-cli removes only LoopX-owned skills and a still-matching LoopX MCP entry; stop the Kiro session to end its native /goal loop.
Authority boundary: This grants neither a host-enforced quota hook nor unattended cross-session execution. MCP tools require an exact registered session-to-Agent binding; quota pacing within Kiro's native Goal remains advisory.
Docs: Versioned Kiro CLI integration guide.
New Goal Storage Target
Activation: In the App, choose Settings → Capability Center → Device defaults → New Goal storage target before creating a new Goal. Select File or SQLite and apply the reviewed change. This is a creation-time preference only.
Validation: Inspect the machine setting and a new Goal's dry-run target:
loopx machine-config inspect
loopx bootstrap --project ./new-project --goal-id new-project --dry-runDisable / rollback: Restore File in the same setting for future Goals, or preview loopx machine-config remove --namespace goal_storage and execute that exact reviewed plan revision. Existing Goals keep their recorded target; do not delete state or a writer fence as rollback.
Authority boundary: Selecting SQLite does not promote or migrate an existing Goal, move independent Run artifacts, or grant a new writer. Explicit cutover retains its separate review and lease gates.
Docs: Versioned local authority selection guide.
Explore Research Observation
Activation: On an existing opted-in Explore Goal with attributed public-safe nodes, explicitly record a typed observation envelope:
loopx explore observe --goal-id "$GOAL_ID" --observation-json observation.jsonValidation: Read the bounded research frontier and the exact node evidence:
loopx explore summary --goal-id "$GOAL_ID" --format jsonDisable / rollback: Stop issuing explore observe to stop new typed writes. Existing append-only evidence remains; use a normal explore node revision to invalidate stale input eligibility, rather than deleting its log.
Authority boundary: The read-only composition shadow does not claim, lease, schedule, spend quota, launch an experiment or authorize Lark sync. It does not certify scientific results or close M3 write-time gates.
Docs: Versioned research observation contract.
Usage Statistics Delivery
Activation: The default opt-out policy activates only after the visible first-use CLI/App disclosure. loopx usage-ping enable explicitly enables a previously disabled installation; LOOPX_USAGE_POLICY=consent_required still requires that explicit choice.
Validation: Read the exact recipient, policy and outgoing payload previews without sending a measurement:
loopx usage-ping statusDisable / rollback: loopx usage-ping disable persistently stops all channels and deletes local ID/buffered counts. LOOPX_USAGE_PING=0 blocks collection for a process; restoring the older package requires the owning install/update rollback path.
Authority boundary: The daily heartbeat has a random installation ID; CLI aggregate batches omit it but network timing can still correlate requests. No prompts, code, paths, Goal content or raw errors are sent. Counts are lossy diagnostics, not task-completion or billing evidence.
Docs: Versioned usage-statistics and privacy guide.
Compatibility & Upgrade
Package 1.2.3, tag v1.2.3, source 0a401fe7524f6dfdc229f6fc3cddf3dc0b8c175e. Python 3.11+ and Node.js 22.22.3+ remain required. Existing Goal authority and persisted data are not silently migrated; use loopx update check and loopx update plan before applying an owner-specific update. See versioned installation instructions. Compare 1.2.2…1.2.3.
Validation
Focused local checks passed: CLI/version and manpage agreement, release-artifact positive/negative smoke, packaged Chat build and source verification, wheel/sdist build and metadata, two selected native premerge canaries, exact-diff change quality and exact-head PR review. The three release-triggered workflows then succeeded on tagged source 0a401fe7524f6dfdc229f6fc3cddf3dc0b8c175e, including an installed-page browser check and a clean PyPI installation/readback. All 11 GitHub assets are present; wheel/sdist and four desktop installer hashes match their published checksum manifests and GitHub SHA-256 digests, while the PyPI wheel/sdist hashes match GitHub. The signed App signature matches the updater feed, and the desktop-stable feed matches the release. stable was fast-forwarded to the tagged source. The full Python/public-smoke/model-behavior/PostgreSQL matrix and a separate Pages check were intentionally skipped for this quick release.
Install / Update
python3 -m pip install --upgrade 'loopx==1.2.3'
loopx --version
loopx doctor
loopx update check中文摘要
1.2.3 让 App 对话里的独立新工作先形成可编辑 Goal 草稿,再由用户明确 Apply;Chat 与委派结果继续回到正确的 Goal。版本还加入 Kiro CLI 显式接入、研究证据只读组合视图,并改进本地状态、监控与发布 CI。
升级决策
**谁需要升级:**使用 App Chat、委派、Kiro CLI、Explore 研究或新 Goal 存储目标的用户,以及受监控/replan 修复影响的维护者。其他安装可按原有更新窗口升级。
**解决了什么:**对话工作可进入同一工作区的 Goal 草稿;附着会话和委派回传保持准确归属;新 Goal 的存储选择与研究观察都有明确的读回边界。
**是否有破坏性变更:**无自动 Goal 迁移,也没有 Kiro 原生工具调用的强制 quota hook。使用统计在重新显示告知后改变发送节奏;原有关闭开关持续有效。使用 typed research envelope 的旧严格 reader 应先升级。
**如何验证:**升级后运行上方版本与 doctor 命令,并使用下方对应能力的读回命令。此次快速发布的验证范围明确列在发布验证中。
贡献者:@songoow、@LIHUA919、@Duang777、@karenchuu、@Jim-jimu、@vlean,以及首次贡献的 @KashiwaByte;具体 PR 见下方。
主要变化
- App 对话草稿保留用户确认;GoalRef 附着会话和流式恢复保持原上下文,委派路由与诊断不再依赖模糊文字判定。#4376 #5130 #5106 #5253
- 新 Goal 的 File/SQLite 目标在创建时固定;Explore typed observation 和只读组合 shadow 显示证据,不代表自动实验或任务结算。#5242 #5250
- Kiro CLI 用显式安装的 skill 与 MCP 绑定;原生 Goal 循环只在会话内运行,quota 指引仍是 advisory。#5243
- 原始 replan Turn 与监控结算归属得到修复;主干恢复 Python Tests / Full Public Smokes 的工作流入口。使用统计在新告知后更及时发送,合成 CI/profile 不计入。#5256 #5279 #5292 #5271 #5272
社区贡献者
- @songoow:恢复主干 Python/公开 smoke CI,并修复 Chat 流式连接、CLI 服务错误和离线工作区说明。#5292 #5262 #5269 #5267 #5264 #5284 #5270
- @LIHUA919:外部社区贡献者。交付 Explore 研究证据,收紧 scoped Monitor 路由与结算、注册表/调度器检查。#5250 #5279 #5277 #5288
- @Duang777:把 Chat 附着会话和委派 inbox 连续性绑定到准确 Goal,收敛状态载体并补充 provider effect 的验收说明。#5130 #5106 #5285 #5246 #5227
- @karenchuu:外部社区贡献者。收敛私有文字判定 owner,并覆盖 benchmark study 的运行观察路径。#5245 #5255
- @Jim-jimu:外部社区贡献者。拒绝重复接纳的外部证据来源引用。#5260
- @vlean:外部社区贡献者。实现 Kiro CLI 可见 Goal profile 与 typed MCP 控制面。#5243
- @KashiwaByte:首次参与 LoopX 的外部贡献者。将对话 Goal 草稿接入已有 App 工作区,并保留明确 Apply。#4376
可选能力启用与使用
App Goal Drafts
**启用:**运行 loopx dashboard --no-open,在本地 App Chat 中提出明确独立的新工作;审阅 Goal 草稿,只有 Apply 才创建 Goal。
**验证:**Apply 后读回新 Goal:
loopx status --goal-id "$NEW_GOAL_ID"**停用 / 回退:**Apply 前丢弃卡片或关闭 App 即不创建;已创建 Goal 不会自动删除,应先停下执行,再按 Goal 生命周期或安装 owner 的版本回退方案处理。
**权限边界:**草稿不授予执行、接收方采纳、凭证读取或自动创建。App 卡片也不代表 Lark 的 Goal 创建流程。
文档:1.2.3 版对话与草稿合同。
Kiro CLI Goal Mode
**启用:**在已安装 Kiro CLI 的机器上显式安装:
loopx slash-commands --install --surface kiro-cli**验证:**读回托管 MCP 项,并在已连接项目的 Kiro CLI 中调用 /loopx <task>:
kiro-cli mcp list停用 / 回退:loopx slash-commands --uninstall --surface kiro-cli 只移除 LoopX 管理且未被用户改写的 skill/MCP 项;停止 Kiro 会话即可结束其原生 Goal 循环。
**权限边界:**没有宿主强制 quota hook,也不提供跨会话无人值守循环;MCP 需要准确的已注册会话与 Agent 绑定,会话内 quota pacing 只是指引。
New Goal Storage Target
**启用:**创建新 Goal 前在 Settings → Capability Center → Device defaults → New Goal storage target 选择 File 或 SQLite 并应用审核过的配置。
**验证:**检查机器配置和新 Goal 的 dry-run 目标:
loopx machine-config inspect
loopx bootstrap --project ./new-project --goal-id new-project --dry-run**停用 / 回退:**在同一设置恢复 File,仅影响未来 Goal;也可预览 loopx machine-config remove --namespace goal_storage 后按返回的 plan revision 执行。已有 Goal 保留原目标,不得靠删除 state 或 writer fence 回退。
**权限边界:**选择 SQLite 不迁移既有 Goal、不移动独立 Run 工件,也不授予新 writer;已有 cutover 仍受独立评审与 lease 约束。
Explore Research Observation
**启用:**在已有 Explore Goal 和归属清楚的公开安全节点上,显式提交 typed observation:
loopx explore observe --goal-id "$GOAL_ID" --observation-json observation.json**验证:**读回有界 research frontier 和节点证据:
loopx explore summary --goal-id "$GOAL_ID" --format json**停用 / 回退:**停止调用 explore observe 即停止新增 typed 写入;保留 append-only 证据,通过正常的 explore node 修订使过时输入失效,不删除日志。
**权限边界:**只读组合 shadow 不认领、租赁、调度、消耗配额、运行实验或授权 Lark 同步;也不证明科学结论或完成 M3 写入门禁。
文档:1.2.3 版研究观察合同。
Usage Statistics Delivery
**启用:**默认 opt-out 策略仅在 CLI/App 首次可见告知后自动启用;先前关闭的安装可运行 loopx usage-ping enable 明确开启,LOOPX_USAGE_POLICY=consent_required 仍要求这一明确操作。
**验证:**无需发送测量即可读回接收方、政策与 payload 预览:
loopx usage-ping status停用 / 回退:loopx usage-ping disable 持久关闭所有通道并删除本机 ID/缓存计数;LOOPX_USAGE_PING=0 阻止当前进程采集。旧版包回退通过既有安装 owner 进行。
**权限边界:**每日心跳包含随机安装 ID;CLI 汇总不含此 ID,但网络时间仍可能关联请求。不发送 prompt、代码、路径、Goal 内容或原始错误;这些有损计数不是任务完成或计费凭证。
文档:1.2.3 版使用统计与隐私说明。
发布验证
精简本地检查已通过:CLI/版本与手册一致性、发布产物正反例 smoke、打包 Chat 构建及源一致性、wheel/sdist 构建与元数据、两项选中的原生预合入 canary、精确差异质量回执和精确 head PR 审阅。随后三个发布触发工作流都在标签源码 0a401fe7524f6dfdc229f6fc3cddf3dc0b8c175e 上成功,包括已安装页面浏览器检查与 PyPI 干净安装读回。GitHub 的 11 项资产齐全;wheel/sdist 和四个桌面安装包的摘要与发布校验和、GitHub SHA-256 一致,PyPI 两份包的摘要也与 GitHub 一致。签名 App 的签名文件与更新 feed 相符,desktop-stable feed 与本版一致;stable 已快进到标签源码。按快速发布要求,完整 Python/公开 smoke/model-behavior/PostgreSQL 矩阵及单独的 Pages 检查未运行。