Commit Graph
100 Commits
Author SHA1 Message Date
Liang Jiaqing 127a4e631c feat: add /session.key=value system command to set LLM params at runtime 2026-04-13 22:44:17 +08:00
Liang Jiaqing 499f0119bb refactor llm session params and thinking parsing 2026-04-13 20:20:31 +08:00
Liang Jiaqing 0da9bd15c9 refactor: turn_end_callback + desktop pet + keychain
- agent_loop: next_prompt_patcher -> turn_end_callback with full context
- agent_loop: exit logic unified (break + callback), no early return
- ga: summary extraction moved from tool_after_callback to turn_end_callback
- ga: _turn_end_hooks support for external subscribers
- stapp: desktop pet button with HTTP status push
- keychain: XOR-masked secret storage with SecretStr
- gitignore: whitelist keychain.py
2026-04-13 18:27:17 +08:00
LJQ 9da32c07ce docs: update README recent highlights and group image (#59)
docs: update README recent highlights and group image
2026-04-13 16:20:56 +08:00
Jiaqing Liang 086599a5d6 fix: scroll ghost height reflow via overflow toggle; extend cache markers to last 2 user msgs; simplify cursor & merge JS fixes 2026-04-13 14:59:38 +08:00
Liang Jiaqing ecb8ac9a80 fix(stapp): eliminate ghost duplicate of last text block on new message
Root cause: stream loop emitted a bare st.empty() heartbeat per tick, accumulating
dozens of empty slots under chat_message. On the next rerun the history replay
path had no such slots, so Streamlit's incremental DOM diff misaligned and left
the previous render of the last text block as a grayed-out ghost.

Fix: unify streaming and history replay under the same shell
(slot = st.empty(); with slot.container(): render_segments(...)). Heartbeat now
re-enters the same slot each tick; when response is unchanged Streamlit's diff
is a no-op (no flicker), but the container() call still lets StopException
propagate so abort keeps working. Simplified render_segments from 5 params
(placeholders/rendered_cache/force_text) to 2 (segments, suffix).

Net: +19 -20 lines. Verified: no ghost, abort interrupts mid-stream, per-turn
fold-collapse preserved.
2026-04-12 15:22:56 +08:00
Liang Jiaqing d94e404f64 fix: use local var for claude tools conversion, avoid mutating self.tools 2026-04-12 14:46:45 +08:00
Liang Jiaqing 142de0c45b refactor: remove claude_tools_format flag, auto-convert tools in NativeClaudeSession.raw_ask 2026-04-12 14:43:46 +08:00
Liang Jiaqing 2b5cbff7be feat: --verbose flag, lazy mykeys loading, temperature config support
- agentmain: add --verbose arg for subagent monitoring mode
- llmcore: lazy-load mykeys/proxies via module __getattr__
- llmcore: fix auto_make_url regex for trailing slash cases
- llmcore: support temperature override from session config
- docs: update subagent.md with --verbose usage note
2026-04-12 14:29:32 +08:00
Liang Jiaqing 9e03a675ae fix: MixinSession copy before override & add no-tools warning; refine subagent SOP 2026-04-11 18:50:26 +08:00
Liang Jiaqing 946c239c03 refactor: rename mem_scanner→procmem_scanner, add L4 layer, remove make_prompts.py 2026-04-11 18:30:00 +08:00
Liang Jiaqing 6f1585e88f fix: comment out MixinSession copy to prevent tools not propagating to original session 2026-04-11 18:25:54 +08:00
Liang Jiaqing 62ac73c773 feat: task模式干预机制 _stop/_keyinfo/_intervene + consume_file 2026-04-11 17:14:35 +08:00
Liang Jiaqing 3531146792 fix: restore stop signal detection broken by render_segments cache optimization
- stapp.py: add st.empty() after render_segments to force Streamlit StopException check on every iteration (incl. heartbeat)
- agentmain.py: fix nround type check, fix timeout comment
2026-04-11 16:25:19 +08:00
Liang Jiaqing de8adf76a9 feat: L4 session archiver + scheduler cron integration
- Add compress_session.py: compress raw model_responses into L4 archives
- Integrate 12h silent cron into scheduler.check() (runs before TASKS dir check)
- Whitelist compress_session.py in .gitignore (archives excluded)
- llmcore: refactor SSE warn handling, max_retries default 2->1
- scheduler: remove unused health_check(), INTERVAL 60->120
2026-04-11 15:55:35 +08:00
Liang Jiaqing a737523f0a llmcore: remove runtime model param, upgrade Claude beta headers, softer backoff 2026-04-11 14:34:27 +08:00
Liang Jiaqing 7bfd6e43e6 fix: _fix_messages for Claude API compliance, raw_ask simplify, no_tool orphan fix, summary extraction improvement 2026-04-11 13:24:33 +08:00
Liang Jiaqing 5e28902cb4 cleanup: rm user.js, untrack copilot_proxy.pyw; ljqCtrl: DPI via GDI + GrabWindow(hwnd) 2026-04-10 22:17:24 +08:00
Jiaqing Liang 5a1d3a41da fix: handle window object serialization in CDP bridge; improve file_write error msg; minor llmcore style cleanup 2026-04-10 14:04:41 +08:00
Liang Jiaqing 4b18ad683f Fix tool call conversion and working checkpoint result 2026-04-10 10:45:00 +08:00
Liang Jiaqing cc283a96f3 fix: verbose logic & insight wording & file_read anchor skip 2026-04-10 09:56:22 +08:00
Liang Jiaqing 2977be33c6 Update llmcore truncation, adb_ui parsing, stapp regex, and subagent docs 2026-04-09 18:43:20 +08:00
Liang Jiaqing 6628a3d987 tune: read_timeout 60s, simphtml print/newTabs fix, remove obsolete iframe sop 2026-04-08 20:45:06 +08:00
Liang Jiaqing 1c561db0b9 feat: enhance CDP bridge management and fix JS falsy returns
- background.js: Add management API, auto-return for JS, refactor new tab capture
- simphtml.py: Fix falsy return value bug, flatten return structure
- agent_loop.py: Simplify UI icons
- manifest.json: Add management permission
- tools_schema: Optimize prompts for web tools
- tmwebdriver_sop.md: Update documentation
2026-04-08 18:28:33 +08:00
LJQ 813eb29692 Merge pull request #57 from YangChen-pro/fix/restore-native-compat
修复 /restore 的日志路径兼容,并支持 Native 日志恢复
2026-04-08 15:45:15 +08:00
Liang Jiaqing f4eec277c5 docs: fuzzy numbers in README (3K/~100/9 tools) 2026-04-07 22:18:18 +08:00
Liang Jiaqing 1e39032c67 refactor: optimize non-verbose output - tool icons, compact args, clean content 2026-04-07 19:03:43 +08:00
Jiaqing Liang 25fe3e42fd fix: popup.js action->cmd; add disable_dialogs.js with toast; update manifest 2026-04-07 12:17:18 +08:00
Liang Jiaqing b525684378 fix: hoist filter should not catch sticky elements or oversized containers
- Remove position:sticky from hoist criteria (sticky is scroll-following, not popup)
- Add cover < 1.0 upper bound (real dialogs do not exceed viewport area)
2026-04-07 10:17:55 +08:00
Liang Jiaqing 054674baa1 simphtml: elementFromPoint弹窗修复 + findMainList评分优化 + _ljq ID注入 + smart_truncate重写 2026-04-07 10:10:27 +08:00
Liang Jiaqing b4741a9a39 Optimize: force aggressive tag compression before history truncation to save context 2026-04-06 22:50:23 +08:00
Liang Jiaqing 53a859058a Refactor: simplify smart_format to string-only and enhance tool output truncation limits 2026-04-06 22:50:23 +08:00
LJQ f44c05931c Merge pull request #55 from JinyiHan99/update-wechat-group-image
Update wechat_group.jpg
2026-04-06 21:57:09 +08:00
Liang Jiaqing 8e829730a9 smart truncation, iframe preservation, streamlit filter
- simphtml: truncate_biggest replaces naive string cut, targets fattest content block via 70% drill-down
- simphtml: iframe children preserved through div proxy (bypass BS4 limitation)
- background/content.js: filter streamlit tabs and skip content script injection
- ga.py: file_content tag regex allows attributes; maxchars 38k->35k
2026-04-06 12:19:20 +08:00
Liang Jiaqing aae6d810cd NativeClaudeSession: auto-convert OpenAI tools format to Claude; skip in NativeOAISession 2026-04-04 07:03:18 +08:00
Liang Jiaqing 14125ed57c refactor: move tools ownership from NativeToolClient to Session layer
- tools state now held by Session (NativeClaudeSession.tools)
- MixinSession.__setattr__ broadcasts tools/system to all sub-sessions
- NativeToolClient no longer duplicates tools storage
- fix: use type(s) is instead of isinstance to avoid catching NativeOAISession subclass
2026-04-03 23:05:28 +08:00
Liang Jiaqing 555eeabf56 simphtml: SVG className fix, CSS.escape, DOMRect compat, cutlist tuning; tmwebdriver_sop update 2026-04-03 22:34:41 +08:00
Liang Jiaqing 97abc43a40 refactor(simphtml): rewrite list detection & cutlist for multi-list support
- simphtml: replace center-point ancestor-chain approach with global container scan;
  support multiple lists per page; add container-scoped selector prefixes;
  inline FAKE ELEMENT hints with hidden item previews; remove findMainContent
- ga: hot-reload simphtml on each web_scan; fix file_read total_lines for keyword search;
  add errors='replace' for global_mem encoding safety
- llmcore: stabilize NativeClaude session/device IDs across requests;
  rename no_system_prompt to fake_cc_system_prompt; deep-copy message content
- launch: adjust window width 700->600
2026-04-03 19:38:51 +08:00
Liang Jiaqing 4a5043a658 Refactor: unify render_segments logic, add streaming cursor animation, and clean up unused container parameter 2026-04-03 12:14:08 +08:00
Liang Jiaqing 4e2b806917 Refactor: use native st.expander for folding turns, optimize stream trigger, and adjust window width 2026-04-03 11:47:07 +08:00
Liang Jiaqing 5bc763d319 fix(simphtml): improve bounding box calculation for transparent containers by using children union rect 2026-04-03 11:14:25 +08:00
Liang Jiaqing da40ba413b feat: fold_turns UI折叠 + 放宽输出限制 + 压缩history/key_info标签 + context_win调大 2026-04-03 10:43:15 +08:00
Liang Jiaqing 8d537e954b fix: simphtml visibility/dialog/SVG improvements & minor agent fixes
- simphtml: rewrite visibility inheritance (area-based maxC), add isVisible to childrenInfo,
  fix className SVG compat (getAttribute), expand isDialog detection, hoist deep fixed dialogs,
  clear SVG attrs, fix warning message concat
- ga: return error messages instead of None for code_run/web_execute_js failures
- stapp: disable unsafe_allow_html
- code_run_header: add excepthook hint for ImportError/AttributeError
- mykey_template: remove stale prompt_cache comment
2026-04-03 09:40:09 +08:00
Liang Jiaqing b0d4563ae8 Refine llmcore debug and tool parsing 2026-04-02 21:16:45 +08:00
Liang Jiaqing 88f32b208b feat: support NativeToolClient and optimize tool use format for native API 2026-04-01 23:09:48 +08:00
Liang Jiaqing 629e57ad83 Refactor: 统一消息格式和Session架构重构
核心改动:
- 统一所有Session内部使用Claude content-block格式
- 引入BaseSession基类,简化代码结构
- tool_results从字符串改为结构化字典列表
- NativeClaudeSession增强:支持cr_token、metadata、thinking提取
- ToolClient简化:删除structured分支,统一使用protocol prompt
- MixinSession支持按名称选择session
- ljqCtrl_sop增加DPI坐标陷阱警告
2026-04-01 22:20:18 +08:00
Liang Jiaqing 368d68baa5 fix: remove stray brace in tool_pattern regex 2026-04-01 09:47:53 +08:00
Liang Jiaqing 1c38412e42 revert: 恢复工具调用正则最小长度限制 2026-04-01 09:35:37 +08:00
Liang Jiaqing 404ea1947b fix: llmcore工具调用正则兼容tool_call标签,最小长度改为0 2026-04-01 09:30:55 +08:00
Liang Jiaqing d922303645 TMWebDriver: add debug logs + CDP bridge refactor (action→cmd, extract buildExecScript, handleWsExec routing) 2026-03-31 20:37:05 +08:00
Jiaqing Liang 86210296c1 fix: MV3 SW keepalive for WS connection via periodic alarm ping 2026-03-31 11:19:48 +08:00
Liang Jiaqing 106c6b04f1 docs: update save_to_file desc, add iframe scan note, cdp_bridge notice 2026-03-31 09:04:22 +08:00
Liang Jiaqing 72a85a0823 fix: buildCdpScript add smartProcessResult to prevent CDP serialization error on complex DOM (GitHub issues, Gmail etc); update SOP docs 2026-03-30 22:30:34 +08:00
Liang Jiaqing 18d5aafed8 gitignore: universal __pycache__ exclusion, remove tracked .pyc files 2026-03-30 20:39:46 +08:00
Liang Jiaqing 117028b5d9 simphtml: refine pathType detection, simplify secondary marking, init response, reduce sleep 2026-03-30 20:37:27 +08:00
Liang Jiaqing f320d141a0 feat: CDP bridge extension integration - ext_ws session type, DOM-channel CDP/batch/cookies/tabs, autofill bringToFront fix, await support in SOP 2026-03-30 20:01:27 +08:00
Liang Jiaqing bc5d1eafaf feat: add --bg/--input flags to agentmain, rename & simplify subagent SOP 2026-03-30 15:03:28 +08:00
Liang Jiaqing 6cec6d8014 feat: autonomous SOP refactor + helper.py with auto date/numbering
- Refactored autonomous_operation_sop.md with clearer path warnings and workflow
- Added helper.py: complete_task() auto-prepends R-number + date to history
- Updated scheduled_task_sop.md and web_setup_sop.md
2026-03-30 14:30:30 +08:00
Liang Jiaqing 473659ba6e refactor: agent loop done_hooks, inline_eval, scheduler logging & health_check
- agent_loop: for→while, _done_hooks callback mechanism, max_turns=40
- agentmain: pass self to handler, abort clears task queue
- stapp: heartbeat yield for Streamlit StopException detection
- ga: _inline_eval param for in-process eval, no_tool thresholds tuned
- scheduler: logging, max_delay_hours, weekday repeat, health_check()
2026-03-30 13:51:21 +08:00
Liang Jiaqing 7b704b5dbc fix: _parse_openai_sse防御None值迭代(tool_calls/delta可能为null) 2026-03-30 11:19:56 +08:00
Liang Jiaqing 5459ebbb59 fix: output窗口滚动漂移 - 用行偏移代替fraction恢复位置,无变化时跳过刷新 2026-03-29 21:32:40 +08:00
Liang Jiaqing f0dea09123 fix: fallback tool_use parser handles both with/without space in type key 2026-03-29 21:04:34 +08:00
Liang Jiaqing 58e2f45793 fix: dump tool_use as array format to match fallback parser 2026-03-29 20:54:25 +08:00
Liang Jiaqing 844573387d fix: convert tool_use blocks to text in NativeOAISession history to avoid API content type error 2026-03-29 19:08:20 +08:00
Liang Jiaqing 08ac18be6e fix: code_run encoding compat; wechat truncate long code blocks & limit msg count 2026-03-29 17:43:06 +08:00
Liang Jiaqing 52151853b3 fix: encode str input when text=True is intercepted by header wrapper 2026-03-29 15:15:35 +08:00
Liang Jiaqing 53c492b682 agentmain: auto-switch cn schema for glm/minimax/kimi; tools_schema: trim descriptions; hub: fix scroll position on refresh 2026-03-29 15:08:11 +08:00
Liang Jiaqing 18ef86b69d llmcore: move logs to temp/model_responses/ subdir; enhance error prefix detection 2026-03-29 15:06:19 +08:00
LJQ d76842c549 Merge pull request #52 from octo-patch/feature/add-minimax-provider
feat: add MiniMax as first-class LLM provider
2026-03-29 14:51:02 +08:00
Liang Jiaqing fe7e4c0952 refine: tool schema descriptions, docstring format, context_win 18000→20000 2026-03-29 13:06:06 +08:00
Liang Jiaqing 45679509ea MixinSession: spring-back to primary + translate tools_schema to English 2026-03-29 12:48:36 +08:00
Liang Jiaqing 226fa69cc3 refactor MixinSession._raw_ask: simplify retry logic, skip yielding first-only error chunk 2026-03-29 10:53:26 +08:00
Liang Jiaqing 1d94384ee5 feat: add Qt/Streamlit alternative frontends, fix hub output auto-scroll, update README 2026-03-28 20:56:14 +08:00
Liang Jiaqing a5dbce396a refactor: remove XAI/Gemini sessions, add MixinSession fallback, improve error handling
- Remove GeminiSession and XaiSession from llmcore.py
- Add MixinSession: multi-endpoint fallback with exponential backoff
- ga.py: handle empty/incomplete/max_tokens responses
- Update mykey_template.py and GETTING_STARTED.md accordingly
2026-03-28 08:14:35 +08:00
Liang Jiaqing 38e2a460e3 refactor: optimize code extraction priority in tool handlers & update autofill SOP 2026-03-27 19:43:46 +08:00
Liang Jiaqing a1c289dbd1 feat(web_driver): support await in executeCode via AsyncFunction fallback 2026-03-27 18:57:47 +08:00
Liang Jiaqing 55a5eae4f6 perf: replace MutationObserver with setInterval to fix performance issue 2026-03-27 18:41:39 +08:00
Jiaqing Liang 04448dcee9 update userscript guard and scheduler flag 2026-03-27 15:41:42 +08:00
Jiaqing Liang f6c5011eb0 refactor: rewrite GETTING_STARTED, cleanup README, add hub.pyw, remove QUICK_START.pdf 2026-03-27 12:58:13 +08:00
Liang Jiaqing ff258dd0a9 refine: context window, timeout, abort guard, code_run multi-call check, clean logs 2026-03-26 21:31:48 +08:00
Liang Jiaqing 47ad98239f enhance SSE parsing, add stream error/truncation detection, fix tool_call fallback extraction 2026-03-26 18:42:09 +08:00
Liang Jiaqing 650c14dc1a update wechat group QR code (group 2, as group 1 is full) 2026-03-26 13:37:41 +08:00
Liang Jiaqing 551666a53b refactor: unify OpenAI streaming into _openai_stream(), add Responses API support
- Extract shared _openai_stream() from LLMSession and NativeOAISession
- Add Responses API compatibility: system->developer role, flat tools format, no temperature
- Improve error handling: read body before raise_for_status in stream mode
- Add retry mechanism to NativeOAISession (was missing)
- Add api_mode, connect_timeout, read_timeout config to NativeOAISession
2026-03-25 23:50:28 +08:00
Liang Jiaqing 507e886322 refactor llmcore: extract _parse_claude_sse, simplify ToolClient, enhance logging and context trimming 2026-03-25 21:41:33 +08:00
Liang Jiaqing 1b60d2c773 minor: tweak prompt wording, improve OAI history compression 2026-03-25 10:00:16 +08:00
Liang Jiaqing 85250c2694 fix: unify assistant content format for prompt caching to work 2026-03-25 09:45:43 +08:00
Liang Jiaqing b92d2bc97d fix: always compress history tags, adjust context trim thresholds 2026-03-25 08:37:46 +08:00
Liang Jiaqing ddce7ef549 feat: reflect hot-reload + enhance prompt caching & history compression 2026-03-24 22:58:20 +08:00
Liang Jiaqing 274bbcb9e4 docs: update WeChat group QR code 2026-03-24 22:55:04 +08:00
Liang Jiaqing 28f22c3973 feat: add prompt caching for NativeClaudeSession 2026-03-24 20:00:44 +08:00
Liang Jiaqing f9a0aa71fa fix: add tool_result placeholder for NativeClaudeSession to prevent 502 2026-03-24 19:54:27 +08:00
Liang Jiaqing 651e0d2bc8 refactor: extract code_run header to external file, add subprocess gbk fallback patch 2026-03-24 09:52:55 +08:00
Liang Jiaqing 5643bfb5f0 code_run自动注入常用import+memory路径; ljqCtrl_sop补充文本输入方法 2026-03-24 00:00:20 +08:00
Liang Jiaqing 515b0cd985 feat: unified media download in wechatapp + proxy support for NativeOAISession 2026-03-23 20:57:39 +08:00
Liang Jiaqing 60f40e3c5e feat(wechat): add send_file via CDN upload; fix _strip_md robustness
- Add WxBotClient.send_file() with AES-128-ECB encryption and CDN upload
- Extract [FILE:] tags before _clean() to preserve filenames
- Fix _strip_md: support 3+ backticks via backreference, stop stripping underscores
- Remove verbose key_info echo from update_working_checkpoint
2026-03-23 17:55:20 +08:00
Jiaqing Liang eb8834b9df feat: enhance text_only mode - add form element annotations, block-level line breaks, and whitespace cleanup 2026-03-23 15:26:05 +08:00
Jiaqing Liang b4bdaf11da style: remove trailing periods in tool schema descriptions (-31 tokens/round) 2026-03-23 13:56:03 +08:00
Jiaqing Liang 47e9a55feb feat: add file ref expansion syntax for file_patch and file_write 2026-03-23 13:50:11 +08:00
Jiaqing Liang 66dff812fb docs: add personal WeChat bot frontend to Latest News 2026-03-23 12:05:23 +08:00
Jiaqing Liang 4b4dc51336 fix: tool_use regex negative lookahead to prevent cross-tag matching; tgapp relative path resolve 2026-03-23 11:46:10 +08:00