Commit Graph
710 Commits
Author SHA1 Message Date
Kailigithub efb91b930c fix: correct subagent_sop.md references to subagent.md
Align .gitignore and plan_sop.md with the actual memory/subagent.md file. Closes #482.
2026-05-26 11:49:39 +08:00
w286554018 73e555c1ec fix: wrap _turn_end_hooks iteration with list()
Prevent RuntimeError when a turn-end hook mutates _turn_end_hooks during callback iteration.
2026-05-26 11:47:04 +08:00
Liang Jiaqing 9e72234222 refactor: hive_sop restructure, GrabWindowBg, ui_detect unified API, worker rule9, incubator_sop 2026-05-26 10:02:51 +08:00
Jiaqing Liang ab0919cfa7 fix mykey path, add inject-prompt button, harden reload_mykeys 2026-05-25 13:29:12 +08:00
LJQ 552c5c07e6 Merge pull request #475 from skydog221/main
fix(qqapp):Change message type to Markdown message(msg_type-2))
2026-05-25 09:28:24 +08:00
skydog221 bb656b189e fix(qqapp):Change message type to Markdown message(msg_type-2)) 2026-05-24 21:16:05 +08:00
LJQ c7f7fd305a Merge pull request #473 from Jeason00011/fix/cost-tracker-py39-compat
fix: Python <3.10 compat for cost_tracker.py
2026-05-24 16:14:20 +08:00
Jeason00011 96faa1ba21 fix: add from __future__ import annotations for Python <3.10 compat 2026-05-24 16:09:40 +08:00
LJQ 89f41ff19c Merge pull request #468 from FroStorM/main
a simplified, user-friendly version of GenericAgent
2026-05-23 15:18:21 +08:00
FroStorM f618623cc6 Add link to A3Agent workbench repository
a simplified, user-friendly version of GenericAgent
2026-05-23 15:08:57 +08:00
LJQ 76cf036931 Merge pull request #462 from nianyucatfish/feat/tui-v3-improvements
feat(tui_v3): bring v2 parity to scrollback-first TUI
2026-05-23 11:03:52 +08:00
yanghang cf3fbf3be7 feat(tui_v3): v2 feature parity — export/fold/ask_user/plan card + inline i18n
scrollback-first tui_v3 rounds out v2 parity across this session:

- /export: v2-aligned subcommands (clip/file/all/legacy); clip writes to the
  real OS clipboard via existing copy() (pbcopy/clip.exe/wl-copy/xclip/xsel);
  picker→file prefills an editable filename
- tool-call folding: per-turn fold ported from v2 fold_turns; Ctrl+O toggles;
  incremental repaint folds turn N the moment turn N+1 marker streams in
- ask_user: focus-cycle model (↑↓ moves between candidates and the input box,
  caret hidden on candidate focus); multi-select is checkbox-only with no
  input box; [x]/[ ] ASCII checkboxes instead of Unicode ballot glyphs
- plan card: v2 _refresh_planbar port — 5-row budget, current-step line,
  complete/placeholder states with grace periods, mtime-cached reads
- attachments: bracketed-paste, image/file placeholders, multi-line paste
  aligned to v2 behaviour
- i18n: zh/en layer merged inline (was a separate tui_v3_i18n.py) so the
  frontend ships as one drop-in module

