Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
177 commits
Select commit Hold shift + click to select a range
7b41b85
refactor(turn): compose one complete governed input across callers
loopx-agent Oct 27, 2026
9ca580b
refactor(turn): isolate original captured Host context restoration
loopx-agent Oct 27, 2026
49573d8
docs(controller): reconcile independent delivery and historical quali…
loopx-agent Oct 27, 2026
04c6ae3
docs(controller): record target native budget integration
loopx-agent Oct 27, 2026
9de0d26
refactor(context): compose native scope and encoding in one call
loopx-agent Oct 27, 2026
56c3cbe
docs(context): record native composition cost and recovery boundaries
loopx-agent Oct 27, 2026
e8c6d6b
refactor(turn): read execution facts from the complete source
loopx-agent Oct 27, 2026
c47fb1e
refactor(turn): consume complete Host source before legacy decoding
loopx-agent Oct 27, 2026
9805817
test(turn): qualify report replans against complete Host input
loopx-agent Oct 27, 2026
b3b2135
refactor(turn): prepare Codex input with one source check
loopx-agent Oct 27, 2026
c02aeaa
docs(controller): qualify input preparation cost and remaining gaps
loopx-agent Oct 27, 2026
f23105d
refactor(turn): share selected work in planning and session recovery
loopx-agent Oct 27, 2026
49e69f2
fix(turn): retain historical whitespace in selected work identity
loopx-agent Oct 28, 2026
5b2e91d
fix(turn): bind completion classification to the captured source
loopx-agent Oct 28, 2026
5e3d86f
refactor(quota): share acceptance and context projection transport
loopx-agent Oct 28, 2026
65ea4fa
docs(controller): record packaged quota comparison and compaction gap
loopx-agent Oct 28, 2026
3090dc7
refactor(quota): share typed Todo diagnostic projection
loopx-agent Oct 28, 2026
ac3b2bc
docs(controller): record shared diagnostic costs and independent slice
loopx-agent Oct 28, 2026
ae13554
test(context): qualify scoped overlay adoption and quota costs
loopx-agent Oct 28, 2026
9be5256
fix(context): deliver complete registered Goal material before busine…
hhyykk Oct 28, 2026
99b2f18
fix(context): enforce Goal readiness in Codex prompt preparation
hhyykk Oct 28, 2026
2bdf242
fix(turn): retain lane fencing around staged capture execution
loopx-agent Oct 28, 2026
0e2a01b
test(turn): qualify staged capture and inherited Goal readiness
loopx-agent Oct 28, 2026
e902d23
refactor(turn): bind published input in the capture owner
loopx-agent Oct 28, 2026
614167f
docs(rfc): retain capture-owner repair qualification
loopx-agent Oct 28, 2026
78937d7
fix(quota): preserve original facts across diagnostic projection
loopx-agent Oct 28, 2026
81b3d4a
fix(context): preserve source identity during acceptance sharing
loopx-agent Oct 28, 2026
21be280
docs(rfc): record diagnostic preservation and C1 integration evidence
loopx-agent Oct 28, 2026
094c657
test(turn): check native prompt bytes after main material repair
loopx-agent Oct 28, 2026
19042b8
docs(rfc): retain main transport integration and merge boundaries
loopx-agent Oct 28, 2026
2ca00cb
fix(turn): keep one shared diagnostic import after integration
loopx-agent Oct 28, 2026
396635e
fix(context): reuse verified Goal sources and scoped reading prose
loopx-agent Oct 28, 2026
36e7ac5
docs(controller): record complete input costs and native delivery slice
loopx-agent Oct 28, 2026
87c14a5
fix(context): retain one Goal integrity import after main integration
loopx-agent Oct 28, 2026
4604ee4
refactor(context): share identical complete Todo summary lanes
loopx-agent Oct 28, 2026
c59d82b
test(context): distinguish diagnostic edits from projected documents
loopx-agent Oct 28, 2026
d410e29
docs(context): qualify same-capture diagnostic lane reuse
loopx-agent Oct 28, 2026
5a770d1
Merge main and preserve unified context reader identity
loopx-agent Oct 28, 2026
281910a
Preserve missing-work errors and localize host preparation
loopx-agent Oct 28, 2026
bca6350
Merge current context recovery and shared Todo record owners
loopx-agent Oct 28, 2026
fc47630
Record current integration evidence and remaining C1 qualification
loopx-agent Oct 28, 2026
09fc165
Keep the execution fence on the complete Turn entry
loopx-agent Oct 28, 2026
95deaab
Retain native overhead and intermediate failure evidence
loopx-agent Oct 28, 2026
ea67e99
Merge main for first-call and captured recovery integration
loopx-agent Oct 29, 2026
b339272
Reuse progressive material delivery for signed complete captures
loopx-agent Oct 29, 2026
2358110
Merge current main for complete-context integration validation
loopx-agent Oct 29, 2026
c335aae
docs(controller): prioritize independent current-capture recovery del…
loopx-agent Oct 29, 2026
07cdb0a
docs(rfc): record lossless reference and caller cost findings
loopx-agent Oct 29, 2026
f2a3059
docs(rfc): record independent recovery merge
loopx-agent Oct 29, 2026
fd65514
fix(quota): preserve original facts in context sharing
loopx-agent Oct 29, 2026
dd600ac
docs(rfc): separate context source preservation from C1 qualification
loopx-agent Oct 29, 2026
16626b9
fix(quota): preserve numeric identity during context sharing
loopx-agent Oct 29, 2026
7717614
refactor(context): converge C1 on advisory navigation and shared reads
loopx-agent Oct 29, 2026
4144d09
refactor(context): adopt file-first delivery in unified contract
loopx-agent Oct 29, 2026
263b740
fix(testing): preserve CLI JSON in tuple results
loopx-agent Oct 29, 2026
be65544
test(context): reuse source-faithful CLI transport in C1
loopx-agent Oct 29, 2026
c7756a1
chore: reconcile C1 with current main
loopx-agent Oct 29, 2026
1e9657f
fix(turn): preserve original numeric evidence in journals
loopx-agent Oct 29, 2026
b8b5d66
test(turn): qualify journal source fidelity in C1 recovery
loopx-agent Oct 29, 2026
4bb530c
fix(context): preserve source numbers through delivery and recovery
loopx-agent Oct 29, 2026
efce061
chore: reconcile C1 with current main
loopx-agent Oct 29, 2026
9ec8dda
fix(context): preserve source numbers through delivery and recovery
loopx-agent Oct 29, 2026
3afc2d5
docs(rfc): record shared context source fidelity and its costs
loopx-agent Oct 29, 2026
1e34015
feat(control-plane): register the host-adapter settlement step vocabu…
Oct 29, 2026
58b4ad5
Merge remote-tracking branch 'origin/main' into codex/edgebench-numbe…
loopx-agent Oct 29, 2026
13c7b74
Merge remote-tracking branch 'origin/main' into codex/controller-deci…
loopx-agent Oct 29, 2026
4173cc2
docs(rfc): qualify packaged C1 source delivery and its cost gap
loopx-agent Oct 29, 2026
3435ef6
fix(context): bound numeric provenance to lossy values
loopx-agent Oct 29, 2026
974cd09
fix(turn): bind complete consumers to original numeric identity
loopx-agent Oct 29, 2026
ea21b40
test(heartbeat): read file manifests in worker settlement coverage
loopx-agent Oct 29, 2026
e18d46d
refactor(turn): retire the unused complete-source echo operation
loopx-agent Oct 29, 2026
1a56065
test(checkpoint): follow file references before native input coverage
loopx-agent Oct 29, 2026
fdc8fe4
docs(rfc): record complete numeric binding and measured Host costs
loopx-agent Oct 29, 2026
5609457
fix(benchmark): reuse progressive context read obligations
loopx-agent Oct 29, 2026
22a197a
test(checkpoint): retain delivery identity across generic capture pages
loopx-agent Oct 29, 2026
cc0ed3e
feat: discover repeatable Tasks in their original managed Session (#7…
loopx-agent Oct 29, 2026
9cae3b2
Merge pull request #7671 from loopx-project/codex/benchmark-progressi…
huangruiteng Oct 29, 2026
7a502fc
Merge commit '3b4641c4fc0ec314d347f74b05880bb516012049' into codex/co…
loopx-agent Oct 29, 2026
dfcf7da
docs(rfc): qualify native recovery and optional Host fixtures
loopx-agent Oct 29, 2026
7a2421e
fix(heartbeat): yield timed waits to the host scheduler
loopx-agent Oct 29, 2026
b76b333
test(heartbeat): align timed-wait budget and obligation consumers
loopx-agent Oct 29, 2026
f2990e3
Merge pull request #7668 from loopx-project/codex/worker-file-manifes…
huangruiteng Oct 29, 2026
3cae288
docs(rfc): define small kernel runtime composition
cocolord Oct 29, 2026
b531f8e
fix(heartbeat): normalize selected routes in authored-text budgets
loopx-agent Oct 29, 2026
e737c26
refactor(heartbeat): coerce runtime route in its budget owner
loopx-agent Oct 29, 2026
b9d1ce1
fix(turn): reuse sparse numeric provenance across complete consumers
loopx-agent Oct 29, 2026
776467a
test(heartbeat): align remaining host budget consumers
loopx-agent Oct 29, 2026
d3fa3d5
docs(rfc): unify distribution and runtime composition design
cocolord Oct 29, 2026
8caaf67
Merge pull request #7619 from xiaoan17/codex/host-adapter-settlement-…
huangruiteng Oct 29, 2026
bffb6b5
docs(rfc): preserve independent runtime qualification gates
cocolord Oct 29, 2026
0f376a9
test(turn): freeze the paired numeric cost source once
loopx-agent Oct 29, 2026
6481049
docs(rfc): reconcile sparse transport costs and pinned binding readers
loopx-agent Oct 29, 2026
360e6e0
test(quota): retain complete records in integration canaries
loopx-agent Oct 29, 2026
9922169
Merge pull request #7673 from loopx-project/codex/heartbeat-route-bud…
huangruiteng Oct 29, 2026
ed0972c
Merge pull request #7676 from loopx-project/codex/release220-public-c…
loopx-agent Oct 29, 2026
7d2326f
perf(context): batch nested field discovery and guide focused reads
huangruiteng Oct 29, 2026
96d87b1
refactor(public-safety): declare the compact label and identity shape…
lll-hhh Oct 29, 2026
0060c62
fix(context): guide efficient reads through recovery and workflow skills
huangruiteng Oct 29, 2026
58205c6
Merge pull request #7672 from loopx-project/codex/kernel-composition-…
huangruiteng Oct 29, 2026
1c913c0
fix(chat): validate periodic Task input before source access
loopx-agent Oct 29, 2026
77ced11
test(chat): exercise native calendar Tasks in the packaged fixture
loopx-agent Oct 29, 2026
db662e9
test(context): read native machine captures before observing pages
loopx-agent Oct 29, 2026
4f36712
refactor(turn): derive native launch bindings from settlement identity
loopx-agent Oct 29, 2026
264fe49
fix(chat): keep manager provider wiring at the composition root
loopx-agent Oct 29, 2026
edf2b89
fix(update): generate standalone bootstrap from shared grammar owners
loopx-agent Oct 29, 2026
6e9449b
fix(host): use a supported managed Chat restart seam
loopx-agent Oct 29, 2026
5a61ac0
test(delegation): reuse authenticated parent-owned runtime cleanup
loopx-agent Oct 29, 2026
cb98994
test(delegation): reap fixture runtimes in their spawning parent
loopx-agent Oct 29, 2026
3b3386d
Merge pull request #7670 from loopx-project/codex/context-index-depth…
loopx-agent Oct 29, 2026
18137cf
Merge pull request #7680 from loopx-project/codex/machine-context-rea…
loopx-agent Oct 29, 2026
7cdf887
Merge pull request #7661 from loopx-project/codex/context-source-numb…
loopx-agent Oct 29, 2026
5d1525e
Merge commit '58205c62a16a9e98ab3319ada3bab5aea74b829d' into codex/tu…
loopx-agent Oct 29, 2026
5c2ed9f
Merge pull request #7681 from loopx-project/codex/managed-task-journe…
huangruiteng Oct 29, 2026
522ff80
test(delegation): retain explicit cleanup through the shared owner
loopx-agent Oct 29, 2026
f84ba93
fix(quota): keep decided refusals in the typed envelope path
loopx-agent Oct 29, 2026
59dfc17
test(context): follow native references before asserting page coverage
loopx-agent Oct 29, 2026
aafa458
test(heartbeat): retain complete timed-wait and dispatch obligations
loopx-agent Oct 29, 2026
b848557
test(budget): qualify complete thin prompts at the supported scope
loopx-agent Oct 29, 2026
fb62878
fix(update): read artifact and operation metadata as UTF-8
loopx-agent Oct 29, 2026
0d88309
test(lark): patch the owning manager snapshot provider
loopx-agent Oct 29, 2026
12d2630
test(context): keep the worker advertised recovery scope
loopx-agent Oct 29, 2026
0ca7c03
docs(contributing): list the runtime snapshot workflow
loopx-agent Oct 29, 2026
13d748b
test(quota): preserve collection failures without runtime reentry
loopx-agent Oct 29, 2026
4a2426e
test(install): verify declared sibling skill resources
loopx-agent Oct 29, 2026
c38b3a1
Merge pull request #7685 from loopx-project/codex/delegation-fixture-…
loopx-agent Oct 29, 2026
5cbdfd9
merge: combine the context recovery qualification repairs
loopx-agent Oct 29, 2026
3e2423b
merge: reuse the reviewed parent-owned delegation fixture
loopx-agent Oct 29, 2026
c4241a4
fix(quota): compact decided monitor refusals without runtime reentry
loopx-agent Oct 29, 2026
b11980b
test(quota): follow the active presentation transport owner
loopx-agent Oct 29, 2026
86dfa6f
Merge pull request #7682 from loopx-project/codex/turn-launch-settlem…
huangruiteng Oct 29, 2026
bd8e538
fix(chat): preserve native work across identity waits and client resume
loopx-agent Oct 29, 2026
2e928fe
Merge pull request #7684 from loopx-project/codex/release220-manager-…
loopx-agent Oct 29, 2026
ab1580d
chore(chat): settle the reviewed live-worker guard ceiling
loopx-agent Oct 29, 2026
b4c03b1
Merge pull request #7677 from lll-hhh/feat/compact-label-shape-owner
huangruiteng Oct 29, 2026
7c6fadd
perf(cli): load performance diagnosis on demand (#7678)
cocolord Oct 29, 2026
d002454
fix(quota): qualify complete automatic wait frontiers (#7689)
loopx-agent Oct 29, 2026
cbab432
Merge remote-tracking branch 'origin/main' into codex/steward-admissi…
loopx-agent Oct 29, 2026
10c84d1
test(settlement): characterize the host adapter's partial-step bounda…
xiaoan17 Oct 29, 2026
99cfa3a
Merge pull request #7690 from loopx-project/codex/steward-admission-l…
loopx-agent Oct 29, 2026
fa0cf0e
feat(runtime): decide scheduling write-scope overlap beside its canon…
lll-hhh Oct 29, 2026
a36e01c
fix(quota): consume the canonical overlap decision when admitting chi…
lll-hhh Oct 29, 2026
b96847d
fix(benchmark): rebind checkpoint gateways before native admission (#…
loopx-agent Oct 30, 2026
2f544f9
fix(benchmark): bind checkpoint qualification to actual source import…
loopx-agent Oct 30, 2026
a13fc62
fix(chat): observe report quota outside publication locks (#7714)
loopx-agent Oct 30, 2026
06f40a1
perf(planning): avoid redundant record and snapshot encoding
hhyykk Oct 29, 2026
3c63bf8
test(planning): preserve expanded responses for fitting requests
hhyykk Oct 29, 2026
7466230
perf(runtime): capture source type and revision in one metadata read
hhyykk Oct 29, 2026
547766f
refactor(skills): read the managed slash-command marker from its writer
lll-hhh Oct 29, 2026
dfd04bd
fix(control-plane): recover receipt-bound lifecycle reviews safely
loopx-agent Oct 29, 2026
d9622f4
fix(ego): resume authorized tasks from live browser control
loopx-agent Oct 29, 2026
d3f25ce
perf(collaboration): batch guarded inventory observations (#7630)
loopx-agent Oct 30, 2026
2a629dc
fix(testing): preserve producer JSON in CLI tuple results (#7654)
loopx-agent Oct 30, 2026
372c26d
test(update): build activation fixtures for the owning package manager
loopx-agent Oct 29, 2026
61e10de
docs(rfc): state the activation guard's refusal boundary
Oct 29, 2026
4245481
fix(context): retain acceptance references when owners move
loopx-agent Oct 29, 2026
ea6f2b5
docs(controller): retain acceptance transport counterevidence
loopx-agent Oct 29, 2026
fd1a20b
perf(semantics): reuse parsed field presence for production scans
loopx-agent Oct 29, 2026
01f4818
docs(self-repair): record repeated static scan diagnosis
loopx-agent Oct 29, 2026
323461c
refactor(semantics): clarify scanner expression types
loopx-agent Oct 29, 2026
bde1733
fix(semantics): retain parsed module result type
loopx-agent Oct 29, 2026
48fbb1b
docs(readme): surface hands-on onboarding guides
loopx-agent Oct 29, 2026
b0c809c
docs(readme): clarify the first-run reading path
loopx-agent Oct 29, 2026
6fc2176
docs(guides): make onboarding paths actionable
loopx-agent Oct 29, 2026
8c9ee85
docs(guides): tighten opening sections for small screens
loopx-agent Oct 29, 2026
00fbb61
docs(guides): add continuous repository refactoring examples
loopx-agent Oct 29, 2026
2fbd47f
docs(guides): keep refactoring links stable across renderers
loopx-agent Oct 29, 2026
8d80235
fix(workspace): preserve delegation scope and paging through refresh …
loopx-agent Oct 30, 2026
b52103a
perf(semantics): reuse parsed field facts in vocabulary scans (#7699)
loopx-agent Oct 30, 2026
8171933
fix(heartbeat): qualify complete thin prompt capability routes (#7701)
loopx-agent Oct 30, 2026
b685891
fix(context): read captured replans without default registry routing …
loopx-agent Oct 30, 2026
358bc25
test: qualify managed calendar Task lifecycle across restarts (#7706)
loopx-agent Oct 30, 2026
fc81eca
fix(reports): distinguish period outcomes from current source state (…
loopx-agent Oct 30, 2026
72f6681
fix(turn): preserve journal numbers with shared sparse transport (#7709)
loopx-agent Oct 30, 2026
5b224f0
docs(readme): separate quick start from guided first runs (#7721)
loopx-agent Oct 30, 2026
e8f4c6f
perf(context): reuse full recovery for native presentation (#7687)
loopx-agent Oct 30, 2026
60ef2b5
Integrate C1 with shared source identity and current main owners
loopx-agent Oct 30, 2026
35e4ef2
fix(turn): retain historical unbound wait decoding
loopx-agent Oct 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@ touch, mention it in the PR instead of fixing it there.
| `postgresql-integration.yml` | control-plane or npm lockfile paths | no | PostgreSQL authority store and service on a temporary instance |
| `package-smoke.yml` | extension package paths | no | extension packages install, entrypoints, and example schemas |
| `release-artifacts.yml` | `loopx/`, packaging, and lockfile paths | no | release identity and a release build from this source |
| `runtime-snapshots.yml` | runtime artifact, installer, and updater paths | no | qualified, revision-addressed runtime archives and the main channel pointer |
| `ark-turn.yml` | Turn driver and collaboration paths | no | optional Ark Turn package, stdio MCP, and DSH parity |
| `memt-turn.yml` | optional MemT package, Turn driver, lock, and packaging paths | no | explicit optional dependency installation, complete adapter workflow, stdio MCP, and driver binding |
| `dsh-plugin.yml` | DSH plugin and distribution workflow paths | no | Linux/Windows package install and uninstall, typed host contracts, and Linux real LoopX/web runtime admission |
Expand Down
50 changes: 27 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,24 @@ A local-first [semantic control plane](https://loopx-project.github.io/loopx/blo

## Start in two steps

With Python 3.11+ and Node.js 22.22.3+ (24 LTS recommended), install once:
**1. Install LoopX and its Agent skills.** Requires Python 3.11+ and
Node.js 22.22.3+ (24 LTS recommended).

```bash
python3 -m pip install --upgrade loopx && loopx workflow-skills --install
```

Restart your Agent host, open your project, then give Codex a concrete task:
[Install options and upgrades](docs/guides/installing-loopx.md)

**2. Give your Agent a concrete task.** Restart your Agent host, open your
project, then send this in Codex:

```text
$loopx speed up this project's slowest workflow; compare approaches and verify the gains
```

Claude Code uses `/loopx <complex task>`. [Other hosts, install options and upgrades ↓](#try-loopx)
Claude Code uses `/loopx <complex task>`; see [host setup](#start-from-your-agent)
for other runtimes. Prefer a guided first run? [Choose a task below](#try-loopx).

## 📰 News

Expand Down Expand Up @@ -80,7 +85,7 @@ protected actions.

| What you want to do | Start here |
| --- | --- |
| Keep a coding or research agent working across sessions | [Install and start](#try-loopx) |
| Keep a coding or research agent working across sessions | [Install and start](#quick-start) |
| Manage personal projects, schedules and decisions in one place | [Personal Agent Workspace](#meet-the-personal-agent-workspace) |
| Let agents collaborate and deliver verifiable results | [Agent collaboration guide](docs/product/use-cases/cross-runtime/README.md) |

Expand Down Expand Up @@ -204,35 +209,34 @@ from this reproducible workspace. [Scenarios and replay instructions](demo/works

## Try LoopX

Install once:
Choose a walkthrough with a result you can inspect:

```bash
python3 -m pip install --upgrade loopx && loopx workflow-skills --install
```
| Start with | What you'll do |
| --- | --- |
| [Your first bug-fixing loop](docs/guides/first-bugfix-loop.md) | Reproduce two bugs in a small Python project, let the Agent fix them, then check the tests and patch. |
| [Long-running coding work](docs/guides/long-running-coding-agents.md) | Fix an issue or keep improving your own repository, with review, evidence and recovery across sessions. |
| [Personal Agent Workspace (中文)](docs/guides/personal-workspace-user-guide.md) | Follow the illustrated guide to manage projects, conversations, tasks and delivered results in the App. |

### Start From Your Agent

Restart your Agent host, then start from a session opened on your project:
After the [two-step setup](#quick-start), use the entry for your host in a
session opened on your project:

| Host | Type |
| Host | Start and confirm continuation |
| --- | --- |
| Codex App, Codex CLI | `$loopx <complex task>` |
| Claude Code | `/loopx <complex task>` |
| Codex App | `$loopx <complex task>`; confirm the [heartbeat automation is saved](docs/guides/first-bugfix-loop.md#confirm-that-it-actually-started). |
| Codex CLI | `$loopx <complex task>`; activate the generated [native `/goal`](docs/product/runtimes/codex-cli/codex-cli-packaged-install.md#current-user-path) in the same session. |
| Claude Code | `/loopx <complex task>`; follow the [loop driver setup](docs/guides/newcomer-command-path.md#choose-the-loop-driver) for recurring work. |
| DeepSeek Harness | Install the [native DSH plugin](packages/dsh-loopx-plugin/README.md), select the `loopx` skill, then describe the task |

For example, give your Agent a concrete outcome:

```text
$loopx speed up this project's slowest workflow; compare approaches and verify the gains
```

LoopX reuses existing project state or connects the project, plans the work as
Todos and sets up the host's loop. `loopx status` shows the goal, any decision
waiting for you and the next Todo; `loopx doctor` diagnoses the install.
Todos and guides host activation. Ask your Agent to confirm the active Goal,
next Todo and continuation mechanism; a setup packet alone is not an active loop.
Keep the host available for continued work. `loopx status` shows the Goal,
decisions waiting for you and the next Todo; `loopx doctor` diagnoses the install.

Requires Python 3.11+ and Node.js 22.22.3+ (24 LTS recommended).
[Installing LoopX](docs/guides/installing-loopx.md) covers native Windows,
`pipx`, upgrades, rollback and uninstall.
[Installing LoopX](docs/guides/installing-loopx.md) covers native Windows, `pipx`,
upgrades, rollback and uninstall.

**Upgrading from 1.x?** Read the [2.0 migration and recovery guide](docs/product/releases/v2.0.0.md) before continuing existing Goals.

Expand Down
45 changes: 23 additions & 22 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,22 @@

## 两步开始

准备好 Python 3.11+、Node.js 22.22.3+(推荐 24 LTS),安装一次:
**1. 安装 LoopX 和 Agent 技能。** 需要 Python 3.11+、Node.js 22.22.3+(推荐 24 LTS)。

```bash
python3 -m pip install --upgrade loopx && loopx workflow-skills --install
```

重启 Agent 宿主,打开项目,再给 Codex 一个具体任务:
[其他安装方式与升级说明](docs/guides/installing-loopx.md)

**2. 给 Agent 一个具体任务。** 重启 Agent 宿主,打开项目,再在 Codex 对话中输入:

```text
$loopx 优化这个项目最慢的流程,对比方案并验证性能提升
```

Claude Code 使用 `/loopx <复杂任务>`。[其他宿主、安装方式与升级说明 ↓](#试用-loopx)
Claude Code 使用 `/loopx <复杂任务>`;其他运行时见[宿主接入](#从你已经在用的-agent-启动)。
想跟着教程试一次?[选择一个入门任务](#试用-loopx)。

## 📰 最新动态

Expand Down Expand Up @@ -72,7 +75,7 @@ Claude Code 使用 `/loopx <复杂任务>`。[其他宿主、安装方式与升

| 你想做什么 | 从这里开始 |
| --- | --- |
| 让编程或研究 Agent 跨会话持续干活 | [安装并开始](#试用-loopx) |
| 让编程或研究 Agent 跨会话持续干活 | [安装并开始](#快速开始) |
| 在一个入口管理个人项目、定时任务与待决事项 | [个人 Agent 工作区](#认识个人-agent-工作区) |
| 让多个 Agent 分工协作,交付可验收的结果 | [Agent 协作指南](docs/product/use-cases/cross-runtime/README.md#中文指南) |

Expand Down Expand Up @@ -178,33 +181,31 @@ App 为 ad-hoc 签名,尚未 notarize。Windows 预览版目前手动更新,

## 试用 LoopX

先安装一次:
选一个能检查实际成果的教程:

```bash
python3 -m pip install --upgrade loopx && loopx workflow-skills --install
```
| 从哪里开始 | 你会完成什么 |
| --- | --- |
| [查 bug 入门教程](docs/guides/first-bugfix-loop.zh-CN.md) | 在小型 Python 项目中复现两个 bug,让 Agent 修复,再检查测试和补丁。 |
| [长程编程任务指南(English)](docs/guides/long-running-coding-agents.md) | 修复 issue 或持续改进自己的仓库,保留评审、证据和跨会话恢复。 |
| [图文工作区手册](docs/guides/personal-workspace-user-guide.md) | 跟着截图在 App 中管理项目、对话、任务和交付结果。 |

### 从你已经在用的 Agent 启动

重启 Agent 宿主,在打开了你项目的会话里开始:
完成上面的[两步启动](#快速开始)后,在打开了你项目的会话里使用对应入口:

| 宿主 | 输入 |
| 宿主 | 启动并确认续跑 |
| --- | --- |
| Codex App、Codex CLI | `$loopx <复杂任务>` |
| Claude Code | `/loopx <复杂任务>` |
| Codex App | `$loopx <复杂任务>`;确认 [heartbeat 自动化已保存](docs/guides/first-bugfix-loop.zh-CN.md#确认它真的开始执行)。 |
| Codex CLI | `$loopx <复杂任务>`;在同一会话中激活生成的[原生 `/goal`](docs/product/runtimes/codex-cli/codex-cli-packaged-install.md#current-user-path)。 |
| Claude Code | `/loopx <复杂任务>`;按 [loop driver 接入说明](docs/guides/newcomer-command-path.md#choose-the-loop-driver)设置周期性续跑。 |
| DeepSeek Harness | 安装 [DSH 原生 Plugin](packages/dsh-loopx-plugin/README.md),在技能选择器中选 `loopx`,然后直接描述任务 |

例如,给 Agent 一个具体成果要求:

```text
$loopx 优化这个项目最慢的流程,对比方案并验证性能提升
```

LoopX 会复用项目已有状态或连接项目,把工作规划成 Todo,并设置宿主的循环。
`loopx status` 显示目标、等你处理的决策和下一条 Todo;`loopx doctor` 诊断安装。
LoopX 会复用项目已有状态或连接项目,把工作规划成 Todo,并引导宿主激活。
让 Agent 回报当前 Goal、下一条 Todo 和实际续跑机制;生成 setup packet 不等于循环已经启动。
持续工作需要宿主保持可用。`loopx status` 显示目标、等你处理的决策和下一条 Todo;
`loopx doctor` 诊断安装。

需要 Python 3.11+ 与 Node.js 22.22.3+(推荐 24 LTS)。原生 Windows、`pipx`、
升级、回滚与卸载见 [Installing LoopX](docs/guides/installing-loopx.md)。
原生 Windows、`pipx`、升级、回滚与卸载见[安装指南](docs/guides/installing-loopx.md)。

**从 1.x 升级?** 继续既有 Goal 前,先读 [2.0 迁移与恢复指南](docs/product/releases/v2.0.0.md#中文指南)。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,22 @@ try {
await page.screenshot({path: resolve(output, 'read-failure.png')});
await fixture('recover'); await dialog.getByRole('button', {name: '重试', exact: true}).click(); await settled();
await rows(4);
await fixture('local-source-unavailable');
const denied = await fetch(`${ready.origin}/api/chat/request-inventory?session_id=${ready.session_id}`);
assert.equal(denied.status, 400);
assert.equal((await denied.json()).error_code, 'request_inventory_unavailable');
await dialog.getByRole('button', {name: '刷新委派', exact: true}).click(); await settled();
await dialog.getByRole('alert').waitFor(); await rows(0);
assert.equal(await trigger.getAttribute('aria-label'), '委派,— 条待跟进');
assert.equal(await dialog.locator('.conversation-requests-pagination').count(), 0);
// Changing the filter must not turn the same missing source into a new
// empty workspace, nor may an unsuccessful retry lose that distinction.
await search('builder'); await settled(); await dialog.getByRole('alert').waitFor();
await dialog.getByRole('button', {name: '重试', exact: true}).click(); await settled();
await dialog.getByRole('alert').waitFor(); await rows(0);
await fixture('local-source-recover');
await dialog.getByRole('button', {name: '重试', exact: true}).click(); await settled(); await rows(9);
await search('reviewer'); await rows(4);
assert.equal((await fixture('inspect')).source_unchanged, true);
await fixture('deliver'); await search('复核迁移说明中的示例'); await settled();
await dialog.getByText('未找到匹配的委派。', {exact: true}).waitFor();
Expand Down Expand Up @@ -126,9 +142,20 @@ try {
await fixture('source-recover'); await page.getByRole('button', {name: 'Retry history', exact: true}).click();
await page.getByRole('button', {name: /Delegations,.*awaiting follow-up/}).click();
await page.getByRole('searchbox', {name: 'Search delegations'}).waitFor();
const english = page.getByRole('dialog', {name: 'Delegations', exact: true});
await english.getByRole('button', {name: 'All records', exact: true}).click(); await rows(12);
// A real return changes ordering and the snapshot while More is reading.
// Rebuild from the beginning, but fulfill this click's requested extent;
// the parent message refresh must not replace it with the old page count.
await fixture('report-window');
const nextPage = english.getByRole('button', {name: 'More records', exact: true});
await nextPage.focus(); await page.keyboard.press('Enter'); await rows(13);
assert.equal(await english.getByRole('button', {name: 'More records', exact: true}).count(), 0);
assert.equal(await page.evaluate(() => document.activeElement?.textContent), '13 / 13 shown');
await english.getByRole('button', {name: 'Awaiting follow-up', exact: true}).click(); await rows(11);
assert.equal(writes.some(path => /request-(?:inventory|control)|team-work/.test(path)), false);
assert.deepEqual(errors, []);
console.log('PASS: packaged search, pre-pagination match, count, original conversation, clear/paging, failure/retry, returned history, stale response, Escape/focus, workspace isolation, narrow layout, English, source refusal/recovery and read-only receipts.');
console.log('PASS: packaged search, pre-pagination match, count, original conversation, clear/paging, failure/retry, returned history, stale response, Escape/focus, workspace isolation, narrow layout, English, source refusal/recovery, changed-snapshot More and read-only receipts.');
}
} catch (error) {
if (page) {await page.screenshot({path: resolve(output, 'failure.png')}).catch(() => {}); await writeFile(resolve(output, 'failure.txt'), await page.locator('body').innerText());}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@ const inventorySchema = z.object({ok: z.literal(true), session_id: z.string(), r
export type ConversationRequest = z.infer<typeof rowSchema>;
export type ConversationRequestInventory = z.infer<typeof inventorySchema>;

export async function fetchConversationRequests(sessionId: string, history: boolean, offset = 0, signal?: AbortSignal, search = "") {
export async function fetchConversationRequests(sessionId: string, history: boolean, offset = 0, signal?: AbortSignal, search = "", limit = 12) {
const query = new URLSearchParams({session_id: sessionId, view: history ? "history" : "unfinished", offset: String(offset), search});
if (limit !== 12) query.set("limit", String(limit));
const result = inventorySchema.parse(await requestJson<unknown>(`/api/chat/request-inventory?${query}`, {signal}));
if (result.session_id !== sessionId) throw new Error("Conversation request scope changed.");
return result;
Expand Down
Loading
Loading