1.9 KiB
1.9 KiB
## Objective Implement a recursive `cognitive-loop` that allows the agent to chain multiple actions (tool calls) and observe results before finalising a response, similar to SOTA agents like Claude Code.
## Key Files & Context
- `projects/org-agent/docs/README.org`: The primary source of truth for the kernel logic.
- `projects/org-agent/src/core.lisp`: Tangled kernel implementation.
- `projects/org-agent/src/symbolic.lisp`: Contains the `decide` logic.
## Implementation Steps
### 1. State & Interruption
- Define `*interrupt-flag*` and `*interrupt-lock*` in the kernel state.
- Update the `perceive` function to detect the `:interrupt` sensor stimulus and set the flag.
### 2. Recursive `cognitive-loop`
- Modify `cognitive-loop` to accept an optional `depth` parameter (default 0).
- Add a check at the beginning of the loop for `depth > 10` or `*interrupt-flag*`.
- Refactor the loop to capture the return value of `dispatch-action`.
- If the action was a "Tool Call" (any target except `:emacs` or `:system-message`) and produced a result, recursively call `cognitive-loop` with a new `:EVENT` containing that result.
### 3. Actuator Harmonization
- Ensure `execute-system-action` (for `:eval`) returns meaningful results that can be fed back into the loop.
- Update `dispatch-action` to return the result of the actuator call.
### 4. Literate Tangle & Load
- Apply these changes to the `README.org` document.
- Tangle to update `.lisp` files.
- Hot-load the updated code into the live image via Swank.
## Verification & Testing
- Multi-turn Test: In the chat, ask the agent to "Calculate the sum of 5+5 and then multiply it by 2 using eval".
- Introspection Check: Verify the `*org-agent-reasoning*` buffer shows the two distinct `eval` steps.
- Interrupt Test: Trigger a long-running or recursive task and press `C-c C-k` in Emacs to verify the loop halts.