pyproject: add prompt_toolkit + pillow to the `ui` extra.
2026-05-23 02:15:13 +08:00
Liang Jiaqing 1d0dd4e7b2 keychain: store SecretStr in _d for deep repr masking 2026-05-22 10:21:25 +08:00
Liang Jiaqing fff2af9c26 add supergrok_proxy 2026-05-22 10:04:40 +08:00
Jiaqing Liang 6b7ebaaecd chore: remove redundant langfuse_tracing load from llmcore (handled by discover_and_load) 2026-05-21 18:22:47 +08:00
Jiaqing Liang 795d2d51a2 fix: ensure mykey.py is always importable from llmcore
- Add sys.path.append for llmcore's own directory as fallback
- Remove dead variable _imp_err
- Distinguish missing mykey vs import failure with clear error messages
2026-05-21 18:17:53 +08:00
LJQ 7e88373fea Merge pull request #455 from FroStorM/feishu-interface-fix
飞书接口修复
2026-05-21 17:35:47 +08:00
FroStorM df525560f7 飞书接口修复 2026-05-21 17:26:59 +08:00
Jiaqing Liang 57ffece04e Revert "feat: 更新飞书接口"
This reverts commit ce0ad05d15.
2026-05-21 15:49:38 +08:00
LJQ ee660fa044 Merge pull request #451 from cv70/feat/hook
feat: add agent lifecycle hook trigger mechanism
2026-05-21 14:55:43 +08:00
cv70 e0e7487409 feat: add agent lifecycle hook trigger mechanism 2026-05-21 14:33:56 +08:00
LJQ 5eeba94a77 Merge pull request #447 from traderlife8/fix-installation-link
docs: 修复安装文档中的链接路径
2026-05-21 14:09:47 +08:00
traderlife8 19d080a6fc docs: fix installation link path in installation_zh.md
原链接 installation.zh.md 路径不正确,已更正为 docs/installation.md
2026-05-21 09:52:37 +08:00
benemorphyandbenechen c8a9ab4b1c fix: 中文版自主行动相关按钮修复 (#442)
* 加入高危命令黑名单 Add  high-risk command blacklist

* GenericAgent Agent System Design Overview

* Subagent 集群监控,Subagents Monitor

* remove desing overview html

* skill_learn_from_cases — 案例驱动技能学习 CLI 工具

* skill_learn_from_cases — 案例驱动技能学习 CLI 工具 v001

* skill_learn_from_cases — 案例驱动技能学习 CLI 工具 v002

* skill_learn_from_cases — 案例驱动技能学习 CLI 工具 v003

* skill_learn_from_cases — 案例驱动技能学习 CLI 工具 v005

* skill_learn_from_cases 案例驱动技能学习 CLI 工具 v006

* skill_learn_from_cases 案例驱动技能学习 CLI 工具 v007

* skill\_learn\_from\_cases   案例驱动技能学习 CLI 工具 v008

* skill_learn_from_cases   案例驱动技能学习 CLI 工具 v009

* skill_learn_from_cases v010

* skill_learn_from_cases v 011

* earn_skill_from_cases v000

* fix:[开始空闲自主行动]按钮点击无反应

* 修复点击[开始空闲自主行动]按钮,无反应问题

* clean fork 0515

* clean051502

* 自主行动相关按钮修复

* learn_skill_from_cases v000

* cleaned again

---------

Co-authored-by: benechen <13817895035@126.com>
2026-05-20 21:04:50 +08:00
LJQ 350b660850 Merge pull request #441 from YinZT1/feat/tui-scrollback
feat(tui): scrollback-first TUI rewrite (tui_sb)
2026-05-20 20:51:12 +08:00
LJQ a1056a436b Merge pull request #444 from FroStorM/feat/update-feishu-interface-v2
feat: 更新飞书接口
2026-05-20 20:48:28 +08:00
Yanis 8536f242ab feat(tui): per-terminal color profile for cross-terminal parity
macOS Terminal.app quantises truecolor to its nearest 256 slot (so
#5e6ad2 lavender lands on slot 62 #5f5fd7, visibly more blue) and
renders \x1b[2m as a heavy multiply instead of a gentle blend, producing
the "blue border + heavy shadow" against iTerm's identical code.

Branch on TERM_PROGRAM: iTerm keeps its truecolor accent and \x1b[2m
dim; Apple_Terminal switches to pinned 256-slot accent (105) and an
explicit mid-gray (244) for dim. Box border (146) was already 256-slot
so it carries unchanged.
2026-05-20 18:35:56 +09:00
Yanis 6c55e260cc feat(tui): block-based history for proper resize reflow
Replace _history_lines (pre-rendered) with _blocks (source + kind) so
_repaint_screen can re-render every chip, banner, user panel at the
current width. \x1b[3J wipes scrollback on resize/Ctrl+L so the entire
conversation reflows, not just the visible viewport.

SIGWINCH delivery via self-pipe + select() — PEP 475 auto-retry on
os.read makes signal-driven InterruptedError unreliable under iTerm
split panes, so a dedicated pipe wakes the loop deterministically.

Streaming tracks a single _streaming_block whose source grows monotonically
through safe-position commits; mid-stream resize re-renders both the
committed source and the volatile live_tail.
2026-05-20 18:35:24 +09:00
Yanis 9a1910fb20 feat(tui): scrollback TUI v3 with rendering fixes 2026-05-20 17:34:55 +09:00
FroStorM 7da6a076d4 feat: 更新飞书接口 2026-05-20 16:26:01 +08:00
LJQ 7c8ac7334a Merge pull request #431 from szdtzpj/codex/issue-428-429-tg-inline-selection
[codex] feat(tg): add inline selection menus
2026-05-20 14:13:34 +08:00
LJQ 7d66c86746 Merge pull request #434 from windcat2333/fix/wechat-stop-and-auth-396-416
fix: 微信 /stop 中止检测 + AuthExpired 处理 + 配置向导改进
2026-05-20 13:54:31 +08:00
Liang Jiaqing 64f408ba71 goal_mode: 重写3-4条prompt(控制论驱动的exploit/explore双模+多观测器) 2026-05-20 11:14:26 +08:00
WindCat 964f51dacb fix(configure_mykey): 备份命名标准化 + 保留既有 LLM 配置 2026-05-19 22:59:57 +08:00
WindCat cf129162d5 chore: remove webbrowser popup on QR login — terminal-only display 2026-05-19 22:37:13 +08:00
WindCat e5b976e238 fix: configure_mykey now runs WeChat iLink QR scan instead of skipping 2026-05-19 22:34:55 +08:00
WindCat 86a36e1e8c fix: /stop abort detection (#396) + AuthExpired handling (#416) 2026-05-19 22:27:35 +08:00
szdtzpj 70aaa11656 feat(tg): add inline selection menus 2026-05-19 16:06:37 +08:00
nianyucatfish b5f094baab feat(tui v2): selection/paste/scroll/reload polish (#424)
Eight independent fixes accumulated since the last batch, all landing in
tuiapp_v2.py:

1. Code-block selection offset: _align_md_renders's is_centered heuristic
   tripped on any code line indented >=4 spaces (Python's default), stripping
   the indent from the source string so the visible selection and the copied
   text disagreed. Add wide_lead >= 2*nt0_lead guard — only Rich's H1 centering
   (wide_lead ~ width/2) crosses it, code lines never do.

2. Blockquote-continuation selection offset: Rich re-emits `▌ ` on every
   wrapped visual line of a quote, but the wide-render carries the marker
   only once. Strip the marker as a decoration prefix (counts as indent, not
   content) and switch the wrap-accumulator to account for the per-break
   eaten space — both pre-existing code-block wraps and blockquotes now map
   correctly.

3. Streaming ANSI garbage: while a turn is streaming, the tail text segment
   was rendered with `Text(content, style=C_FG)` instead of `Text.from_ansi`.
   SGR codes from the model/tool output would render as literal `[31m`
   glyphs and only resolve after `m.done` flipped or a resize forced a
   remount via the Markdown path. Switch the two streaming fast paths to
   Text.from_ansi — O(n) scan, no Markdown parse, colors honored live.

4. continue picker LIMIT removed: tuiapp's own `LIMIT = 20` truncated the
   /continue picker even though list_sessions() always builds the full list.
   Show everything; header now reads "选择要恢复的会话 (N 条)".

5. Long-paste rescue + user echo elision: Windows Terminal yanks window
   focus when its >=5KiB paste-warning dialog pops, leaving focused=None
   after the user confirms; Textual then routes the Paste event to the App
   bubble instead of InputArea, and the paste appears to do nothing. Add a
   GenericAgentTUI._on_paste forwarder that refocuses #input and replays the
   event into InputArea._on_paste. Separately, on submit, elide user-side
   display of very long pastes (head 10 / tail 5 / `⋯ 省略 N 行 ⋯`); the
   agent still receives the full content via expand_placeholders.

6. mykey.py hot reload: load_llm_sessions() already had mtime-gated reload
   plumbing, but it only ran on Agent.__init__ / next_llm / list_llms — so
   editing mykey.py mid-session required restart. Two triggers added:
   on_input_area_submitted now calls load_llm_sessions() before sending
   (cheap mtime check; rebuilds on change), and a new /reload-keys command
   forces a sweep across every session (resetting llmcore._mykey_mtime
   per-iteration so the cache doesn't short-circuit later sessions).

7. Resize / sidebar toggle no longer jumps to bottom: _remount_current_session
   used to unconditionally scroll_end after rebuilding. Capture scroll_y +
   "was at bottom?" first; stick to bottom only if the user was already there,
   otherwise restore the prior scroll_y so resizes don't yank the user away
   from what they were reading.

8. Markdown table cells wrap instead of ellipsizing: Rich's Markdown
   TableElement passes no `overflow` to Table.add_column, so the default
   "ellipsis" hides long cell content with `…` on narrow widths. Patch
   TableElement.__rich_console__ on import to pass overflow="fold".
2026-05-19 09:30:16 +08:00
AspasZhang 6257fb15e8 chore: update WeChat group QR code from 18 to 19 (#419) 2026-05-19 07:32:45 +08:00
Liang Jiaqing 0db730d948 add morphling_sop to tracked files; add goal hive execution note 2026-05-18 21:10:20 +08:00
Liang Jiaqing 6ad943c0f9 docs(hive_sop): tighten objective check & limit worker count 2026-05-18 20:24:28 +08:00
Liang Jiaqing 8149c3e06a fix(fsapp): fallback to thinking+toolcall when display text is empty after cleaning 2026-05-18 20:22:19 +08:00
AspasZhang 12fdc19008 fix(tui): use pbcopy on macOS for clipboard (OSC 52 broken on Terminal.app) (#418) 2026-05-18 17:14:19 +08:00
Liang Jiaqing dc0c77ad81 fix: delay bbs_files mkdir to startup (after chdir) 2026-05-18 16:29:02 +08:00
solopoleandGA Agent 59883d68c2 fix(feishu): prevent duplicate fsapp replies (#407)
Co-authored-by: GA Agent <ga-agent@users.noreply.github.com>
2026-05-18 15:26:16 +08:00
zhangshuw cfcf7e6a36 fix(conductor): surface LLM error to user when conductor falls silent (#342) (#414)
When a single LLM provider goes down mid-task (auth, network, quota,
etc.), the conductor falls completely silent: MixinSession yields
errors as text chunks (not Python exceptions), so the existing
try/except guard in conductor_loop never triggers, and the conductor's
only way to talk to the user (LLM-decided POST /chat tool call) is dead.

Add a tiny watchdog: monitor_conductor_queue now returns the conductor
agent's final done text, and conductor_loop scans the tail-1000-char
window for "!!!Error:" — the prefix llmcore uses for unrecoverable
errors. Tail window (not whole text) avoids false positives from
earlier turns; using a character window (not last-line) matches
ga.do_no_tool's content[-100:] style and tolerates the decoration
(fence + "[Info] Final response to user.") that do_no_tool appends
after the error chunk when its own short window check misses. When
detected, push the matched error line as a system chat message so the
user knows what happened. A dedup check prevents repeated warnings
if multiple events fail in succession.

+16 -4 lines. Only frontends/conductor.py touched. No agent_loop /
llmcore changes; other frontends unaffected.
2026-05-18 15:26:13 +08:00
AspasZhang 083d5ecd0d fix: navigate main window after bridge ready to prevent white screen (#398)
When setup window starts the bridge, the main window was already created
with URL http://127.0.0.1:14168/ but failed to load (bridge not running yet).
After bridge becomes ready, we now navigate the main window to reload the
bridge URL before showing it, preventing the white screen issue.
2026-05-18 15:20:33 +08:00
Jiaqing Liang 8cbb112545 fix: hive worker death loop - remove on_done 120s, add failed reset, done_prompt shutdown mechanism 2026-05-18 12:26:24 +08:00
Jinyi Han db0c86167f update the readme file (#409) 2026-05-18 08:24:50 +08:00