Compare commits

...

13 Commits

Author SHA1 Message Date
cfdaily 85e2004e69 fix(17): redesign on_failure to use Gitea management instead of Mail API
- Rewrite §5.2: on_failure 三分路设计(业务失败→PR comment @assignee / 系统失败→Gitea Issue @pangtong / 基础设施失败→toolchain task @jiangwei)
- Update §7.4: _send_mail 不参与 toolchain 失败处理
- Update §11.1: 向后兼容表新增 on_failure 路径变更说明
- Add D17-8: 设计决策记录 on_failure 走 Gitea 不走 Mail
- Update §10: 影响范围新增 toolchain_handler.py on_failure 改动行

Closes: on_failure redesign per 'toolchain 事件全生命周期在 toolchain 流程内闭环'
2026-06-13 22:52:30 +08:00
pangtong-fujunshi 5be32bd0b8 Merge PR #63: §17 ToolchainHandler 强约束设计 2026-06-13 14:10:19 +00:00
cfdaily 71bab93308 fix(design): §17 M1 verify_completion 列名 content→body(司马懿 Review)
CI / lint (pull_request) Successful in 7s
CI / test (pull_request) Successful in 8s
CI / notify-on-failure (pull_request) Successful in 0s
2026-06-13 22:09:18 +08:00
cfdaily 023de9862f feat(design): §17 ToolchainHandler 强约束设计(取代 action Mail 类型)
CI / lint (pull_request) Successful in 7s
CI / test (pull_request) Successful in 9s
CI / notify-on-failure (pull_request) Successful in 0s
- 新增 17-toolchain-handler-enforcement.md 完整设计文档
- 标记 17-action-mail-type.md 为 SUPERSEDED
- 方向修正:让 toolchain 事件回归 ToolchainHandler(§14 已有架构)
2026-06-13 22:04:08 +08:00
pangtong-fujunshi 626e13c0d1 Merge PR #62: feat(design): §17 action Mail 类型设计 v2.0 2026-06-13 13:37:58 +00:00
cfdaily 6a7fe37d93 fix(design): §17 Review 反馈修复(M1+S1-S3+姜维关注点)
CI / lint (pull_request) Successful in 7s
CI / test (pull_request) Successful in 8s
CI / notify-on-failure (pull_request) Successful in 0s
2026-06-13 21:37:11 +08:00
cfdaily 5bc53192d6 feat(design): §17 action Mail 类型设计 v2.0
CI / lint (pull_request) Successful in 7s
CI / test (pull_request) Successful in 8s
CI / notify-on-failure (pull_request) Successful in 0s
新增 action Mail 类型(inform/request/action 三分),解决工具链事件
被 inform 语义导致流程断链的问题。

核心设计:
- 五层 Prompt 架构(L0 语义层 → L4 约束层)
- 10 个场景完整提示词设计(8 action + 1 inform + 1 补充)
- Steps API 调用级别,信息层与指令层严格分离
- 两个维度完整性验证(Webhook event × 流程流转)
- 防降级三层设计(语义层 + 结构层 + Red Flag 表)
- action_report comment 验证机制

参考优秀实践:Hermes Tool-Use Enforcement、Superpowers Red Flags、
moziplus L1/L2/L3 三层上下文模型
2026-06-13 21:30:35 +08:00
pangtong-fujunshi 2c2d8b55c9 Merge PR #61: fix(docs): 文件路径引用修正 2026-06-13 06:46:52 +00:00
cfdaily cb81251111 fix(docs): 24-compact-detection-fix → 15-compact-detection-fix 路径引用修正
CI / lint (pull_request) Successful in 6s
CI / test (pull_request) Successful in 9s
CI / notify-on-failure (pull_request) Successful in 0s
2026-06-13 14:45:34 +08:00
pangtong-fujunshi a8a7164335 Merge PR #60: fix synchronize dispatch 2026-06-13 06:44:07 +00:00
cfdaily fe7f914681 fix: _handle_pull_request 补充 synchronize action dispatch
CI / lint (pull_request) Successful in 7s
CI / test (pull_request) Successful in 8s
CI / notify-on-failure (pull_request) Successful in 0s
姜维排查发现 _handle_pull_request 只处理 opened/closed,
Gitea 发 pull_request + action=synchronize 时被静默丢弃。
_handle_pr_synchronize 已存在但未被 dispatch 到。

