Pin the harness turn loop across the three native checkouts #136

Merged
weichen merged 6 commits from feature/agent-harness-p1 into main 2026-10-01 13:42:01 +00:00
4 changed files with 41 additions and 3 deletions
+38
View File
@@ -0,0 +1,38 @@
# feature/agent-harness-p1 任务卡
任务主记录:PR #136 https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/136;状态:进行中;owner:weichen
## 基线与授权
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 701d4ab1e351b83bbc05c1b3f306467941064805
- 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-agent-harness-p1(worktree);分支:feature/agent-harness-p1
- 授权与交付终点:实现 P1(直连改走 runtime.Run,内核新能力默认关闭)。允许改 agent-native、backend、agent-squad 与 Dev 的 gitlink,并在各仓 feature/agent-harness-p1 上提 PR。未授权:合入 main、改小队行为、做 P2 计划回灌或 P3 子代理。
- precheck(2026-10-01):verdict READY;R0=701d4ab1e351b83bbc05c1b3f306467941064805;branch=main head=701d4ab1e3;ahead=0 behind=0;tree clean。
## 目标与非目标
- 目标:直连 LLMRunner 改为 runtime.Run 适配;内核补 Stop、工具钩子、提醒、重复调用提醒、length 续写与 FinishReason。新字段零值保持今天的行为,P1 只给直连打开 RepeatGuard 与 ContinueOnLength。
- 非目标:不改小队路径;不实现 Reminders 的计划回灌(P2);不改 SubLLMRunner / delegate_task(P3)。
- 裁定:Stop 在 follow-up 排空之后才看;两者同时设置时,本轮有 follow-up 就不调用 Stop。length 续写优先于 follow-up 与 Stop。History 只在会话转录为空时作为初始转录,且不回写进 Session。
## 同步记录
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|---|---|---|---|
| 启动 | 701d4ab1e351b83bbc05c1b3f306467941064805 | 701d4ab1e351b83bbc05c1b3f306467941064805 | 2026-10-01T12:51:56Z |
| 同步前验收 | 701d4ab1e351b83bbc05c1b3f306467941064805 | b7631c71a81592b01ffe9b2d35bbb651b97eed56 | 2026-10-01T13:30:00Z |
## 结果与验证(完成后填写)
- 结果:直连 `LLMRunner` 改为 `runtime.Run` 适配。内核新增可选的 Stop、BeforeTool/AfterTool、Reminders、RepeatGuard、ContinueOnLength、History、UnknownTool 与 `llm.Event.FinishReason`。直连打开 RepeatGuard 与 ContinueOnLength;小队不设置这些字段。三处 agent-native gitlink 同为 `a34689c`(Dev `deps/agent-native`、backend `deps/agent-native`、agent-squad `deps/agent-native`)。
- 指针:agent-native `a34689c`,backend `cfcf95d`,agent-squad `590fd86`。
- 裁定:未在画像里声明、但模型仍然发出的工具调用走 `UnknownTool`,零值保持 unknown tool 错误。注册表 schema 用宽松 object,真实 schema 仍经流式请求声明,避免空参数被内核校验提前拒绝。
- 验证:
- precheck(启动):verdict READY;R0=701d4ab1e351b83bbc05c1b3f306467941064805;head=701d4ab1e3;ahead=0 behind=0;tree clean。
- agent-native `go test ./...` 通过。
- backend `go test ./...` 通过。现有 `internal/runtime` 断言未改;新增工具整批超限落库与 length 续写。
- agent-squad `scripts/submodule-consistency.sh` 全部 ok;`go test ./...` 通过。
- Dev `make test` 通过(boundaries ok,core/backend go test,frontend vitest 51,ui vitest 71,agent-command ok)。
- task-sync:`Already up to date.` `[synced] sync_base=701d4ab1e3 tested_head=b7631c71a8 checked_at=2026-10-01T13:30:00Z`
- 影响与剩余项:合入顺序为 Agent-Native #6,然后 Backend #43 与 Agent-Squad #6,最后 Dev #136。均未合入。P2 的 Reminders 仍为 nil。小队行为留到 P3。
| 同步前验收 | 701d4ab1e351b83bbc05c1b3f306467941064805 | 1417fbef9d5d745f42d9c6b919213d7a52a53a8c | 2026-10-01T13:41:48Z |