docs: add plugin-oriented reusable design / 文件補上插件化與多 agent 重用設計
This commit is contained in:
@@ -6,6 +6,8 @@ This project is Telegram-only.
|
||||
|
||||
No Discord, Slack, or cross-channel abstraction is part of V1.
|
||||
|
||||
However, the internal architecture should still be **plugin-oriented and reusable** so that multiple agents can adopt the same reply-end-controls behavior later without rewriting the logic.
|
||||
|
||||
## Product behavior
|
||||
|
||||
At the end of every assistant reply sent to Telegram, attach two inline buttons:
|
||||
@@ -125,6 +127,75 @@ Responsibility:
|
||||
- inspect `lastChoice`
|
||||
- suppress proactive continuation when `stop` is active
|
||||
|
||||
## Plugin-oriented design goal
|
||||
|
||||
Even though V1 is Telegram-only, implementation should be split so the feature can be reused by other agents.
|
||||
|
||||
### Required separation
|
||||
|
||||
#### A. Channel-specific layer
|
||||
|
||||
Telegram-only code:
|
||||
|
||||
- inline keyboard rendering
|
||||
- callback query parsing
|
||||
- Telegram message edit/update behavior
|
||||
|
||||
#### B. Agent-neutral control core
|
||||
|
||||
Reusable logic:
|
||||
|
||||
- reply-end choice state model
|
||||
- state persistence rules
|
||||
- Continue/Stop behavior policy
|
||||
- helpers for reading and updating `lastChoice`
|
||||
|
||||
#### C. Agent integration adapter
|
||||
|
||||
Per-agent integration points:
|
||||
|
||||
- how a given agent/runtime appends controls to replies
|
||||
- how a given agent/runtime consults the stored choice before later turns
|
||||
|
||||
This means V1 should not hard-code every behavior directly into Telegram handlers. Telegram should be the transport/integration layer, while the choice model and policy logic should stay reusable.
|
||||
|
||||
## Multi-agent reuse target
|
||||
|
||||
The design should make it possible for future agents to reuse the same core with minimal custom work:
|
||||
|
||||
- Agent A: Telegram assistant using OpenClaw
|
||||
- Agent B: another Telegram bot runtime
|
||||
- Agent C: future Slack/Discord version, if ever needed later
|
||||
|
||||
The shared core should answer:
|
||||
|
||||
- what choice was made?
|
||||
- when was it made?
|
||||
- is the conversation currently in `continue` or `stop` mode?
|
||||
- should the next assistant turn suppress proactive continuation?
|
||||
|
||||
## Recommended code layout
|
||||
|
||||
Suggested V1 layout:
|
||||
|
||||
```text
|
||||
reply-end-controls/
|
||||
├── README.md
|
||||
├── telegram-v1-design.md
|
||||
├── core/
|
||||
│ ├── state-model.md
|
||||
│ ├── policy.md
|
||||
│ └── callback-contract.md
|
||||
├── telegram/
|
||||
│ ├── reply-decorator.md
|
||||
│ ├── callback-handler.md
|
||||
│ └── message-update.md
|
||||
└── adapters/
|
||||
└── openclaw.md
|
||||
```
|
||||
|
||||
V1 does not need all of these files implemented yet, but the structure should guide the implementation so transport-specific code does not swallow the reusable core.
|
||||
|
||||
## Acceptance criteria for V1
|
||||
|
||||
V1 is complete when all of the following are true:
|
||||
|
||||
Reference in New Issue
Block a user