修复:加 elif action == synchronize dispatch。
pull_request_sync 注册保留作为双保险。
2026-06-13 14:42:38 +08:00
cfdaily eccb4d2723 docs: 设计文档编号重排(20→14, 24→15) + 已完成文档状态标注更新
CI / lint (pull_request) Successful in 7s
CI / test (pull_request) Successful in 9s
CI / notify-on-failure (pull_request) Successful in 0s
2026-06-13 10:12:39 +08:00
pangtong-fujunshi 9e2145171a Merge PR #57 2026-06-13 01:36:24 +00:00
13 changed files with 2926 additions and 14 deletions
+1 -1
View File
@@ -6,7 +6,7 @@
**基于**: PRD-v3.0 §4 四相架构 + architecture-v3.0.md
**作者**: 庞统(副军师)🐦
**日期**: 2026-05-29
**状态**: 实现完成,待 E2E 验证
**状态**: ✅ 已完成(E2E 验证通过)
**评审**: 司马懿
---
+1 -1
View File
@@ -2,7 +2,7 @@
**日期**: 2026-05-30
**作者**: 庞统
**状态**: 已修订 v1.1(根据司马懿 2026-05-30 评审意见
**状态**: ✅ 已完成(spawner/ticker/dispatcher 全部 use_main_session=True
**前置**: `01-four-phase-loop.md`(四相循环 E2E 验证暴露 session 爆炸问题)
---
@@ -3,7 +3,7 @@
> 版本: v1.1
> 日期: 2026-05-30
> 作者: 庞统(副军师)
> 状态: v1.1 修订(司马懿评审意见已纳入
> 状态: ✅ 已完成(@mention + mention_queue 已实现
> 前置: #02 Main Session + Delegation, #03 Prompt 进化
---
+1 -1
View File
@@ -3,7 +3,7 @@
> 版本: v1.2
> 日期: 2026-06-03
> 作者: 庞统(副军师)
> 状态: 待评审(v1.2
> 状态: ✅ 已完成(_startup_recover 7 个方法已实现
> 前置: spawner-monitor-design.md §5 A0Agent crash 恢复)
> 变更: v1.2 两个关键改进:(1) working→pending 保留 current_agent 让同一 agent 接手;(2) reviewing 精确恢复到前置状态而非硬推 done
+4 -4
View File
@@ -1,6 +1,6 @@
# #07 Spawner Acquire-First 设计
> 状态:#07.1 已实施 ✅ | #07.2 已实施 ✅ | #07.3 设计中
> 状态:✅ 已完成(#07.1-#07.2 已实施)
> 作者:庞统
> 日期:2026-06-01
> 评审:司马懿
@@ -233,9 +233,9 @@ def _revive_session(agent_id: str) -> bool:
pass
```
### 4.5 O5: compact 检测(§24 rotation-only v3
### 4.5 O5: compact 检测(§15 rotation-only v3
§24 设计文档:`docs/design/24-compact-detection-fix.md`
§15 设计文档:`docs/design/15-compact-detection-fix.md`
**检测方法**:读 gateway 日志尾部 2MB,按 sessionKey 过滤 `[compaction] rotated active transcript` 事件。
如果最近的 rotation 事件在 120s 窗口内 → 视为 compact 循环进行中(可能还在 post-compact retry)。
@@ -243,7 +243,7 @@ def _revive_session(agent_id: str) -> bool:
旧方法 `_check_recent_compaction_jsonl`(扫描 session jsonl 的 `type=compaction` 事件)保留作为 fallback。
```python
# §24 v3: compact 检测优先用 gateway 日志 rotation 事件
# §15 v3: compact 检测优先用 gateway 日志 rotation 事件
if result["status"] not in ("idle", "unknown", None):
session_key = f"agent:{agent_id}:main"
result["recent_compact"] = AgentSpawner._check_compact_in_progress_gateway(
+1 -1
View File
@@ -3,7 +3,7 @@
> 版本: v1.1
> 日期: 2026-06-03
> 作者: 庞统(副军师)
> 状态: 待评审(v1.1
> 状态: ✅ 已完成(rebuttal on_complete + goal gate 已实现
> 前置: #04 黑板协作(@mention+ #08 Classify Outcome
> 关联: T4 审查体系完善
> 变更: v1.1 纳入司马懿评审反馈 — verdict 读 reviews 表 + rebuttal mention spawn 带 on_complete 回调
@@ -3,7 +3,7 @@
> 版本: v1.1
> 日期: 2026-06-03
> 作者: 庞统(副军师)
> 状态: 待终审(v1.1
> 状态: ✅ 已完成(SSE + TaskModal 自动刷新已实现
> 前置: #04 黑板协作(@mention + comment
> 关联: architecture-v3.0.md T3
> 变更: v1.1 纳入司马懿评审反馈 — checkpoint SSE 触发文件修正为 checkpoint_routes.pySSE payload 统一含 project_id
+1 -1
View File
@@ -1,6 +1,6 @@
# 三国团队工具链与开发流程设计
> **状态**: v3.3 — #19 上下文四层改造合并 + CI 修复 + A13 修订
> **状态**: ✅ 已完成(E2E 验证通过,所有 8 步 PASS)
> **作者**: 庞统(副军师)🐦
> **评审**: 司马懿(仲达)🗡️
> **日期**: 2026-06-06
@@ -4,6 +4,8 @@ created: 2026-06-10
version: v3.0
---
> 状态: ✅ 已完成(Step 1-5 全部合并,394 passed
# §1 现状分析(v3.0 更新说明:§1-§13 保留原样,新增 §14-§18,更新 §3/§5/§7
# §1 现状分析
@@ -950,7 +952,7 @@ handler.post_complete(task_id, agent_id, outcome, db_path)
---
## §20. Mail 失败通知机制
## §14. Mail 失败通知机制
### 20.1 背景
@@ -1,6 +1,6 @@
# §24 — Compact 检测方案修正
# §15 — Compact 检测方案修正
> 状态:**v5 已实现**gateway log + jsonl 配对)
> 状态:✅ 已完成gateway log + jsonl 配对)
> 作者:庞统
> 日期:2026-06-11v4),2026-06-13v5
> 框架:基于 §07 Spawner Acquire-First
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+2
View File
@@ -342,6 +342,8 @@ async def _handle_pull_request(payload: Dict[str, Any]) -> None:
await _handle_pr_opened(payload)
elif action == "closed":
await _handle_pr_closed(payload)
elif action == "synchronize":
await _handle_pr_synchronize(payload)
async def _handle_pr_opened(payload: Dict[str, Any]) -> None: